▪ 1.線上手冊:
coil

▪ 1.1.電腦規格需求:

▪ 1.1.1.硬體需求:
CPU 建議為 2 GHz Dual-Core雙核以上
1GB 以上RAM
160 GB 以上硬碟
具備實體 乙太網路介面
直接連接 MS/TP 設備,必須外加專用的 USB MS/TP 轉接器


▪ 1.1.2.軟體需求:
Windows XP 、 Windows 7 、Windows 8 或 Windows 10 作業系統
Microsoft .NET Framework 2.0 以上



▪ 1.2.關於 ICDT DDC32e:
ICDT BACnet DDC32e 是元米科技提供具備乙太網路通訊通能的的 32 位元核心可程式控制器方案, 相較於 DDC8 方案速度更快、容量更大、點數更多,擴充性更強,可以視為乙太網路超大容量版的 DDC8。

ICDT BACnet DDC32e 同樣使用時下最流行的 32 位元 ARM Cortex-M3 MCU,執行時續達 120Mhz 或更高(依照實際選用 MCU 而定),並具備 RTC 時鐘,可獨立作時程控制。

ICDT BACnet DDC32e 系列具備 16K 的可程式 (Programmable) 空間,以每 0.1 秒執行一次所有函數及指令。

ICDT BACnet DDC32e 系列依照安裝的韌體不同,可以執行 MODBUS 模式與 BACnet 模式兩種,本手冊針對 BACnet 模式加以說明。

▪ 1.2.1.ICDT DDC32e 硬體規格:
ICDT BACnet 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.2.2.ICDT DDC32e 方案的特點:
◘ 使用更高級的核心,具備更高的執行速度、更大的可程式空間與更充足的記憶體容量。
◘ 具備 10M/100M 乙太網路介面,兩個標準 RS485 通訊界面,並預留最多達 3 個串列通訊功能。
◘ 20輸入輸出點都可以選擇 AI/DI/AO/DO 功能(AI最多為 8個,依照 MCU 選用不同,數量可能會有差異),除了AO 外,只需要緩衝電路,不需要轉換週邊,節省成本並降低故障率。
◘ 具備 RTC 時鐘,可獨立作時程控制。
◘ 使用 BACnet/IP 通訊,以達到 B-ASC 等級 DDC 功能。另預留兩組 MODBUS RTU 通訊。
◘ 可透過更新韌體方式,改變為 BACnet MS/TP (使用 RS485)介面,同樣具備 B-ASC 等級 DDC 功能。此時只剩下一組 MODBUS RTU 通訊。
◘ 透過 DDC 程式編輯,可以支援 DS-RP-A 與 DS-WP-A,對其他設備讀取與寫出屬性(僅針對 Present value),以達到與其他設備連動之目的。
◘ 可以更新 韌體方式改為較為通用的 MODBUS TCP 通訊模式。
◘ 支援 DHCP 動態 IP 地址配置,可免除 IP 衝突的困擾。
◘ 具備韌體更新能力,可隨時修正韌體或改為客製版韌體。
◘ 硬體與軟體可依照客戶需求編修介面,以建立自我品牌產品。



▪ 1.3.BACnet 基本常識:
BACnet 是用於常用於大樓制動控制的標準通訊協定,是國際標準化組織(ISO)、美國國家標準協會(ANSI)及美國採暖、製冷與空調工程師學會(ASHRAE)定義的通訊協定。
BACnet 由於開放協定的特性,可以有效降低維護成本,防止裝置供應商及系統業者的壟斷。BACnet 協定被廣泛用在大樓制動控制相關的空調系統、機電控制也可以用在照明控制、門禁系統、火警偵測系統及其相關的裝置。
BACnet 網路介面包含了基於 RS485 實體的 MS/TP 網路、基於乙太網路(ISO 8802-3)的 "Ethernet"、基於 RS232 的 PTP 網路等多種界面,使網路建置更富彈性以及更好的未來系統擴充性。

▪ 1.3.1.BACnet/IP:
因應 IP 網路的普及,BACnet 增加了基於 UDP/IP 的網路 BACnet/IP,使 BACnet 更容易透過 IP 網路系統整合(註一),甚至透過網際網路進行傳輸(註二)。

註一. BACnet/IP 使用 UDP 廣播發送廣播訊息,預設的 UDP Port 號為 47808,透過 BVLC(BACnet Virtual Link Layer)
註二. 如果需要傳送到網際網路必須透過 BBMD (BACnet/IP Broadcast Management Device)


▪ 1.3.2.MS/TP:
MS/TP (Master Slave Token Passing) 是 BACnet 基於 RS485 網路特性的網路介面。由於透過權杖傳遞方式決定主僕關係,因此對於時序的要求極為嚴格。
相對於 BACnet/IP ,MS/TP 網路建制成本較低,對於硬體需求也較精簡,因此適用於分佈區域較廣的現場控制單元。不過由於 MS/TP 的網路通訊頻寬與不如 BACnet/IP 網路,對於需要大量快速資料存取的應用場合,選擇 BACnet/IP 較為理想。
DDC32e 透過韌體更新採用 MS/TP 介面時,乙太網路介面將會失效,因此必須透過 BACnet/IP To MS/TP Router 或是專用的 USB MS/TP 轉接器才能連接。


▪ 1.3.3.Network Number:
在整個 BACnet 網路架構中,每一個 網路都必須使用為一的網路編號(Network number),以做為網路層資訊的傳遞用途,網路編號的範圍是 1~65534。
一般網路編號是由各個 Router 所設定的,如果網路編號重複,可能使通訊資料無法順利傳送至指定的設備上。


▪ 1.3.4.MAC:
MAC (Medium Access Control) 是 BACnet 網路上實體層的地址編號,長度因為網路類型不同而異。
在相同的 BACnet 網路中,所有設備的 MAC 不可以重複。
MS/TP 網路的 MAC 數值為 0~254,其中 編號 128~254 只能是 Slave 模式。本方案提供的 BACnet MS/TP DDC 為 Master 模式,因此 MAC 有效範圍是 0~127。
必須注意的是 BACnet Router 每一個網路介面都各自具備 MAC,其中 MS/TP 網路建議的 MAC 地址為 0。


▪ 1.3.5.Device 器件:
Device (器件)是 BACnet 對於網路上設備的名稱,在 BACnet 網路上,除了 Repeater 與 Bridge 外,BACnet 網路上所有的設備必需都使可見的,並且擁有一個數值範圍 0~4194302 的唯一的器件編號(Device instance)。
器件編號是所有 BACnet 網路上資訊分享的基礎,如果器件編號重複,可能導致資料存取對象錯誤。


▪ 1.3.6.Object 物件:
Object (物件)是每個 BACnet 的通訊對象,常用的物件類別有 Device type、Analog Input type(習慣稱 AI)、Analog output type(習慣稱 AO)、Analog value type(習慣稱 AV)、Binary Input type(習慣稱 BI)、Binary output type(習慣稱 BO)、Binary value type(習慣稱 BV)等。

BACnet 設備中,每種物件數量通常不只一個(Device type 除外),因此必須有其對應的編號(數值範圍 0~4194302),也就是物件編號 (Object instance) 做為識別,因此本編輯器採用 av0 代表 Analog value 物件 Object instance 0 最為讀取的對象,其他如 ai1、ao2、bi3、bo4、bv5 各代表 Analog input object instance 1、Analog output object instance 2、Binary input object instance 3、Binary output object instance 4、Binary value object instance 5。

Device 物件 是 BACnet 器件必備的物件類別,每個 BACnet 器件都必須有一個 Object instance (物件編號) 為 Device instance (器件編號)的 Device 物件,以提供該設備的重要資訊作為設定與存取之用。因此我們可以透過讀取 Device 物件的相關屬性,得知該設備的模組名稱(Model name)、供應商(Vendor name)等重要資訊。

BACnet 設備上所有支援的物件類別都必須載明在其 PICS 文件上,同時也可以在 Device 物件的 Protocol_Object_Types_Supported 屬性獲得物件類別支援的資訊,或是在 Device 物件的 Object_list 屬性獲得所有物件與其編號的清單。


▪ 1.3.7.Property 屬性:
由於 BACnet 是採用物件導向概念,因此每一個 BACnet 物件都有許多必備(Required)或選配(Optional) 的屬性供讀取。每種物件的每一種屬性都有一定的數值格式,例如 AI(Analog input)、AO(Analog output)、AV(Analog value)最重要的 Present value(現值)屬性,其數值格式就必須為浮點數 Real (ANSI/IEEE-754 floating point)。

列舉 (Enumerate) 是一種較特別的數值格式,雖然在編碼上同樣是類似正整數的方式表示,但因為屬性的不同,不同的數值被賦予不同的意義,例如 BI(Binary input)、BO(Binary output)、BV(Binary value)最重要的 Present value(現值)屬性 即為稱作 BACnetBinaryPV 的列舉格式,以列舉值 0 作為 Inactive,相當於習慣稱的 OFF,以列舉值 1 作為 Active,相當於習慣稱呼的 ON。

並不是所有的屬性都支援寫入,而支援寫入的屬性也務必依照指定的數值格式寫入。對於不支援寫入的屬性作寫入將會回應 Write Access Denied 的錯誤訊息。

BACnet 設備上所有支援的物件類別支援的屬性都必須載明在其 PICS 文件上。


▪ 1.3.8.Service 服務:
在 BACnet 網路中對於物件屬性讀寫、搜尋器件等各項操作都是透過各項 Service 服務來達成。BACnet 依照各項操作需求定義的許多服務類型,較常用的是 Read property service 與 Write property service 用以提供讀寫服務。

依照 BACnet 產品的定位,所以支援 服務類型各有不同,各產品會以 BIBBS 的方式呈現在 PICS 文件中,同時也可以在 Device 物件的 Protocol_Services_Supported 屬性獲得支援訊息。


▪ 1.3.9.PICS 文件:
PICS(Protocol Implementation Conformance Statement) 協議實現一致性聲明文件是由 BACnet 設備製造商公開發布的書面文件,用來標識設備針對 BACnet 各功能選項實施狀況。

BACnet PICS 必須包含以下信息:

● BACnet 設備 供應商與產品基本描述 。
● 支援的 BACnet 的互操作性方塊 (BIBBs)
● 符合的 BACnet 標準設備 STANDARDIZED BACnet DEVICES
● 所有支援的非標準服務(Service)。
● 所有支援標準和專有的物件(Object)類型列表。
● 對於每個物件(Object)類型
● 支持任何可選屬性,
● 屬性是否可以使用 BACnet 服務寫入
● 物件是否可以使用 BACnet 服務動態創建或刪除
● 寫入數值的範圍限制。
● 支持資料連結層(data link layer)選項
● 是否支援封包分段


▪ 1.3.10.命令優先權控制:
由於控制系統的控制命令可能有許多來源,因此 BACnet 針對部分物件的 Present value 屬性設計了優先權控制的方式,使優先權較高的命令可以獲得控制權,重點如下:

● 16 個優先等級中,數字越小的優先等級越高,優先等級為 1 的命令為 Null 時,則依照優先等級 2 的命令動作,2 為 Null 則依照等級 3 動作,依此類推。
● 16 個優先等級全部為 Null 時,則依照預設的數值(Relinquish_Default 屬性) 動作
● 各個層級的命令狀態必須由 Priority_Array 屬性獲得
● 一般手動(例如圖控操作)的等級為 8
● 部份物件優先權控制功能為選配的(AV/BV/MSV),部分為必備的(AO/BO/MSO)
● 如果寫出Present value 屬性值時未帶有優先權參數,則會被寫入最低的 16 層

ICDT BACnet DDC 編輯器對於 BACnet 變數的 AO & BO 可以指定優先權參數,例如 ao5.p8 表示讀取 Analog output Priority_Array 屬性 index 8,寫入則為 Analog output Present value 優先權 8。
如果不指定優先權 (例如 ao5),則 DDC 程式會寫入優先權 14,讀取 Present value 屬性。

由於各優先權如果不是 Null 會造成控制結果與預期不符,ICDT BACnet DDC 的 AV 與 BV 物件不支援優先權控制,以避免誤解。而 AO 及 BO 物件也可以在 Watch 視窗做快速清除各優先權的操作。



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

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

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

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

ICDT BACnet DDC 另外具備12個擴充,可依照需求選擇 12個 DI 或 DO 點擴充卡,使最大輸入/輸出點達到 32 點。

▪ 1.4.1.設定輸入輸出模式:
在 DDC 編輯器 IO 設定視窗 Device 頁可以選擇 IO 模組類型,必須依照實際安裝的模組進行設定,模組更換必須在斷電狀況下進行,並且須注意插銷對應是否正確,以免造成設備受損。[參閱IO 設定視窗]


▪ 1.4.2.數位輸入(DI):
當指定的輸入輸出位置選用 4DI 時,其對應的物件位置會是 BI (Binary Input) 物件,以接受接點或開集極(Open Collector) 輸入信號,獲取外部 0 或 1 (Off / On; Inactive/Active ) 的輸入信號,並將其對應在相對應的 BI 的 Present Value 屬性中。[參閱BI]

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

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

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

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


▪ 1.4.3.數位輸出(DO):
當指定的輸入輸出位置選用 4DO 時,其對應的位置會是 BO (Binary Output) 物件,並將對應 BO的 Present Value 狀態,作接點或開集極(Open Collector) 輸出。[參閱BO]

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

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

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

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


▪ 1.4.4.類比輸入(AI):
當指定的輸入輸出位置選用 4AI 時,其對應的位置會是 AI (Analog Input) 物件。如果搭配 類比輸入模組,則可以連接 4~20mA 或 0~10 Vdc 的信號輸入。選用 2AI2AO 模組時,前兩點功能與 4AI 前兩點相同。

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

[參閱AI]

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


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

[參閱AO]

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


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

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

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



▪ 1.5.關於變數:
ICDT BACnet DDC 變數分為 BACnet 標準變數與系統變數,說明如下:

▪ 1.5.1.BACnet 標準變數:
ICDT BACnet DDC 內有 Device、File、Program、Analog Input、Analog Output、Analog Value、Binary Input、Binary Output 以及 Binary Value 等物件,其中只有Analog Input、Analog Output、Analog Value、Binary Input、Binary Output 與 Binary Value 允許 作為 DDC 運算變數進行存取。

▪ 1.5.1.1.AI (Analog Input) 變數:
ICDT BACnet DDC 內 Analog Input 物件簡稱 AI,會依照 IO 設定自動生成,用於 DDC 程式的變數表示式 為 ai0~ai63 代表 Analog Input 0 ~ Analog Input 63 的 Present value 屬性值。
AI 變數是以浮點數方式儲存的唯讀變數,數值依照外接的信號與高低對應數值而變。


▪ 1.5.1.2.AO (Analog Output) 變數:
ICDT BACnet DDC 內 Analog Output 物件簡稱 AO,會依照 IO 設定自動生成,用於 DDC 程式的變數表示式 有帶優先權與沒有帶優先權兩種。

有帶優先權表示式為 ao0.p1~ao63.p16 ,於讀取時代表 Analog Output 0 Priority Array index 1~ Analog Output 63 Priority Array index 16 的屬性值,寫入時則是將數值寫入 Analog Output 0 Present value Priority 1~ Analog Output 63 Present value Priority 16 中。

沒有帶優先權表示式為 ao0~ao63 ,於讀取時代表 Analog Output 0 ~ Analog Output 63 的 Present value 屬性值,寫入時則是將數值寫入 Analog Output 0 Present value Priority 14~ Analog Output 63 Present value Priority 14 中。

AO 變數以浮點數方式表示,數值有效範圍是 0~100,代表 0~100% 的輸出量。由於內部儲存解析度為 16 bits,因此小數點後第三位可能會四捨五入,但這並不會影響實際輸出效果。AO 變數的 16 層 Priority 數值會於斷電時自動儲存。

如果 IO 設定中勾選 AO Overridden 參數,則該 AO 值只能透過 DDC 程式寫出,無法由 BACnet Write property Service 寫入,此功能可以對重要輸出做管控,避免誤操作對設備造成傷害。


▪ 1.5.1.3.AV (Analog Value) 變數:
ICDT BACnet DDC 內 Analog Value 物件簡稱 AV,共計 500 個,用於 DDC 程式的變數表示式 為 av0~av499 代表 Analog Value 0 ~ Analog Value 499 的 Present value 屬性值。
AV 變數是以浮點數方式存取的軟體變數,其數值會於斷電時自動儲存,可以作為 DDC 運算輸出暫存器或供數值參數設定用途。


▪ 1.5.1.4.BI (Binary Input) 變數:
ICDT BACnet DDC 內 Binary Input 物件簡稱 BI,會依照 IO 設定自動生成,用於 DDC 程式的變數表示式 為 bi0~bi63 代表 Binary Input 0 ~ Binary Input 63 的 Present value 屬性值。
BI 變數值以 0 代表 Inactive(類似一般習慣稱的 OFF),以 1 代表 Active(類似一般習慣稱的 ON),會依照實際電路輸入而變化。
IO 設定時如果勾選 BI 的 Polarity Reverse 參數,則輸入信號將會反轉。


▪ 1.5.1.5.BO (Binary Output) 變數:
ICDT BACnet DDC 內 Binary Output 物件簡稱 BO,會依照 IO 設定自動生成,用於 DDC 程式的變數表示式 有帶優先權與沒有帶優先權兩種。

有帶優先權表示式為 bo0.p1~bo63.p16 ,於讀取時代表 Binary Output 0 Priority Array index 1~ Binary Output 63 Priority Array index 16 的屬性值,寫入時則是將數值寫入 Binary Output 0 Present value Priority 1~ Binary Output 63 Present value Priority 16 中。

沒有帶優先權表示式為 bo0~bo63 ,於讀取時代表 Binary Output 0 ~ Binary Output 63 的 Present value 屬性值,寫入時則是將數值寫入 Binary Output 0 Present value Priority 14~ Binary Output 63 Present value Priority 14 中。

BO 變數值以 0 代表 Inactive(類似一般習慣稱的 OFF),以 1 代表 Active(類似一般習慣稱的 ON),變數的 16 層 Priority 數值會於斷電時自動儲存。

如果 IO 設定中勾選 BO Overridden 參數,則該 BO 值只能透過 DDC 程式寫出,無法由 BACnet Write property Service 寫入,此功能可以對重要輸出做管控,避免誤操作對設備造成傷害。如果勾選 BO 的 Polarity Reverse 參數,則輸出信號將會反轉。


▪ 1.5.1.6.BV (Binary Value) 變數:
ICDT BACnet DDC 內 Binary Value 物件簡稱 BV,共計 500 個,用於 DDC 程式的變數表示式 為 bv0~bv499 代表 Binary Value 0 ~ Binary Value 499 的 Present value 屬性值。
BV 是 DDC 內的軟體變數,變數值以 0 代表 Inactive(類似一般習慣稱的 OFF),以 1 代表 Active(類似一般習慣稱的 ON),其數值會於斷電時自動儲存,可以作為 DDC 布林運算輸出暫存器或供 ON/OFF 參數設定用途。



▪ 1.5.2.DDC 系統變數:
除了 ai? , ao?, av?, bi?, bo?, bv? 等標準BACnet 物件外,DDC 程式還有以下的變數可以做運算輸入,但無法透過 BACnet 的 讀屬性(Read property)與寫屬性(Write Property)方式存取。

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

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

DDC 內時間參數可透過時間同步服務 (TimeSynchronization Service)校正。


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


▪ 1.5.2.3.Pulse Counter(脈衝計數器):
部份支援 Pulse 輸入的 DI 模組,DDC 可以由變數 P0~P19 取得對應 bi0~bi19 的 Pulse 累積數值,讀取後 Pulse 累積數值後 變數 P0~P19 會歸零。
實際應用時只要用 av0 = av0 + P0 的方式,就可以將 bi0 的 Pulse 累積值存入 av0 中。



▪ 1.5.3.常數:
ICDT BACnet DDC 內以一般以浮點數作為運算基礎,作為布林 (Boolean) 運算時,如果數值不是 0 或 1,一般以 >=0.5 視為 ON(True/Active),否則為 OFF(False/Inactive)。
null 為特殊的常數,僅適用於 AO 變數與 BO 變數,寫入 null 會使指定優先權被忽略。


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

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

輸入反向應用範例:
bv0 = !bi0
輸出反向應用範例:
!bo1 = bv0 & bi5


▪ 1.5.4.2.'~' Reverse 運算:
將原數值取整數後 & 0xFFFF,再做 Reverse 運算。一般用於 and / or / xor / shift 等邏輯運算(數位運算函數)。

輸入反轉應用範例:
av1 = ~av4
輸出反轉應用範例:
~av1 = av2 & 0xFF


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

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



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


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

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



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

▪ 1.6.1.傳送至DDC:
將目前 DDC 程式編輯器的內容編譯後傳送到指定器件編號(Device instance)的設備,並儲存於 DDC 中。
含註解的上傳動作會將註解內容一起編譯上傳,以利讀回時更容易理解,但相對的要耗費較多的記憶體空間。

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

上傳動作前應該確認設備的器件編號(是否正確,以免傳送到其他設備,造成 DDC 程式被意外覆蓋而無法復原。

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

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


▪ 1.6.2.自DDC讀取:
自指定器件編號(Device instance)的設備讀取 DDC 控制程式。如果被設定密碼的程式必須輸入密碼後才允許讀取。


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


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


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


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

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


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

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


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

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

群組名稱不可留白。


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


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


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




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

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

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

◘ 為保持程式結構完成,每一行只支援一種運算(例如 av0 = av1 + av2 + av3),而不可執行如 av1 = av2 + av3 - av1 等多種運算在同一指令行上。如果需要如上的運算方式,則可以分兩行運算,中間暫存值儲存入沒被使用的 bv 與 av 中。

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

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

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

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

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

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

◘ DDC 編輯器支援 “/* */”以及 “//” 兩種註解功能,以增加程式的可閱讀性。

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

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

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

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

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


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

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

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

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

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

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

程式編輯區在除錯模式是無法編輯的,此時如果游標移動到 ai、ao、av、bi、bo、bv 等變數上,會顯示目前的數值。[參閱關於 DDC 除錯模式]


▪ 1.7.3.網路設定:
網路界面設定視窗包含三個部份:

▪ 1.7.3.1.選擇網路界面:
設定 BACnet 網路連接的界面卡,當電腦具備一個以上網路界面時必須選擇,以免 BACnet UDP 封包發送路徑錯誤。
如果需要直接與 MS/TP 網路介面直接連接,必須另外選購專用的 USB MS/TP 轉接器,並將 網路介面選擇 『MS/TP Adapter』。


▪ 1.7.3.2.設定器件編號:
設定 DDC 編輯器的器件編號,只要不和網路上其他設備(尤其是要連接的 DDC)編號重複即可。


▪ 1.7.3.3.選擇 UDP Port:
設定 BACnet/IP 網路 UDP Port,必須與要連接的設備相同。 BACnet/IP 預設的 UDP Port 為 47808。


▪ 1.7.3.4.MAC 與 Baud rate:
選擇介面為『MS/TP Adapter』時,UDP Port 將不會顯示,而改以 MAC 與 Baud rate 取代。
MAC 是 MS/TP 的實體地址,不得與 MS/TP 網路上其他設備(尤其是要連接的 DDC)重複。
Baud rate 為通訊速率,MS/TP Adapter 支援 9600 /19200 /38400 /76800 四個種速率。速率選擇應該與連接的 MS/TP 設備一致。如果選擇 AUTO,則 MS/TP Adapter 不會自動產生 Token,等到偵測到有效的 MS/TP 封包後才鎖定速率。



▪ 1.7.4.控制器設定:

▪ 1.7.4.1.BACnet/IP Device:
設定 BACnet/IP DDC 以及 BACnet Router 等設備網路參數的介面。此設定是透過全域廣播的方式 (255.255.255.255) 進行,因此不同網段的設備,也可能被搜尋到,被搜尋到的設備將出現在上方的清單中。

選擇設備為 BACnet/IP DDC 類型時,可以設定 IP 地址、器件編號(Device Instance)、UDP Port 等,其中 UDP Port 必須與 DDC 編輯器的 UDP Port 設定相同才可以連接。BACnet/IP DDC 允許使用 DHCP 自動取得 IP 地址,當網路上有 DHCP Server 時,選用該選項可避免因為 IP 衝突造成網路系統異常。

選擇設備為 BACnet Router 時,會依照支援的 MS/TP 網路數量,出現 MS/TP 迴路設定欄位,以及 BIP Network No. 設定選項,其中:
BIP Network No. 為 BACnet/IP 網路編號,連接至相同 BACnet/IP 網路的 Router,此編號必須相同。
MS/TP Network No. 為 該 MS/TP 網路編號,不可以與網路上任何其他網路編號重複。
MS/TP MAC 為 Router 在該 MS/TP 網路的實體地址,不可以與相同 MS/TP 網路上其他設備重複,建議編號為 0。
MS/TP Baud rate 為 該 MS/TP 網路通訊速率,必須與相同 MS/TP 網路上其他設備相同,建議為 38400 。

完成設定後按下『確認』鍵將數值寫入控制器,按下重新啟動後設定值才會生效。


▪ 1.7.4.2.MS/TP Device:
設定 MS/TP DDC 的網路參數,包含 器件編號(Device Instance) 與通訊速率 (Baud rate),完成設定後按下『確認』鍵將數值寫入控制器,按下重新啟動後設定值才會生效。
部分 MS/TP DDC 具備硬體指撥開關設定通訊速率的功能,該類產品不支援通訊速率的選項。



▪ 1.7.5.BACnet Pioneer:
BACnet Pioneer 是 ICDT 提供的 BACnet 網路工具,用於搜尋 BACnet 網路上其他設備,並依據物件清單(Object list),讀取所有物件標準屬性,並提供數值設定服務。

開啟 BACnet Pioneer 會自動廣播 Who is 服務,以搜尋所有 BACnet 器件,選擇清單上的器件編號即可讀取該器件內的所有物件屬性。

關閉 BACnet Pioneer 時會將最後選擇的器件編號帶入 DDC 編輯器的器件編號中。


▪ 1.7.6.Watch 監看視窗:
Watch 監看視窗用於查看指定器件編號 DDC 的 BACnet 變數或 BACnet 物件屬性,分為 Watch (BACnet 變數監看)與 Object(物件屬性)兩頁:

▪ 1.7.6.1.Watch : BACnet 變數監看:
於 Object 欄輸入 BACnet 變數,例如 ai0、ao1、av2、bi3、bo4、bv5、ao6.p1、bo7.p16 等,變數規則同 DDC 程式的 BACnet 變數。
當 Object 欄為有效變數時,Value 處會顯示只定器件編號 DDC 目前變數值,點選該數值兩下可進行數值設定。


▪ 1.7.6.2.Object : 物件屬性:
物件屬性頁可以選擇物件類別與物件編號,以顯示該物件內所有的標準屬性。
屬性讀取完成後必須按下重新整理才會更新屬性值,如果選擇其中一項屬性,則會針對該屬性持續更新。
點選屬性兩下可對該屬性進行數值設定(Bit String、時間、日期 等數值格式不支援設定功能)。
選擇 BO(Binary Output)與 AO(Analog Output) 物件時清除按鈕會生效,如按下清除按鈕將會針對該物件 Present value 的 16 個優先權寫入 Null,以釋放各個權限。



▪ 1.7.7.IO 設定視窗:
IO 設定視窗提供 BACnet 物件與輸入輸出設定用途,將相關設定上傳到 DDC、或自 DDC 讀取。
每次將 IO 設定參數上傳至 DDC 時,DDC 的 Device 物件 Database Revision 屬性值將自動加 1。

ICDT BACnet DDC 的 Object Name 、Description、Units 等屬性都是唯讀的,無法透過 Write Property 服務寫入,只能透過 IO 參數設定檔案進行編輯。其中 Object Name 是每個物件的重要屬性,用於 Who has 服務查詢,因此內容所有物件的 Object Name 屬性值不得重複,如果留空白將會使用預設的 Object Name。

▪ 1.7.7.1.Device:
用於設定 Device 物件的 Object Name 與 Description 屬性,以及 輸入輸出模組、擴充模組類型等。
ICDT BACnet DDC 的 AI、AO、BI、BO 物件會因為輸入輸出模組、擴充模組類型變更後而改變。


▪ 1.7.7.2.IO:
AI、AO、BI、BO 物件參數設定,物件的生成受 Device 頁輸入輸出模組、擴充模組類型選項而定。

▪ 1.7.7.2.1.AI:
可設定 Analog input 物件的 Object Name 與 Description 屬性,而Unit 設定為該 AI Units 屬性的顯示值,如同 Description 等屬性僅供參考不會有其他影響。

此外,Mode 參數用以設定 Present value 與輸入信號的關係,選擇 0~10V時,會將 10V 輸入對應到 HI Value 的值,0V 對應到 Low Value的值;如果選擇 4~20mA,則會將 20mA 輸入對應到 HI Value 的值,4mA 對應到 Low Value的值;選擇 NTC 時,則自動將感測值依照 NTC 阻值對照表對應溫度值。必須注意的是 Mode 參數僅用於運算,仍必須與 AI 實際硬體選擇相符。


▪ 1.7.7.2.2.AO:
除了設定 Analog output 物件的 Object Name 與 Description 屬性外,當勾選 Overridden 選項則會使該 AO 點不受 Write Property 等服務寫入,只接受 DDC 運算輸出,以避免重要設備受到錯誤操作而受損。

Relinquish Default 設定為 16 個優先權都是 Null 時的預設值,數值範圍 0~100(預設為 0),此設定同時會反映在 AO 點的 Relinquish Default 屬性值。

Unit 設定為該 AO Units 屬性的顯示值,如同 Description 等屬性僅供參考不會有其他影響。

Mode 參數用以控制 Present value 值 0~100 對應輸出量的關係,選擇 0~10V時,則 Present value 值 0~100 對應輸出量 0~100%;選擇 4~20mA時,則 Present value 值 0~100 對應輸出量 20~100%。至於實際為電壓或電流輸出,則依照 AO 實際硬體選擇而定。


▪ 1.7.7.2.3.BI:
除了設定 Binary input 物件的 Object Name 與 Description 屬性外,當勾選 Polarity Reverse 選項時,其輸入信號與 Present value 屬性值關係會反轉。


▪ 1.7.7.2.4.BO:
除了設定 Binary output 物件的 Object Name 與 Description 屬性外,當勾選 Polarity Reverse 選項時,其輸出信號與 Present value 屬性值關係會反轉,勾選 Overridden 選項則會使該 BO 點不受 Write Property 等服務寫入,只接受 DDC 運算輸出,以避免重要設備受到錯誤操作而受損。
另外,Relinquish Default 設定為 16 個優先權都是 Null 時的預設值,此設定同時會反映在 BO 點的 Relinquish Default 屬性值。



▪ 1.7.7.3.AV/BV:
AV 可設定 Analog value 物件的 Object Name 與 Description 屬性,而Unit 設定為該 AV Units 屬性的顯示值
BV 可設定 Binary value 物件的 Object Name 與 Description 屬性。
由於 AV 物件與 BV 物件最多可能各多達 500 個,部分希望減少數量,以縮短全物件掃描所需時間,可以將用到的 AV 或 BV 的下一個編號的 Description 寫入 "*LASTOBJECT*" (兩個*號包著LASTOBJECT),例如將 AV400 的 Description 寫入 "*LASTOBJECT*" ,則 AV400~AV499 物件將會失效。直到寫入新的 IOV 設定檔。


▪ 1.7.7.4.NTC 阻值對照表:
NTC 阻值對照表視窗示用來編輯或上傳以及讀取 DDC 內部的 NTC 阻值對照表。
NTC 阻值對照表是 25 組電阻值,作為 AI NTC 模式的溫度運算依據。未上傳任何阻值對照表前,DDC 預存 10K Beta 3950 的對照表,如果您不是使用的是此類 NTC 溫度感測器,就必須依照使用感測器的阻值表輸入 -25℃~100℃ 間隔 5℃ 共計 25 組的對應電阻值。由於 NTC 是負溫度係數,因此阻值應該是溫度值越高時阻值越小。
NTC 阻值對照表視窗同時可以選擇溫度模式,選擇 ℉ 時,雖然阻值對應表仍舊以 ℃ 為輸入的溫度單位,但經過 AI NTC 運算的結果會採用 ℉ 為單位


▪ 1.7.7.5.MODBUS Gateway:
MODBUS Gateway 啟用後,第一組 RS485 將成為 MODBUS RTU Master 依照設定讀取 MODBUS RTU Slave 設備的值。其中:

BACnet object 應輸入 av0~499 或 bv0~499 以做為讀取或寫入 BACnet 物件的位置。

Slave Address 讀寫 MODBUS RTU Slave 設備的地址,數值範圍 1~254。

Slave Reg./Coil 連接 Slave 的輸入/控制點,表示方式為 "1~9999" for Coil; "10001~19999" for Input; "30001~39999" for Input register; "40001~49999" for Holding register,六位表示方式為 "000001~065536" for Coil; "100001~165536" for Input; "300001~365536" for Input register; "400001~465536" for Holding register

R/W 用以表示針對 MODBUS 點的動作,"RO"是只讀取不寫出;"WO"則不作讀取動作;"RW"則會在 BACnet 端數值變更時寫出,否則自 MODBUS 端讀取。Input 與 Input Register 只能選擇"RO"。




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

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

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

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

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


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

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

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

DDC 程式中斷時雖然程式停止執行,但 DDC 內 AO/AV/BO/BV 等物件數值仍可能會被其他 BACnet 通訊連線所變更



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

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

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

▪ 1.9.1.時間運算函數:

▪ 1.9.1.1.runtime:
運轉計時
out = runtime(in)
in 為 ON (>= 0.5) 時 累計運轉時數,每6 分鐘+0.1,輸出單位為小時。

當設備發生斷電時,如果輸出使用浮點數模式最大誤差小於 0.1 小時。

ICDT BACnet DDC 主要運算是採用 4 Byte 浮點數,因此必須注意累加的最大值範圍[參閱數值範圍與解析度]


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


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


▪ 1.9.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.9.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) 忽略秒與分的時間範圍比對

其餘依此類推


▪ 1.9.1.6.date:
日期比較
out = date(M1,D1,Y1,M2,D2,Y2)
當 RTC 的日期 MON/DAY/YAER 在 M1/D1/Y1 與 M2/D2/Y2 間時 out = 1
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 間


▪ 1.9.1.7.week:
星期比較
out = week(W1,W2,W3...W6)
當 RTC 的星期值為 W1~W6 數值時 out = 1
W2~W6 可忽略
W1~W6 以數值 1 至 7 各代表 星期一 至星期日



▪ 1.9.2.數學運算函數:

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


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


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


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


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


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


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


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


▪ 1.9.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.9.3.HVAC函數:

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


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


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



▪ 1.9.4.輸入輸出函數:

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


▪ 1.9.4.2.rp:
讀取外部器件屬性值(依循 DS-RP-A)
out = rp(device,object,instance,arrayindex)
device 外部器件的編號 0~4194302
object 讀取的物件類型 (AI=0/AO=1/AV=2/BI=3/BO=4/BV=5/MSI=13/MSO=14/MSV=19)
instance 讀取的物件編號 0~4194302\n arrayindex 數值 1~16 時,讀取屬性 Priority Array的 指定 Index ;否則讀取屬性 Present Value 值。
讀取成功時會將數值寫到 out,否則不寫出


▪ 1.9.4.3.wp:
寫出值至外部器件屬性(依循 DS-WP-A)
wp(device,object,instance,priority,value)
device 外部器件的編號 0~4194302
object 讀取的物件類型 (AO=1/AV=2BO=4/BV=5/MSO=14/MSV=19)
instance 讀取的物件編號 0~4194302
priority 寫入 Present Value 的 priority 1~16 時。
value 為需要寫入的數值。
寫入成功時會將 out 設為 1,否則不寫出



▪ 1.9.5.數位運算函數:

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


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


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


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


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


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


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


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



▪ 1.9.6.比較函數:

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


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


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


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


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


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


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

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

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


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


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


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



▪ 1.9.7.控制函數:

▪ 1.9.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)
一般應於溫度比例控制等場合

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


▪ 1.9.7.2.gate:
條件式輸出
out = gate(in, control)
只有當 control 為 True (>= 0.5) 時將 in 輸出至 out,否則 in 不輸出至 out
例如 bv4 = gate(bv1,bv2)相當於以下程式,但更為精簡。
if bv2
   bv4 = bv1
endif


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


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


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

輸出依照 in 的數值選擇 V0 ~最多 V9 的輸出,數值低於 1 時選擇 v0。
v3 ~ v9 可省略
例如 av32 = switch( ai0, av10, av11, av12, av13, av14, av15, av16, av17, av18 )
相當於以下程式,但更為精簡省空間:

if ai0 >= 8
   av32 = av18
elif ai0 >= 7
   av32 = av17
elif ai0 >= 6
   av32 = av16
elif ai0 >= 5
   av32 = av15
elif ai0 >= 4
   av32 = av14
elif ai0 >= 3
   av32 = av13
elif ai0 >= 2
   av32 = av12
elif ai0 >= 1
   av32 = av17
else
   av32 = av0
endif


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


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


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


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


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


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


▪ 1.9.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.9.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.9.8.條件式:
ICDT BACnet DDC 接受類似 VB 的條件式做為條件判斷,預以執行達到條件的程式區塊忽略未達到條件的程式區塊。
ICDT BACnet 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
endif

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


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


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




▪ 1.10.MODBUS RTU 界面:
DDC32e 有兩個 RS485 界面,作為 BACnet DDC 時,可做為兩個 MODBUS RTU Slave 界面,提供 MODBUS RTU Master 設備如 HMI、PLC、SCADA 等讀取,其規則如下:
● 通訊格式 9600,8,n,1 (9600 BPS,沒有同位檢查,一個停止位元)
●AI 物件 Present value 對應 MODBUS Input Register:ai0 ~ ai63 對應 30001~30064,數值為 10 倍符號整數(Present Value 數值 -3276.8~3276.7 對應 -32768~32767);ai0 ~ ai63 同時可對應31001~31128,每個物件對應兩個 Register,採浮點數方式表示
●AV 物件 Present value 對應 MODBUS Holding Register::av0 ~ av499 對應 40001~4500,數值為 10 倍符號整數(Present Value 數值 -3276.8~3276.7 對應 -32768~32767);av0 ~ av499 同時可對應41001~42000,每個物件對應兩個 Register,採浮點數方式表示
●BI 物件 Present value 對應 MODBUS Input :bi0 ~ bi63 對應 10001~10064
●BV 物件 Present value 對應 MODBUS Coil:bv0 ~ bv499 對應 1~500
●AO 與 BO 物件為了安全性起見,不提供直接控制,可由 DDC 程式對應 AV 與 BV 物件
●浮點數表示時,採一般慣用的 4 bytes 單精度浮點數格式,例如數值 1 為 0x3F800000,則前一組 Register 數值為 0x3F80(十進至數值 16256),後一組 Register 數值為 0x0000(十進至數值 0)

DDC32e 第一組 RS485 界面 如果在 IOV 設定檔 MODBUS Gateway 開啟 Master 模式時,不可以做為MODBUS RTU Slave 功能。

DDC32e 做為 MS/TP DDC 用途時,由於一個 RS485 界面做為 MS/TP 使用,則只剩下一個 MODBUS RTU 界面。


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

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

DDC32e 一旦安裝 Firmware 為 BACnet DDC,則除了強制進入 Loader 模式外,只能以 ICDT BACnet DDC 編輯器,透過 BAcnet 標準協議進行韌體更新。如果 更新為 BACnet/IP To MS/TP Router,則因為不支援更新服務,必須強制進入 Loader 才可以透過 ICDT DDC 以專有 TCP 協議更新。

▪ 1.11.1.更新韌體:
在選擇要更新的器件編號後,按下『更新韌體』按鈕並選擇要更新的韌體即可透過 BACnet AtomicWriteFile 服務進行寫出,寫出完成後自動重新啟動以載入 Firmware。傳送過程中可按下 ESC 鍵以中斷傳送。

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

當設備韌體有誤會其他因素無法正常運作時,可以將 Slave 位址的指撥開關設定為 255 (也就是全部 ON)後重新送電,以強制進入 Loader 模式,但必須注意完成後將指撥開關設定為 正確位置,否則將無法正常運作。但由於 Loader 模式是採用專屬 TCP 協定做為傳輸,因此必須改採 ICDT DDC 編輯器(MODBUS 版本),才可更新。




▪ 2.版權宣告:
本軟體版權屬元米科技有限公司(Intelligent Control Design & Technology Co., Ltd)所有,除元米科技產品或授權產品使用外不得使用。未經授權重製或使用本發行文件之部分或全部內容,將依法提起告訴。


▪ 3.關於ICDT (元米科技有限公司):
元米科技有限公司(Intelligent Control Design & Technology Co., Ltd)前身為元米智控研發工作室(Intelligent Control Design House),自2012年五月成立後,致力於自動控制方案的開發,並成功推出性價比(C/P值)極高的 DDC8 方案。為便於業務推展,並使客戶與合作夥伴獲得更多的保障,於2013年6月21日正式登記成立為『元米科技有限公司』,並陸續推動 DDC32 方案與 Web Embedded 方案,以及 BACnet 通訊協定相關方案(元米科技為 BACnet 編號 676 供應商),以期服務更多有需求的合作伙伴。

元米科技有限公司以成熟的、低成本的整合方為客戶打造高價值、持續服務的可程式控制方案,人性化的操作介面,讓您自有品牌不再是夢想,更多的資訊請造訪網站: http://www.icdt.com.tw


▪ 4.關於本手冊:
本手冊適用於 ICDT BACnet DDC 系列產品 V0.29 版以後韌體。
手冊版本 V0.11 版
完稿日期 2019/1/30
取得本程式更新資訊請造訪網站: http://www.icdt.com.tw