1.線上手冊:
1.1.電腦規格需求:
1.1.1.硬體需求:
CPU 建議為 2 GHz Dual-Core雙核以上
1GB 以上RAM
160 GB 以上硬碟
具備實體 RS232/RS485 通訊介面或 USB RS232/RS485 通訊通訊轉換器。如介面為 RS232 時,必須增加 RS232 轉 RS485 轉換器。
1.1.2.軟體需求:
Windows 7 或以上之 作業系統
Microsoft .NET Framework 4.5
1.2.關於 ICDT DDC8:
ICDT DDC8 是元米科技有限公司提供的 8 位元核心可程式控制器方案。
聯力達科技LLD-DDC8-01為例
本系統 ICDT DDC8 雖使用 8 位元核心,但可輕易完成大部分的控制任務,是最具性能價格比(C/P 值)的方案
ICDT DDC8 系列具備 1.5K 的可程式 (Programmable) 空間,以每 0.1 秒執行一次所有函數指令。超過 50 個運算函數與指令,使程式編輯簡易而快速。再搭配除錯模式與副程式功能的輔助,讓使用者更快速上手。各式的變數具備不同的數值格式選項,讓程式更為簡潔。
1.2.1.ICDT DDC8 硬體規格:
ICDT 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.2.2.ICDT DDC8 方案的特點:
◘ 精簡的硬體架構促成低廉的硬體成本與穩定的運作性能。
◘ 全中文化的工具程式,完整的中文線上解說文件,大幅降低進入門檻。
◘ 副程式功能提供程式碼管理與應用範例解說。
◘ 所有輸入輸出點(擴充點除外)都可以選擇 AI/DI/AO/DO 功能,除了AO 外,只需要緩衝電路,不需要轉換周邊,節省成本並降低故障率。
◘ 所有 DI 點都可作為脈衝輸入(最高 輸入頻率 100 Hz),使產品應用範圍更廣泛。
◘ 支援兩點脈衝寬度調變(PWM) 輸出,輸出頻率範圍 2 Hz ~ 60 kHz。
◘ 部份參數具備斷電自動儲存功能,保留運轉與設定數值不受斷電破壞。
◘ 高階的程式碼,輕易達到獨立運作需求。
◘ 程式碼自動完成與提示功能,簡化程式輸入步驟。
◘ 線上即時除錯功能,可一步步瞭解程式運算與輸入輸出結果。
◘ 使用 MODBUS 通訊,適合大部分使用環境。
◘ 預留多總擴充周邊,能因應各種客製化需求。
◘ 具備韌體更新能力,可隨時修正韌體或改為客製版韌體。
◘ 硬體與軟體可依照客戶需求編修介面,以建立自我品牌產品。
1.3.關於 ICDT DDC32e:
ICDT DDC32e 是元米科技提供具備乙太網路通訊能力的 32 位元核心可程式控制器方案, 相較於 DDC8 方案速度更快、容量更大、點數更多,擴充性更強,可以視為乙太網路超大容量版的 DDC8。
聯力達科技LLD-DDC32E-01為例
ICDT DDC32e 同樣使用時下最流行的 32 位元 ARM Cortex-M3 MCU,執行時序達 120Mhz ,並具備 RTC 時鐘,可獨立作時程控制。
ICDT DDC32e 系列具備 16K 的可程式 (Programmable) 空間,以每 0.1 秒執行一次所有函數指令。ICDT DDC32e 系列的 DDC 可程式功能與 DDC8 方案相容。
1.3.1.ICDT DDC32e 硬體規格:
ICDT DDC32e 硬體規格如下
◘ ST(意法半導體) 32 位元 ARM Cortex-M3 MCU, 最高時脈 120MHz 或更高(依照實際選用 MCU 而定)
◘ 記憶體容量:1024KB + 2048KB Flash、128 KB RAM、8KB FRAM 或更高(依照實際方案而定)
◘ DDC 程式空間 16KB
◘ 標準具備 20 個泛用輸入輸出點數,其中 8 個可以選擇作為 AI 輸入(依照 MCU 選擇不同,AI的最大數量會有差異)
◘ 可依照需求客製化 I2C、SPI、UART 等周邊功能,或增加最多 12 個數位輸入輸出點
1.3.2.ICDT DDC32e 方案的特點:
◘ 使用更高級的核心,具備更高的執行速度、更大的可程式空間與更充足的記憶體容量。
◘ 具備 10M/100M 乙太網路介面,兩個標準 RS485 通訊界面,並預留最多達 3 個串列通訊功能。
◘ 兩個標準 RS485 通訊界面可各別作為 MODBUS RTU Slave,供其他 Master 設備讀取,也可作為 DDC8 Gateway,提供每迴路最多 32 個 DDC8 所有記憶體的讀寫與DDC 程式傳輸及設定。或是自行編輯 MODBUS RTU 指令的 MODBUS Translator 功能
◘ 20輸入輸出點都可以選擇 AI/DI/AO/DO 功能(AI最多為 8個,依照 MCU 選用不同,數量可能會有差異),除了AO 外,只需要緩衝電路,不需要轉換周邊,節省成本並降低故障率。
◘ 具備 RTC 時鐘,可獨立作時程控制。
◘ 使用MODBUS TCP Slave通訊,另具備兩組 MODBUS RTU 通訊,適合大部分應用場合。
◘ 支援 DHCP動態IP 地址配置,搭配 ICDT 專用圖控,可免除IP衝突的困擾。
◘ 與 DDC8 相容的程式指令與特性。
◘ 支援 Embedded WEB HMI UDP,能以最低的成本,達到可自行編輯的華麗網頁圖控需求(需搭配 Android 平板或 Raspberry PI) 。
◘ 具備韌體更新能力,可隨時修正韌體或改為客製版韌體。
◘ 硬體與軟體可依照客戶需求編修介面,以建立自我品牌產品。
1.4.關於 ICDT 虛擬 DDC:
ICDT 虛擬 DDC (Virtual DDC) 是執行於 Windows(基於 Cygwin) 環境的應用程式,可以模擬 DDC32e 除了通訊週邊與輸出輸入週邊等大部份功能,除了供 DDC 程式學習外,同時供 ICDT WEB HMI (及其 OEM 系列) 圖控系統使用。
虛擬 DDC 適用於 WINDOWS 7 / 8 / 10 的作業系統,一旦執行後即常駐於背景執行,直到(按下上方"虛擬 DDC"按鈕) 強制關閉為止。
虛擬 DDC 可以產生一個 2048 個 Register 與 2048 個 Coil 的 Modbus TCP Server,其預設的 TCP Port 為 502,可以透過控制器參數視窗的 Config 頁修改預設的 TCP Port 。 2048 個 Register 與 2048 個 Coil 點除了各自最前面的 32 點啟動時歸零外,其餘點每 10 分鐘定時儲存於硬碟中,以供啟動時讀取最終儲存數值。
虛擬 DDC 與 其他 DDC 相同方式每 0.1 秒執行一次 DDC 程式,可以補足 ICDT WEB HMI 圖控系統的巨集功能即時性的不足,並有效降低大量運用巨集指令對於系統的負荷。
1.5.關於輸入與輸出:
ICDT DDC 支援最多 20 個泛用輸入輸出點,將以每 4 個為一組,設定為 4個DI(4DI)、4個DO(4DO)、4個AI(4AI)、4個AO(4AO)或 2個AI + 2個AO(2AI2AO),或者具備 2 個Relay與手自動切換開關的 2DOR。
由於硬體設計的不同,可能是固定模式或者可自行選擇模組方式,後者將可以透過 ICDT DDC 編輯器設定輸入輸出種類。
除了 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。
ICDT DDC32e 另具備 SPI IO 模式,可依照需求訂製最多存取 4 個 Register 與 4 個 Coil 的輸出/入模組。
ICDT DDC 另外具備12個擴充,可依照需求訂製 12個 DI 或 DO 點擴充卡,使最大輸入/輸出點達到 32 點。擴充卡同樣必須以 4 點為 1 組,每組必須為 4DI 或 4DO 模式。選用 DI/DO 點擴充時必須安裝對應的韌體,並且無法使用第二組通訊埠等其他擴充功能。
1.5.1.設定輸入輸出模式:
在控制器參數視窗中選擇 IO 項可以顯示目前輸入輸出設定的模式以及數值狀態。
如果是數位輸出(DO)點,則可以直接雙擊(Double click) Coil 位置下達命令,類比輸出(AO)則可以用同樣方式輸入數值。但如果這個輸出點被 DDC 程式寫入數值,則該操作可能會失效。
要改變模組設定時直接點選 『輸入/輸出設定』按鈕或未設定模組位置,在各模組位置選擇不同的模組類型即可,但必須注意選擇的類型必需與實際安裝的模組相符,否則會發生錯誤。
2AI2AO 模組與 2PWM 模組都各只能在指定位置安裝一只。當開啟 『輸入/輸出設定』視窗時可以選擇的位置就是該模組的有效位置。
如果模組型式選擇為未安裝(None),則無論實際安裝任何模組都不會與 Coil 或 Register 發生連動。
部份固定輸入輸出形式的應用方案,模組選擇功能將失效。
1.5.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.5.3.數位輸出(DO):
當指定的輸入輸出位置選用 4DO 時,其對應的位置會是數位輸出模式,並將對應的 Coil 狀態,作接點或開集極(Open Collector) 輸出。其對應位置[參閱
Coil 變數]。
2DOR模組的第 1 與第 2 點作為手/自動狀態監視,同樣為 DI 性質,其狀態為 ON 時,第 3 與第 4 點的出點才可控制(自動狀態)。第 1 與第 2 點狀態為 OFF(手動狀態) ,則對應的輸出點將無法控制,並且反映實際手動輸出狀態。
2DO 模組後兩點為 DO點,功能與 4DO 後兩點相同。
模組的選擇必須搭配實際安裝於相對位置的模組類別。
接點或開集極輸出必須注意到驅動電壓與電流不可以超出最大的設計值。如果連接的不是電阻性負載,必須注意過大的驅動瞬間電流是否會造成輸出點損壞。1.5.4.類比輸入(AI):
ICDT DDC8 系列每個泛用點都可以選擇為 類比輸入(AI)點,DDC32e 則依照 MCU 的選擇,數量會有差異。當指定的輸入輸出位置選用 4AI 時,其對應的位置會是 類比輸入模式。如果搭配 類比輸入模組,則可以連接 4~20mA 或 0~10 Vdc 的信號輸入。
選用 2AI2AO 模組時,前兩點功能與 4AI 前兩點相同。
ICDT DDC 的 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 ]
部份 ICDT DDC 類比輸入點支援 10K NTC Thermistor (負溫度係數變溫電阻)溫度感測元件,這是一種性價比很高的溫度感測方案,適用於常溫感測與控制場合。當連接此感測元件時,必須將 AI 模組選擇 NTC 的插銷位置,並依照 Beta 值上傳正確的阻值對照表,同時使用 aintc() 函數做轉換。
[參閱
aintc]
NTC 阻值對照表 的輸入[參閱
NTC 阻值對照表]
類比輸入接線時應該使用遮蔽線並避免與其他控制線、電源線等導線共管或並行,以免干擾類比輸入。1.5.5.類比輸出(AO):
ICDT DDC 系列每個泛用點都可以選擇為 類比輸出(AO)點。當指定的輸入輸出位置選用 4AO 時,其對應的位置會是 類比輸出模式。如果搭配 類比輸出模組,則可以連接 4~20mA 或 0~10 Vdc 的信號輸出。
ICDT DDC 的 AO 點依照 AO 模組搭載 DAC(數位至類比)轉換器的不同 ,可能是 8 或 10 或 12 位元解析度,會將對應 Register 的數值 0~0xFF00 或 0xFFC0 或 0~0xFFF0 轉換 為 0~20mA 或 0~10Vdc 信號輸出。
ICDT DDC 控制器可以接一個 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.5.6.脈衝輸入(PI):
ICDT DDC 輸入輸出模組選用 DI 模式( 4DI 模組或 2DI2DO 模組前兩點)時,可以作為 Pulse(脈衝)輸入,用以累計輸入變化的次數。理論上的最高輸入頻率為 100Hz,但實際會受到 DI 的輸入濾波電容限制,愈大的濾波電容會有愈高的抗干擾力,但有效的輸入頻率也會隨之降低。
PI 一般用在 KWH 、BTU 等累積量的輸入,也可以用於輸入頻率的量測,但頻率最高受到前項濾波電容的限制。
PI 的數值狀態不會出現在控制器設定視窗中,只能由 DDC 程式運算中使用。PI 的使用[參閱
Pulse Counter(脈衝計數器)]
1.5.7.脈寬調變輸出(PWM):
ICDT DDC 支援在指定模組位置兩點脈衝寬度調變輸出 (Pulse Width Modulation,PWM) ,DDC8 預設的在第 4 個模組位置。設定為 2PWM 模組時,可以具備兩個 PWM 輸出點,以作為 LED 照明等無段調變輸出,有效的輸出頻率為 2 Hz ~ 60 kHz。
2PWM 模組使用模組對應位置四個 Register,前兩個 Register 設定頻率,數值 2 ~ 60000 對應 2 Hz~60 kHz。後兩個 Register 設定 PWM 輸出百分比,0~0xFFFF(65535) 對應 0~100% 的 PWM 脈波寬度。由於調變頻率的需求, PWM 輸出百分比可能無法實際達到 16-Bit 的解析度,但至少可以達到 8-Bit 解晰度以上。
當頻率低於 2 Hz 或 PWM 輸出百分比為 0 時, PWM 輸出點將不會輸出。
1.5.8.SPI擴充模組 (SPI IO):
ICDT DDC32e 方案的泛用輸入輸出點可以選擇為 SPI IO 模式,用以連接選配的 SPI 擴充模組,以作為 16-Bit AI 或是 LED 顯示器、溫溼度感測器、紅外線遙控發射/接收器等用途或其他點數擴充。
DDC 選擇為 SPI IO 模式時,DDC 會將相對位置的 4個 Coil 與 4個 Register 數值寫出,再讀取SPI 模組的數值寫回 DDC 內相對應位置,因此不需要修改 DDC 的韌體即可訂製不同 SPI 模組,以擴充不同功能。
SPI IO 對應 Coil 與 Register 的動作特性依照連結的 SPI 模組而定。
1.6.關於通訊:
ICDT DDC32e 支援 MODBUS/TCP 與 MODBUS RTU,DDC8 支援 MODBUS RTU,DDC 編輯器 與 DDC32e 通訊時可以選擇 MODBUS/TCP 模式(透過乙太網路)或 MODBUS RTU(透過 RS485)。
DDC8 除了透過 RS485 通訊外,也可以連接在 DDC32e 的 RS485 通訊,透過 DDC32e 的 Gateway 模式進行通訊。
1.6.1.選取通訊埠:
1.6.1.1.DDC8:
DDC8 採用 MODBUS RTU 格式透過 RS485 界面通訊,DDC 編輯器連接 DDC8 時,除了透過電腦的串列通訊埠 (COM port) 直接連接外,還可以使用 DDC32e 的 Gateway 模式進行連接。
使用電腦的串列通訊埠連接時,一般使是使用 RS232 轉 RS485 的轉換器連接電腦既有的 RS232 端口,或是透過 USB 轉 RS485 的介面直接連接,如果使用 USB 轉 RS323 的介面器則必須另透過一個 RS232 轉 RS485 的轉換器連接。
使用電腦直接連接的方式必須於編輯器上方選擇 DDC8 模式,並且選擇連接的 COM port,以及正確的通訊格式(通訊速率、同位元、停止位元)才能成功的連線。
DDC32e 的 Gateway 模式是將 DDC32e 的 RS485 界面設定為 Gateway 模式,設定方式[參閱
DDC32e Gateway]。
使用 Gateway 模式連線將編輯器上方選擇 DDC8 模式,並且選擇該 DDC8 連接的 DDC32e IP 即可,但必須注意除了 DDC32e 連接的網路界面必須為 Gateway 模式外,DDC8 與 DDC32e Gateway 必須是相同的通訊格式(通訊速率、同位元、停止位元)
1.6.1.2.DDC32e:
ICDT DDC32e 具備 MODBUS TCP Server 功能,允許其他 Client 端設備讀寫資料。DDC32e 同時具備專有的 UDP 廣播功能,允許搜尋區域網路內的 DDC32e,當通訊埠選擇為 DDC32e 時,DDC 程式自動搜尋並顯示連接的 DDC32e 名稱與 IP 地址。選取 DDC32e 後即可對該控制器進行編輯與輸入輸出控制。
使用 乙太網路與 DDC32e 連接時,必須於編輯器上方選擇 DDC32 模式,並選擇 DDC32e 後點選 要連接的 DDC IP,如果沒有出現,則可以按下
重新搜尋,或按下
以輸入 IP 地址。
關於 DDC32e 乙太網路設定[參閱
DDC32e 通訊設定]。
DDC32e 的 RS485 界面如果設定為 Slave 模式時,通訊方式與 DDC8 相同,但此模式無法設定 MODBUS Translator 等功能。
使用電腦的串列通訊埠連接 DDC32e 時,注意事項與 DDC8 相同,但 編輯器上方則需選擇 DDC32 模式。
1.6.2.選取站號:
每個 DDC 都有一個 MODBUS Slave 位址,這個位址是由設備上的指撥開關設定,可以設定的範圍是 1~247,設定完成後必須重新送電才會生效。
要設定、上傳、讀取 DDC 資料時,必須選擇所要操作的 DDC Slave 位址,否則可能不能連線,或者設定到不是原先預期的設備。
此外有幾點必須特別注意:
▪ DDC8 在透過 Gateway 連接時,由於 DDC32e 有兩個 RS485 通訊介面,每個介面可以接最多 32 個 DDC8,如果連接第一個 RS485 界面地址規則相同,連接第二個RS485 界面則地址必須偏移 32,也就是說 33 是第二個 RS485 界面的 Slave 地址 1;34 是第二個 RS485 界面的 Slave 地址 2,依此類推。
▪ DDC32e 使用 RS485 作為 MODBUS RTU Slave 模式時,其地址同樣是該指撥開關的設定值,但是由於 DIP7 與 DIP8 作為 RS485 介面設定選擇用,因此地址最大值只能到 62(設定 63 可能變變成 Loader 模式)
▪ DDC32e 使用MODBUS TCP 通訊時,DDC 編輯器上無法指定 Slave 地址,實際上 DDC 編輯器是以地址 255 做為通訊,因此其他 MODBUS TCP 通訊軟體與 DDC32e 通訊時,同意必須將 UID 地址設定為 255,否則讀寫的可能是連接的 Gateway 上 DDC8,或是內部虛擬點。
[參閱
MODBUS 協定]
1.6.3.通訊格式:
ICDT DDC 預設的通訊格式為 速率 9600 bps,8 個資料位元(Data bits),2 個停止位元(Stop bits),沒有同位檢查(None parity)
由於 DDC 可依依照需求修改通訊速率及格式,因此如果通訊設定被修改後並且程式未選擇正確的格式時,設備將無法連線。
要修改通訊速率(Baud Rate)、同位檢查(Parity)、停止位元(Stop bits)等,必須將控制器切換到 Loader 模式後重新送電,並透過 ICDT DDC 編輯器->工具->設定 Loader 通訊格式->點選要設定的通訊格式以進行設定。
如果 DDC 上具備超過一個 RS485 通訊埠時,修改通訊格式後所有通訊埠將一起被修改。
此通訊埠設定同時適用於 DDC32e 的 RS485 界面 Slave 模式、Gateway 模式以及但不是用於 MODBUS Translator 模式要得知目前控制器被設定的通訊速率格式,同將控制器切換到 Loader 模式後重新送電,並透過 ICDT DDC 編輯器->工具->查詢 Loader 通訊格式 以獲知目前被設定的通訊格式。
[參閱
關於 Loader 模式]
DDC32e RS485 界面通訊格式的設定除了 "MODBUS Translator" 模式外,其餘無論 Slave 模式或 Gateway 模式皆與 DDC8 相同。MODBUS Translator 模式通訊格式設定[參閱
DDC32e MODBUS Translator 模式]
ICDT DDC 編輯器通訊格式以字串表示
"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.6.4.DDC32e 通訊設定:
DDC32e 可以透過 DDC 編輯器 DDC32 的 DDC32e 模式下設定網路通訊格式。在選擇正確的 IP 地址後,點選 "控制器參數視窗" 的 Config 頁面可以看到目前的通訊設定。
其中:
▪ DHCP 為開啟動態主機配置功能,在具備 DHCP Server 的網路系統可以開啟此項功能以自動配置 IP,避免網路 IP 衝突。但是由於 MODBUS TCP 設定是以 IP 為主,因此除非使用 ICDT WEB HMI 作為監控設備,否則無法使用此功能。
▪ Name 唯該 DDC32e 辨識用名稱,在一般 固定 IP 的 MODBUS TCP 網路上僅供參考,而在使用 DHCP 功能搭配 ICDT WEB HMI 圖控系統時,則該名稱會是此控制器的主要識別標簽,不可以重複。
▪ IP Address、Mask、Gateway 為主要的 IP 地址設定,如果使用 DHCP 功能,則此處設定只有在 DHCP 失敗後才會生效。由於相關設定錯誤可能會造成網路上其他設備因地址衝突而失效,因此如果連接到公共網路時,必須向網管單位(MIS)申請與確認。
▪ TCP Port 為 MODBUS TCP 通訊埠,預設為 502,設定時不得與 DDC32e 內部已經使用的以下編號重複:47832(網路參數設定 Port)、47383(Gateway 模式傳輸 Port)、47382(Web HMI 通訊 Port)
修改後按下"確認"會將參數寫出,按下"重新啟動"後生效。
由於電腦的 ARP (Address Resolution Protocol) 可能仍保有舊的 IP 對照表,因此可能需要清除 ARP 舊有資料(於 CMD 下執行 "arp -d 192.168.1.110" 其中 192.168.1.110 表示舊 IP 地址) 後才會生效。
DDC32e 通訊設定機制是透過全域廣播 (255.255.255.255) 作為基礎,因此可以允許跨網段設定,但該封包可能無法穿越 Gateway 等部份網路設備,因此建議透過 Hub 或往路線直接對接設定。
由於 DDC32e 通訊設定機制是採用 UDP 為基礎,因此當電腦有超過一個網路介面時,必須進行選取有效的網路介面
1.6.5.DDC32e Gateway 模式:
DDC32e 兩個 RS485 通訊介面允許分別設定為 DDC8 Gateway 模式,以連接每個迴路最多 32 個 DDC8 ,此時除了可以透過 DDC32e 的乙太網路進行參數設定與 DDC 程式上傳、下載外,還可以將連接的 DDC8 Coil 與 Register 對應到 DDC32e 內部的 記憶體,以達到點數擴充與集中控制的目的。
1.6.5.1.設定為 Gateway 模式:
將 DDC32e DIP Switch 7 設定為 ON,則 RS485界面 1 為 Gateway 模式, DIP Switch 8 設定為 ON,則 RS485界面 2 為 Gateway 模式,反之如果為 OFF 則為 Slave 模式或 MODBUS Translator 模式。
1.6.5.2.Gateway 模式的運作:
DDC32e 分為主動輪詢模式與 DDC 封包轉發模式:
主動輪詢模式:DDC32e RS485 界面設定為 Gateway 模式時,平時會以 Master 方式依照編號 1~32 個 DDC8 內部對應的記憶體,優先寫出變更的部份,再依序讀取有被 DDC 、Web HMI 或其他功能讀取的記憶體(各 64 個Coils 與 64 個 Registers)。
DDC 封包轉發模式:當 DDC32e 的RS485 迴路被 DDC 編輯器以 Gateway 模式讀寫 DDC或利用控制器參數視窗讀寫參數,則會停止主動輪詢,而立即轉發所有 DDC 編輯器需要的封包;在 DDC 編輯器的讀寫 DDC或控制器參數視窗讀寫參數封包停止後 5 秒回復到主動輪詢模式。
由於 DDC32e Gateway 模式在收到 MODBUS TCP 封包讀寫 DDC8 記憶體時,會直接存取 DDC32e 內部對應的記憶體,經過些微的時間延遲後再轉發至實際的 DDC8 中,因此 同時多個 MODBUS TCP Client 發出的封包並不會造成 Gateway 模式 RS485 網路的負擔。存取的時間延遲受 DDC8 連接數量、DDC8 記憶體修改頻率、DDC8 記憶體讀取數量而定。
另一方面,DDC 封包轉發模式在收到每一個發送自 DDC 編輯器的封包即立即轉發,因此相同的 RS485 網路中,同一個時間只允許一個 DDC 編輯器讀寫該網路上的設備。
1.6.5.3.讀寫 Gateway 下的設備:
1.6.5.3.1.DDC 編輯器:
DDC 編輯器讀寫 Gateway 模式下掛的 DDC8 時 將編輯器上方選擇 DDC8 模式,並且選擇該 DDC8 連接的 DDC32e IP 即可,其操作類似 DDC 編輯器以串列通訊(COM Port)直接通訊般,但必須注意連接到第二的 RS485 迴路的 DDC8 ,其 Slave 地址必須偏移 32。 例如 33 是第二個 RS485 界面的 Slave 地址 1;34 是第二個 RS485 界面的 Slave 地址 2,依此類推。DDC8 採用 Gateway 方式進行連線,除了 Loader 模式下的修改通訊格式與韌體(Firmware)更新不支援外,其餘功能皆與電腦直接透過 RS485 連線效果相同。
除了 Gateway 模式外,DDC 編輯器也可以透過 DDC32 模式讀取或修改 Gateway 上的 DDC8 記憶體。選取 DDC32e 的控制器參數視窗選擇 Register 或 Coil 後,可以選擇 UID 1~64 的 Register 與 Coil 進行存取,此時 UID 1~32 對應到第一個 RS485 界面的 Slave 1~32, UID 33~64 對應到第二個 RS485 界面的 Slave 1~32。由於此時是採用 MODBUS TCP 對於 DDC32e 內部的記憶體進行存取,因此不會造成 Gateway RS485 網路進入 DDC 封包轉發模式,同時如果對應的 DDC8 不連線也不會有任何的異常反應。
1.6.5.3.2.DDC 程式:
DDC32e 的 DDC 程式可以對於 Gateway 下掛的 DDC8 記憶體進行存取。
DDC 編輯器選擇 DDC32 模式時,變數可以選擇 UxxRxx & UxxCxx,各代表 UIDxx 的 Register xx 與 Coil xx,輸入 U1C0 可以對應到 RS485 第一迴路 Slave 1 的 C0 記憶體(Coil 1),U2R1 可以對應到 RS485 二迴路 Slave 2 的 R1 記憶體(Register 40002),U33C32 可以對應到 RS485 第二迴路 Slave 1 的 C32 記憶體(Coil 33),U34R33 可以對應到 RS485 二迴路 Slave 2 的 R33 記憶體(Register 40034),依此類推。
其他沒有用到的DDC8位置可以當作內部運算記憶體,但不會斷電記憶,因此重新送電後數值會被歸零。此外DDC32e 會對 DDC8 Gateway 模式下掛的 DDC8 每五分鐘寫出一次時間,以進行時間同步。
由於在 DDC32e 中使用 DDC 程式存取 Gateway 網路上的 DDC8 會有些許的時間延遲,因此要求及時性高與可靠度高的場合仍建議將控制邏輯寫在 DDC8 內,例如出水/出風壓力控制、恆溫恆濕控制、安全防盜連鎖動作等。
1.6.5.3.3.MODBUS TCP:
透過 MODBUS TCP 可以存取 DDC32e Gateway 模式下掛的 DDC8 記憶體,存取時以 UID 做為識別,UID 1~32 對應第 1 個 RS485 迴路 Slave 1~32;UID 33~64 對應第 2 個 RS485 迴路 Slave 1~32,存取 DDC32e 本身的記憶體,則必須以 UID 255 進行存取。
1.6.6.DDC32e MODBUS Translator 模式:
DDC32e RS485 界面除了設定為 Slave 模式與 Gateway 模式外,與 Slave 模式相同的將 DIP Switch 7 或 8 切在 OFF 位置,並上傳 MODBUS Translator 設定檔案,可以進入 MODBUS Translator (轉譯)模式。
MODBUS Translator 模式是針對多功能電表等 MODBUS RTU Slave 設備整合應用開發的可編程介面,由使用者自行編輯 Slave 內記憶體對應到 DDC32e 內部 UID 1~64 記憶體中,以利透過 DDC 程式與 MODBUS TCP 通訊進行監控。
1.6.6.1.編輯 MODBUS Translator 指令:
每個介面會各別依照其指令順序執行,其設定重點為:
▪ 每個指令必須設定對應 Master (DDC32e)的 Master Reg./Coil 位置,採用 UxRy 或 UxCy 方式編輯,其中 x數值 1~64; y 數值 0~63,其定義與 Gateway 模式相同。
▪ 每個指令必須設定連結設備的 Slave Address,數值範圍 1~254。
▪ 每個指令必須設定 Slave Reg./Coil 編號,此編號與 ICDT DDC 習慣編號方式不同,改採用MODBUS標準方式,亦即 "1~9999" for Coil; "10001~19999" for Input; "30001~39999" for Input register; "40001~49999" for Holding register" 也就是說每一類記憶體位置最大數值無法超過 10000。
▪ 每個指令可以個別設定為 RW 、RO、WO 方式,RW 會以讀取為主,如果DDC端發生數值改變時寫出,RO(Read only) 只做讀取,不可寫出,WO(Write Only) 則只做寫出。Input 與 Input register 只能選 RO。
▪ MODBUS Translator 指令不會對讀寫的 Register 數值做倍率計算與數值格式處理,如果需要請於 DDC 程式 或圖控層(例如 ICDT WEB HMI) 上進行處理。
指令設定時必須注意以下事項:
▪ 編譯器不會特別判斷讀寫的記憶體位置是否重複以增加彈性,因此編輯時必須自行避免因為寫入重複位置造成的錯誤。
▪ DDC32e 內部記憶體 (UxxRxx & UxxCxx) 同時適用於 MODBUS Translator 與 Gateway 模式,因此如果 DDC32e 兩個 RS485 界面分別使用兩種功能時,MODBUS Translator 編輯應避免使用到 Gateway 的記憶體區塊,否則會造成讀寫錯誤。
▪ 連續相同的 Slave Address與連續的 Slave Reg./Coil 編號會在最大封包的範圍內合併執行,以節省通訊時間。因此讀取間隔時間設定時應該預留最大封包的時間需求,以免錯誤。
▪ 連續相同的 Slave Address 與連續的 Slave Reg./Coil 編號同為 WO 的指令會被合併以 Force Multiple Coils 或 Preset Multiple Regs 指令執行,如果連接的 Slave 設備不支援 Force Multiple Coils 或 Preset Multiple Regs 指令,可以將最大封包數設定為 12 以下,或是避免將相同的 Slave Address 的 Slave Reg./Coil 編號依照順序排列。
1.6.6.2.編輯 MODBUS Translator 界面:
DDC 編輯器選擇 DDC32 模式並以 DDC32e 界面通訊,則上方會出現 "MODBUS 轉譯"的圖示,點選後可以進行編輯。
開啟編輯器後,開啟對應的通訊介面,被關閉的介面則會維持在 Slave 模式。
(必須確認對應的 RS485 界面 DIP Switch 在 OFF 的位置 MODBUS Translator 功能才會生效,否則無論是否上傳的 MODBUS Translator 設定檔,該介面仍將維持在 Gateway 模式 )編輯時需設定界面的通訊格式、緩衝區大小與讀取間隔。通訊格式設定包含,通訊速率(1200~115200 bps)與同位元,停止位元。
每個界面可以個別設定資料最大封包量,當多個指令的 Slave Register/Coil 的Slave Address 相同且 Register/Coil Address 為連續時,會在預期不會超出設定值的情況下同時讀取或寫出多點(只有設定RO的才會多點寫出)。
每個界面可以個別設定指令間的時間間隔(單位 mSec),數字越小則完成整個週期時間越短,但必需自行評估 Slave 設備反應時間以及封包長度、傳輸速率等的時間間隔需求,以該界面共 1000 個指令且時間間隔為 100 (mSec) 為例,如果不合併執行(同時讀取或寫出多點)的情況下,整個執行週期需要長達 100 秒才能完成。
MODBUS Translator 命令檔案可以編輯長度(2個界面合計)達 32KB,共計4096 個指定(理論值),完成編輯後可以透過上方的傳送與讀取鈕以傳送到 DDC 或自 DDC 讀取。
自 DDC 讀寫 MODBUS Translator 設定時,受 DDC 相同的密碼機制管制 [參閱
輸入密碼]
1.6.6.3.快速編輯:
為了便於大量編輯,編譯器的每個 Port 皆具備 "匯出" 與 "匯入" 按鈕,可以將目前編輯資料匯出為 CSV 後以 Excel 程式編輯,再行匯入。
指令編輯時,利用 Master Reg./Coil 位置 輸入特定字元,可完成以下快速操作:
▪ 於空白列 Master Reg./Coil 位置 輸入 “+” 自動完成 1行,”+4” 會自動完成 4行,完成方式為 Master Reg./Coil 取下個 Reg./Coil , Slave Address 相同,Slave Reg./Coil 取下個位置
▪ 於空白列 Master Reg./Coil 位置 輸入 “*” 自動完成 1行,”*4” 會自動完成 4行,完成方式為 Master Reg./Coil 取下個 Reg./Coil , Slave Address取下個站號,Slave Reg./Coil相同
▪ Master Reg./Coil 位置 輸入 “-” 刪除該列
此外以拖曳方式一次選取多行時,還可以按下右鍵做以下操作:
▪ 刪除:一次刪除指定的多行指令
▪ 複製:一次複製指定的多行指令
▪ 貼上:在選取的位置貼上原先複製的指令
▪ 貼上 & 設定:在選取的位置貼上原先複製的指令,並針對貼上的內容進行快速設定
▪ 設定:將選取的指令進行快速設定
快速設定的各選項為:
▪ Master UID :設定 Master Reg./Coil 欄位的 UID 編號
▪ Master Reg/Coil :設定 Master Reg./Coil 欄位的 Register 與 Coil 編號
▪ Slave Addr. :設定 Slave Address 欄位
▪ Slave Reg/Coil :設定 Slave Reg./Coil 欄位
快速設定的各項功能為:
▪ ++ :將其欄位依照上一指令數值+1
▪ + :將其欄位數值加上設定數值
▪ - :將其欄位數值減去設定數值
▪ = :將其欄位數值改為設定數值
1.6.7.關於 MODBUS:
1.6.7.1.什麼是 Modbus:
Modbus 是由 Modicon 公司(現為 Schneider 的一個品牌)在 1978 年提出的通訊標準。
Modbus 由於易學易用,耗費系統資源極低,因此已成為工業控制領域常用的一個通訊協定。
Modbus 被廣泛應用在 PLC 與多功能電表等設備中定。
1998 年 Schneider 又推出了 TCP/IP 乙太網路的 ModbusTCP,使MODBUS 應用更推向網際網路。
參考網站訊息
http://www.modbus.org/faq.php1.6.7.2.MODBUS 的網路特性:
按電氣特性可分為 RS-232、RS-422 與 RS-485。
按照資料流程的方向可分成兩種基本的傳送方式:全雙工、半雙工。
RS-485 半雙工通訊由於只需要兩條通訊線,且通訊距離長,被廣泛用在分散式的控制網路架構。
ICDT DDC8 標準品是採用 RS-485 方式傳輸,但也可以訂製 3 線式 RS-232 方式傳輸的產品。
1.6.7.3.MODBUS 協定:
Modbus 協定是主 (Master) /僕 (Slave) 通訊協定; 網路上的每個 Slave 設備必須有唯一的位址(範圍從1到247)
Slave 位址 (Slave Address) 用於定址 Slave 設備,由 Master 發起對指定 Slave 位址 的設備詢問,相同 Slave 位址 回覆訊息,其餘的設備不會回應。
Slave 位址 0 用於廣播模式,Slave 設備不需要回應。
傳輸模式依照編碼方式可以分為 RTU 與 ASCII 模式
1.6.7.3.1.MODBUS ASCII 模式:
資料用十六進位 ASCII 碼值表示;
封包必須以“ : ”開始,以“CR -LF”結束;
使用一個 Byte 的 LRC 進行錯誤校驗;
相較於 RTU 模式可以直接由文字通訊程式進行傳輸;
1.6.7.3.2.MODBUS RTU 模式:
使用 16 進制編碼;
使用兩個 Byte 的 CRC 校驗碼;
相較於 ASCII 節省一半的通訊量;
CRC 校驗遠較 LRC 運算嚴謹;
ICDT DDC8 採用 RTU 編碼模式
1.6.7.4.MODBUS 的優勢與劣勢:
相對於 BACnet 等較高階完整的通訊協定而言,MODBUS 的優缺點如下:
1.6.7.4.1.優勢:
- 簡易 - 易於實現 + 耗資源低 + 設備成本低
- 通行 - 易於整合
1.6.7.4.2.缺點:
- 功能較陽春
- 未定義浮點數、文字等數值格式
- 點的概念非物件概念
- Slave 設備間無法主動資料共享
1.7.關於 DDC:
DDC (Direct digital control) 是一種分散式(Distributed control)、可程式(Programmable)控制器,具備小點數、獨立控制、快速反應、容易編成的特性。
在此 ICDT DDC 編輯器將 DDC 可程式控制器 的控制邏輯方案簡稱為 DDC 或 DDC 程式。
DDC 程式的編輯[參閱
關於 ICDT DDC 編輯器]
1.7.1.傳送至DDC:
將目前 DDC 程式編輯器的內容編譯後傳送到指定 Slave 位址的設備(或選取的 DDC32e),並儲存於 DDC 中。
上傳的動作可能造成原本的控制中斷,因此建議先確認控制的中斷或改變不會造成受控制設備的損壞,否則建議先將設備脫離控制。上傳動作前應該確認設備的 Slave 位址選擇(或選取的 DDC32e 名稱)是否正確,以免傳送到其他設備,造成 DDC 程式被意外覆蓋而無法復原。
要避免重要設備因錯誤操作而控制程式被覆蓋,建議對重要設備的控制器設定設密碼,以防誤操作。
傳送方式可以分為"傳送至 DDC(含註解)" 或單純的 "傳送至 DDC",前者會包含註解一起傳送,需要比較大的程式空間。DDC8 等程式空間較小的設備可考慮不含註解的方式,由於上傳後的 DDC 程式再讀出時,其註解等訊息不會被保留,因此建議妥善儲存原始檔案。
如果原先被設定密碼的控制器,必須先輸入正確密碼後才可以上傳程式。
1.7.2.自DDC讀取:
自指定 Slave 位址的設備(或選取的 DDC32e )讀取 DDC 控制程式。
讀取後會在編輯區顯示程式碼。如果被設定密碼的程式必須輸入密碼後才允許讀取。
由於讀取動作會使原先編輯中的資料被清除,因此建議事先作儲存。
1.7.3.程式分析:
對目前編輯的 DDC 程式進行分析,並將錯誤訊息顯示於右側資訊欄中。
分析時同時會顯示包含註解與不包含時程式碼的大小,供傳送至 DDC 方式的選擇參考。
程式分析的動作並不會傳送程式到設備上。
1.7.4.強制刪除:
被設定密碼的設備如果未輸入正確的密碼將無法進行讀取或寫入操作,因此如果忘記密碼時則只有『強制刪除』一途,但這樣的操作會清除 原有的 DDC 程式而無法復原。
因此密碼的保存極為重要。
1.7.5.比對程式:
要進入除錯模式時必須確認編輯器目前的程式與指定 Slave 位址設備(或選取的 DDC32e )的內容相同,因此如果不上傳目前的內容到設備,或從設備中讀取程式,就可以利用『比對程式』功能進行比對,比對正確後即可進入除錯模式。
1.7.6.輸入密碼:
如果 DDC 程式被設定密碼後,對於 DDC 程式的任何操作都必須先輸入密碼才可進行。輸入密碼後會暫時儲存於編輯器,因此不用每次都輸入。
但如果操作不同 Slave 位址的設備(或選取的 DDC32e )內部密碼不同,則必須重新輸入相對應的密碼。
如果 DDC 設備並沒有被設定密碼,必須選擇『無密碼』,否則操作仍會失敗。
1.7.7.DDC 的密碼系統:
ICDT DDC 允許使用者定義一組密碼進行程式保護,如果定義密碼後,於上傳程式、下載程式、除錯都必須輸入正確密碼,否則無法進行相關作業。
ICDT DDC 密碼為 1 組 1~99999999 的數字,定義密碼時將 DDC 程式中加入 #password = 12345678 (12345678 為密碼數字)。此程式一旦上傳,則密碼 12345678 即生效。
如果忘記密碼則必須以『強制刪除』方式進行去除密碼,但 DDC 程式也將被抹除,無法再取得1.7.8.關於副程式:
ICDT DDC 副程式功能提供靈活的副程式調用與匯集平台,以便於學習與整理程式碼。
副程式功能的資料儲存於 ICDT DDC 安裝路徑的 sub.xml 檔案中,可允許使用者自行增加與編輯程式碼內容。副程式如果被編輯後會在關閉時回存到 sub.xml 檔案中。
1.7.8.1.副程式-群組:
副程式可以區分程式群組,以便於只用者分類調用。選擇不同群組時,下方會列出該群組所屬的副程式集
1.7.8.2.副程式-新增:
『新增』副程式時選擇不同群組名稱即可將新增的副程式加到該群組。沒有選擇時預設加到目前選擇的群組中。
如果輸入不同的群組名稱,則會經過確認後增加所輸入名稱的群組。
新增時必須輸入副程式名稱,這個名稱用於副程式索引,因此不建議重複。
副程式描述會在游標移動到副程式名稱處出現,用以輔助說明。
程式碼必須是可以執行的程式碼,由於副程式的程式碼編輯器並沒有文法檢查的功能,因此建議在程式編輯器編輯程式碼複製後貼上。
新增時必須要將副程式名稱、副程式描述與程式碼都輸入才有效。
群組名稱不可留白。
1.7.8.3.副程式-編輯:
點選副程式名稱後按下編輯時可以修改副程式內容。
如果此時選擇不同副程式群組則會將副程式移動到指定的群組中。
如果輸入新的副程式群組名稱則會在確認後新增該群組,並且移動到新增的群組中。
1.7.8.4.複製到程式:
點選副程式名稱後按下『複製到程式』按鈕可以將副程式碼插入到目前 DDC 編輯器游標所在位置。
1.7.8.5.副程式刪除與移動:
點選副程式後按下『刪除』、『上移』、『下移』可以刪除或移動該項副程式。
如果要將副程式移動到其他群組,則必須透過編輯功能進行。
1.8.關於 DDC 編輯器:
ICDT DDC 程式寫法類似 C 語言,以便於初步具備程式開發經驗者可快速上手。使用許多現成的時間函數、控制函數等,讓使用者可以方便應用於各種控制場合。
ICDT DDC 編輯器區分為 DDC8 模式 與 DDC32 模式,DDC8 模式適用於 ICDT DDC8 方案,DDC32 模式適用於ICDT DDC32e 方案。
DDC8 模式與 DDC32 模式基本上函數指令相容,但 DDC32 模式允許更大的程式空間與更多的暫存器,如果具備 Gateway 功能的 DDC32e ,還可以選擇 Gateway 的暫存器變數。
ICDT DDC 編輯器模式建議依照實際的 DDC 類型選擇,如果選擇錯誤會在對 DDC 進行存取時提示,如果仍選用錯誤模式,則可能部份功能會失效。
1.8.1.DDC 編輯器特點:
ICDT DDC 程式的特點以及注意事項說明如下:
◘ 除了程式被刪除、發生錯誤或除錯模式、強制停止等狀況外,程式自動處在執行狀態,且 0.1 秒執行 1 次。
◘ 不支援 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 變數可加 .o 作 1 次 8 個 Coil 的運算;加 .h作 1 次 16 個 Coil 的運算。Register 也具備 .s .U .S .F 以及 .d1 與 .d2 的格式。[參閱
Coil 變數的各種數值格式][參閱
Register 變數的各種數值格式]
1.8.2.程式編輯區:
程式編輯區用來編輯 DDC 程式碼,程式編輯區的編輯方式與一般文字編輯器類似,但會將函數(運算式)、變數、註解、常數等以不同的顏色座標示。將游標移動到函數與變數等關鍵字上,也會顯示該函數或變數的提示。
程式編輯區一般在編輯狀態,此時可以輸入與修改程式碼。編輯中按下空格(' ')、等號('=')、左括弧('(')、井號('#')等預設符號會跳出自動完成視窗,此時可以直接點選函數或變數來完成,也可以按下右鍵來插入函數與變數。
DDC 設定密碼的工作也是在文字編輯器上完成。可以直接輸入 #password =.... 或按下 '#' 號來點選自動完成。密碼設定可以在任何一行位置,但同一個程式中只能輸入一組。[參閱
DDC 的密碼系統]
程式編輯時可以自行定義變數名稱,這在副程式等應用對於增加程式的可閱讀性以及可攜帶性有極大的幫助。[參閱
自定變數]
程式編輯方式與 C 語言類似,但必須注意不要加 ';' 號,每行也只能有一種函數或運算指令。不過可以利用反向的功能([參閱
變數的反向、反轉與100補數運算])使程式更為精簡。也可以用 Coil 與 Register 的各種數值格式來增加變數的使用彈性。[參閱
Coil 變數的各種數值格式][參閱
Register 變數的各種數值格式]
程式編輯時可以利用副程式的功能,管理常用程式碼。[參閱
關於副程式]
程式編輯區在除錯模式是無法編輯的,此時如果游標移動到 Register、Coil、Branch 等變數上,會顯示目前的數值。[參閱
關於 DDC 除錯模式]
1.8.3.控制器參數視窗:
控制器參數視窗是用來顯示與設定 DDC 設備參數的工具,要開啟控制器參數視窗時必須將 DDC 設備連上線,並且選擇正確的通訊埠與 Slave 位址,以及通訊格式,否則無法正常顯示。
[參閱
關於通訊]
除了透過 MODBUS TCP 的 DDC32e 與 Gateway 模式外,控制器參數視窗在 MODBUS RTU 網路上是扮演 Master 的角色,因此電腦連接的 RS485 線上不可以有其他的 Master 設備,否則無法正常讀取。
控制器參數視窗 可以讀取指定 Slave 位置設備(或選取的 DDC32e )的系統變數狀態([參閱
系統變數])、讀取Branch 變數數值([參閱
Branch 暫存變數])或讀取及設定 Coil 與 Register 變數的數值與狀態([參閱
Coil 變數] /[參閱
Register 變數]),以及設定輸入輸出模式([參閱
設定輸入輸出模式])
1.8.4.NTC 阻值對照表:
NTC 阻值對照表視窗示用來編輯或上傳以及讀取 DDC 內部的 NTC 阻值對照表。
NTC 阻值對照表是 25 組電阻值,儲存於 DDC 內的 Flash 或 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.8.5.2.4G無線通訊:
ICDT DDC 方案部分韌體支援 nRF24L01 2.4G無線通訊模組(以下簡稱無線模組),nRF24L01 是挪威 Nordic 半導體公司出品的高性能無線收發器,DDC 配備無線模組後就是一個無線版的 MODBUS Slave 設備。可接受其他無線 MODBUS Master 的指令,另如插 USB 無線模組的 DDC 編輯器電腦或無線溫濕度感測器等。
ICDT DDC8 的無線通訊方案具備成本低廉、連線設定簡單、通訊速率高等優點,並且可以一對多(Master 對 Slave)或多對一(最多同時 4 個 Master) 的通訊。
ICDT DDC 無線通訊參數設定如下:
網碼:數值範圍 1~65534,用於識別有效封包的網路編號,相同的網路必須使用相同編號,否則就算頻道相同,仍無法識別。不同頻道不同網路仍可以使用相同的網路編號。
頻道:數值範圍 0~124,nRF24L01 支援多達 125 個通訊頻道。相同的網路必須設定相同的頻道,並且不可與鄰近其他網路設相同頻道,以免干擾。
功率:發射功率的 DB 值,越高的數值(nRF24L01 發射功率最大為 0 DB),其發送距離越遠。如果近距離通訊為避免干擾鄰近網路,可考慮將功率調小。
速率:1Mbps 或 2Mbps,較低的速率傳輸距離較遠。由於傳送頻寬需求不大,建議設為 1Mbps 即可。相同的網路必須設定相同速率,否則無法通訊。
必須注意的是 Loader模式不具備無線通訊功能,因此如韌體更新等必須進入 Loader 模式才能執行的功能不能透過無線網路執行。
1.9.關於 DDC 除錯模式:
為了便於確認 DDC 程式執行功能,找出程式的錯誤,ICDT DDC 系列支援除錯模式,以利暫停或執行到指定位置,並讀取各項變數的數值。
DDC 只要搭配 ICDT DDC 編輯器可進行即時除錯,除錯模式時程式將無法編輯。
1.9.1.進入除錯模式:
DDC 要進入除錯模式時必須確認 DDC 編輯器目前的程式與指定 Slave 位址設備(或選取的 DDC32e )的內容相同,除了上傳目前的內容到設備,或從設備中讀取,也可以利用『比對程式』功能進行比對,比對正確後即可進入除錯模式。
上傳、讀取、比對與除錯等操作都必須輸入正確的程式密碼才可進行作業。
上傳、讀取、比對等作業成功後,除錯(瓢蟲圖示)按鈕會生效,此時按下按鈕即可入除錯模式。
除錯模式時將游標移到各變數處,會顯示各變數的目前讀值。
這個讀值不會更新,除非將游標移開後重新移到上方。如果是常數或時間變數則不會顯示。
1.9.2.中斷執行:
除錯模式中如果程式仍在執行,按下 || 按鈕可以停止程式執行,並且會反白顯示目前程式中斷位置。如果按下 ► 鈕則繼續執行。
如果點擊程式碼行號左邊灰色位置可以設定中斷點,按下 > 鈕執行程式時會在被設定中斷點處停止,如果再按下 > 鈕則會執行到下個中斷點。如果沒有設定中斷點則按下 > 鈕每次執行一行指令。中斷點會在被再次點選或離開除錯模式時清除。
為避免除錯模式造成設備控制中斷,在離開除錯模式時應記得恢復執行狀態。否則程式會在 10 分鐘後才自動恢復執行。
DDC 程式中斷時雖然程式停止執行,但 DDC 內暫存器數值仍可能會被其他 MODBUS RTU 通訊端或 DDC32e 的其他 MODBUS TCP 連線所變更1.10.關於函數:
函數(或運算式)是 DDC 程式的基礎。ICDT DDC 系統以超過 50 個各類函數指令,讓使用者快速達到各項控制與運算需求。
DDC 程式編輯的方式與 C 語言相近,但不需要加分號 ';' ,每行也只能有一種行數或運算式。
為方便函數功能的理解,大致將其分為幾類,說明如下:
1.10.1.時間運算函數:
1.10.1.1.runtime:
運轉計時
out = runtime(in)
in 為 ON (>= 0.5) 時 累計運轉時數。
out 為浮點數時(Rx.F)每6 分鐘+0.1,否則每小時+1,輸出單位為小時。
為了使運轉計時動作不會因為設備斷電而歸零,因此輸出建議為 R32~R63。當設備發生斷電時,如果輸出使用浮點數模式最大誤差小於 0.1 小時,整數模式則最大誤差小於 1 小時。
ICDT DDC 主要運算是採用 4 Byte 浮點數,因此必須注意累加的最大值範圍[參閱
數值範圍與解析度]
1.10.1.2.ondelay:
延後啟動
out = ondelay(in, delayTime)
out 在 in 為 ON(>= 0.5) 時延後 delayTime (秒)時間變為 ON,而當 in 變為 OFF 時立即變為 OFF
1.10.1.3.offdelay:
延後停止
out = offdelay(in, delayTime)
out 在 in 為 ON(>= 0.5) 時立即動作,並且於 in 變為 OFF 時延後 delayTime (秒)時間變為 OFF
1.10.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.10.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.10.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.10.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.10.2.數學運算函數:
1.10.2.1.+:
加法運算
out= v1 + v2 + v3 + v4 ...+ v10
out 為所有輸入的總和
v3 ~ v10 可省略
1.10.2.2.-:
減法運算
out = v1 - v2
1.10.2.3.*:
乘法運算
out = v1 * v2
1.10.2.4./:
除法運算
out = v1 / v2
1.10.2.5.%:
餘數運算
out = v1 % v2
out 為 v1 除以 v2 的餘數
1.10.2.6.avg:
取所有輸入的平均值
out = avg(v1,v2,v3,v4 ....,v10)
v3~v10 可省略
1.10.2.7.linear:
線性運算
out = linear(in,slope,zero)
其運算式為 out = (in * slope) + zero
1.10.2.8.linear2:
兩點線性運算
out = linear2(in, vi1, vo1, vi2 ,vo2)
將 in 的數值 vi1 對應至v o1,vi2 對應至 vo2,兩點線性轉換輸出至 out
1.10.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 > in11.10.2.10.int:
取整數
int(in)
將 in 數值數值取整數輸出
1.10.3.HVAC函數:
1.10.3.1.wetbulb:
計算空氣濕球溫度
out = wetbulb(Temp, RH)
Temp 為乾球溫度,單位 deg C,RH 為相對濕度,輸出濕球溫度單位 deg C例如 R32 = wetbulb (R1,R2),此時 R32 會是 溫度 R1 與 相對溼度 R2 的濕球溫度值
1.10.3.2.enthalpy:
計算空氣熱焓值
out = enthalpy(Temp, RH)
Temp 為乾球溫度,單位 deg C,RH 為相對濕度,輸出熱焓值單位 Btu/lb1.10.3.3.dewpoint:
計算空氣露點溫度
out = dewpoint(Temp, RH)
Temp 為乾球溫度,單位 deg C,RH 為相對濕度,輸出露點溫度單位 deg C1.10.4.輸入輸出函數:
1.10.4.1.filter:
數值緩衝器
out = filter(in, factor)
將 in 依照 factor 的緩衝係數依比例輸出至 out
factor 數值 1~99,數值越小則緩衝效果越小
factor 忽略時其數值為 25
一般用於 AI 受干擾時的濾波
1.10.4.2.aintc:
out = aintc(in)
將 AI ADC 值,依照 10K NTC 對應數值變溫度,其溫度單位由NTC 阻值對照表決定
in 應該為 AI 模組對應的 Register
注意,由於 不同的 10K NTC Thermistor (熱敏電阻)的曲線不同,必須輸入正確的阻值對照表[參閱
NTC 阻值對照表]
1.10.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.10.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.10.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.10.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.10.5.數位運算函數:
1.10.5.1.&:
And 運算
out = v1 & v2 & v3 & v4 ...& v10
v1 ~ v10 與 out 數值範圍為 0~65535 (0~0xFFFF)
v3 ~ v10 可省略
1.10.5.2.|:
Or 運算
out = v1 | v2 | v3 | v4 ...| v10
v1 ~ v10 與 out 數值範圍為 0~65535 (0~0xFFFF)
v3 ~ v10 可省略
1.10.5.3.^:
Xor (互斥或)運算
out = v1 ^ v2
將 v1 & v2 做 Xor (互斥或)運算
v1 , v2 與 out 數值範圍為 0~65535 (0~0xFFFF)
1.10.5.4.>>:
右移運算
out = v1 >> v2
將 v1 右移 v2 位
v1 , v2 與 out 數值範圍為 0~65535 (0~0xFFFF)
1.10.5.5.<<:
左移運算
out = v1 << v2
將 v1 左移 v2 位
v1 , v2 與 out 數值範圍為 0~65535 (0~0xFFFF)
1.10.5.6.swap:
out = swap(v)
將 v & 0xFFFF 後將前後兩個 Byte 數值互換
例如數值 swap(0x1a2b) 時 out 會是 0x2b1a
1.10.5.7.tobcd:
out = tobcd(in)
將 in 以 BCD 編碼方式轉換輸出至 out。
in 的有效範圍是 0~9999
例如 in 為 9999 時 out 為 39321(0x9999)
1.10.5.8.frombcd:
out = frombcd(in)
將 in 數值視為 BCD 編碼方式轉換輸出至 out。in 的有效範圍是 0~39321 (0~0x9999)
例如 in 為 39321(0x9999) 時 out 為 9999
1.10.6.比較函數:
1.10.6.1.<:
小於
out = v1 < v2
當v1 < v2 時 out 為 1,否則為 0
1.10.6.2.<=:
小於等於
out = v1 <= v2
當v1 <= v2 時 out 為1,否則為 0
1.10.6.3.>:
大於
out = v1 > v2
當v1 > v2 時 out 為 1,否則為 0
1.10.6.4.>=:
大於等於
out = v1 >= v2
當v1 >= v2 時 out 為 1,否則為 0
1.10.6.5.==:
等於
out = v1 == v2
當 v1 等於 v2 時 out 為 1,否則為 0
1.10.6.6.comp:
具死帶的比較器
out = comp(v1, v2, db)
當 v1 >= v2 + db/2 時 out 為 1,當 v1 <= v2 - db/2 時 out 為 0,否則 out 維持前次數值
1.10.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.10.6.8.max:
取最大值
out = max(v1,v2,v3,v3 ....,v10)
out 為v1 ~ v10 的最大值,v3 ~ v10 可省略
1.10.6.9.min:
取最小值
out = min(v1,v2,v3,v3 ....,v10)
out 為v1 ~ v10 的最小值,v3 ~ v10 可省略
1.10.6.10.limit:
輸出限制
out = limit(in, v1, v2)
將 in 數值輸出至 out 並限制在 v1 與 v2 間
1.10.7.控制函數:
1.10.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.10.7.2.gate:
條件式輸出
out = gate(in, control)
只有當 control 為 True (>= 0.5) 時將 in 輸出至 out,否則 in 不輸出至 out
例如 C4 = gate(C1,C2)相當於以下程式,但更為精簡省空間。
if C2
C4 = C1
endif1.10.7.3.multistep:
多段輸出
out = multistep(in, step, delayTime)
out 依照 in 0~100 數值分為 step 段,並以 100/step 作為 deadband,當 delayTime > 0 時會於輸出改變後延遲 delayTime (秒)時間再行運算
delayTime 省略時為 0
1.10.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.10.7.5.oneshot:
正緣觸發
out = oneshot(in)
當 in 由 ON(>=0.5) 變為 OFF 的數值時輸出為 1,否則輸出為 0
一般用於偵測數位點狀態變化時用
1.10.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
endif1.10.7.7.latching:
自保持輸出
out = latching(set,reset)
當 set >= 1 時 out 為 1;當 reset >= 1 時 out 為 0; 否則保持前一狀態
例如 C4 = latching(C1,C2)相當於以下程式,但更為精簡省空間。
if C2
C4 = 0
Temp = 0
elif C1
C4 = 1
Temp = 1
else
C4 = Temp
endif1.10.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
endif1.10.7.9.=:
直接輸出
out = in
將 in 數值直接輸出至 out
1.10.7.10.cov:
數值變化監視器
out = cov(in, db)
當 in 與儲存值比較相差超過 db 時 out 為 1,並儲存當時 in 值。否則 out 為 0
1.10.7.11.countup:
上數器
out = countup(in,v1,max)
當 in 為 ON (>= 0.5) 時,v1 每次 +1,到數值達到 max 後 out 為 1,且 v1 不再增加;否則 out 為 0
max 省略時為最大值 16777216(0x1000000)
1.10.7.12.countdown:
下數器
out = countdown(in,v1,min)
當 in 為 ON (>= 0.5) 時,v1 每次 -1,到數值達到 min 後 out 為 1,且 v1 不再減少;否則 out 為 0
min 省略時數值為 0
1.10.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.10.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.10.8.條件式:
ICDT DDC 接受類似 VB 的條件式做為條件判斷,預以執行達到條件的程式區塊忽略未達到條件的程式區塊。
ICDT DDC 條件式允許巢狀方式,但深度不可超過 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
endif1.10.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.10.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.10.8.3.else:
else
else 後方不可以接條件運算式,用來表示當前方所有的 if 與 elif 條件都未達到時,執行下一行開始的運算式或函數,一直到 endif 為止,否則忽略期間的運算式或函數。
1.10.8.4.endif:
endif
結束條件式,當有多個條件式做巢狀判斷時,endif 為結束最近一個條件式
1.10.9.記憶體存取:
1.10.9.1.register:
讀取 register 數值
register(in)
讀取位置為 in 的 register 數值其範圍為 0~65535 (0~0xFFFF)
1.10.9.2.preset:
設定 register 數值
preset(in,val)
寫入位置為 in 的 register 數值,val 數值範圍為 0~65535 (0~0xFFFF),如果成功輸出為 1,否則為 0
1.10.9.3.record:
資料記錄 (適用於具備 資料記錄 功能的控制器)
record(interval,v1,v2,v3....,v10 )
v1~v10 的數值存檔
interval 為記錄時間間隔,單位為秒,interval 數值為 0 不儲存,如果數值小於 0 則會在最近一筆記錄同一行繼續記錄數值。
完成紀錄時將輸出設為 1,否則不變。
1.11.關於變數:
ICDT DDC 變數分為 MODBUS 標準變數、Gateway 變數、系統變數、運算暫存區、暫存變數等,說明如下:
1.11.1.MODBUS 標準變數:
共計有 Coil 以及 Register 兩種
1.11.1.1.Coil 變數:
Coil 用以顯示與控制 DI / DO輸入輸出的 ON/OFF狀態,以及作為設定用途,為方便程式編輯,其代號以 C0~C2047 表示,C0 的通訊實際通訊編號為 0,也就是 MODBUS 定義的 Coil 1;C1 為 Coil 2,其餘依此類推。
C0~C31 對應實際周邊 DI/DO 輸入輸出狀態,如果周邊接的是 DI,則該點是唯讀的。如果對應的周邊沒有接或是接AI/AO模組,則對應的 Coil 可以作為運算暫存器使用。
C32~C2047 (DDC8 最大值至 C63,其餘設備可能會因為方案而有變化) 可以作為運算暫存器或參數設定,例如運轉命令等。C32~C2047 的狀態會在斷電時存入內部 EEPROM 中,因此需要記憶的參數必須使用 C32~C2047 範圍的 Coil。C32~C2047 並沒有實際對應到周邊。
控制器參數視窗 Coil 項可以查看各別 Coil 數值,或雙擊(Double Click)個別的 Coil 以改變設定。DDC32e 等數量超過 64 個 Coil 設備可以選取不同的 Coil 區段來查閱與設定更多的 Coil 位置。
唯讀的 Coil (用於 DI) 或 被 DDC 程式寫入數值的 Coil 此項操作會失效。視窗下方點選 Hex 允許將指定編號的 Coil 開始 16 個 Coil 同時存取(編號小的在較低位元),點選 Oct 則以指定編號的 Coil 開始 8 個 Coil 同時存取。
1.11.1.1.1.Coil 變數的各種數值格式:
為方便 Coil 的程式控制,ICDT DDC8 可以用類似 Register 方式讀取 Coil,例如標示 C0.h,會將 C0~C15 以 C0 為最低位元,C15 為最高位元方式讀取或寫入數值。此方式方便一次大量對 Coil 讀寫及運算,但必須注意一次會用到 16 個 Coil。
另一種方式是標示 C1.o 格式,會將 C1~C8 以C1 為最低位元,C8 為最高位元方式讀取或寫入數值。
使用 .h 或 .c 方式存取 Coil 時,必須注意是否會有覆蓋或重複存取問題,因為一次分別存取 16 或 8 的 Coil。
1.11.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.11.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~R2047 (DDC8 最大值至 R63,其餘設備可能會因為方案而有變化) 可以作為運算暫存器或參數設定,例如運轉命令等。R32~R2047 的數值會在斷電時存入內部 EEPROM 中,因此需要記憶的參數必須使用 R32~R2047 範圍的 Register。R32~R2047 並沒有實際對應到周邊。
控制器參數視窗 Register 項可以查看各別 Register 數值,DDC32e 等數量超過 64 個 Register 設備可以選取不同的 Register 區段來查閱與設定更多的 Register 位置。
選擇 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),無法表示小數、負數等,為增加應用彈性與程式便利性 ICDT DDC8 的 Register 可以各種不同的數值格式。
1.11.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 位數,
但由於 ICDT DDC 內部運算是以浮點數方式運算,因此實際數值精度僅達到 24位數,超出精度的數值可能無法精確表示([參閱
數值範圍與解析度])。
1.11.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.11.2.Branch 暫存變數:
ICDT DDC 內共計有 B0~B7 共計 8 個 Branch 變數,用以作為 DDC 程式運算暫存用,以連接不同函數與運算的輸入輸出。
控制器參數視窗 Branch 項可以顯示 浮點數(As float)、正整數(As U32)、符號整數(As S32)或者直接以 16 進制編碼顯示(As Hex),如果未特別指定數值儲存格式,應該以浮點數(As float)方式查看數值。
Branch 變數在 MODBUS 通訊上為唯讀的
1.11.2.1.Branch 變數的各種數值格式:
Branch 變數預設以浮點數方式儲存,也可以用 B0.U~B7.U 強制以 32 位正整數儲存,或是用 B0.S~B7.S 強制以 32 位符號整數儲存。
浮點數方式儲存可以應用於大部份場合,但部分有整數與浮點數轉換需求時,可以用 .S 與 .U 方式作強制轉換
使用正整數與符號整數格式時應注意數值範圍與解析度問題 [參閱
數值範圍與解析度]
1.11.3.DDC 系統變數:
除了 Coil (C0~C63) 、Register(R0~R63)、Branch(B0~B7)外,DDC 程式還有以下的變數可以做運算輸入。
這些 DDC 系統變數在程式中都是唯讀的,也不支援 ‘~’(Reverse)與 ‘@’ (100補數)運算
1.11.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.11.3.2.INIT.p(系統啟動):
當 DDC 程式重新啟動時,系統會將 INIT.p 變數 On 一個程式週期 (0.1 秒) 的信號,用以提供程式運算作初始化的指令或保護動作。
1.11.3.3.Pulse Counter(脈衝計數器):
當 C0~C19 設為 DI 時,則 DDC 可以由對應的變數 P0~P19 取得 Pulse 累積數值,讀取後 Pulse 累積數值後 變數 P0~P19 會歸零。
實際應用時只要用 R32 = R32 + P0 的方式,就可以將 C0 的 Pulse 累積值存入 R32 中。
脈衝計數器 P0 ~ P19 只能在 DDC 編輯器中使用,不會顯示在控制器設定視窗。
[參閱
脈衝輸入(PI)]
1.11.4.系統變數:
系統變數是 控制器內部的各項參數,可以透過 DDC 程式讀取或這者以專用 Registers 存取例如時間、程式控制、密碼輸入等
控制器參數視窗 DDC 項可以查看各項變數
1.11.4.1.Local Time(設備時鐘):
控制器設定視窗 DDC -> Local Time 處以時:分:秒 格式顯示 DDC 內時間,顯示----/--/-- --- ??:??:?? 則表示 RTC(實時時鐘)無效。
由於標準ICDT DDC8 方案 DDC 內時鐘不具備斷電的電池備援功能,因此必須透過網路進行時間同步,否則可能會造成部分時間運算功能失效,此時如果 DDC 程式正常則會運行在 Run (Without RTC) 模式(RTC 無效模式)。
於控制器連線時,點選控制器設定視窗上方的時鐘圖形,可以發送時間同步訊息。
MODBUS 通訊寫入時間時建議以 MODBUS Function 10 寫入 Hodling Register Address 10000 ~ 10005 (相當 MODSACN Hex Address 2711H~2716H),各為 秒,分,時,日,月,年。時間數值範圍[參閱
時間變數]
1.11.4.2.Firmware Version (韌體版本):
控制器參數視窗 DDC -> Firmware Version 顯示目前運行的韌體版本
1.11.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.11.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.11.4.5.DDC Version (DDC 版本):
控制器參數視窗 DDC -> DDC Version 顯示被寫入 DDC 程式的 編輯器版本
1.11.4.6.DDC Length(DDC 程式長度):
控制器參數視窗 DDC -> DDC Length 顯示存入 EEPROM 的DDC 程式長度,最長為 1.5kB (1,536 Bytes)
1.11.4.7.DDC Modify Date Time (DDC 變更時間):
控制器參數視窗 DDC ->DDC Modify Date Time 顯示 目前 DDC 程式被上傳到 DDC 的時間,這個時間由 DDC 編輯器寫入(與 DDC 內時鐘無關)
1.11.4.8.DDC Temporary Buffer(DDC 運算暫存區使用量):
控制器設定視窗 DDC ->DDC Temporary Buffer 顯示 DDC 運算暫存區的使用量,最高 1kB (1,024Bytes),超過會產生錯誤,並且不會執行DDC 程式
[參閱
DDC 運算暫存區]
1.11.5.DDC 運算暫存區:
不同函數在運算時可能會需要 1 至數個 Byte 的運算暫存器,作為儲存運算值用,例如儲存比例積分的積分累進值。
ICDT DDC8 內部具備 1K Bytes 的運算暫存區供各函數取用,但如果程式使用量超過上限時,DDC 將會無法正常運作,並於 Program Status 處顯示異常訊息。
[參閱
DDC Temporary Buffer(DDC 運算暫存區使用量)]
1.11.6.常數:
ICDT DDC8 常數分為整數與浮點數。使用程式空間以 0 與 1占用最少 (1個 Byte),0~255(或-128~127)的數值次之,0~65535(或-32768~32767) 佔用3個 Byte,如使用浮點數方式標示則會佔用 5 個 Byte 的程式空間
ICDT DDC8 允許以 16 進制標示數值,例如 0xffff 表示整數 65535
作為布林 (Boolean) 運算時,如果數值不是 0 或 1,一般以 >=0.5 視為 ON(True),否則為 OFF(False)
1.11.7.變數的反向、反轉與100補數運算:
ICDT DDC8 的變數前加 ‘!’ / ‘~’ / ‘@’ 三種符號時,可分別作 NOT、Reverse以及 100 補數運算。作為輸入參數時,讀取時會先做反轉,加在輸出參數前會反轉後存入。DDC 系統變數不支援此類運算。
1.11.7.1.'!' NOT 運算:
數值 >= 0.5 時輸出 0,否則輸出1。
運算結果必定為 0 或 1、一般用於布林(Boolean)運算。
輸入反向應用範例:
C1 = !B0
輸出反向應用範例:
!C0 = C4 & C5
1.11.7.2.'~' Reverse 運算:
將原數值取整數後 & 0xFFFF,再做 Reverse 運算。一般用於 and / or / xor / shift 等邏輯運算(數位運算函數)。
Reverse 運算不適用於 Coil 以及 Register 的 .d1 & .d2 格式。
[參閱
數位運算函數]
輸入反轉應用範例:
R1 = ~R4
輸出反轉應用範例:
~B0 = R1 & 0xFF
1.11.7.3.'@' 100 補數(100' Complement)運算:
原數值大於 100 反轉會變為 0,小於 0反轉會變為 100,否則會取 100 的補數(100 - 原數值),例如 30 會變為 70,99 會變為 1,一般用於 PID 等類比控制運算。不適用於 Coil 。
輸出補數應用範例:
@R0 = pid(R4,25,20)
1.11.8.自定變數:
為方便程式的可攜性,ICDT DDC 編輯器允許以自定變數代替實體變數。自定變數必須前後以 ‘$’ 符號標示,例如 ‘$power$’ ,於使用該自定變數時,必須在前面加以定義。
例如 ‘#define $power$ = C1’,編譯器自動會以 C1 取代隨後遇到的 $power$。
如果未事先定義,則會在編譯時產生錯誤提示。
1.11.9.數值範圍與解析度:
ICDT DDC8 主要運算是採用單精度浮點數 ,因此數值的解析度為 2 的 24次方,如果用於每次加 1 的累加運算,則累加數值達 16777216 後即無法再增加,因此用作運轉計時 runtime() 或 Pulse 累加等運算應注意。
ICDT DDC8 浮點數依照 IEEE Standard 754 單精度標準,以 4 Bytes 儲存數值,共計 32 Bits。其格式以 v = (-1)
s2
e-127(1.f) 表示,其中 s 為 1 Bit 符號位元,e 為 8 Bit 指數,以及 f 為23 位底數(1.f 的 ‘.’ 為小數點)。
1.12.關於金鑰:
金鑰是 ICDT 針對每個 ICDT DDC8 系列產品的序號產生的 256 Bytes授權碼,用來確保控制器的授權功能。如果沒有獲得授權碼的產品僅能當作一般 MODBUS 輸入輸出模組使用,而沒有可程式 (Programmable) 功能。換句話說,你只能透過通訊來對未被授權的產品下命令,而無法透過 DDC 程式達到獨立控制 (Stand alone) 的功能,同時也沒有脈衝輸入、PWM功能,以及 Register 與 Coil 變數斷電記憶功能。
未安裝金鑰的控制器可以透過兩種方式將金鑰裝入控制器內:『自檔案發送金鑰』與『產生器傳送金鑰』。
產生器是指 ICDT 提供的金鑰產生器,可以將產生器插在 USB 座上,依照授權的數量產生金鑰並安裝到控制器中。每當安裝金鑰到不同序號的控制器,金鑰產生器的授權數量自動減一,直到授權數量用完為止。相同的序號重複安裝將不會影響授權數量。
如果沒有金鑰產生器場合仍能夠『讀取序號至檔案』後將檔案傳送到 ICDT 以獲取授權碼,再將授權碼『自檔案發送金鑰』。
安裝好的金鑰也可以『匯入金鑰至檔案』以備日後使用。
1.12.1.匯入金鑰至檔案:
將 指定 Slave 位址的 DDC 內部已經安裝得金鑰讀出,並儲存於檔案中。由於金鑰存於 DDC 的 EEPROM 中,並且只能用於相同序號的設備,因此大部分的應用並不需要這麼做。
除非控制器有將 EEPROM 全部清除的操作,但這樣的操作只在重新安裝 Loader 程式,不會出現在產品的現場應用中。
[參閱
關於 Loader 模式]
1.12.2.自檔案發送金鑰:
將由 ICDT 提供的金鑰檔案中,讀取指定 Slave 位址序號的金鑰,並傳送到設備中。由於金鑰必須匹配設備內的序號,因此如果檔案內沒有此設備序號的金鑰,則這項操作將會失敗。
1.12.3.產生器傳送金鑰:
在大量授權的場合,『讀取序號至檔案』後再向 ICDT 取得授權金鑰後再『自檔案發送金鑰』這樣的操作並不符合時間效益,因此您可以向 ICDT 購取金鑰產生器,直接產生並發送金鑰。
每個金鑰產生器會有自己的密碼,使產生金鑰的動作生效,這個密碼同樣由 ICDT 提供。
輸入密碼並按下確定後會自動傳送金鑰到指定 Slave 位置的設備,並將剩餘數量減一。每當安裝金鑰到不同序號的控制器,金鑰產生器的授權數量自動減一,直到授權數量用完為止。相同的序號重複安裝將不會影響授權數量。
選擇『匯出金鑰』按鈕可以將目前的金鑰全部匯出成檔案,這可以用在將產生器回收至 ICDT 時,將金鑰備份用。
1.12.4.讀取序號至檔案:
小量的授權可以將指定 Slave 位址的設備序號利用『讀取序號至檔案』的操作儲存到相同檔案,E-mail 至 ICDT 付費索取授權,然後再以『自檔案發送金鑰』方式寫入金鑰至設備。
1.12.5.展示版金鑰:
為了便於 ICDT DDC8 推廣需求提供的展示版金鑰,具備送電後 8 小時的正常版金鑰功能,當運行 8 小時後,DDC 程式將停止運行,回到無金鑰的 IO 板狀態,直到重新送電後才可正常運行 DDC 程式功能。
DDC 程式因為展示時間到達而停止運行時,可以由 Program Status 變數判斷。
[參閱
Program Status(運行狀態)]
1.13.關於韌體:
韌體(Firmware 又稱固件) 是存在 DDC 控制器內的主要執行程序,設備在出廠時會先預載最新的韌體。如果因應專案需求增加周邊設備、控制函數或發現存在缺陷(Bug)時,可以透過 ICDT DDC 編輯器進行韌體更新。
由於 ICDT DDC8 方案可能依照不同客製需求與腳位規劃會有不同韌體版本,並且可能彼此不相容。因此必須向您的供應商確認韌體版本,如果錯誤的版本相無法進行更新。
DDC8 無法透過 DDC32e Gateway 模式連線進行韌體更新。1.13.1.更新韌體:
在選擇要更新的設備 Slave 位址後,按下『更新韌體』按鈕並選擇要更新的韌體,此時 ICDT DDC 編輯器會檢查韌體版本是相容,如果相容會將指定位址設備強制切換到 Loader 模式,並且進行韌體下載。
由於韌體下載時輸入與輸出點可能會在不確定的狀態,因此建議控制重要周邊的設備應確認可能的風險或事先將受控制的設備脫離控制。
當設備韌體有誤會其他因素無法正常運作時,可以將 Slave 位址的指撥開關設定為 255 (也就是全部 ON)後重新送電,以強制進入 Loader 模式,但必須注意完成後將指撥開關設定為 正確位置,否則將無法正常運作。在 Loader 模式時將適用所有的 設備 Slave 位址,不需特別選擇。
如果準備載入的 韌體與 Loader 不相容,將會停止傳送,並回報錯誤訊息。
[參閱
關於 Loader 模式]
1.13.2.關於 Loader 模式:
Loader 模式是 ICDT DDC8 的特殊模式,用來執行韌體刪除、韌體寫入以及通訊格式變更等功能。
Loader 模式時,所有 DDC 程式運算(包含 DDC32e 的Gateway、MODBUS Translator 等功能)停止運作,輸入、輸出功能都將停止或處在於不確定狀態,因此不建議在連接重要設備時進入 Loader 模式。
在 Loader 模式中,狀態 LED 燈會快速閃爍,此時通訊格式固定為 9600,8,n,2;DDC32e 進入 Loader 模式時,其 網路 IP 將固定為 192.168.1.110。進入 Loader 模式的方式有兩個,一個是透過 ICDT DDC 編輯器『更新韌體』按鈕執行,將指定 Slave 位址的設備切換到 Loader 模式,此時他的韌體將會被清除,並且無法回復。為了避免此項操作造成韌體受損,ICDT DDC 編輯器會先檢查準備載入的韌體相容性。此項操作 ICDT DDC 編輯器 會以相同的 Slave 位址,通訊格式改以 9600,8,n,2 對設備進行韌體更新的操作。
另一種進入 Loader 模式的方式是將 Slave 位址的指撥開關設定為 255,也就是全部 ON。
Loader 模式的設備無法由 "控制器參數視窗" DDC 頁進行讀取。
DDC32e 則可以由 "控制器參數視窗" Config 頁判讀,並且設定相關參數。
2.Q & A:
2.1.如何安裝 DDC 編輯器 ?:
◘ 必須使用 作業環境為 Windows XP 或 Windows 7 的電腦,具備 RS232 通訊埠(必須另備 RS232 轉RS485 轉換器)或者透過 USB 轉 RS485 轉換器亦可。
◘ 取得最新編輯器程式,並執行 setup.exe,最新的程式可以在
http://www.icdt.com.tw 網站中找到
◘ 由於 ICDT DDC 編輯器必須具備 .NET Framework 2.0 環境,因此如果電腦未曾安裝過 .NET Framework 2.0,則必須將電腦連接到網際網路,並依照指示下載 .NET Framework 2.0 (選擇 Accept 以進行下載,由於下載時間是網路速度而定,可能耗費較長時間) 。
◘ 依照指示安裝 ICDT DDC 編輯器 (都選擇 Next 即可) 。
2.2.何謂 DDC ? 有何優點 ?:
DDC (Direct digital control) 是一種分散式(Distributed control)、可程式(Programmable)控制器,具備小點數、獨立控制、快速反應、容易編成的特性。
相較於傳統的PLC 方案, DDC 方案可以就近安裝於設備旁,節省線路費用。
由於可以獨立控制,相較於傳統 IO 模組,降低通訊線路或異常造成的風險,更可有效減少通訊負荷,增加控制的即時性,達到每 0.1 秒一個運算週期。
而 DDC 程式的編輯器簡易上手快,完整的控制函數降低程式編程門檻,因此不需要專業的程式工程師就可以完成程式的編輯與修改。同時也降低對於系統初設工程師與初設系統商的依賴。
[參閱
關於 DDC]
2.3.如何取得 ICDT DDC8 控制器 ?:
目前 ICDT DDC8 控制器正式授權廠商為聯力達科技
http://www.embedded-box.com.tw/,您可以聯絡該公司已進行購買、試用或訂製相關產品,或是上 ICDT 網站獲取最新資訊
http://www.icdt.com.tw2.4.ICDT DDC8 最多只能有 20 個輸入/輸出點嗎?:
標準的 ICDT DDC8 方案具備 5 個輸入/輸出插槽以支援最多 20 個泛用輸入輸出點,包含 AI、AO、DI 以及 DO 點可以每四個為一組,自由搭配(除了 2AI2AO 模組外)。
如果有更大的點數需求,可以訂製具備 12 個擴充點的版本,以安裝 12 DI 卡或 12 DO 卡,將總點數增加至 32 點,但增加的點數無法作為 AI 或 AO 用途。如果選用此一版本時,也無法再選用第二的 MODBUS RTU 通訊埠,或訂製其他擴充功能。
2.5.我的 DDC 可以整合外部的設備嗎 ?:
ICDT DDC8 標準具備一個 MODBUS Slave RTU RS485 通訊介面,供其他 MODBUS Master 設備控制,因此主要的整合任務必須由這一個 Master 設備進行。如果有第二的 Master 設備時(例如 人機介面),必須選用具備兩個 MODBUS Slave RTU RS485 通訊介面 的版本。但必須注意兩個通訊埠的通訊格式必須一致。
如果必須要連結其他 Modbus Slave 設備,例如多功能電表、變頻器或智慧型感測器、顯示器時,則必須另外訂製 Firmware,標準韌體是無法勝任的。
[參閱
關於通訊]
ICDT DDC32e 具備 MODBUS Translator 模式,這是針對多功能電表等 MODBUS RTU Slave 設備整合應用開發的可編程介面,由使用者自行編輯 Slave 內記憶體對應到 DDC32e 內部 UID 1~64 記憶體中,以利透過 DDC 程式與 MODBUS TCP 通訊進行監控。
[參閱
DDC32e MODBUS Translator 模式]
2.6.如何透過其他 MODBUS 程式讀取與控制輸入/輸出點:
使用標準 MODBUS RTU 程式,透過 RS485 介面,設定與 DDC 相同的通訊格式([參閱
通訊格式])進行連接,Coil 與 Register 地址相對於輸入/輸出點以及 DDC 內 C0~C63 與 R0~R63 的變數關係[參閱
MODBUS 標準變數]
您也可以透過 ICDT 的 MODBUS 通訊記錄程式來參考與判斷 RS485 通訊資料,該程式可以訪問網站
http://www.icdt.com.tw找到
DDC32e 使用 MODBUS TCP Client 程式讀取 UID 255 的 C0~C2047 & R0~R2047,Gateway 模式或 Translator 模式可以讀取 UID 1~64 的 C0~C63 與 R0~R63。MODBUS TCP Client 測試程式同樣可以訪問網站
http://www.icdt.com.tw找到
2.7.DDC 程式空間只有 1.5KB 是否太少 ?:
ICDT DDC8 方案的 DDC 程式空間為 1.5KB (1,536 Bytes),儲存於內部 EEPROM 中。由於DDC 程式是用極精簡的代碼方式儲存,每個運算式只佔用數個 Bytes,因此 1.5KB 的程式空間足夠寫上百行指令或函數,足夠應付大部分的應用場合。
ICDT DDC32e 是元米科技提供具備乙太網路通訊能力的 32 位元核心可程式控制器方案, 相較於 DDC8 方案速度更快、容量更大、點數更多,擴充性更強,可以視為乙太網路超大容量版的 DDC8。ICDT DDC32e 系列具備 16K 的可程式 (Programmable) 空間,以每 0.1 秒執行一次所有函數指令。ICDT DDC32e 系列的 DDC 可程式功能與 DDC8 方案相容,可以解決超大程式空間的應用需求。
[參閱
關於 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 為何不能連線 ?:
RS485 連線狀況可能的狀況如下:
◘ 電腦 COM Port 選擇不是正確的通訊埠,或驅動程式異常。
◘ MODBUS RTU RS485 線路正負錯誤。
◘ MODBUS RTU RS485 超出最大負載量(32 個 Device),或線路太長、未安裝終端電阻、使用分岐方式配線,造成網路信號不良。
◘ MODBUS RTU RS485 超過一個 Master 設備。
◘ MODBUS RTU RS485 網路上有其他 DDC 地址與連線的 DDC 地址重複。
◘ DDC 指撥開關設定位正確,或更改設定後未重新送電。
◘ DDC 的通訊格式不正確
DDC32e 連線狀況可能的狀況如下:
◘ 網路介面選擇錯誤或未設定
◘ IP地址衝突或設定錯誤
◘ 與 DDC32e 不相同網路區段
[參閱
關於通訊]
2.10.如何修改或確認目前的通訊速率與格式 ?:
◘ 進入 Loader 模式後重新送電[參閱
關於 Loader 模式]
◘ 利用 ICDT DDC 編輯器工具選單進行讀取目前通訊格式或設定通訊格式
◘ 離開 Loader 模式後重新送電
2.11.為何定時控制的功能不能正常執行 ?:
ICDT DDC8 方案的內部時鐘(RTC)會在斷電後停止,因此必須透過通訊埠重新寫入正確時鐘後才可正常運算。如果內部時鐘格式不正確時,所有關於時間的運算與變數將停止運算。
如果有時間運算的應用場合,通訊的 Master 端應該定時傳送時鐘數值進行同步,以確保時間相關功能運作正常。
DDC8 使用 DDC32e Gateway 連線時,DDC32e 每五分鐘會進行一次時間同步。DDC32e 本身則具備 RTC ,其內部具備的金電容機制允許最多兩天的電源中斷。
[參閱
時間變數]
[參閱
Local Time(設備時鐘)]
2.12.沒有安裝金鑰的版本與正常安裝金鑰版本有何差異?:
沒有安裝金鑰的 DDC8 只是簡易的 MODBUS IO 控制器,只能透過通訊讀寫 Coil 與 Register 點以讀取或控制。
因為無法寫入 DDC 程式,除了不能獨立運行外,也不能使用 PI (Pulse Input) 與 NTC (負溫度係數溫度感測器)轉溫度的功能。同時輸入輸出點也沒有辦法透過斷電記憶點來達到記憶最後狀態的需求。
2.13.如果我的 DDC 是沒有金鑰版本,如何進行升級或試用 ?:
您可以透過 ICDT 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 的阻值表,必須建立並傳送至 DDC[參閱
NTC 阻值對照表]。Beta 3950 的阻值表預設在編輯器中,但仍需上傳至 DDC中。
◘ 每個 DDC 只能建立一個 NTC 阻值對照表,因此同一個 DDC 內 所有的 NTC 輸入必須使用相同 Beta 特性的感測器。
◘ NTC 阻值對照表的阻值對應溫度單位必須為攝氏單位,如果您手頭上只能找到華氏單位的對照表,則可以到元米科技網站下載溫度單位轉換表。
http://www.icdt.com.tw◘ 必須使用 aintc 函數進行轉換,例如 R32.d1 = aintc(R0)。此範例將 R0 的 AI 轉換值以轉換至 R32,數值 250 代表 25.0 度,溫度單位為攝氏或華氏由 NTC 阻值對照表決定。由於必須使用到 DDC 函數進行轉換,因此沒有安裝金鑰版本將無法進行溫度轉換。
2.16.如何使用 Pulse Input 的功能 ?:
◘ 使用 DI 點作為輸入端[參閱
脈衝輸入(PI)]
◘ 使用 DDC 程式將 DI 點對應的 PI 變數加到 具被斷電記憶的 Register 中列如 程式碼 R32 = R32 + P8[參閱
Pulse 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 控制運算與計時功能能有幾組 ?:
ICDT DDC 的 PID 控制與其他定時控制函數並沒有有明確的數量限制,但是程式空間當然不可以超過 1.5KB 的最大容量限制,使用的運算暫存器也不能超出限制。儘管如此,上述函數的數量族可以因應大部分的控制需求。
[參閱
DDC 運算暫存區]
2.19.韌體更新的注意事項為何 ?:
◘ 不同產品編號(Product Code)的韌體可能不相容,安裝時將出現提示,並停止安裝
◘ 相同產品編號(Product Code)的產品如果安裝與周邊不相符的韌體可能可以運行,但部份功能可能無法運作
◘ 韌體升級過程中如果停止,則 DDC 由於原有韌體已刪除,因此會停留在 Loader 狀態
◘ 如果透過將指撥開關設為 255 (全部 ON) 以強制進入 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.關於電源應注意什麼 ?:
◘ 標準 ICDT DDC8 控制器使用 24Vac 電源,由於電源並未隔離,因此電路接地點點與電源相通。
與其它設備(包含其他 DDC)使用相同電源時,並需注意正負,否則會造成設備受損。
◘ 標準 ICDT DDC8 控制器電源使用半波隔離設計,以預留與其他半波整流驅動器/感測器共用電源的應用。
但如果與其他無電源隔離的全波整流感測器/驅動器共用電源,並且將信號相接時,會使電源短路,造成設備損壞,必須注意。
◘ 隔離型的 DI 與 DO 模組可以與 DDC 共用電源,但此時 DI 與 DO 隔離功能喪失,如果數位電上的干擾源過大會影響 DDC 正常運作,因此不建議如此應用。
3.版權宣告:
本軟體版權屬元米科技有限公司(Intelligent Control Design & Technology Co., Ltd)所有,除元米科技產品或授權產品使用外不得使用。未經授權重製或使用本發行文件之部分或全部內容,將依法提起告訴。
4.關於ICDT (元米科技有限公司):
元米科技有限公司(Intelligent Control Design & Technology Co., Ltd)前身為元米智控研發工作室(Intelligent Control Design House),自2012年五月成立後,致力於自動控制方案的開發,並成功推出性價比(C/P值)極高的 DDC8 方案。為便於業務推展,並使客戶與合作夥伴獲得更多的保障,於2013年6月21日正式登記成立為『元米科技有限公司』,並陸續推出 DDC32e 方案與 Web Embedded 方案,以及 BACnet 通訊協定相關方案(元米科技為 BACnet 編號 676 供應商),以期服務更多有需求的合作伙伴。
元米科技有限公司以成熟的、低成本的整合方為客戶打造高價值、持續服務的可程式控制方案,人性化的操作介面,讓您自有品牌不再是夢想,更多的資訊請造訪網站:
http://www.icdt.com.tw5.關於本手冊:
本手冊適用於 IDCT DDC8 系列產品 V0.05 版以及 DDC32e V0.53 以後韌體,以及 V1.7.0.0 版以後 DDC 編輯器。
手冊版本 V1.30 版
完稿日期 2020/2/12
取得本程式更新資訊請造訪網站:
http://www.icdt.com.tw