•   
    •   
    •   
      •   
      •   
      •   
      •   
        •   
        •   
        •   
      •   
    •   
      •   
      •   
        •   
        •   
      •   
      •   
    •   
      •   
      •   
      •   
      •   
      •   
      •   
      •   
        •   
        •   
        •   
      •   
        •   
        •   
        •   
        •   
        •   
          •   
    •   
      •   
      •   
      •   
      •   
  •   
  •   
  •   

1.線上手冊:



ICDT Modbus To BACnet Gateway 程式是提供 MODBUS/TCP 與 MODBUS RTU 對應至 BACnet/IP 網路設備的點對點轉換程式。透過易於編輯的 CVS 檔案格式,指定 MODBUS 網路介面與 MODBUS 暫存器對應到本身 BACnet 指定物件的 Present value 屬性,以提供 BACnet 監控系統讀取或改變 MODBUS 網路內的數值與狀態,非常適合大點數 MODBUS 提供至 BACnet 網路整合的應用場合。

1.1.本程式特點:

■ 可定義多個 MODBUS TCP 網路,以連接到指定的 MODBUS TCP Server 設備,並可以個別定義其 TCP Port、讀取時間間隔以及封包長度等參數
■ 可定義多個 MODBUS RTU 網路,透過指定電腦 COM Port 連接外部的 MODBUS RTU Slave 設備,並可以個別定義其通訊速率、同位元、讀取時間間隔以及封包長度等參數
■ 可依照設定生成 AV(Analog Value Object Type) 與 BV(Binary Value Object Type)物件,並個別指定對應的 MODBUS 網路介面、Slave Address、Register Address、資料格式、存取方向、物件描述等
■ 使用 CSV 檔案格式進行編輯,方便利用 EXCEL 快速編輯專案資料
■ 授權版超大轉換點數,理論上最高可達 40,000 點以上,實際則依照電腦效能與網路狀態決定
■ 即時數值觀察,移動游標至物件列表,可觀察對應物件 BACnet 端的即時值
■ 展示版連續運行 2 小時候必須重新啟動程式

1.2.BACnet 網路設定:

程式必須先完成網路設定才能正常執行,設定參數說明如下:

1.2.1.網路界面 Network Interface:

選擇 BACnet/IP 網路連接的界面,由於 BACnet 是透過廣播方式查詢器件編號(Device Instance),因此必須選擇正確的網路界面,否則當電腦具備超過一個網路界面時,本程式很可能無法正常通訊。

1.2.2.器件編號 Device Instance:

設定本程式的器件編號。
由於本程式在 BACnet 網路上必須是可以被看到的,因此具備自己獨立的器件編號,此編號不得與 BACnet 網路上其他任何設備重複。

1.2.3.BACnet UDP Port:

設置本程式使用的 BACnet UDP 網路 Port 號,預設為 47808。此編號必須與要讀取的 BACnet/IP 網路 UDP 編號相同,如果連接的網路不是 BACnet/IP 界面,則必須另提供具備 BACnet/IP 網路的 BACnet Router 路由器進行轉換。
本程式執行時會開啟指定的 UDP Port 提供 UDP Server 功能,因此本電腦內不得同時運行使用此 UDP Port 做為 Server 端的程式(例如其他提供 BACnet/IP 服務的程式)

1.2.4.As Foreign Device:

勾選後可登入 BBMD 作為外部器件,以達到跨網連結功能。非 BBMD 的外部器件不可勾選。

1.2.4.1.BBMD IP:

輸入需要登入的 BBMD (BACnet/IP Broadcast Management Device) IP地址

1.2.4.2.BBMD Port:

輸入需要登入 BBMD 的 UDP port 號

1.2.4.3.Time To Live:

Foreign Device 的存活時間,時間內會再向 BBMD 進行註冊,超過該時間未註冊則會被 BBMD 自清單中移除,時間單位為 秒

1.2.5.最小化時自動隱藏:

勾選後執行最小化視窗動作會自動隱藏為右下角小圖示,以避免錯誤操作關閉此程式。
滑鼠右鍵雙擊(Double click)此小圖示可重新開啟程式視窗。

1.3.MODBUS 網路介面:

本程式可以透過 CSV 檔案同時定義多個 MODBUS TCP 網路與 MODBUS RTU 迴路介面。
CSV 檔案為多行以逗號『,』隔開的文字檔,每一行內容依序為介面編號(mb id)、通訊介面(port)、間隔時間(interval)、封包大小(byte)




MODBUS 網路介面 CSV 檔案範例
//mb id,port,interval,length
0,192.168.1.123,50,100
1,192.168.0.109:503,200,64
2,COM29.9600.8.N.1,200,64

顯選網路介面可以顯示該介面目前傳送與接收通訊碼,可以按下 Pause 鍵暫停更新以利查閱

點選 Import 或將有效的 CSV 檔案拖曳到 MODBUS 視窗可以取代目前設定,但必須重新設定後才會生效,此時通訊碼顯示功能將失效直到重新啟動程式



點選 Outport 可以匯出目前的 CSV 設定檔

1.3.1.介面編號(mb id):

介面編號為由 0 開始不可重複的正整數值,供 AV 與 BV 介面設定時指定介面

1.3.2.通訊介面(port):

以 COM 開始為 MODBUS RTU 介面,否則為 MODBUS TCP 介面

1.3.2.1.MODBUS RTU:

MODBUS RTU 以 COM 開始用以指定該 MODBUS RTU 迴路連接電腦的串列通訊接口,以讀寫 MODBUS RTU Slave 設備。
設定範例為 COM29.9600.8.N.1,其中(以點『.』分隔開)
COM29 為該 MODBUS RTU 迴路連接電腦的串列通訊接口
9600 為 baud rate,有效的數值為 1200 或 2400 或 4800 或 9600 或 19200 或 38400 或 51200 或 115200 (bps)
8 為資料為位數,固定為 8
N 為同位元檢查碼(Parity),可以為 N(表 None)、E(表Even)或 O(表Odd)
1 為停止位元,可以為 1 或 2

1.3.2.2.MODBUS TCP:

MODBUS TCP 可以採用 IP 或 Domain name 設定,如果連接的 TCP Port 不是 502 需要以『:』符號標示,例如設定為 192.168.1.100:503 表示連接到 IP 192.168.1.100 的 503 Port,又例如設定為 icdt.com.tw 則連接至 icdt.com.tw 的 502 Port

1.3.3.間隔時間(interval):

間隔時間以毫秒(ms) 為單位,當該迴路通訊獲得正常回覆時,下個封包傳送的延遲時間。
數值設定應屆於 50 ~2000 之間,預設值為 100 ms
間隔時間越短可以獲得越快的資料更新週期,但過短的時間可能造成網路過於忙碌

1.3.4.封包大小(byte):

封包大小(byte) 用以限定讀取資料時,預期的最大封包量,數值範圍 12~256,預設值為 64。
較大的封包設定值可以使一次讀取較多的暫存器,以減少封包量,加快更新速度,但超過 Slave 設備的資料緩衝區大小可能使回應異常。
MODBUS RTU 通訊品質不良的場合減少封包大小可能有助於降低錯誤率

1.4.BACnet 物件:

MODBUS 轉換為 BACnet 物件時,可以選擇為 AV(Analog Value)或 BV(Binary Value) 或 MSV(Multi-state Value) 物件,各有其 CSV 設定檔
CSV 檔案為多行以逗號『,』隔開的文字檔,每一行內容依序為BACnet 物件編號 (obj inst)、MODBUS通訊介面(mb id)、MODBUS 設備編號(slave addr)、MODBUS 暫存器地址(reg addr)、讀寫方式(rw)、物件描述(description)、格式(format)


AV CSV 檔案範例
//obj inst,mb id,slave addr,reg addr,rw,description,format
0,0,0,40001,WO,,u
1,0,0,40002,RW,,s*50
2,0,0,40003,RW,temp,F
3,0,0,40101,WO,,d1
4,0,0,30101,RO,,d2

BV CSV 檔案範例
//obj inst,mb id,slave addr,reg addr,rw,description,inactive text|active text
1,0,0,1,RO,,
2,0,0,10001,RO,,OFF|ON
3,0,0,10003,RO,,Stop|Run

MSV CSV 檔案範例
//obj inst,mb id,slave addr,reg addr,rw,description,state text 1|state text 2|state text 3|...
5,0,1,40032,RW,Fan Speed,+1|Stop|LOW|MID|HI
6,0,1,40033,RW,,Text1|Text2|Text3|Text4|Text5


滑鼠於 AVs 或 BVs 或 MSVs 視窗移動時,將彈出視窗顯示對應 AV 或 BV 或 MSVs物件的 Present Value,如果數值或狀態前出現 ** 表示該點 Out of server 狀態為 true [參閱Out of service]






滑鼠 Double Click AVs 或 BVs 或 MSVs 視窗時,將彈出對應物件的調整視窗,改變數值後按下 OK 可以寫入數值







點選 Import 或將有效的 CSV 檔案拖曳到 AVs 或 BVs 或 MSVs 視窗可以取代目前設定,但必須重新設定後才會生效,此時設定視窗功能將失效

點選 Outport 可以匯出目前的 CSV 設定檔

1.4.1.BACnet 物件編號 (obj inst):

要生成的 BACnet 物件編號 (Object Instance),數值範圍 0~4194302,相同物件的編號不可重複

1.4.2.MODBUS 介面編號(mb id):

指定相對應的 MODBUS 網路實體介面,數字必須與 MODBUS 網路介面 CSV 設定的介面編號相符

1.4.3.MODBUS 設備編號(slave addr):

連接的 MODBUS 設備 UID 或者 Slave Address,數值範圍 0~255

1.4.4.MODBUS 暫存器地址(reg addr):

對應的 MODBUS 暫存器類型與編號,依照一般慣例十進制五位數或六位數 表示,例如
五位數表示方式如下:
1~9999 代表 Coil 0~Coil 9998,可以透過 Function code 01h 讀取,Function code 05h 寫入
10001~19999 代表 Input 0~ Input 9998,可以透過 Function code 02h 讀取
30001~39999 代表 Input Register 0~Input Register 9998,可以透過 Function code 04h 讀取
40001~49999 代表 Holding Register 0~Holding Register 9998,可以透過 Function code 03h 讀取,Function code 06h 寫入

六位數表示方式如下:
000001~065536 代表 Coil 0~Coil 65535,可以透過 Function code 01h 讀取,Function code 05h 寫入
100001~165536 代表 Input 0~ Input 65535,可以透過 Function code 02h 讀取
300001~365536 代表 Input Register 0~Input Register 65535,可以透過 Function code 04h 讀取
400001~465536 代表 Holding Register 0~Holding Register 65535,可以透過 Function code 03h 讀取,Function code 06h 寫入


關於 MODBUS 進一步資訊 http://www.modbus.org/,或參考手冊 http://modbus.org/docs/PI_MBUS_300.pdf

1.4.5.讀寫方式(rw):

可以為 RW(讀寫)、RO(只讀)、WO(只寫),其中
RW 為平時由 MODBUS 端讀取數值,當 BACnet 端改變數值時才寫出
RO 只有從 MODBUS 端讀取數值,BACnet 端寫入時會回應錯誤訊息 WRITE ACCESS DENIED
WO 不會從 MODBUS 端讀取數值,只有在BACnet 端寫入時寫出
RW 與 WO 只適用於 Coil 與 Holding Register,不適用於 Input 與 Input Register

1.4.6.物件描述(description):

用於顯示於 該物件的 Description 屬性,未設定時 Description 屬性會顯示 MODBUS 介面、位置格式等相關資訊

1.4.7.格式(format):

format 依照 BACnet 物件不同設定方式不同

1.4.7.1.AV:

AV 物件的格式用以標示 Input Register 與 Holding Register 解碼方式,Coil 與 Input 不適用

u : 為標準 0~65535 的數值範圍
s : 將指定 Register 視為符號整數,亦即數值範圍 -32768 ~ 32767
d1 : 將指定 Register 視為符號整數 /10 ,數值範圍 -3276.8 ~ 3276.7
d2 : 將指定 Register 視為符號整數 /100 ,數值範圍 -327.68 ~ 327.67
bcd : 將指定 Register 以整數方式讀取並除以 BCD 方式解讀,數值範圍 0~9999
U : 將指定編號開始 2 Registers 視為 4 位元組整數,高位在前
S : 將指定編號開始 2 Registers 視為 4 位元組符號整數,高位在前
F : 將指定編號開始 2 Registers 以浮點數(float)方式存取,高位在前
Usw : 將指定編號開始 2 Registers 視為 4 位元組整數,低位在前
Ssw : 將指定編號開始 2 Registers 視為 4 位元組符號整數,低位在前
Fsw : 將指定編號開始 2 Registers 以浮點數(float)方式存取,低位在前

格式後可以一次加法或乘法運算,例如 +50 或 *0.25
讀取時會在依照格式讀取後再做加法或乘法運算,寫出時則會先反向做減法(加法時)或除法(乘法時)運算後,在依照格式寫出。

AV format 範例 :
F
Fsw
u+50
s-100


AV 寫入數值超出格式範圍時,將會取其格式最大值或最小值寫出

1.4.7.2.BV:

BV 物件的格式用以標註 Inactive Text 與 Active Text,Inactive Text 在前且中間以 | 符號連結。
如果未設定則 Inactive Text 為 "Inactive";Active Text 為 "Active";

BV format 範例 :
OFF|ON
Stop|Run

1.4.7.3.MSV:

MSV 物件的格式用以標註數值偏移量以及從 1 開始各數值對應的 State Text,偏移量以+開頭,寫在最前方(可省略),與各項 State Text 以 | 連結,State Text 數量即 State 總數(Number of state)
Register 讀值會加上偏移植後對應到 Present value,如偏移後數值為 0 則 Present Value 數值為 1,如偏移後數值大於 Number of state 則 Present Value 數值為 於 Number of state 。
寫入至 Register Value 時則會先減去偏移植

MSV format 範例 :
+1|Stop|LOW|MID|HI
(此範例會將 Register value 0 對應為 Present value 1,State Text 為 Stop;value 1 對應為 Present value 2,State Text 為 LOW,依此類推。Number of state 為 4)

Text1|Text2|Text3|Text4|Text5
(此範例會將 Register value 1 對應為 Present value 1,State Text 為 Text1;value 1 對應為 Present value 1,State Text 為 Text2,依此類推。Number of state 為 5)

1.4.8.其他說明:

1.4.8.1.AV Present Value:

AV Present Value 對應依照 format 欄位決定,數值範圍以及 Register 對應方式 [參閱AV]
寫入時如果讀寫方式設為 RO 會回應錯誤訊息 WRITE ACCESS DENIED

1.4.8.2.BV Present Value:

自 MODBUS 讀取 Input Register 或 Holding Register 時,如果數值為 0 則 BV Present Value 為 Inactive,非 0 則 BV Present Value 為 Active。
自 MODBUS 讀取 Input 或 Coil 時,如果數值為 0 則 BV Present Value 為 Inactive,非 0 則 BV Present Value 為 Active。

當 BV Present Value 寫入 Active 時,如對應至 Holding Register 將寫出數值 1;BV Present Value 寫入 Inactive 時,如對應至 Holding Register 將寫出數值 0。
當 BV Present Value 寫入 Active 時,如對應至 Coil 將寫出數值 1;BV Present Value 寫入 Inactive 時,如對應至 Coil 將寫出數值 0。

寫入時如果讀寫方式設為 RO 會回應錯誤訊息 WRITE ACCESS DENIED

1.4.8.3.MSV Present Value:

MSV Present Value 對應依照 format 欄位決定,對應方式與最大值(Number of state) [參閱MSV]
寫入時如果讀寫方式設為 RO 會回應錯誤訊息 WRITE ACCESS DENIED

1.4.8.4.Out of service:

當讀寫方式為 RW 或 RO 時,如果對應的 MODBUS 數值正常讀取則 Out of service 屬性將設為 false ,否則將設為 true
當讀寫方式為 WO 時,如果寫出成功則 Out of service 屬性將設為 false ,若未曾寫出成功或寫出失敗則 Out of service 屬性將設為 true

1.4.8.5.Present Value 命令優先權:

為了簡化協議轉換的邏輯,本程式 AV 與 BV 與 MSV 物件接不支援優先權控制,因此無論寫入任何(1~16)層級的,都會直接改變該點的 Present Value 屬性值,並且寫入 Null 是無效的。

1.4.8.5.1.關於 BACnet 的命令優先權控制 (Command Prioritization):

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

16 個等級中,數字越小的優先等級越高,優先等級為 1 的命令為 Null 時,則依照優先等級 2 的命令動作,2 為 Null 則依照等級 3 動作,依此類推。
全部為 Null 時,則依照預設的數值(Relinquish_Default 屬性) 動作
各個層級的命令狀態必須由 Priority_Array 屬性獲得
一般手動(例如圖控操作)的等級為 8
部份物件優先權控制功能為選配的(AV/BV/MSV),部分為必備的(AO/BO/MSO)
(以上內容參考 BACnet 手冊 19.2 Command Prioritization)

以 BO 點來說,寫入狀態時,會帶一個 Priority 參數,範圍 1~16,寫入也不只有 Inactive(OFF) 與 Active(ON),還有一個選項是 NULL。

Priority 數字越小,優先順序越高,較高順位的為 NULL 時,則依照下一個順位。16 個 Priority 都是 NULL 則依照 Relinquish_Default 屬性 動作

因此雖然最後輸出只有 Inactive(OFF) 與 Active(ON) 兩種狀態,卻是 16 組 Priority 及 Relinquish_Default 的運算結果。

一般圖控端控制為 Priority 8 (中間位置),定時控制則會是較低的順位,安全控制會在最高順位(1 & 2)。
因此不同的優先順位控不同的位置,這樣才不至於發生 安全控制邏輯要求停止,但定時控制要求開啟,使設備不斷重複開開關關。

1.5.其他程式操作:

1.5.1.ICDT BACnet Pioneer:

用於探索目前 BACnet 網路內所有器件與器件內所有物件屬性的工具軟體,為除錯用途。正常使用時應該關閉該視窗以避免影響協議轉換運作。


1.5.2.Event 視窗:

顯示程式執行中最近發生的事件或異常資訊,其內容於程式重新啟動後將不會被保留


1.5.3.Log 視窗:

顯示程式啟動、停止、資料變更等重要運行紀錄


1.5.4.離開程式:

程式必須按下 Exit 按鈕才能關閉,並會談出確認視窗,以避免誤操作造成通訊協議轉換停止運作。


如要進一步避免誤關程式,可以在網路設定頁面勾選『最小化時自動隱藏』,以最小化按鈕將程式隱藏至右下角任務圖示中。

2.版權宣告:

本產品相關軟體、韌體版權屬元米科技有限公司(Intelligent Control Design & Technology Co., Ltd)所有,除元米科技產品或授權產品使用外,未經授權重製或使用本發行文件之部分或全部內容,將依法提起告訴。
試用版程式僅供驗證與學習使用,未經本公司許可不得用於商業用途。程式產生之網頁程式碼除本程式使用外,不得用於其他應用。

3.關於 ICDT (元米科技有限公司):


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


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

4.關於本手冊:

本手冊適用於 ICDT MODBUS To BACnet Gateway 程式 V1.0.2.0 版以後。
手冊版本 V1.01 版,完稿日期 2022/4/14
關於本程式有任何問題,請 E-mail 至 eric.icdt@msa.hinet.net