ICDH DDC8 方案手冊

2013-03-07 13:48

 

ICDH DDC8 方案手冊

 ▪ 1.線上手冊:

 

▪ 1.1.關於 ICDH DDC8:
ICDH DDC8 是元米智控研發工作室提供的 8 位元核心可程式控制器方案。

ICDH DDC 依照使用 8 位元核心與 32 位元核心的不同,分為 ICDH DDC8 與 ICDH DDC32 兩種,ICDH DDC32 除了有更高的執行速度,更大的記憶體容量外,更具備了通訊函數,可依照專案需求自行編輯所需的 MODBUS Master 指令。

本系統 ICDH DDC8 雖使用 8 位元核心,但可輕易完成大部分的控制任務,是最具性能價格比(C/P 值)的方案

ICDH DDC8 系列具備 1.5K 的可程式 (Programmable) 空間,以每 0.1 秒執行一次所有函數指令。超過 50 個運算函數與指令,使程式編輯簡易而快速。再搭配除錯模式與副程式功能的輔助,讓使用者更快速上手。各式的變數具備不同的數值格式選項,讓程式更為簡潔。

 

▪ 1.1.1.ICDH DDC8 硬體規格:
ICDH DDC8 硬體規格如下

◘ ST(意法半導體) 8 位元核心, 最高時脈 16 MHz
◘ 記憶體容量:64KB Flash、4 KB RAM、2KB EEPROM
◘ DDC 程式空間 1.5KB (1,536 Bytes),儲存於 EEPROM 中
◘ 標準具備 20 個泛用輸入輸出點數
◘ 可依照需求客製化 I2C、SPI、UART 等周邊功能,或增加最多 12 個數位輸入輸出點

 


 

▪ 1.1.2.ICDH DDC8 方案的特點:
◘ 精簡的硬體架構促成低廉的硬體成本與穩定的運作性能。
◘ 全中文化的工具程式,完整的中文線上解說文件,大幅降低進入門檻。
◘ 副程式功能提供程式碼管理與應用範例解說。
◘ 所有輸入輸出點(擴充點除外)都可以選擇 AI/DI/AO/DO 功能,除了AO 外,只需要緩衝電路,不需要轉換周邊,節省成本並降低故障率。
◘ 所有 DI 點都可作為脈衝輸入(最高 輸入頻率 100 Hz),使產品應用範圍更廣泛。
◘ 支援兩點脈衝寬度調變(PWM) 輸出,輸出頻率範圍 2 Hz ~ 60 kHz。
◘ 部份參數具備斷電自動儲存功能,保留運轉與設定數值不受斷電破壞。
◘ 高階的程式碼,輕易達到獨立運作需求。
◘ 程式碼自動完成與提示功能,簡化程式輸入步驟。
◘ 線上即時除錯功能,可一步步瞭解程式運算與輸入輸出結果。
◘ 使用 MODBUS 通訊,適合大部分使用環境。
◘ 預留多總擴充週邊,能因應各種客製化需求。
◘ 具備韌體更新能力,可隨時修正韌體或改為客製版韌體。
◘ 硬體與軟體可依照客戶需求編修介面,以建立自我品牌產品。

 


 

 


 

▪ 1.2.關於輸入與輸出:
ICDH DDC8 支援最多 20 個泛用輸入輸出點,將以每 4 個為一組,設定為 4個DI(4DI)、4個DO(4DO)、4個AI(4AI)、4個AO(4AO)或 2個AI + 2個AO(2AI2AO),或者具備 2 個Relay與手自動切換開關的 2DOR。

由於硬體設計的不同,可能是固定模式或者可自行選擇模組方式,後者將可以透過 ICDH DDC8 編輯器設定輸入輸出種類。

除了 4AO 模組外,其餘類型的輸入輸出接直使用MCU(微控器核心單元) 內部的 GPIO (泛用輸入輸出腳位) 作為 DI/DO 或 ADC(類比轉數位轉換單元) 與 DAC(數位轉類比轉換單元) 用,因此只要外加輸入/輸出緩衝或放大設備,不需外掛其他週邊驅動IC,以節省產品成本,更近一步減少故障點。

由於MCU內部僅具備 2個 DAC,因此只能在指定位置接 1 個 2AIAO 模組,如有更多的 AO 需求,則必須使用 4AO 模組。

由於 MCU 內部 ADC 與 DAC 都是12 位元解析度,因此 4AI 與 2AIAO 模組都是12 位元解析度,4AO 模組則必須依照選配的驅動元件而定,標準為12位元(最高 16 位元)

DI 與 DO 依照模組位置,自動對應到 Coil 的 C0~C31 中,AI 與 AO 依照模組位置,自動對應到 Register 的 R0~R31 中。

AI 與 AO 的 Register 數值對應範圍為 0~ 65535 (0x0000 ~ 0xFFFF),依照解晰度不同較低位元可能無效。例如解晰度12位元的實際有效數值範圍是 0x0000~0xFFF0。

ICDH DDC8 另外具備12個擴充,可依照需求訂製 12個 DI 或 DO 點擴充卡,使最大輸入/輸出點達到 32 點。擴充卡同樣必須以 4 點為 1 組,每組必須為 4DI 或 4DO 模式。選用 DI/DO 點擴充時必須安裝對應的韌體,並且無法使用第二組通訊埠等其他擴充功能。

 

▪ 1.2.1.設定輸入輸出模式:
在控制器參數視窗中選擇 IO 項可以顯示目前輸入輸出設定的模式以及數值狀態。

如果是數位輸出(DO)點,則可以直接雙擊(Double click) Coil 位置下達命令,類比輸出(AO)則可以用同樣方式輸入數值。但如果這個輸出點被 DDC 程式寫入數值,則該操作可能會失效。

要改變模組設定時直接點選 『輸入/輸出設定』按鈕或未設定模組位置,在各模組位置選擇不同的模組類型即可,但必須注意選擇的類型必需與實際安裝的模組相符,否則會發生錯誤。

2AI2AO 模組與 2PWM 模組都各只能在指定位置安裝一只。當開啟 『輸入/輸出設定』視窗時可以選擇的位置就是該模組的有效位置。

如果模組型式選擇為未安裝(None),則無論實際安裝任何模組都不會與 Coil 或 Register 發生連動。

部份固定輸入輸出形式的應用方案,模組選擇功能將失效。

 


 

▪ 1.2.2.數位輸入(DI):
當指定的輸入輸出位置選用 4DI 時,其對應的位置會是數位輸入模式,以接受接點或開集極(Open Collector) 輸入信號,獲取外部 0 或 1 (Off 或 On) 的輸入信號,並將其對應在相對應的 Coil 中。DI 對應的 Coil 為唯讀(Readonly)狀態。Coil 變數

4DI 輸入模式時可以作為脈衝輸入脈衝輸入(PI)

2DOR模組的第 1 與第 2 點作為手/自動狀態監視,同樣為 DI 性質,其狀態為 ON 時,第 3 與第 4 點的出點才可控制(自動狀態)。第 1 與第 2 點狀態為 OFF(手動狀態) ,則對應的輸出點將無法控制,並且反映實際手動輸出狀態。

2DI2DO 模組前兩點為 DI 點,功能與 4DI 前兩點相同。

模組的選擇必須搭配實際安裝於相對位置的模組類別。
接點輸入時,必須注意是否為乾接點,如果本身帶電,可能對信號偵測電源造成損害。
開集極輸入具有方向性,必須注意。

 


 

▪ 1.2.3.數位輸出(DO):
當指定的輸入輸出位置選用 4DO 時,其對應的位置會是數位輸出模式,並將對應的 Coil 狀態,作接點或開集極(Open Collector) 輸出。其對應位置Coil 變數

2DOR模組的第 1 與第 2 點作為手/自動狀態監視,同樣為 DI 性質,其狀態為 ON 時,第 3 與第 4 點的出點才可控制(自動狀態)。第 1 與第 2 點狀態為 OFF(手動狀態) ,則對應的輸出點將無法控制,並且反映實際手動輸出狀態。

2DO 模組後兩點為 DO點,功能與 4DO 後兩點相同。

模組的選擇必須搭配實際安裝於相對位置的模組類別。

接點或開集極輸出必須注意到驅動電壓與電流不可以超出最大的設計值。如果連接的不是電阻性負載,必須注意過大的驅動瞬間電流是否會造成輸出點損壞。

 


 

▪ 1.2.4.類比輸入(AI):
ICDH DDC8 系列每個點都可以選擇為 類比輸入(AI)點。當指定的輸入輸出位置選用 4AI 時,其對應的位置會是 類比輸入模式。如果搭配 類比輸入模組,則可以連接 4~20mA 或 0~10 Vdc 的信號輸入。選用 2AI2AO 模組時,前兩點功能與 4AI 前兩點相同。

ICDH DDC8 的 AI 點都是 12 位元解析度,會將感測的 0~20mA 或 0~10Vdc 轉換至對應 Register 位置的數值 0~0xFFF0。

當輸入為 4~20mA時,類比輸入模組必須選擇插銷為 4~20mA,以透過內部 125 歐姆電阻,將信號轉為 0.5~2.5 Vdc 的電壓信號,供內部(ADC)轉換。
當輸入為 0~10Vdc時,類比輸入模組必須選擇插銷為 0~10Vdc,以透過內部分析電路,將信號轉為 0~2.5 Vdc 的電壓信號,供內部(ADC)轉換。

由於內部實際的轉換範圍 是 0~2.5 Vdc轉換至 0~0xFFF0,因此如果外部信號是 4~20mA 或 2~10 Vdc 時,必須利用函數輔助運算。

使用 ai010() 函數可以將 0~20mA 或 0~10Vdc 的信號轉換成對應的物理量,例如 out R32.F = ai010(R1, -10, 40) 可以將 R1 (AI 2 位置)的 0~20mA 或 0~10Vdc 的信號輸入變成 -10~40 的數值,並以浮點數方式輸出到 R32 與 R33 的位置
ai010

使用 ai420() 函數可以將 4~20mA 或 2~10Vdc 的信號轉換成對應的物理量,例如 out R32.d1 = ai420(R1, -10, 40) 可以將 R1 (AI 2 位置)的 4~20mA 或 2~10Vdc 的信號輸入變成 -10~40 的數值,並以數值 *10 備方式輸出到 R32 的位置
ai420 

部份 ICDH DDC8 類比輸入點支援 10K NTC Thermistor (負溫度係數變溫電阻)溫度感測元件,這是一種性價比很高的溫度感測方案,適用於常溫感測與控制場合。當連接此感測元件時,必須將 AI 模組選擇 NTC 的插銷位置,並依照 Beta 值上傳正確的阻值對照表,同時使用 aintc() 函數做轉換。
aintc
NTC 阻值對照表 的輸入NTC 阻值對照表


類比輸入接線時應該使用遮蔽線並避免與其他控制線、電源線等導線共管或並行,以免干擾類比輸入。

 


 

▪ 1.2.5.類比輸出(AO):
ICDH DDC8 系列每個點都可以選擇為 類比輸出(AO)點。當指定的輸入輸出位置選用 4AO 時,其對應的位置會是 類比輸出模式。如果搭配 類比輸出模組,則可以連接 4~20mA 或 0~10 Vdc 的信號輸出。

ICDH DDC8 的 AO 點依照 AO 模組搭載 DAC(數位至類比)轉換器的不同 ,可能是 8 或 10 或 12 位元解析度,會將對應 Register 的數值 0~0xFF00 或 0xFFC0 或 0~0xFFF0 轉換 為 0~20mA 或 0~10Vdc 信號輸出。

ICDH DDC8 控制器可以接一個 2AI2AO 模組在第 5 個模組位置,它是利用內附的 2 個 12 位元 DAC(數位至類比)轉換器 作為 AO 輸出,因此可以與 12 位元 4AO 的類比輸出具備相同的效果與解析,但每個控制器只能一只,且位置固定。

當類比輸出點需要做 0~20mA 或 4~20mA 信號輸出時, AO 輸出選擇插銷應該在 4~20mA 位置,如果作為 0~10Vdc 或 2~10Vdc 信號輸出時, AO 輸出選擇插銷應該在 0~10Vdc 位置。

使用 ao010() 函數可以將 比例積分運算 pid() 函數的 0~100 輸出量數值指定到 0~10Vdc 或 0~20mA 的輸出點,例如 R0 = ao010(B2) 可以將 Branch 2 的 0~100 輸出量到 R0 對應 AO 的 0~10Vdc 或 0~20mA 的輸出點 
ao010

使用 ao420() 函數可以將 比例積分運算 pid() 函數的 0~100 輸出量數值指定到 2~10Vdc 或 4~20mA 的輸出點,例如 R0 = ao420(B2) 可以將 Branch 2 的 0~100 輸出量到 R0 對應 AO 的 2~10Vdc 或 4~20mA 的輸出點 
ao420

類比輸出接線時應該使用遮蔽線並避免與其他控制線、電源線等導線共管或並行,以免干擾類比輸出。

 


 

▪ 1.2.6.脈衝輸入(PI):
ICDH DDC 輸入輸出模組選用 DI 模式( 4DI 模組或 2DI2DO 模組前兩點)時,可以作為 Pulse(眽衝)輸入,用以累計輸入變化的次數。理論上的最高輸入頻率為 100Hz,但實際會受到 DI 的輸入濾波電容限制,愈大的濾波電容會有愈高的抗干擾力,但有效的輸入頻率也會隨之降低。

PI 一般用在 KWH 、BTU 等累積量的輸入,也可以用於輸入頻率的量測,但頻率最高受到前項濾波電容的限制。

PI 的數值狀態不會出現在控制器設定視窗中,只能由 DDC 程式運算中使用。PI 的使用Pulse Counter(脈衝計數器)

 


 

▪ 1.2.7.脈寬調變輸出(PWM):
ICDH DDC 支援在指定模組位置兩點脈衝寬度調變輸出 (Pulse Width Modulation,PWM) ,預設的在第 4 個模組位置。設定為 2PWM 模組時,可以具備兩個 PWM 輸出點,以作為 LED 照明等無段調變輸出,有效的輸出頻率為 2 Hz ~ 60 kHz。

2PWM 模組使用模組對應位置四個 Register,前兩個 Regisetr 設定頻率,數值 2 ~ 60000 對應 2 Hz~60 kHz。後兩個 Regisetr 設定 PWM 輸出百分比,0~0xFFFF(65535) 對應 0~100% 的 PWM 脈波寬度。由於調變頻率的需求, PWM 輸出百分比可能無法實際達到 16-Bit 的解析度,但至少可以達到 8-Bit 解晰度以上。

當 頻率低於 2 Hz 或 PWM 輸出百分比為 0 時, PWM 輸出點將不會輸出。

 


 

 


 

▪ 1.3.關於通訊:

 

▪ 1.3.1.選取通訊埠:
由於 ICDH DDC8 是使用 MODBUS RTU 協定,並透過 RS485 方式做傳輸,因此 ICDH DDC8 編輯器必須透過電腦通訊埠 (Comm. port) 並連接 RS232 轉 RS485 的轉換器轉換,或直接使用 RS485 轉 USB 的轉換器,同樣的,這樣的 USB 介面器會被轉模擬成電腦的通訊埠 。

使用時必須選擇正確連接 DDC RS485 網路的通訊埠,才能達成上傳與設定 DDC 的目的。

 


 

▪ 1.3.2.選取站號:
每個 DDC 都有一個 MODBUS Slave 位址,這個位址是由設備上的指撥開關設定,可以設定的範圍是 1~247,設定完成後必須重新送電才會生效。

要設定、上傳、讀取 DDC 資料時,必須選擇所要操作的 DDC Slave 位址,否則可能不能連線,或者設定到不是原先預期的設備。

MODBUS 協定

 


 

▪ 1.3.3.通訊格式:
ICDH DDC8 預設的通訊格式為 速率 9600 bps,8 個資料位元(Data bits),2 個停止位元(Stop bits),沒有同位檢查(None parity)

由於 DDC 可依依照需求修改通訊速率及格式,因此如果通訊設定被修改後並且程式未選擇正確的格式時,設備將無法連線。

要修改通訊速率(Baud Rate)、同位檢查(Parity)、停止位元(Stop bits)等,必須將控制器切換到 Loader 模式後重新送電,並透過 ICDH DDC8 編輯器->工具->設定 Loader 通訊格式->點選要設定的通訊格式以進行設定。
要得知目前控制器被設定的通訊速率格式,同將控制器切換到 Loader 模式後重新送電,並透過 ICDH DDC8 編輯器->工具->查詢 Loader 通訊格式 以獲知目前被設定的通訊格式。
關於 Loader 模式

ICDH DDC8 編輯器通訊格式以字串表示
"9600,8,n,2 "表示 速率 9600 bps,8 個資料位元(Data bits),2 個停止位元(Stop bits),沒有同位檢查(None parity)
"19200,8,e,1" 表示 速率 19200 bps,8 個資料位元(Data bits),1 個停止位元(Stop bits),偶同位檢查(Even parity)
"115200,8,o,1" 表示 速率 115200 bps,8 個資料位元(Data bits),1 個停止位元(Stop bits),奇同位檢查(Odd parity)
其餘依此類推。

 


 

▪ 1.3.4.關於 MODBUS:

 

▪ 1.3.4.1.什麼是 Modbus:
Modbus 是由 Modicon 公司(現為 Schneider 的一個品牌)在 1978 年提出的通訊標準。

Modbus 由於易學易用,耗費系統資源極低,因此已成為工業控制領域常用的一個通訊協定。

Modbus 被廣泛應用在 PLC 與多功能電表等設備中定。

1998 年 Schneider 又推出了 TCP/IP 乙太網路的 ModbusTCP,使MODBUS 應用更推向網際網路。
參考網站訊息 https://www.modbus.org/faq.php

 


 

▪ 1.3.4.2.MODBUS 的網路特性:
按電氣特性可分為 RS-232、RS-422 與 RS-485。

按照資料流程的方向可分成兩種基本的傳送方式:全雙工、半雙工。

RS-485 半雙工通訊由於只需要兩條通訊線,且通訊距離長,被廣泛用在分散式的控制網路架構。

ICDH DDC8 標準品是採用 RS-485 方式傳輸,但也可以訂製 3 線式 RS-232 方式傳輸的產品。

 


 

▪ 1.3.4.3.MODBUS 協定:
Modbus 協定是主 (Master) /僕 (Slave) 通訊協定; 網路上的每個 Slave 設備必須有唯一的位址(範圍從1到247)

Slave 位址 (Slave Address) 用於定址 Slave 設備,由 Master 發起對指定 Slave 位址 的設備詢問,相同 Slave 位址 回覆訊息,其餘的設備不會回應。

Slave 位址 0 用於廣播模式,Slave 設備不需要回應。

傳輸模式依照編碼方式可以分為 RTU 與 ASCII 模式

 

▪ 1.3.4.3.1.MODBUS ASCII 模式:
資料用十六進位 ASCII 碼值表示;
封包必須以“ : ”開始,以“CR -LF”結束;
使用一個 Byte 的 LRC 進行錯誤校驗;
相較於 RTU 模式可以直接由文字通訊程式進行傳輸;

 


 

▪ 1.3.4.3.2.MODBUS RTU 模式:
使用 16 進制編碼;
使用兩個 Byte 的 CRC 校驗碼;
相較於 ASCII 節省一半的通訊量;
CRC 校驗遠較 LRC 運算嚴謹;

ICDH DDC8 採用 RTU 編碼模式

 


 

 


 

▪ 1.3.4.4.MODBUS 的優勢與劣勢:
相對於 BACnet 等較高階完整的通訊協定而言,MODBUS 的優缺點如下:
 

▪ 1.3.4.4.1.優勢:
- 簡易 - 易於實現 + 耗資源低 + 設備成本低
- 通行 - 易於整合

 


 

▪ 1.3.4.4.2.缺點:
- 功能較陽春
- 未定義浮點數、文字等數值格式
- 點的概念非物件概念
- Slave 設備間無法主動資料共享

 


 

 


 

 


 

 


 

▪ 1.4.關於 DDC:
DDC (Direct digital control) 是一種分散式(Distributed control)、可程式(Programmable)控制器,具備小點數、獨立控制、快速反應、容易編成的特性。

在此 ICDH DDC8 編輯器將 DDC 可程式控制器 的控制邏輯方案簡稱為 DDC 或 DDC 程式。

DDC 程式的編輯關於 ICDH DDC 編輯器

 

▪ 1.4.1.傳送至DDC:
將目前 DDC 程式編輯器的內容編譯後傳送到指定 Slave 位址的設備,並儲存於 DDC 中。

上傳的動作可能造成原本的控制中斷,因此建議先確認控制的中斷或改變不會造成受控制設備的損壞,否則建議先將設備脫離控制。

上傳動作前應該確認設備的 Slave 位址選擇是否正確,以免傳送到其他設備,造成 DDC 程式被意外覆蓋而無法復原。

要避免重要設備因錯誤操作而控制程式被覆蓋,建議對重要設備的控制器設定設密碼,以防誤操作。

由於上傳後的 DDC 程式再讀出時,其註解等訊息不會被保留,因此建議妥善儲存原始檔案。

如果原先被設定密碼的控制器,必須先輸入正確密碼後才可以上傳程式。

 


 

▪ 1.4.2.自DDC讀取:
自指定 Slave 位址的設備讀取 DDC 控制程式。如果被設定密碼的程式必須輸入密碼後才允許讀取。
 


 

▪ 1.4.3.程式分析:
對目前編輯的 DDC 程式進行分析,並將錯誤訊息顯示於右側資訊欄中。
程式分析的動作並不會傳送程式到設備上。

 


 

▪ 1.4.4.強制刪除:
被設定密碼的設備如果未輸入正確的密碼將無法進行讀取或寫入操作,因此如果忘記密碼時則只有『強制刪除』一途,但這樣的操作會清除 原有的 DDC 程式而無法復原。因此密碼的保存極為重要。
 


 

▪ 1.4.5.比對程式:
要進入除錯模式時必須確認編輯器目前的程式與指定 Slave 位址設備的內容相同,因此如果不上傳目前的內容到設備,或從設備中讀取程式,就可以利用『比對程式』功能進行比對,比對正確後即可進入除錯模式。
 


 

▪ 1.4.6.輸入密碼:
如果 DDC 程式被設定密碼後,對於 DDC 程式的任何操作都必須先輸入密碼才可進行。輸入密碼後會暫時儲存於編輯器,因此不用每次都輸入。
但如果操作不同 Slave 位址的設備內部密碼不同,則必須重新輸入相對應的密碼。
如果 DDC 設備並沒有被設定密碼,必須選擇『無密碼』,否則操作仍會失敗。

 


 

▪ 1.4.7.DDC 的密碼系統:
ICDH DDC8 允許使用者定義一組密碼進行程式保護,如果定義密碼後,於上傳程式、下載程式、除錯都必須輸入正確密碼,否則無法進行相關作業。

ICDH DDC8 密碼為 1 組 1~99999999 的數字,定義密碼時將 DDC 程式中加入 #password = 12345678 (12345678 為密碼數字)。此程式一旦上傳,則密碼 12345678 即生效。

如果忘記密碼則必須以『強制刪除』方式進行去除密碼,但 DDC 程式也將被抹除,無法再取得

 


 

▪ 1.4.8.關於副程式:
ICDH DDC8 副程式功能提供靈活的副程式調用與匯集平台,以便於學習與整理程式碼。
副程式功能的資料儲存於 ICDH DDC8 安裝路徑的 sub.xml 檔案中,可允許使用者自行增加與編輯程式碼內容。副程式如果被編輯後會在關閉時回存到 sub.xml 檔案中。

 

▪ 1.4.8.1.副程式-群組:
副程式可以區分程式群組,以便於只用者分類調用。選擇不同群組時,下方會列出該群組所屬的副程式集
 


 

▪ 1.4.8.2.副程式-新增:
『新增』副程式時選擇不同群組名稱即可將新增的副程式加到該群組。沒有選擇時預設加到目前選擇的群組中。
如果輸入不同的群組名稱,則會經過確認後增加所輸入名稱的群組。

新增時必須輸入副程式名稱,這個名稱用於副程式索引,因此不建議重複。
副程式描述會在游標移動到副程式名稱處出現,用以輔助說明。
程式碼必須是可以執行的程式碼,由於副程式的程式碼編輯器並沒有文法檢查的功能,因此建議在程式編輯器編輯程式碼複製後貼上。
新增時必須要將副程式名稱、副程式描述與程式碼都輸入才有效。

群組名稱不可留白。

 


 

▪ 1.4.8.3.副程式-編輯:
點選副程式名稱後按下編輯時可以修改副程式內容。
如果此時選擇不同副程式群組則會將副程式移動到指定的群組中。
如果輸入新的副程式群組名稱則會在確認後新增該群組,並且移動到新增的群組中。

 


 

▪ 1.4.8.4.複製到程式:
點選副程式名稱後按下『複製到程式』按鈕可以將副程式碼插入到目前 DDC 編輯器游標所在位置。
 


 

▪ 1.4.8.5.副程式刪除與移動:
點選副程式後按下『刪除』、『上移』、『下移』可以刪除或移動該項副程式。
如果要將副程式移動到其他群組,則必須透過編輯功能進行。

 


 

 


 

 


 

▪ 1.5.關於 DDC 編輯器:
ICDH DDC 程式寫法類似 C 語言,以便於初步具備程式開發經驗者可快速上手。使用許多現成的時間函數、控制函數等,讓使用者可以方便應用於各種控制場合。
 

▪ 1.5.1.DDC 編輯器特點:
ICDH DDC 程式的特點以及注意事項說明如下:
◘ 除了程式被刪除、發生錯誤或除錯模式、強制停止等狀況外,程式自動處在執行狀態,且 0.1 秒執行 1 次。

◘ 不支援 if 、for、while、goto 等條件運算與迴圈、跳躍運算,以確保程式可以每0.1 秒執行 1 次。

◘ 為保持程式結構完成,每一行只支援一種運算(例如 R1 = R1 + R2 + R3),而不可如 R1 = R2 + R3 - R1 等多種運算在同一指令行上。如果需要如上的運算方式,則可以分兩行運算,中間暫存值儲存入 Branch 或其他沒被使用的 Coil 與 Register。

◘ 為了減少程式的使用空間,部分函數的參數數量可以依照需求省略,未輸入的參數將使用預設值。可將游標移到編輯器上各函數上,參閱其相關說明。

◘ DDC 程式支援各變數反向、反轉與 100 補數運算等運算,以方便將變數先做相關處理。變數的反向、反轉與100補數運算

◘ DDC 變數支援自定變數,以增加程式碼的可攜帶性。自定變數

◘ DDC 支援密碼保護功能,以避免辛苦測試的程式碼被盜取,或不知情的使用者覆蓋程式碼。DDC 的密碼系統

◘ DDC 支援除錯模式,可以單步執行或指定中斷點,並即時讀取數值。關於 DDC 除錯模式

◘ DDC 編輯器使用文字編輯方式,可以用習慣使用的複製、貼上等方式快速編輯,並會對關鍵函數、變數等作顏色標示以並具備自動完成輸入功能。編輯時將游標移到關鍵函數、變數上方會出現其相關描述

◘ DDC 編輯器支援 “/* */”以及 “//” 兩種註解功能,以增加程式的可閱讀性。但上述功能會在 DDC 程式自控制器讀出再反組譯後消失。

◘ DDC 編輯器支援以16進制方式輸入正整數數值,與 C 語言相同以 0x…作標示,例如用 0xFFFF 表示 65535。

◘ DDC 程式上傳後可以再讀出反組譯,以復原程式碼。但此操作無法復原註解、自定變數、16進制數值等。

◘ DDC 編輯器具備副程式管理功能,以方便將常用程式碼或程式範例加入副程式庫中,快速取用。關於副程式

◘ DDC 程式的時間函數如 ondelay() 、offdelay() 等會以獨立的計時器作為運算,並不會造成 DDC 程式執行的中斷或延遲時間運算函數

◘ DDC 程式的各類函數除了受程式碼空間以及 DDC 運算暫存區使用量限制外,並沒有限制各種函數的使用數量。DDC 運算暫存區

◘ DDC 的變數為了使用增加彈性與減少程式碼空間,Coil 變數可加 .c 作 1 次 8 個 Coil 的運算;加 .h作 1 次 16 個 Coil 的運算。Register 也具備 .s .U .S .F 以及 .d1 與 .d2 的格式。Coil 變數的各種數值格式Register 變數的各種數值格式

 


 

▪ 1.5.2.程式編輯區:
程式編輯區用來編輯 DDC 程式碼,程式編輯區的編輯方式與一般文字編輯器類似,但會將函數(運算式)、變數、註解、常數等以不同的顏色座標示。將游標移動到函數與變數等關鍵字上,也會顯示該函數或變數的提示。

程式編輯區一般在編輯狀態,此時可以輸入與修改程式碼。編輯中按下空格(' ')、等號('=')、左括弧('(')、井號('#')等預設符號會跳出自動完成視窗,此時可以直接點選函數或變數來完成,也可以按下右鍵來插入函數與變數。

DDC 設定密碼的工作也是在文字編輯器上完成。可以直接輸入 #password =.... 或按下 '#' 號來點選自動完成。密碼設定可以在任何一行位置,但同一個程式中只能輸入一組。DDC 的密碼系統

程式編輯時可以自行定義變數名稱,這在副程式等應用對於增加程式的可閱讀性以及可攜帶性有極大的幫助。自定變數

程式編輯方式與 C 語言類似,但必須注意不要加 ';' 號,每行也只能有一種函數或運算指令。不過可以利用反向的功能(變數的反向、反轉與100補數運算)使程式更為精簡。也可以用 Coil 與 Register 的各種數值格式來增加變數的使用彈性。Coil 變數的各種數值格式Register 變數的各種數值格式

程式編輯時可以利用副程式的功能,管理常用程式碼。關於副程式

程式編輯區在除錯模式是無法編輯的,此時如果游標移動到 Register、Coil、Branch 等變數上,會顯示目前的數值。關於 DDC 除錯模式

 


 

▪ 1.5.3.控制器參數視窗:
控制器參數視窗是用來顯示與設定 DDC 設備參數的工具,要開啟控制器參數視窗時必須將 DDC 設備連上線,並且選擇正確的通訊埠與 Slave 位址,以及通訊格式,否則無法正常顯示。
關於通訊

由於 控制器參數視窗在 MODBUS RTU 網路上是扮演 Master 的角色,因此電腦連接的 RS485 線上不可以有其他的 Master 設備,否則無法正常讀取。

控制器參數視窗 可以讀取指定 Slave 位置設備的系統變數狀態(系統變數)、讀取Branch 變數數值(Branch 暫存變數)或讀取及設定 Coil 與 Register 變數的數值與狀態(Coil 變數 /Register 變數),以及設定輸入輸出模式(設定輸入輸出模式)

 


 

▪ 1.5.4.專案視窗:
DDC 編輯器具備專案模式與單機模式,採用專案模式時可以將多個相同專案的程式儲存於同一個檔案中,方便專案管理。並允許同時開啟多個專案進行程式的複製或參考。

要切換專案模式只要點擊選單的『檢視』『開啟專案視窗』或直接於『專案』選單中『開啟專案』或『新增專案』後開啟。

換專案模式時所有的 DDC 程式都會儲存於 專案中,而不個別儲存,但您也可以利用『檔案』『另存』功能,存成單獨的檔案,或者在開啟單獨的檔案後,點選選單『檔案』『加入專案』,以加入目前開啟的專案。

專案視窗以樹狀方式呈現,可以同時加入多個專案,利用拖曳方式移動,或按下右鍵點選『複製檔案』及『貼上檔案』進行檔案複製動作。移除專案僅是將專案自樹狀圖中移除,不會有刪除檔案的動作。

由於專案模式將同一專案所有程式除在同一個檔案中,因此變更後必須儲存專案,否則個別檔案的變更會無效。

點選專案視窗的專案或檔案時,下方的屬性視窗會顯示該專案與程式的相關訊息。

 


 

▪ 1.5.5.NTC 阻值對照表:
NTC 阻值對照表視窗示用來編輯或上傳以及讀取 DDC 內部的 NTC 阻值對照表。
NTC 阻值對照表是 25 組電阻值,儲存於 DDC 內的 EEPROM 中,作為 類比輸入點的 aintc() 函數運算依據。未上傳任何阻值對照表前,DDC 預存 10K Beta 3950 的對照表,如果您不是使用的是此類 NTC 溫度感測器,就必須依照使用感測器的阻值表輸入 -25℃~100℃ 間隔 5℃ 共計 25 組的對應電阻值。由於 NTC 是負溫度係數,因此阻值應該是溫度值越高時阻值越小。
NTC 阻值對照表視窗同時可以選擇溫度模式,選擇 ℉ 時,雖然阻值對應表仍舊以 ℃ 為輸入的溫度單位,但經過 aintc() 函數轉換的結果會採用 ℉ 為單位。
輸入時需要輸入 Beta 值,這是用來供存檔識別用。
修改後會依照指定 Beta 值儲存於電腦中,供日後讀取,使用相同 Beta 值會覆蓋相同檔案。
每個 DDC 內部只能允許一個 NTC 阻值對照表,因此每個 DDC 只能使用同一種 Beta 值特性的 NTC 溫度感測器。
類比輸入(AI)
aintc 

 


 

▪ 1.5.6.2.4G無線通訊:
ICDH DDC8 方案部分韌體支援 nRF24L01 2.4G無線通訊模組(以下簡稱無線模組),nRF24L01 是挪威 Nordic 半導體公司出品的高性能無線收發器,DDC 配備無線模組後就是一個無線版的 MODBUS Slave 設備。可接受其他無線 MODBUS Master 的指令,另如插 USB 無線模組的 DDC 編輯器電腦或無線溫濕度感測器等。
ICDH DDC8 的無線通訊方案具備成本低廉、連線設定簡單、通訊速率高等優點,並且可以一對多(Master 對 Slave)或多對一(最多同時 4 個 Master) 的通訊。

ICDH DDC8 無線通訊參數設定如下:
網碼:數值範圍 1~65534,用於識別有效封包的網路編號,相同的網路必須使用相同編號,否則就算頻道相同,仍無法識別。不同頻道不同網路仍可以使用相同的網路編號。
頻道:數值範圍 0~124,nRF24L01 支援多達 125 個通訊頻道。相同的網路必須設定相同的頻道,並且不可與鄰近其他網路設相同頻道,以免干擾。
功率:發射功率的 DB 值,越高的數值(nRF24L01 發射功率最大為 0 DB),其發送距離越遠。如果近距離通訊為避免感擾鄰近網路,可考慮將功率調小。
速率:1Mbps 或 2Mbps,較低的速率傳輸距離較遠。由於傳送頻寬需求不大,建議設為 1Mbps 即可。相同的網路必須設定相同速率,否則無法通訊。

必須注意的是 Loader模式不具備無線通訊功能,因此如韌體更新等必須進入 Loader 模式才能執行的功能不能透過無線網路執行。

 


 

 


 

▪ 1.6.關於 DDC 除錯模式:
為了便於確認 DDC 程式執行功能,找出程式的錯誤,ICDH DDC8 系列支援除錯模式,以利暫停或執行到指定位置,並讀取各項變數的數值。
DDC 只要搭配 ICDH DDC8 編輯器可進行即時除錯,除錯模式時程式將無法編輯。

 

▪ 1.6.1.進入除錯模式:
DDC 要進入除錯模式時必須確認 DDC 編輯器目前的程式與指定 Slave 位址設備的內容相同,除了上傳目前的內容到設備,或從設備中讀取,也可以利用『比對程式』功能進行比對,比對正確後即可進入除錯模式。

上傳、讀取、比對與除錯等操作都必須輸入正確的程式密碼才可進行作業。

上傳、讀取、比對等作業成功後,除錯(瓢蟲圖示)按鈕會生效,此時按下按鈕即可入除錯模式。

除錯模式時將游標移到各變數處,會顯示各變數的目前讀值。這個讀值不會更新,除非將游標移開後重新移到上方。如果是常數或時間變數則不會顯示。

 


 

▪ 1.6.2.中斷執行:
除錯模式中如果程式仍在執行,按下 || 按鈕可以停止程式執行,並且會反白顯示目前程式中斷位置。如果按下 ► 鈕則繼續執行。

如果點擊程式碼行號左邊灰色位置可以設定中斷點,按下 > 鈕執行程式時會在被設定中斷點處停止,如果再按下 > 鈕則會執行到下個中斷點。如果沒有設定中斷點則按下 > 鈕每次執行一行指令。中斷點會在被再次點選或離開除錯模式時清除。

為避免除錯模式造成設備控制中斷,在離開除錯模式時應記得恢復執行狀態。否則程式會在 10 分鐘後才自動恢復執行。

 


 

 


 

▪ 1.7.關於函數:
函數(或運算式)是 DDC 程式的基礎。ICDH DDC8 系統以超過 50 個各類函數指令,讓使用者快速達到各項控制與運算需求。

DDC 程式編輯的方式與 C 語言相近,但不需要加分號 ';' ,每行也只能有一種行數或運算式。

為方便函數功能的理解,大致將其分為幾類,說明如下:

 

▪ 1.7.1.時間運算函數:

 

▪ 1.7.1.1.runtime:
運轉計時
out = runtime(in) 
in 為 ON (>= 0.5) 時 累計運轉時數。
out 為浮點數時(Rx.F)每6 分鐘+0.1,否則每小時+1,輸出單位為小時。

為了使運轉計時動作不會因為設備斷電而歸零,因此輸出建議為 R32~R63。當設備發生斷電時,如果輸出使用浮點數模式最大誤差小於 0.1 小時,整數模式則最大誤差小於 1 小時。

ICDH DDC8 主要運算是採用 4 Byte 浮點數,因此必須注意累加的最大值範圍數值範圍與解析度

 


 

▪ 1.7.1.2.ondelay:
延後啟動
out = ondelay(in, delayTime)
out 在 in 為 ON(>= 0.5) 時延後 delayTime (秒)時間變為 ON,而當 in 變為 OFF 時立即變為 OFF

 


 

▪ 1.7.1.3.offdelay:
延後停止
out = offdelay(in, delayTime)
out 在 in 為 ON(>= 0.5) 時立即動作,並且於 in 變為 OFF 時延後 delayTime (秒)時間變為 OFF

 


 

▪ 1.7.1.4.minonoff:
最低動作/停止時間
out = minonoff(in, onTime, offTime)
in 由 on (>= 0.5) 變為 off 時,out 變為 off 但會維持 on 至少 onTime 時間
in 由 off 變為 on 時,out 變為 on 但會維持 off 至少 offTime 時間
offTime 省略時其數值為 0

 


 

▪ 1.7.1.5.time:
時間比較
out = time(H1,M1,S1,H2,M2,S2)
當 RTC 時間 HOUR:MIN:SEC 在 H1:M1:S1 ~ H2:M2:S2 時間範圍內時 out = ON,如果 RTC 的時鐘無效,輸出將為 OFF
H1 與M1 與S1 忽略時會個別帶入目前時間,H2 與M2 與S2 忽略會分別寫入H1、M1、S1 數值
各數值忽略的可能功能組合如下:
out = time(H1) 每天的時數(HOUR)為 H1 時 ON
out = time(,M1) 每小時的分鐘(MIN)為 M1 時 ON
out = time(,,S1) 每分鐘的秒(SEC)為 S1 時 ON
out = time(H1,M1,,H2,M2) 忽略秒數的時間範圍比對
out = time(,M1,S1,,M2,S2) 忽略時數的時間範圍比對
out = time(H1,,,H2) 忽略秒與分的時間範圍比對

其餘依此類推

Local Time(設備時鐘)

 


 

▪ 1.7.1.6.date:
日期比較
out = date(M1,D1,Y1,M2,D2,Y2) 
當 RTC 的日期 MON/DAY/YAER 在 M1/D1/Y1 與 M2/D2/Y2 間時 out = 1,如果 RTC 的時鐘無效,輸出將為 0
M1 與 D1 與 Y1 忽略時會個別帶入目前時間,M2 與D2 與 Y2 忽略會分別寫入M1、D1、Y1 數值
Y1、M2、D2、Y2 忽略時可以有以下的組合:
out = date(M1,D1) -- RTC 日期的月與日相符時為 1
out = date(M1,D1,Y1) -- RTC 日期的年與月及日相符時為 1
out = date(M1,D1,,M2,D2) -- RTC 日期的月與日在 M1/D1 ~ M2/D2 間

Local Time(設備時鐘)

 


 

▪ 1.7.1.7.week:
星期比較
out = week(W1,W2,W3...W6) 
當 RTC 的星期值為 W1~W6 數值時 out = 1,如果 RTC 的時鐘無效,輸出將為 0
W2~W6 可忽略
W1~W6 以數值 1 至 7 各代表 星期一 至星期日 
Local Time(設備時鐘)

 


 

 


 

▪ 1.7.2.數學運算函數:

 

▪ 1.7.2.1.+:
加法運算
out= v1 + v2 + v3 + v4 ...+ v10
out 為所有輸入的總和
v3 ~ v10 可省略

 


 

▪ 1.7.2.2.-:
減法運算
out = v1 - v2

 


 

▪ 1.7.2.3.*:
乘法運算
out = v1 * v2

 


 

▪ 1.7.2.4./:
除法運算
out = v1 / v2

 


 

▪ 1.7.2.5.%:
餘數運算
out = v1 % v2
out 為 v1 除以 v2 的餘數

 


 

▪ 1.7.2.6.avg:
取所有輸入的平均值
out = avg(v1,v2,v3,v4 ....,v10)
v3~v10 可省略

 


 

▪ 1.7.2.7.linear:
線性運算
out = linear(in,slope,zero)
其運算式為 out = (in * slope) + zero

 


 

▪ 1.7.2.8.linear2:
兩點線性運算
out = linear2(in, vi1, vo1, vi2 ,vo2)
將 in 的數值 vi1 對應至v o1,vi2 對應至 vo2,兩點線性轉換輸出至 out

 


 

▪ 1.7.2.9.curve:
多點線性轉換
out = curve(in, in1, out1, in2, out2, in3 ,out3, in4 ,out4, in5 ,out5) 將in 依照 in1~in2,in2~in3,in3~in4,in5~in5 的區間分段,線性轉換為 out1~out2,out2~out3,out3~out4,out5~out5
in4 & out4 與 in5 & out5 可省略
必須 in1 > in2 > in3 > in4 > in5 或 in5 > in4 > in3 > in2 > in1

 


 

 


 

▪ 1.7.3.HVAC函數:

 

▪ 1.7.3.1.wetbulb:
計算空氣濕球溫度
out = wetbulb(Temp, RH) 
Temp 為乾球溫度,單位 deg C,RH 為相對濕度,輸出濕球溫度單位 deg C
例如 R32 = wetbulb (R1,R2),此時 R32 會是 溫度 R1 與 相對溼度 R2 的濕球溫度值

 


 

▪ 1.7.3.2.enthalpy:
計算空氣熱焓值
out = enthalpy(Temp, RH)
Temp 為乾球溫度,單位 deg C,RH 為相對濕度,輸出熱焓值單位 Btu/lb

 


 

▪ 1.7.3.3.dewpoint:
計算空氣露點溫度
out = dewpoint(Temp, RH)
Temp 為乾球溫度,單位 deg C,RH 為相對濕度,輸出露點溫度單位 deg C

 


 

 


 

▪ 1.7.4.輸入輸出函數:

 

▪ 1.7.4.1.filter:
數值緩衝器
out = filter(in, factor)
將 in 依照 factor 的緩衝係數依比例輸出至 out
factor 數值 1~99,數值越小則緩衝效果越小
factor 忽略時其數值為 25
一般用於 AI 受干擾時的濾波

 


 

▪ 1.7.4.2.aintc:
out = aintc(in)
將 AI ADC 值,依照 10K NTC 對應數值變攝氏溫度(度C)
in 應該為 AI 模組對應的 Register

必須注意,由於 不同的 10K NTC Thermistor (熱敏電阻)的曲線不同,必須搭配指定形式的10K NTC Thermistor 才有效。

 


 

▪ 1.7.4.3.ai010:
out = ai010(in, v0vdc, v10vdc)
將in 的ADC 轉換值依照 v0vdc(0 Vdc對應值) 與 v10vdc(10 Vdc 對應值) 的數值對應轉換到輸出
適用於 0~10 Vdc 或 0~20 mA 類比輸入
in 必須為 AI 模組對應的 Register

 


 

▪ 1.7.4.4.ai420:
out = ai420(in, v4ma, v20ma)
將 in 的 ADC 轉換值依照 v4ma(4mA對應值) 與 v20ma(20 mA對應值) 的數值對應轉換到輸出
適用於 2~10 Vdc 或 4~20 mA 類比輸入
in 必須為 AI 模組對應的 Register

 


 

▪ 1.7.4.5.ao010:
out = ao010(in)
將數值範圍 0~100 的in 數值依照 0 = 0 Vdc 與 100 = 10 Vdc 的數值對應轉換到DAC 類比輸出
適用於 0~10 Vdc 或 0~20 mA 類比輸出,通常用於 pid() 函數輸出
out 應該指向 AO 模組對應的 Register 位置

 


 

▪ 1.7.4.6.ao420:
out = ao420(in)
將數值範圍 0~100 的 in 數值依照 0 = 4 mA 與 100 = 20 mA 的數值對應轉換到DAC 類比輸出
適用於 2~10 Vdc 或 4~20 mA 類比輸出,通常用於 pid() 函數輸出
out 應該指向 AO 模組對應的 Register 位置

 


 

 


 

▪ 1.7.5.數位運算函數:

 

▪ 1.7.5.1.&:
And 運算
out = v1 & v2 & v3 & v4 ...& v10
v1 ~ v10 與 out 數值範圍為 0~65535 (0~0xFFFF)
v3 ~ v10 可省略

 


 

▪ 1.7.5.2.|:
Or 運算
out = v1 | v2 | v3 | v4 ...| v10
v1 ~ v10 與 out 數值範圍為 0~65535 (0~0xFFFF)
v3 ~ v10 可省略

 


 

▪ 1.7.5.3.^:
Xor (互斥或)運算
out = v1 ^ v2
將 v1 & v2 做 Xor (互斥或)運算
v1 , v2 與 out 數值範圍為 0~65535 (0~0xFFFF)

 


 

▪ 1.7.5.4.>>:
右移運算
out = v1 >> v2
將 v1 右移 v2 位
v1 , v2 與 out 數值範圍為 0~65535 (0~0xFFFF)

 


 

▪ 1.7.5.5.<<:
左移運算
out = v1 << v2
將 v1 左移 v2 位
v1 , v2 與 out 數值範圍為 0~65535 (0~0xFFFF)

 


 

▪ 1.7.5.6.swap:
out = swap(v)
將 v & 0xFFFF 後將前後兩個 Byte 數值互換
例如數值 swap(0x1a2b) 時 out 會是 0x2b1a

 


 

▪ 1.7.5.7.tobcd:
out = tobcd(in)
將 in 以 BCD 編碼方式轉換輸出至 out。
in 的有效範圍是 0~9999
例如 in 為 9999 時 out 為 39321(0x9999)

 


 

▪ 1.7.5.8.frombcd:
out = frombcd(in)
將 in 數值視為 BCD 編碼方式轉換輸出至 out。in 的有效範圍是 0~39321 (0~0x9999)
例如 in 為 39321(0x9999) 時 out 為 9999

 


 

 


 

▪ 1.7.6.比較函數:

 

▪ 1.7.6.1.<:
小於
out = v1 < v2
當v1 < v2 時 out 為 1,否則為 0

 


 

▪ 1.7.6.2.<=:
小於等於
out = v1 <= v2
當v1 <= v2 時 out 為1,否則為 0

 


 

▪ 1.7.6.3.>:
大於
out = v1 > v2
當v1 > v2 時 out 為 1,否則為 0

 


 

▪ 1.7.6.4.>=:
大於等於
out = v1 >= v2
當v1 >= v2 時 out 為 1,否則為 0

 


 

▪ 1.7.6.5.==:
等於
out = v1 == v2
當 v1 等於 v2 時 out 為 1,否則為 0

 


 

▪ 1.7.6.6.comp:
具死帶的比較器
out = comp(v1, v2, db)
當 v1 >= v2 + db/2 時 out 為 1,當 v1 <= v2 - db/2 時 out 為 0,否則 out 維持前次數值

 


 

▪ 1.7.6.7.within:
out = within(in, v1, v2) 

當 out == ((in>=v1) && (in<=v2)) 或out == ((in>=v1) && (in<=v2) 輸出為 1,否則為 0

例如 C1 = within(R1, 0, 100) ,則 C1 會在 R1數值介於 0~100 間為 1,否則為 0

 


 

▪ 1.7.6.8.max:
取最大值
out = max(v1,v2,v3,v3 ....,v10)
out 為v1 ~ v10 的最大值,v3 ~ v10 可省略

 


 

▪ 1.7.6.9.min:
取最小值
out = min(v1,v2,v3,v3 ....,v10)
out 為v1 ~ v10 的最小值,v3 ~ v10 可省略

 


 

▪ 1.7.6.10.limit:
輸出限制
out = limit(in, v1, v2)
將 in 數值輸出至 out 並限制在 v1 與 v2 間

 


 

 


 

▪ 1.7.7.控制函數:

 

▪ 1.7.7.1.pid:
比例積分微分運算
out = pid(in, sp, kp, ki, i_limit, kd)
將 in 與 sp 比對誤差,並以 kp 取比例輸出,ki 取積分輸出,kd 取微分輸出,積分最大量受i_limit 限制
ki 與 i_limit 與 kd 省略時為純比例控制;kd 省略時為比例積分控制。輸出範圍 0~100 運算方式為 out = (in-sp) * kp + I + D + 50; 其中I 會以 (in-sp) * ki / 600 的速度,每0.1 秒計算一次累加或遞減,並限制在 ± i_limit 間
D 為本次誤差減去前次誤差乘以 kd ,其中誤差值為 (in-sp)
一般應於溫度比例控制等場合

比例控制應用範例:
R1 = pid(R4, R32, R33)
R1 為比例輸出; R4 為溫度感測值,R32 為溫度設定值,R33 為比例增益。如果 R33 為 20,則 R32 等於 R33 時,R1 輸出為 50%,R32 - R33 數值為 1 則輸出為 70%。
如果應用於加熱控制,則 R1 採取 100 補數方式輸出,則可以用 @R1 表示。上述例子中,R32 - R33 數值為 時輸出為 由 70% 變為 30%。

 


 

▪ 1.7.7.2.gate:
條件式輸出
out = gate(in, control)
只有當 control 為 True (>= 0.5) 時將 in 輸出至 out,否則 in 不輸出至 out
例如 C4 = gate(C1,C2)相當於以下程式,但更為精簡省空間。
if C2
   C4 = C1
endif

 


 

▪ 1.7.7.3.multistep:
多段輸出
out = multistep(in, step, delayTime)
out 依照 in 0~100 數值分為 step 段,並以 100/step 作為 deadband,當 delayTime > 0 時會於輸出改變後延遲 delayTime (秒)時間再行運算
delayTime 省略時為 0

 


 

▪ 1.7.7.4.cycle:
週期輸出
out = cycle(in, cycleTime, onTime, offTime)
out 會以 cycleTime (秒)時間的 in 百分比時間為 ON,其餘時間為 OFF。in 合理值為 0~100。
當out ON 的時間低於 onTime (秒)時間會維持 onTime 時間 ON 動作
當out OFF 的時間低於 offTime (秒)時間會維持 offTime 時間 OFF 動作
onTime 與 offTime 數值省略時為 0
本函數的時間最小單為 0.1 秒

 


 

▪ 1.7.7.5.oneshot:
正緣觸發
out = oneshot(in)
當 in 由 ON(>=0.5) 變為 OFF 的數值時輸出為 1,否則輸出為 0
一般用於偵測數位點狀態變化時用

 


 

▪ 1.7.7.6.switch:
多段選擇開關
out = switch(in, v0,v1, v2,v3,v4.....,v9)

輸出依照 in 的數值選擇 V0 ~最多 V9 的輸出,數值低於 1 時選擇 v0。
v3 ~ v9 可省略
例如 R32 = switch( B0, R10, R11, R12, R13, R14, R15, R16, R17, R18 )
相當於以下程式,但更為精簡省空間:

if B0 >= 8
   R32 = R18
elif B0 >= 7
   R32 = R17
elif B0 >= 6
   R32 = R16
elif B0 >= 5
   R32 = R15
elif B0 >= 4
   R32 = R14
elif B0 >= 3
   R32 = R13
elif B0 >= 2
   R32 = R12
elif B0 >= 1
   R32 = R17
else
   R32 = R0
endif

 


 

▪ 1.7.7.7.latching:
自保持輸出
out = latching(set,reset)
當 reset >= 1 時 out 為 1;當 set >= 1 時 out 為 0; 否則保持前一狀態
例如 C4 = latching(C1,C2)相當於以下程式,但更為精簡省空間。
if C2
   C4 = 0
   Temp = 0
elif C1
   C4 = 1
   Temp = 1
else
   C4 = Temp 
endif

 


 

▪ 1.7.7.8.hold:
輸出鎖定
out = hold(in, control)
當 control 為 True (>= 0.5) 時將 in 輸出至 out,否則 out 會被保持最後數值
例如 C4 = hold(C1,C2)相當於以下程式,但更為精簡省空間。
if C2
   C4 = C1
   Temp = C1
else
   C4 = Temp
endif

 


 

▪ 1.7.7.9.=:
直接輸出
out = in
將 in 數值直接輸出至 out

 


 

▪ 1.7.7.10.cov:
數值變化監視器
out = cov(in, db) 
當 in 與儲存值比較相差超過 db 時 out 為 1,並儲存當時 in 值。否則 out 為 0

 


 

▪ 1.7.7.11.countup:
上數器
out = countup(in,v1,max)
當 in 為 ON (>= 0.5) 時,v1 每次 +1,到數值達到 max 後 out 為 1,且 v1 不再增加;否則 out 為 0
max 省略時為最大值 16777216(0x1000000)

 


 

▪ 1.7.7.12.countdown:
下數器
out = countdown(in,v1,min)
當 in 為 ON (>= 0.5) 時,v1 每次 -1,到數值達到 min 後 out 為 1,且 v1 不再減少;否則 out 為 0
min 省略時數值為 0

 


 

▪ 1.7.7.13.fmc:
浮動馬達控制(Floating Motor Controller) 
out = fmc(IN,MT,Open,Close,DB) 
IN 為馬達位置輸入,數值範圍 0~100 (%),out 為馬達位置,為計算馬達行程時間與開啟、關閉動作計算所得的相對位置,MT 為馬達行程時間,合理範圍為 10~1000(秒),Open 與 Close 各為浮動馬達開啟與關閉的數位輸出點(BO)。當 IN 與 Out 差異低於 DB(Deadband) 時,輸出將不改變,DB 忽略時為 1。
與 fmct 函數差異在於本函數於 100% 與 0% 會持續輸出 Open 或 Close 命令不會關閉,適用於本身帶有頂點位置關斷保護的馬達";

 


 

▪ 1.7.7.14.fmct:
浮動馬達控制-帶逾時控制 (Floating Motor Controller With Timeout) 
out = fmct(IN,MT,Open,Close,DB)
IN 為馬達位置輸入,數值範圍 0~100 (%),out 為馬達位置,為計算馬達行程時間與開啟、關閉動作計算所得的相對位置,MT 為馬達行程時間,合理範圍為 10~1000(秒),Open 與 Close 各為浮動馬達開啟與關閉的數位輸出點(BO)。
當 IN 與 Out 差異低於 DB(Deadband) 時,輸出將不改變,DB 忽略時為 1。

與 fmc 函數差異在於本函數於 100% 與 0% 會持續輸出 Open 或 Close 命令達 MT 時間後停止輸出,適用於本身未帶有頂點位置關斷保護的馬達";

 


 

 


 

▪ 1.7.8.條件式:
ICDH DDC8 接受類似 VB 的條件式做為條件判斷,預以執行達到條件的程式區塊忽略未達到條件的程式區塊。
ICDH DDC8 條件式允許巢狀方式,但深度不可超過 16 層(if 深度加 1,endif 深度減 1)。
範例如下:
if R1 < 10
   R2 = 1
elif R1 < 20
   R2 = 2
elif R1 < 30
   R2 = 3
else
   if R3 == R2
     R3 = R3 +1
   endif
endif

 

▪ 1.7.8.1.if:
if +條件運算式
if 指令為條件式的開頭,且必須以 endif 作為結束。
當 if 後的條件運算式結果為 >= 0.5 時視為 True(真),此時會執行下一行開始的運算式或函數,一直到下一個 elif、else、endif 為止。反之,則會忽略不執行一直到下一個 elif、else 或 endif 為止。
if 後的條件運算式允許所有支援除了條件式外的運算式或函數,但同樣必須遵循相同的規定,可能的 if 條件範例如下:
◘ if C0
◘ if !B3
◘ if R1>100
◘ if R3.F == R5.F
◘ if oneshot(C2)
等。

 


 

▪ 1.7.8.2.elif:
elif + 運算式或函數
elif 指令為條件式接續 if 或 elsif 的條件式,不得在 else 或 endif 之後,且必須以 endif 作為結束。
當較前方的 if 與 elif 條件未達到,而該行的條件達到時(運算數值 >=0.5),則會執行下一行開始的運算式或函數,一直到下一個 elif、else、endif 為止。
如果較前方的 if 或任一個 elif 條件時達到,無論該行的條件是否達到,都會忽略到下一個 elif、else 或 endif 的運算。 
elif 後的運算式或函數規則與 if 完全相同。

 


 

▪ 1.7.8.3.else:
else
else 後方不可以接條件運算式,用來表示當前方所有的 if 與 elif 條件都未達到時,執行下一行開始的運算式或函數,一直到 endif 為止,否則忽略期間的運算式或函數。

 


 

▪ 1.7.8.4.endif:
endif
結束條件式,當有多個條件式做巢狀判斷時,endif 為結束最近一個條件式

 


 

 


 

 


 

▪ 1.8.關於變數:
ICDH DDC 變數分為 MODBUS 標準變數、系統變數、運算暫存區、暫存變數等,說明如下:
 

▪ 1.8.1.MODBUS 標準變數:
共計有 Coil 以及 Register 兩種
 

▪ 1.8.1.1.Coil 變數:
Coil 用以顯示與控制 DI / DO輸入輸出的 ON/OFF狀態,以及作為設定用途,為方便程式編輯,其代號以 C0~C63 表示,C0 的通訊實際通訊編號為 0,也就是 MODBUS 定義的 Coil 1;C1 為 Coil 2,其餘依此類推。 

C0~C31 對應實際周邊 DI/DO 輸入輸出狀態,如果周邊接的是 DI,則該點是唯讀的。如果對應的周邊沒有接或是接AI/AO模組,則對應的 Coil 可以作為運算暫存器使用。

C32~C63 可以作為運算暫存器或參數設定,例如運轉命令等。C32~C63 的狀態會在斷電時存入內部 EEPROM 中,因此需要記憶的參數必須使用 C32~C63 範圍的 Coil。C32~C63 並沒有實際對應到周邊。

控制器參數視窗 Coil 項可以查看各別 Coil 數值,或雙擊(Double Click)個別的 Coil 以改變設定。唯讀的 Coil (用於 DI) 或 被 DDC 程式寫入數值的 Coil 此項操作會失效。視窗下方點選 Hex 允許將指定編號的 Coil 開始 16 個 Coil 同時存取(編號小的在較低位元),點選 Oct 則以指定編號的 Coil 開始 8 個 Coil 同時存取。

 

▪ 1.8.1.1.1.Coil 變數的各種數值格式:
為方便 Coil 的程式控制,ICDH DDC8 可以用類似 Register 方式讀取 Coil,例如標示 C0.h,會將 C0~C15 以 C0 為最低位元,C15 為最高位元方式讀取或寫入數值。此方式方便一次大量對 Coil 讀寫及運算,但必須注意一次會用到 16 個 Coil。

另一種方式是標示 C1.c 格式,會將 C1~C8 以C1 為最低位元,C8 為最高位元方式讀取或寫入數值。

使用 .h 或 .c 方式存取 Coil 時,必須注意是否會有附蓋或重複存取問題,因為一次分別存取 16 或 8 的 Coil。

 


 

▪ 1.8.1.1.2.Coil 點數對應:
◘ C0~C3 第 1 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態
◘ C4~C7 第 2 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態
◘ C8~C11 第 3 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態
◘ C12~C15 第 4 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態
◘ C16~C19 第 5 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態
◘ C20~C23 第 6 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態
◘ C24~C27 第 7 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態
◘ C28~C31 第 8 個 DI 或 DO 模組的 第 1~4 點的輸入輸出狀態

◘ C0~C31 未被設定為 DI 或 DO 時,可以作為內部暫存器,供讀取或寫入。
◘ C32~C63 是具被斷電記憶功能的 32 個內部暫存器,可供讀取或寫入。
◘ 在通訊編碼中,C0~C63 的 Address 位置碼為 0x0000 ~ 0x003F,如果使用標準的 MODBUS 圖控,則可能必須選擇 coil 1 ~ coil 64,這是因為 MODBUS 定義 coil 編號是從 1 開始,但實際通訊編碼則是從 0 開始。

 


 

 


 

▪ 1.8.1.2.Register 變數:
Register 是兩個 Byte 的記憶體,用以顯示與控制 AI/AO 輸入/輸出的數值,以及作為參數設定用。為方便程式編輯,其代號以 R0~R63 表示,R0 的通訊實際通訊編號為 0,也就是 MODBUS 定義的 Register 40001;R1 為 Register 40002,其餘依此類推。

R0~R31 對應實際周邊 AI/AO 輸入輸出狀態,如果周邊接的是 AI,則該點是唯讀的。如果對應的周邊沒有接或是接 DI/DO 模組,則對應的 Register可以作為運算暫存器使用。

R32~R63 可以作為運算暫存器或參數設定,例如運轉命令等。R32~R63 的數值會在斷電時存入內部 EEPROM 中,因此需要記憶的參數必須使用 R32~R63 範圍的 Register。R32~R63 並沒有實際對應到周邊。

控制器參數視窗 Rigister 項可以查看各別 Rigister 數值,選擇 u16 會以 16 位元正整數方式存取;選擇 s16 會以 16 位元 符號整數方式存取;選擇 d1 會以 s16/10 方式存取,也就是數值範圍 -3276.8~3276.7;選擇 d2 會以 s16/100 方式存取,也就是數值範圍 -327.68~327.67;或選擇 Hex 以 16 進制方式顯示。
視窗下方可以選擇自指定編號開始 2 個 Register 以 浮點數 (Float) / 32 位元正整數 (U32) / 32 位元符號整數 (S32) 方式作存取。

由於 Register 兩個 Byte 的數值範圍僅 0~65535 (0x0000~0xFFFF),無法表示小數、負數等,為增加應用彈性與程式便利性 ICDH DDC8 的 Register 可以各種不同的數值格式。

 

▪ 1.8.1.2.1.Register 變數的各種數值格式:
◘ R0.s~R63.s 將指定 Register 視為符號整數,亦即數值範圍 -32768 ~ 32767
◘ R0.d1~R63.d1 將指定 Register 視為符號整數 /10 ,數值範圍 -3276.8 ~ 3276.7
◘ R0.d2~R63.d2 將指定 Register 視為符號整數 /100 ,數值範圍 -327.68 ~ 327.67
◘ R0.U~R63.U 將指定編號開始 2 Registers 視為 4 位元組整數,高位在前
◘ R0.S~R63.S 將指定編號開始 2 Registers 視為 4 位元組符號整數,高位在前
◘ R0.F~R63.F 將指定編號開始 2 Registers 以浮點數(float)方式存取,高位在前

.d1 與 .d2 方式對於 PID 控制或溫溼度感測等場合非常方便,可以用一個 Register 表示到小數後一到兩位,不過透過通訊讀取時必須注意到數值倍率的調整。

此外,由於 .U/.S/.F 三種方式都是將兩個 Register 一起使用,因此必須注意其下個編號的 Registers 不可再單獨使用,以免造成錯誤。

.U 與 .S 雖然數值範圍達 32 位數,但由於 ICDH DDC 內部運算是以浮點數方式運算,因此實際數值精度僅達到 24位數,超出精度的數值可能無法精確表示(數值範圍與解析度)。

 


 

▪ 1.8.1.2.2.Register 點數對應:
◘ R0~R3 第 1 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態
◘ R4~R7 第 2 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態
◘ R8~R11 第 3 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態
◘ R12~R15 第 4 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態
◘ R16~R19 第 5 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態
◘ R20~R23 第 6 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態
◘ R24~R27 第 7 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態
◘ R28~R31 第 8 個 AI 或 AO 模組的 第 1~4 點的輸入輸出狀態

◘ R0~R31 未被設定為 AI 或 AO 時,可以作為內部暫存器,可供讀取或寫入。
◘ R32~R63 是具被斷電記憶功能的 32 個內部暫存器,可供讀取或寫入。
◘ 在通訊編碼中,R0~R63 的 Address 位置碼為 0x0000 ~ 0x003F,如果使用標準的 MODBUS 圖控,則可能必須選擇 register 40001 ~ register 40064,這是因為 MODBUS 定義 Register 編號是從 40001 開始,但實際通訊編碼則是從 0 開始。

 


 

 


 

 


 

▪ 1.8.2.Branch 暫存變數:
ICDH DDC8 內共計有 B0~B7 共計 8 個 Branch 變數,用以作為 DDC 程式運算暫存用,以連接不同函數與運算的輸入輸出。

控制器參數視窗 Branch 項可以顯示 浮點數(As float)、正整數(As U32)、符號整數(As S32)或者直接以 16 進制編碼顯示(As Hex),如果未特別指定數值儲存格式,應該以浮點數(As float)方式查看數值。

Branch 變數在 MODBUS 通訊上為唯讀的

 

▪ 1.8.2.1.Branch 變數的各種數值格式:
Branch 變數預設以浮點數方式儲存,也可以用 B0.U~B7.U 強制以 32 位正整數儲存,或是用 B0.S~B7.S 強制以 32 位符號整數儲存。

浮點數方式儲存可以應用於大部份場合,但部分有整數與浮點數轉換需求時,可以用 .S 與 .U 方式作強制轉換

使用正整數與符號整數格式時應注意數值範圍與解析度問題 數值範圍與解析度

 


 

 


 

▪ 1.8.3.DDC 系統變數:
除了 Coil (C0~C63) 、Register(R0~R63)、Branch(B0~B7)外,DDC 程式還有以下的變數可以做運算輸入。

這些 DDC 系統變數在程式中都是唯讀的,也不支援 ‘~’(Reverse)與 ‘@’ (100補數)運算

 

▪ 1.8.3.1.時間變數:
◘ YEAR : 數值 2000~2255 為年份值
◘ MON : 數值 1~12 為月份值,其餘數值 為 RTC 無效
◘ DAY : 數值 1~31 為日期值,其餘數值為 RTC 無效
◘ DOW : 數值 1~7 代表星期一至星期日,其餘數值為 RTC 無效
◘ HOUR:數值 0~23 為小時數值,其餘數值為 RTC 無效
◘ MIN:數值 0~59 為分鐘數值
◘ SEC:數值 0~59 為秒數值
◘ DMIN:數值 0~1339,為當日自午夜 12 點整起的分鐘數
◘ DAY.p:每天 ON (數值1)一個程式週期(0.1秒),RTC 無效時不會動作
◘ HOUR.p:每小時 ON (數值1)一個程式週期(0.1秒),RTC 無效時不會動作
◘ MIN.p:每分鐘 ON (數值1)一個程式週期(0.1秒),RTC 無效時不會動作
◘ SEC.p:每秒 ON (數值1)一個程式週期(0.1秒),RTC 無效時不會動作

RTC Local Time(設備時鐘)

 


 

▪ 1.8.3.2.INIT.p(系統啟動):
當 DDC 程式重新啟動時,系統會將 INIT.p 變數 On 一個程式週期 (0.1 秒) 的信號,用以提供程式運算作初使化的指令或保護動作。
 


 

▪ 1.8.3.3.Pulse Counter(脈衝計數器):
當 C0~C31 設為 DI 時,則 DDC 可以由對應的變數 P0~P31 取得 Pulse 累積數值,讀取後 Pulse 累積數值後 變數 P0~P31 會歸零。
實際應用時只要用 R32 = R32 + P0 的方式,就可以將 C0 的 Pulse 累積值存入 R32 中。
脈衝計數器 P0 ~ P31 只能在 DDC 編輯器中使用,不會顯示在控制器設定視窗。
脈衝輸入(PI)

 


 

 


 

▪ 1.8.4.系統變數:
系統變數是 控制器內部的各項參數,可以透過 DDC 程式讀取或這者以專用 Registers 存取例如時間、程式控制、密碼輸入等

控制器參數視窗 DDC 項可以查看各項變數

 

▪ 1.8.4.1.Local Time(設備時鐘):
控制器設定視窗 DDC -> Local Time 處以時:分:秒 格式顯示 DDC 內時間,顯示----/--/-- --- ??:??:?? 則表示 RTC(實時時鐘)無效。

由於部份 ICDH DDC8 方案 DDC 內時鐘不具備斷電的電池備援功能,因此必須透過網路進行時間同步,否則可能會造成部分時間運算功能失效,此時如果 DDC 程式正常則會運行在 Run (Without RTC) 模式(RTC 無效模式)。
於控制器連線時,點選控制器設定視窗上方的時鐘圖形,可以發送時間同步訊息。

MODBUS 通訊寫入時間時建議以 MODBUS Function 10 寫入 Register 40101 ~ 40106,各為 秒,分,時,日,月,年。時間數值範圍時間變數

 


 

▪ 1.8.4.2.Firmware Version (韌體版本):
控制器參數視窗 DDC -> Firmware Version 顯示目前運行的韌體版本
 


 

▪ 1.8.4.3.Program Status(運行狀態):
控制器設定視窗 DDC -> Program Status 顯示 DDC 程式運行狀態:
◘ Run:正常運行,並且 RTC (內部時鐘)有效
◘ Run (Without RTC):正常運行, 但 RTC 無效 。此時無法執行 time() 與 date() 函數,HOUR、DAY、MON、YAER、DOW、DAY.p、DMIN 等時間變數都無效
◘ Idel:無 DDC 程式
◘Error :Code Error:DDC 程式碼異常,程式停止執行。
◘ Error :Buffer Overflow:DDC 運算暫存區空間不足,程式停止執行。
◘ Error :Password Error:密碼輸入無效。當密碼輸入錯誤時會顯示此訊息,但此時程式可能仍維持運行。此狀態將持續秒後回到原來狀態 
◘ Pause:程式暫停執行,如果未有新的指令,會在 10 分鐘後繼續執行程式

如果 DDC 未安裝金鑰,則 Program status 會顯示 "No License,contact your vendor",此時您的設備只能當作 MODBUS IO 使用,無與運行 DDC 程式。如果顯示 "Demo License Timeou" 表示展示版金鑰運行時間到達,必須重新送電後才可正常運作。

關於金鑰
DDC 運算暫存區
DDC 的密碼系統
Local Time(設備時鐘)

 


 

▪ 1.8.4.4.Program Change(運行命令):
控制器參數視窗 DDC ->Program Change 顯示目前的 DDC 運轉命令狀態:
◘ Ready:執行完畢,等待下個命令
◘ Pause:暫停程式執行
◘ Run:繼續執行程式
◘ Step:執行程式到下個指令
◘ Restart:重新程式執行,會產生 INIT.p 的信號
◘ Unload:將DDC 程式從 EEPROM 中刪除
◘ Load:自 EEPROM 中讀取程式並檢查
◘ Break:執行程式到 DDC Run Index 被寫入的位置

由於 Program Change 的命令會在極短時間內執行完畢,因此大部分看到的 Program Change 都會是在 Ready 狀態
寫入 Program Change 都必須寫入正確的密碼

 


 

▪ 1.8.4.5.DDC Version (DDC 版本):
控制器參數視窗 DDC -> DDC Version 顯示被寫入 DDC 程式的 編輯器版本
 


 

▪ 1.8.4.6.DDC Length(DDC 程式長度):
控制器參數視窗 DDC -> DDC Length 顯示存入 EEPROM 的DDC 程式長度,最長為 1.5kB (1,536 Bytes)
 


 

▪ 1.8.4.7.DDC Modify Date Time (DDC 變更時間):
控制器參數視窗 DDC ->DDC Modify Date Time 顯示 目前 DDC 程式被上傳到 DDC 的時間,這個時間由 DDC 編輯器寫入(與 DDC 內時鐘無關)
 


 

▪ 1.8.4.8.DDC Temporary Buffer(DDC 運算暫存區使用量):
控制器設定視窗 DDC ->DDC Temporary Buffer 顯示 DDC 運算暫存區的使用量,最高 1kB (1,024Bytes),超過會產生錯誤,並且不會執行DDC 程式
DDC 運算暫存區

 


 

 


 

▪ 1.8.5.DDC 運算暫存區:
不同函數在運算時可能會需要 1 至數個 Byte 的運算暫存器,作為儲存運算值用,例如儲存比例積分的積分累進值。
ICDH DDC8 內部具備 1K Bytes 的運算暫存區供各函數取用,但如果程式使用量超過上限時,DDC 將會無法正常運作,並於 Program Status 處顯示異常訊息。
DDC Temporary Buffer(DDC 運算暫存區使用量)

 


 

▪ 1.8.6.常數:
ICDH DDC8 常數分為整數與浮點數。使用程式空間以 0 與 1占用最少 (1個 Byte),0~255(或-128~127)的數值次之,0~65535(或-32768~32767) 佔用3個 Byte,如使用浮點數方式標示則會佔用 5 個 Byte 的程式空間

ICDH DDC8 與允以 16 進制標示數值,例如 0xffff 表示整數 65535

作為布林 (Boolean) 運算時,如果數值不是 0 或 1,一般以 >=0.5 視為 ON(True),否則為 OFF(False)

 


 

▪ 1.8.7.變數的反向、反轉與100補數運算:
ICDH DDC8 的變數前加 ‘!’ / ‘~’ / ‘@’ 三種符號時,可分別作 NOT、Reverse以及 100 補數運算。作為輸入參數時,讀取時會先做反轉,加在輸出參數前會反轉後存入。DDC 系統變數不支援此類運算。
 

▪ 1.8.7.1.'!' NOT 運算:
數值 >= 0.5 時輸出 0,否則輸出1。
運算結果必定為 0 或 1、一般用於布林(Boolean)運算。

輸入反向應用範例:
C1 = !B0
輸出反向應用範例:
!C0 = C4 & C5

 


 

▪ 1.8.7.2.'~' Reverse 運算:
將原數值取整數後 & 0xFFFF,再做 Reverse 運算。一般用於 and / or / xor / shit 等邏輯運算(數位運算函數)。
Reverse 運算不適用於 Coil 以及 Register 的 .d1 & .d2 格式。
數位運算函數

輸入反轉應用範例:
R1 = ~R4
輸出反轉應用範例:
~B0 = R1 & 0xFF

 


 

▪ 1.8.7.3.'@' 100 補數(100' Complement)運算:
原數數值大於 100 反轉會變為 0,小於 0反轉會變為 100,否則會取 100 的補數(100 - 原數值),例如 30 會變為 70,99 會變為 1,一般用於 PID 等類比控制運算。不適用於 Coil 。

輸出補數應用範例:
@R0 = pid(R4,25,20)

 


 

 


 

▪ 1.8.8.自定變數:
為方便程式的可攜性,ICDH DDC8 編輯器允許以自定變數代替實體變數。自定變數必須前後以 ‘$’ 符號標示,例如 ‘$power$’ ,於使用該自定變數時,必須在前面加以定義。
例如 ‘#define $power$ = C1’,編譯器自動會以 C1 取代隨後遇到的 $power$。
如果未事先定義,則會在編譯時產生錯誤提示。

 


 

▪ 1.8.9.數值範圍與解析度:
ICDH DDC8 主要運算是採用單精度浮點數 ,因此數值的解析度為 2 的 24次方,如果用於每次加 1 的累加運算,則累加數值達 16777216 後即無法再增加,因此用作運轉計時 runtime() 或 Pulse 累加等運算應注意。

ICDH DDC8 浮點數依照 IEEE Standard 754 單精度標準,以 4 Bytes 儲存數值,共計 32 Bits。其格式以 v = (-1)s2e-127(1.f) 表示,其中 s 為 1 Bit 符號位元,e 為 8 Bit 指數,以及 f 為23 位底數(1.f 的 ‘.’ 為小數點)。

 


 

 


 

▪ 1.9.關於金鑰:
金鑰是 ICDH 針對每個 ICDH DDC8 系列產品的序號產生的 256 Bytes授權碼,用來確保控制器的授權功能。如果沒有獲得授權碼的產品僅能當作一般 MODBUS 輸入輸出模組使用,而沒有可程式 (Programmable) 功能。換句話說,你只能透過通訊來對未被授權的產品下命令,而無法透過 DDC 程式達到獨立控制 (Stand alone) 的功能,同時也沒有脈衝輸入、PWM功能,以及 Register 與 Coil 變數斷電記憶功能。

未安裝金鑰的控制器可以透過兩種方式將金鑰裝入控制器內:『自檔案發送金鑰』與『產生器傳送金鑰』。
產生器是指 ICDH 提供的金鑰產生器,可以將產生器插在 USB 座上,依照授權的數量產生金鑰並安裝到控制器中。每當安裝金鑰到不同序號的控制器,金鑰產生器的授權數量自動減一,直到授權數量用完為止。相同的序號重複安裝將不會影響授權數量。

如果沒有金鑰產生器場合仍能夠『讀取序號至檔案』後將檔案傳送到 ICDH 以獲取授權碼,再將授權碼『自檔案發送金鑰』。

安裝好的金鑰也可以『匯入金鑰至檔案』以備日後使用。

 

▪ 1.9.1.匯入金鑰至檔案:
將 指定 Slave 位址的 DDC 內部已經安裝得金鑰讀出,並儲存於檔案中。由於金鑰存於 DDC 的 EEPROM 中,並且只能用於相同序號的設備,因此大部分的應用並不需要這麼做。
除非控制器有將 EEPROM 全部清除的操作,但這樣的操作只在重新安裝 Loader 程式,不會出現在產品的現場應用中。
關於 Loader 模式

 


 

▪ 1.9.2.自檔案發送金鑰:
將由 ICDH 提供的金鑰檔案中,讀取指定 Slave 位址序號的金鑰,並傳送到設備中。由於金鑰必須匹配設備內的序號,因此如果檔案內沒有此設備序號的金鑰,則這項操作將會失敗。
 


 

▪ 1.9.3.產生器傳送金鑰:
在大量授權的場合,『讀取序號至檔案』後再向 ICDH 取得授權金鑰後再『自檔案發送金鑰』這樣的操作並不符合時間效益,因此您可以向 ICDH 購取金鑰產生器,直接產生並發送金鑰。

每個金鑰產生器會有自己的密碼,使產生金鑰的動作生效,這個密碼同樣由 ICDH 提供。
輸入密碼並按下確定後會自動傳送金鑰到指定 Slave 位置的設備,並將剩餘數量減一。每當安裝金鑰到不同序號的控制器,金鑰產生器的授權數量自動減一,直到授權數量用完為止。相同的序號重複安裝將不會影響授權數量。

選擇『匯出金鑰』按鈕可以將目前的金鑰全部匯出成檔案,這可以用在將產生器回收至 ICDH 時,將金鑰備份用。

 


 

▪ 1.9.4.讀取序號至檔案:
小量的授權可以將指定 Slave 位址的設備序號利用『讀取序號至檔案』的操作儲存到相同檔案,E-mail 至 ICDH 付費索取授權,然後再以『自檔案發送金鑰』方式寫入金鑰至設備。
 


 

▪ 1.9.5.展示版金鑰:
為了便於 ICDH DDC8 推廣需求提供的展示版金鑰,具備送電後 8 小時的正常版金鑰功能,當運行 8 小時後,DDC 程式將停止運行,回到無金鑰的 IO 板狀態,直到重新送電後才可正常運行 DDC 程式功能。
DDC 程式因為展示時間到達而停止運行時,可以由 Program Status 變數判斷。
Program Status(運行狀態)

 


 

 


 

▪ 1.10.關於韌體:
韌體(Firmware 又稱固件) 是存在 DDC 控制器內的主要執行程序,設備在出廠時會先預載最新的韌體。如果因應專案需求增加週邊設備、控制函數或發現存在缺陷(Bug)時,可以透過 ICDH DDC8 編輯器進行韌體更新。

由於 ICDH DDC8 方案可能依照不同客製需求與腳位規劃會有不同韌體版本,並且可能彼此不相容。因此必須向您的供應商確認韌體版本,如果錯誤的版本相無法進行更新。

韌體更新方式有兩種,一般模式與 Loader 模式。

 

▪ 1.10.1.更新韌體(至指定地址):
在選擇要更新的設備 Slave 位址後,按下『更新韌體』按鈕並選擇要更新的韌體,此時 ICDH DDC8 編輯器會檢查韌體版本是相容,如果相容會將指定位址設備強制切換到 Loader 模式,並且進行韌體下載。

如果未成功進行韌體更新作業,可能在數秒後回到正常模式;如果在韌體傳送過程中產生錯誤,則可能會停留在 Loader 模式,此時如果再次傳送,則可能必須以傳送韌體(至 Loader 模式)才能成功。

由於韌體下載時輸入與輸出點可能會在不確定的狀態,因此建議控制重要週邊的設備應確認可能的風險或事先將受控制的設備脫離控制。
關於 Loader 模式

 


 

▪ 1.10.2.傳送韌體(至 Loader 模式):
當設備韌體有誤會其他因素無法正常運作時,可以將 Slave 位址的指撥開關設定為 255,也就是全部 ON,來強制進入 Loader 模式,此時必須選擇『傳送韌體』按鈕來進行韌體更新。這項操作與『更新韌體』的差異只在少了強制切換到 Loader 模式與先期的韌體相容性檢查,並且以 Slave 位址 255 做為通訊目標。

如果準備載入的 韌體與 Loader 不相容,將會停止傳送,並回報錯誤訊息。
關於 Loader 模式

 


 

▪ 1.10.3.關於 Loader 模式:
Loader 模式是 ICDH DDC8 的特殊模式,用來執行韌體刪除、韌體寫入以及通訊格式變更等功能。

Loader 模式時,所有 DDC 程式運算停止運作,輸入、輸出功能都將停止或處在於不確定狀態,因此不建議在連接重要設備時進入Loader 模式。

在 Loader 模式中,狀態 LED 燈會快速閃爍,此時通訊格式固定為 9600,8,n,2。

進入 Loader 模式的方式有兩個,一個是透過 ICDH DDC8 編輯器『更新韌體』按鈕執行,將指定 Slave 位址的設備切換到 Loader 模式,此時他的韌體將會被清除,並且無法回復。為了避免此項操作造成韌體受損,ICDH DDC8 編輯器會先檢查準備載入的韌體相容性。此項操作 ICDH DDC8 編輯器 會以相同的 Slave 位址,通訊格式改以 9600,8,n,2 對設備進行韌體更新的操作。

另一種進入 Loader 模式的方式是將 Slave 位址的指撥開關設定為 255,也就是全部 ON。

 


 

 


 

 


 

▪ 2.Q & A:

 

▪ 2.1.如何安裝 DDC 編輯器 ?:
◘ 必須使用 作業環境為 Windows XP 或 Windows 7 的電腦,具備 RS232 通訊埠(必須另備 RS232 轉RS485 轉換器)或者透過 USB 轉 RS485 轉換器亦可。
◘ 取得最新編輯器程式,並執行 setup.exe,最新的程式可以在https://bacnet.webnode.tw 網站中找到
◘ 由於 ICDH DDC8 編輯器必須具備 .NET Framework 2.0 環境,因此如果電腦未曾安裝過 .NET Framework 2.0,則必須將電腦連接到網際網路,並依照指示下載 .NET Framework 2.0 (選擇 Accept 以進行下載,由於下載時間是網路速度而定,可能耗費較長時間) 。
◘ 依照指示安裝 ICDH DDC8 編輯器 (都選擇 Next 即可) 。

 


 

▪ 2.2.何謂 DDC ? 有何優點 ?:
DDC (Direct digital control) 是一種分散式(Distributed control)、可程式(Programmable)控制器,具備小點數、獨立控制、快速反應、容易編成的特性。
相較於傳統的PLC 方案, DDC 方案可以就近安裝於設備旁,節省線路費用。
由於可以獨立控制,相較於傳統 IO 模組,降低通訊線路或異常造成的風險,更可有效減少通訊負荷,增加控制的即時性,達到每 0.1 秒一個運算週期。

而 DDC 程式的編輯器簡易上手快,完整的控制函數降低程式編程門檻,因此不需要專業的程式工程師就可以完成程式的編輯與修改。同時也降低對於系統初設工程師與初設系統商的依賴。
關於 DDC

 


 

▪ 2.3.如何取得 ICDH DDC8 控制器 ?:
目前 ICDH DDC8 控制器正式授權廠商為聯力達科技 https://www.embedded-box.com.tw/,您可以聯絡該公司已進行購買、試用或訂製相關產品,或是上 ICDH 網站獲取最新資訊https://bacnet.webnode.tw
 


 

▪ 2.4.ICDH DDC8 最多只能有 20 個輸入/輸出點嗎?:
標準的 ICDH DDC8 方案具備 5 個輸入/輸出插槽以支援最多 20 個泛用輸入輸出點,包含 AI、AO、DI 以及 DO 點可以每四個為一組,自由搭配(除了 2AI2AO 模組外)。
如果有更大的點數需求,可以訂製具備 12 個擴充點的版本,以安裝 12 DI 卡或 12 DO 卡,將總點數增加至 32 點,但增加的點數無法作為 AI 或 AO 用途。如果選用此一版本時,也無法再選用第二的 MODBUS RTU 通訊埠,或訂製其他擴充功能。

 


 

▪ 2.5.我的 DDC 可以整合外部的設備嗎 ?:
ICDH DDC8 標準具備一個 MODBUS RTU Slave RS485 通訊介面,供其他 MODBUS Master 設備控制,因此主要的整合任務必須由這一個 Master 設備進行。如果有第二的 Master 設備時(例如 人機介面),必須選用具備兩個 MODBUS RTU Slave RS485 通訊介面 的版本。但必須注意兩個通訊埠的通訊格式必須一致。
如果必須要連結其他 Modbus Slave 設備,例如多功能電表、變頻器或智慧型感測器、顯示器時,則必須另外訂製 Firmware,標準韌體是無法勝任的。
關於通訊

 


 

▪ 2.6.如何透過其他 MODBUS 程式讀取與控制輸入/輸出點:
使用標準 MODBUS RTU 程式,透過 RS485 介面,設定與 DDC 相同的通訊格式(通訊格式)進行連接,Coil 與 Register 地址相對於輸入/輸出點以及 DDC 內 C0~C63 與 R0~R63 的變數關係MODBUS 標準變數
您也可以透過 ICDH 的 MODBUS 通訊記錄程式來參考與判斷 RS485 通訊資料,該程式可以訪問網站https://bacnet.webnode.tw找到

 


 

▪ 2.7.DDC 程式空間只有 1.5KB 是否太少 ?:
ICDH DDC8 方案的 DDC 程式空間為 1.5KB (1,536 Bytes),儲存於內部 EEPROM 中。由於DDC 程式是用極精簡的代碼方式儲存,每個運算式只佔用數個 Bytes,因此 1.5KB 的城市空間足夠寫上百行指令或函數,足夠應付大部分的應用場合。
關於 DDC

 


 

▪ 2.8.我的 DDC 程式為何不能正常執行 ?:
可能有的狀況如下:
◘ 您的控制器沒有安裝金鑰 關於金鑰
◘ 您的DDC 程式超出程式空間,無法正常上傳傳送至DDC
◘ 您的DDC 程式暫存器使用量超出容量限制,無法正常運行DDC 運算暫存區
◘ 您的DDC 時鐘未定時進行同步,時間運算功能停止Local Time(設備時鐘)
◘ 您的DDC 處在 Loader 模式,未正常運行 Firmware關於 Loader 模式
◘ 您的DDC 處在 除錯模式,處在暫停模式關於 DDC 除錯模式
◘ 您的DDC 程式將浮點數數值運算存入整數,而變化量被轉變成整數時濾除,例如程式碼 R32 = R32 + 0.1,由於 R32 預設數值為 0~65535 的正整數,當 R32 數值由 0 變為 0.1 時,在存入 R32 時轉換成整數,結果仍維持 0

 


 

▪ 2.9.我的 DDC 為何不能連線 ?:
可能的狀況如下:
◘ 電腦 COM Port 選擇不是正確的通訊埠,或驅動程式異常。
◘ MODBUS RTU RS485 線路正負錯誤。
◘ MODBUS RTU RS485 超出最大負載量(32 個 Device),或線路太長、未安裝終端電阻、使用分岐方式配線,造成網路信號不良。
◘ MODBUS RTU RS485 超過一個 Master 設備。
◘ MODBUS RTU RS485 網路上有其他 DDC 地址與連線的 DDC 地址重複。
◘ DDC 指撥開關設定位正確,或更改設定後未重新送電。
◘ DDC 的通訊格式不正確
關於通訊

 


 

▪ 2.10.如何修改或確認目前的通訊速率與格式 ?:
◘ 進入 Loader 模式後重新送電關於 Loader 模式
◘ 利用 ICDH DDC 編輯器工具選單進行讀取目前通訊格式或設定通訊格式
◘ 離開 Loader 模式後重新送電

 


 

▪ 2.11.為何定時控制的功能不能正常執行 ?:
ICDH DDC8 方案的內部時鐘(RTC)會在斷電後停止,因此必須透過通訊埠重新寫入正確時鐘後才可正常運算。如果內部時鐘格式不正確時,所有關於時間的運算與變數將停止運算。
如果有時間運算的應用場合,通訊的 Master 端應該定時傳送時鐘數值進行同步,以確保時間
相關功能運作正常。
時間變數
Local Time(設備時鐘)

 


 

▪ 2.12.沒有安裝金鑰的版本與正常安裝金鑰版本有何差異?:
沒有安裝金鑰的 DDC 只是簡易的 MODBUS IO 控制器,只能透過通訊讀寫 Coil 與 Register 點以讀取或控制。
因為無法寫入 DDC 程式,除了不能獨立運行外,也不能使用 PI (Pulse Input) 與 NTC (負溫度係數溫度感測器)轉溫度的功能。同時輸入輸出點也沒有辦法透過斷電記憶點來達到記憶最後狀態的需求。

 


 

▪ 2.13.如果我的 DDC 是沒有金鑰版本,如何進行升級或試用 ?:
您可以透過 ICDH DDC 編輯器->工具->『讀取序號至檔案』後,將序號傳給您的供應商購買金鑰,或將公司名稱、網址、用途等相關資訊傳到 ericchf@gmail.com 信箱,以申請試用版金鑰。試用版金鑰會在連續送電 8 小時候失效,重新送電後才可繼續運作。試用版金鑰申請程序需要 1 至 3 天時間。
 


 

▪ 2.14.如何進行程式除錯 ?:
◘ 程式編輯後,選擇上傳或程式分析功能會進行程式編譯,期間如果有錯誤將會出現提示。
◘ 如果程式運行狀態與預期不符,可進入除錯模式,以進行逐步測試關於 DDC 除錯模式
◘ 必須注意除錯模式雖然提停止了 DDC 程式運行,但 Modbus 通訊端仍可以正常讀寫 Coil 與 Register,因此如果有第二個 Modbus 通訊端,並且仍然被寫入命令,則除錯時的狀態可能不是真實 DDC 運算的結果。
◘ 離開除錯模式時,應確認程式處在正常運行狀態系統變數

 


 

▪ 2.15.使用 NTC 溫度感測器有何注意事項 ?:
◘ 必須使用具備 NTC 輸入的AI 輸入模組( 4AI 或2AI2AO模組)類比輸入(AI)
◘ 必須使用 10K 負溫度係數熱敏電阻,如果不是使用 Beta 3950 的阻值表,必須建弊病傳送至 DDCNTC 阻值對照表
◘ 每個 DDC 只能建立一個 NTC 阻值對照表,因此同一個 DDC 內 所有的 NTC 輸入必須使用相同 Beta 特性的感測器。

 


 

▪ 2.16.如何使用 Pulse Input 的功能 ?:
◘ 使用 DI 點作為輸入端脈衝輸入(PI)
◘ 使用 DDC 程式將 DI 點對應的 PI 變數加到 具被斷電記憶的 Register 中列如 程式碼 R32 = R32 + P8Pulse Counter(脈衝計數器)
◘ 必須注意標準的 Register 數值最大為 65535,如果要使用更大的數值範圍,建議將兩的 Register 擴展為浮點數方式,例如程式碼 R32.F = R32.F + P8
◘ 由於浮點數有數值精度限制,因此必須注意仍有數值最大限制數值範圍與解析度
◘ 雖然長整數最大數值為 4294967295 ,但由於 DDC 內部仍使用浮點數做運算,因此仍受浮點數精度限制
◘ Pulse Input 的最高輸入頻率為 100 HZ (Duty cycle 50% 時),超出頻率的場合可能造成部份信號被忽略。

 


 

▪ 2.17.如何讓輸出點於斷電重新送電後保持原有狀態 ?:
DDC 的輸出點對應到 C0~C31 與 R0~R31,上述點並沒有斷電記憶功能,因此必須透過 DDC 程式將具備斷電記憶的點寫出到對應的輸出點,例如 程式碼 C0 = C32
MODBUS 標準變數

 


 

▪ 2.18.DDC 的 PID 控制運算與計時功能能有幾組 ?:
ICDH DDC 的 PID 控制與其他定時控制函數並沒有有明確的數量限制,但是程式空間當然不可以超過 1.5KB 的最大容量限制,使用的運算暫存器也不能超出限制。儘管如此,上述函數的數量族可以因應大部分的控制需求。
DDC 運算暫存區

 


 

▪ 2.19.韌體更新的注意事項為何 ?:
◘ 不同產品編號(Product Code)的韌體可能不相容,安裝時將出現提示,並停止安裝
◘ 相同產品編號(Product Code)的產品如果安裝與周邊不相符的韌體可能可以運行,但部份功能可能無法運作
◘ 韌體升級過程中如果停止,則 DDC 由於原有韌體以刪除,因此會停留在 Loader 狀態
◘ 如果透過將指撥開關設為 255 (全部 ON) 以強制進入 Loader ,則更新完成後仍就會執行在 Loader 狀態,直到設定正確地址並重新送電後。
◘ 如果使用『更新韌體(至指定地址)』時,控制器不需要先強制進入 Loader 狀態。但如果因為傳送中斷造成停留在 Loader 模式時,可能需要改以『傳送韌體(至 Loader模式)』才可正常傳送。
◘ 由於韌體更新的封包較大,因此通訊品質不佳的網路系統建議以單機方式更新,不要透過該網路線傳送。
◘ 更新韌體時,如果網路線上有其他 Matser 應將其脫離,或將要更新的 DDC 脫離,以單機方式傳送。
◘ 如果韌體更新後完全不會運作,則建議進入 Loader 模式後再更新,如果仍無法運作,請洽詢您的供應商,確認韌體相容性。
◘ 韌體更新作業時,輸出狀態可能無法預期,因此建議先將 DDC 脫離控制後再更新。
關於韌體

 


 

▪ 2.20.DI /DO 數位輸入/輸出模組的注意事項為何 ?:
◘ 不可送電中插拔或更換模組。
◘ 插入時必須先確認腳位正確後再施力插入,以免受損。
◘ 標準的 DI 模組是不具備偵測電源的,因此必須施加工作電源。
◘ 隔離型的 DI 與 DO 模組,單一模組的共點相通,但與其它模組不通。
◘ 使用 DO 點時應該注意最大的耐壓與電流容量是否超過規格。

 


 

▪ 2.21.AI /AO 類比輸入/輸出模組的注意事項為何 ?:
◘ 不可送電中插拔或更換模組。
◘ 插入時必須先確認腳位正確後再施力插入,以免受損。
◘ 類比輸入點具備選擇插銷,必須選擇在正確位置,尤其類比輸入點選擇在 mA 輸入時,會並接 125 歐姆電阻,由於電阻功率不大,因此必須避扁誤接到其他電源線,否則可能致使設備受損。
◘ 類比輸出點選擇為 0~10Vdc 電壓輸出時,輸出點不可與接地點短接,否則可能損壞設備。
◘ 類比輸出點選擇為 4~20mA 電流輸出時,輸出阻抗最好在 250 歐姆左右為佳,最大不宜超過 500 歐姆,否則負載效應會造成偏差。
◘ 類比輸入與輸出點的地點(COM)都是相通的,因此必須注意接入的感測器與驅動器其地電位必須相同,否則可能造成信號誤差,甚至使產品受損
◘ 每個 DDC 只能接一個 2AI2AO 模組在指定位置,其位置可以在開啟『輸出/輸入設定』視窗時,各的插座選項得知。

 


 

▪ 2.22.關於電源應注意什麼 ?:
◘ 標準 ICDH DDC8 控制器使用 24Vac 電源,由於電源並未隔離,因此電路接地點點與電源相通。與其它設備(包含其他 DDC)使用相同電源時,並需注意正負,否則會造成設備受損。
◘ 標準 ICDH DDC8 控制器電源使用半波隔離設計,以預留與其他半波整流驅動器/感測器共用電源的應用。但如果與其他無電源隔離的全波整流感測器/驅動器共用電源,並且將信號相接時,會使電源短路,造成設備損壞,必須注意。
◘ 隔離型的 DI 與 DO 模組可以與 DDC 共用電源,但此時 DI 與 DO 隔離功能喪失,如果數位電上的干擾源過大會影響 DDC 正常運作,因此不建議如此應用。

 


 

 


 

▪ 3.關於 ICDH (元米智控研發工作室):
元米智控研發工作室(Intelligent Control Design House) 成立於 2012 年 5月。本工作室累積了超過十年的自動控制工程經驗與十年自動控制產品開發經驗,專注於 MODBUS、BACnet 等通訊協定產品開發。使用以低成本的 8 位元MCU 核心或 32 位元的高效能核心為客戶打照專屬的可程式控制系統。

元米智控研發工作室以成熟的、低成本的整合方為客戶打造高價值、持續服務的可程式控制方案,人性化的操作介面,讓您自有品牌不再是夢想,更多的資訊請造訪網站: https://bacnet.webnode.tw

 


 

▪ 4.關於本手冊:
本手冊適用於 IDCH DDC8 系列產品。
手冊版本 V1.05 版
完稿日期 2013/03/13