/****************************************************************/ /* 針對 7188E/8000E 的 Modbus/TCP 及 Modbus/RTU 轉 Modbus/RTU */ /* 及 7188XB 的 Modbus/RTU 轉 Modbus/RTU 的協議轉換函式庫 */ /* [25,9月,2002] 首度發佈 by Kevin */ /****************************************************************/ 1.7.2 版[2012/01/03] by Mac 新支援iP-8000 新功能 Modbus/RTU, Modbus/ASCII slave 支援廣播命令 a.命令中站號必須為0 b.支援寫入AO, DO位址 FC5 Write single coil (0xxxx) for DO FC15 Force multiple coils (0xxxx) for DO FC6 Write single register (4xxxx) for AO FC16 Write multiple registers (4xxxx) for AO c.控制器寫入數值後不會回應任何訊息 ========== 相關訊息 ========== Modbus Utility: Ver 1.7.0 [2007,八月,23] MiniOS7 image file: 7188XA (40M CPU) (不變) 2.02 build 004, Feb 26 2007 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\7188xa_CR_20070226.img 7188XB (40M CPU) (不變) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\7188XB_CR_20070301.img 7188XC (20M CPU) (不變) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XC\OS_Image\For_20M\7188XC-20070301.img 7188EX (40M CPU) (不變) 2.02 build 002, Apr 10 2007 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\7188e-UDP-CR-20070410.img I-8000 (40M CPU) (更新) 2.02 build 013, Jun 17 2011 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8000_UDP-20110125.img I-8000 (80M CPU) (更新) 2.02 build 013, Jun 25 2011 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\C836_UDP-20110117.img iP-8000 (80M CPU)(新支援) 2.04 build 014, Sep 21 2011 CD:\Napdos\Modbus\iP8000\OS_Image\C837_2M_UDP-20110921.img ------------------------------------------------------------------------ 1.7.0 版[8,8月,2007] by Mac 新增Modbus ASCII Slave支援 COM Port Enable Mode 參考下列定義 _VxComm 0 //==> VxComm _ModbusRTU_Gateway 1 //==> Modbus/RTU Gateway _Programming 2 //==> Programming _ModbusRTU_Slave 3 //==> UpLink (Modbus/RTU slave port) _Debug 4 //==> Debug (列印偵錯訊息,包含系統設定資訊,通訊內容....) _Console 5 //==> Consol (尚未支援,ET-6000 使用這個模式可以做簡易設定) _ModbusASCII_Slave 6 //==> UpLink (Modbus/ASCII slave port) ========== 相關訊息 ========== Modbus Utility: Ver 1.7.0 [2007,八月,23] MiniOS7 image file: 7188XA (40M CPU) (不變) 2.02 build 004, Feb 26 2007 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\7188xa_CR_20070226.img 7188XB (40M CPU) (不變) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\7188XB_CR_20070301.img 7188XC (20M CPU) (不變) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XC\OS_Image\For_20M\7188XC-20070301.img 7188EX (40M CPU) (不變) 2.02 build 002, Apr 10 2007 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\7188e-UDP-CR-20070410.img 8000 (40M CPU) (更新) 2.02 build 006, Jun 25 2007 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8000_UDP_20070625.img 8000 (80M CPU) (更新) 2.02 build 006, Jun 25 2007 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\C836_UDP-20070625.img ------------------------------------------------------------------------ 1.6.9 版[18,5月,2007] by Mac 改善 Modbus/RTU 的資料檢查 連接RTU設備時,除了檢查CRC之外加上檢查資料長度,加強判斷通訊資料。 關閉功能 將 UpLink 的模式,只當單純的 Slave,而將 Gateway 功能關掉。 從 COM Port 進來的命令,若 Net ID 不符合的話,將不會轉到其他COM Port Geteway 功能只用在 TCP/IP 連線。 調整參數 調整blank value (unit:ms) baudrate Ver 1.6.3 1.6.6 1.6.8 1.6.9 ------------------------------------------- 115200: 10 100 25 3 57600: 10 100 25 5 38400: 12 60 40 7 19200: 12 60 40 9 9600: 15 70 60 15 4800: 20 80 80 28 2400: 25 90 90 50 default: 15 50 40 15 ------------------------------------------- === 關於寫程式部分 ==== 新增命令 將Modbus_Request_Event分成Modbus_Request_Event,Modbus_Response_Event Modbus_Request_Event: 一但 7188E/8000E 收到一個 Modbus/TCP 或 Modbus/RTU 命令時, 會先執行 Modbus_Request_Event 程序, Modbus_Response_Event: 在準備傳回一個 Modbus/TCP 或 Modbus/RTU 回應前, 會先執行 Modbus_Response_Event 程序, 你可以執行一些程式碼。 修正問題 修正ModbusASCII_Master讀取DI值時, address 8 以後的值都是重複address0~7的值的問題。 ========== 相關訊息 ========== Modbus Utility: Ver 1.6.9 [2007,May,21] MiniOS7 image file: 7188XA (40M CPU) (不變) 2.02 build 004, Feb 26 2007 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\7188xa_CR_20070226.img 7188XB (40M CPU) (不變) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\7188XB_CR_20070301.img 7188XC (20M CPU) (不變) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XC\OS_Image\For_20M\7188XC-20070301.img 7188EX (40M CPU) (更新) 2.02 build 002, Apr 10 2007 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\7188e-UDP-CR-20070410.img 8000 (40M CPU) (更新) 2.02 build 002, Apr 9 2007 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8000_UDP_20070409.img 8000 (80M CPU) (更新) 2.02 build 002, Apr 9 2007 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\C836_UDP-20070409.img ------------------------------------------------------------------------ 1.6.8 版[13,3月,2007] by Kevin 支援 P824 CPU. 增加一種 COM port 的工作模式 Mode5 = Consol. ET-6000 使用此模式進行一些簡單的設定。 變更 blank value (unit:ms) baudrate Ver 1.6.3 1.6.6 1.6.8 ------------------------------------------- 115200: 10 100 25 57600: 10 100 25 38400: 12 60 40 19200: 12 60 40 9600: 15 70 60 4800: 20 80 80 2400: 25 90 90 default: 15 50 40 這個 blank value 是使用在接收 COM port 資料時使用的。 可以和 MiniOS7 Utility 3.x.x 一起使用 MiniOS7 Utility 3.x.x 可以透過乙太網路對 7188E/8000E 做設定、上傳檔案。 這使得維護的工作變簡單了。 === 關於寫程式部分 ==== 新增命令 Modbus_Request_Event, 一但 7188E/8000E 收到一個 Modbus/TCP 或 Modbus/RTU 命令時, 你可以執行一些程式碼。下列相關的全域變數 (定義在 .h 中),也是很有用處的。 extern unsigned int iModbusRequest_Fun; extern unsigned int iModbusRequest_Addr; extern unsigned int iModbusRequest_IOCount; extern unsigned long lModbusRequest_TimeTicks; 修正問題 1. 當 COM port 被設定成 Gateway 模式時,將 COM port 的 buffer 狀態設成 IDEL, 否則在變更過 COM port 的模式後,這個 Gateway 功能可能會無法使用。 2. ID 無法設成 128~255。 3. ModbusRTU_Master, ModbusASCII_Master 可能無法正確地工作。 只有發生在 Modbus 命令 1, 2, 15. 程式中呼叫 "ceil" 將 Byte 數值轉換成 bit 數值,但是 "Ceil" 有時候執行並不 正確,所以使用另外的方法來取代 "ceil"。 ========== 相關訊息 ========== Modbus Utility: Ver 1.6.8 [2006,Aug,16] MiniOS7 image file: 7188XA (40M CPU) (更新) 2.00 build 008, Feb 26 2007 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\7188XA_CR_20070226.img 7188XB (40M CPU) (更新) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\7188XB_CR_20070301.img 7188XC (20M CPU) (更新) 2.00 build 006, Mar 1 2007 CD:\Napdos\Modbus\7188XC\OS_Image\For_20M\7188XC-20070301.img 7188EX (40M CPU) (更新) 2.02 build 002, Mar 01 2007 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\7188E-UDP-CR-20070301.img 8000 (40M CPU) (更新) 2.02 build 002, Mar 12 2007 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8000_UDP_20070312.img 8000 (80M CPU) (更新) 2.02 build 002, Mar 12 2007 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\C836_UDP-20070312.img ------------------------------------------------------------------------ 1.6.7 版 [28,8月,2006] by Kevin 1. 修正無法 讀/寫 超過 500 以上的暫存器 (register) 位址 移除了 VcomCmdModbus 裡面的 MAX_REGISTER_COUNT 限制。 MAX_REGISTER_COUNT 從 1.6.4 版後,就被從 .h 檔中移了, 但是在 source code 中,它並沒有被移除。 2. 修正 Modbus/RTU 的通訊問題 下面兩個模式,於 1.6.5 版被改寫過 a. COM port 設成 UpLink 模式 (呼叫 CheckModbusRequest 命令) b. ModbusRTU_Master 對於 I-7188XA and 7188XB 通訊會變成不穩定。在這個版本,這兩個命令 已經被改善得更穩定了。 所以,假如你的韌体(firmware)使用 mbr7_165.Lib 或 mbr7_166.Lib,那麼 你必須更新到 1.6.7 版本來解決這個問題。 3. 支援一個 TCP/IP 封包之中包含多個 Modbus 命令。 標準的 Modbus/TCP 格式,一個 TCP/IP 封包只包含一個 Modbus 命令 (6 bytes 的前導字元 + 命令本身)。 在這個版本中,你可以在一個 TCP/IP 封包之中塞入多個命令,並且 在回覆的封包中,一次得到全部的結果。 例如: 封包A ==> [6 Leading bytes] + [命令 B] + [6 Leading bytes] + [命令 B] + [6 Leading bytes] + [命令 C] + [6 Leading bytes] + [命令 D] 封包B <== [6 Leading bytes] + [結果 A] + [6 Leading bytes] + [結果 B] + [6 Leading bytes] + [結果 C] + [6 Leading bytes] + [結果 D] 這個方法可以減少 TCP/IP 的封包數量,並且讓你的程式和 Modbus/TCP 設備 的通訊效能更好。 當然,你的 Modbus/TCP driver 必需有支援。 === 關於寫程式部分 ==== 1. 增加 全域變數 lModbusRequest_TimeTicks 根據這個變數,可以知道上次 Modbus 命令發生時的 timeticks 。 2. 修正 ModbusRTU_Master 的問題 從 1.6.6 版開始,這個命令被修改成可以支援 non-blocked 的通訊模式。 這個 non-blocked 對於 M-7000 系列的 I/O 模組,並沒有正常運作。 ========== 相關訊息 ========== Modbus Utility: Ver 1.6.8 [2006,8月,16] MiniOS7 image 檔案: For 7188XA (40M CPU) (更新) 2.00 build 002, Jul 14 2006 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\7188XA_CR_20060614.img For 7188XB (40M CPU) (更新) 2.00 build 002, Jul 14 2006 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\7188XB_CR_20060614.img For 7188EX (40M CPU) (更新) 2.00 build 002, Jul 08 2006 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\7188E_CR_20060608.img For 8000 (40M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8k050902.img For 8000 (80M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8e050902.img ------------------------------------------------------------------------ 1.6.6 版[4,7月,2006] by Kevin I-8000 控制器的 COM ports 和 7188E 一樣,支援下列不同的模式 The enable modes include (a) VxComm (b) Modbus/RTU gateway (c) Programming (d) UpLink (be a Modbus/RTU slave port) (e) Debug Modbus Utility 1.5.1 可以用來設定 COM port 的組態。 針對寫程式 1. MBT8_150.lib 分成兩個檔案 ==> MBT8_166.lib 和 IO_153.lib MBT8_nnn.Lib 負責處理 Modbus 通訊 IO_nnn.Lib 負責處理 I/O 掃瞄 2. 改變 EEPROM 儲存資料的位置 (將 7188/8000 的資料位置同步化) 請參考 lib 目錄下 EEPROM_List.txt 的詳細說明。 3. 改善 ModbusRTU_Master2Slave 和 ModbusASCII_Master2Slave (a) 增加 non-blocked 通訊模式 有一個 iWait 的參數可以用來決定要使用 blocked (原先模式) 或 non-blocked (新的模式)。 (b) 增加命令 ModbusRTU_Master_Send ModbusRTU_Master_Receive ModbusASCII_Master_Send ModbusASCII_Master_Receive 4. 改善 VcomSaveComData 這個命令可以檢查存在 EEPROM 中的資料是否和要寫入的新資料相同。 假如是相同的,則這個命令就不會重覆寫入。這樣可以避免 EEPROM 寫入的動作太頻繁。 (EEPROM 只能被寫入約 1 百萬次) (這只針對 非-Xserver 的程式有用) 5. 從這一個版本開始, 7188/8000 使用相同的 Modbus 核心。 (a) 對 7188 和 8000 而言,每個 modbus 的命令都是相同的。 那也就是說, I-8000 控制器的 COM port 可以被設成 VxComm, Modbus/RTU gateway, UpLink, Debug 其中一種。 (b) 要使用 I-8000 控制器上的 I/O 模組,你必須加入另一個 I/O 的 library (IO_nnn.lib) (在 MBT8_150.lib 之前, modbus 的核心和 I/O 掃瞄的核心 是結合在一塊的) (c) Lib and Head 檔案被簡化成 MBRTU.h (針對全部 7188/8000) MBTCP.h (針對全部 7188/8000) MBR7_nnn.Lib (針對全部 7188) MBR8_nnn.Lib (針對全部 8000) MBT7_nnn.Lib (只針對 7188E) MBT8_nnn.Lib (只針對 8000E) ========== 相關訊息 ========== Modbus Utility: Ver 1.5.1 [2006,6月,21] MiniOS7 image 檔案: For 7188XA (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\XA050701.img For 7188XB (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\XB050701.img For 7188EX (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\e-050701.img For 8000 (40M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8k050902.img For 8000 (80M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8e050902.img ------------------------------------------------------------------------ 1.6.5 版 [07,3月,2006] by Kevin 修正 RS-485 port 當成 Modbus/RTU slave 使用時的通訊問題 當有數個 slave 設備在同一個 RS-485 網路上,通訊會有問題。 此問題已解決。 RS-232 或 Ethernet 通訊是正常的。 ========== 相關訊息 ========== Modbus Utility: 1.3.3 版 [2005,5月,05] MiniOS7 image 檔案: For 7188XA (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\XA050701.img For 7188XB (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\XB050701.img For 7188EX (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\e-050701.img For 8000 (40M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8k050902.img For 8000 (80M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8e050902.img ------------------------------------------------------------------------ 1.6.4 版[17,2月,2006] by Kevin 1. 增加 Modbus/RTU Gateway 功能的命令緩衝區功能 每個 COM port 可以儲存 4 個命令在緩衝區內。當數個 Modbus Master 要使用同一個 COM port 的 gateway 功能時,此緩衝區可以將數個命令 暫存起來,然後一個一個轉丟到 COM port 上的 Modbus/RTU 設備上。 這個功能可以避免資料碰撞。 針對寫程式 1. 支援 XS 架構 2. 加入 RefreshWDT 到 ModbusRTU_Master2Slave。這樣可以避免 timeout 這個參數超過 0.8 秒而被 WDT reset 掉。 3. 增加 Debug 訊息到 Modbus/AsCII Master to Slave. 4. 改變 InitModbus 需要輸入額外的 4 個參數。參考 InitModbus 的說明。 5. 增加 Modbus/TCP master to slave 的命令 ========== 相關訊息 ========== Modbus Utility: 1.3.3 版 [2005,5月,05] MiniOS7 image 檔案: For 7188XA (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\XA050701.img For 7188XB (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\XB050701.img For 7188EX (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\e-050701.img For 8000 (40M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8k050902.img For 8000 (80M CPU) (不變) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8e050902.img ------------------------------------------------------------------------ 1.6.3 版[29,9月,2005] by Kevin 針對寫程式 1. 改變 ModbusMaster2Slave: 名稱改為 ModbusRTU_Master2Slave, 並且增加一個 lTimeout 的參數。 2. 新增 ModbusASCII_Master2Slave 這個功能除了使用的通訊協定是 Modbus/ASCII 之外, 其餘用法和 ModbusRTU_Master2Slave 相同。 3. 支援 i-8000 系列的控制器 7188XA/XB/EX 和 i-8000 控制器使用同一份程式源碼。 但是針對 i-8000 的函式庫並不支援插在插槽上的 I/O 模組。 所以,假如需要自動掃瞄模組狀態的功能,最好是使用原本 i-8000 的 Modbus/TCP 函式庫 (MBT8_xxx.lib)。 假如要讓 8410/8411/8810/8811 具有 Modbus 的通訊功能,這個 函式庫就可以了。但是你必需自行撰寫關於插槽上 I/O 模組的程式。 ========== 相關訊息 ========== Modbus Utility: 1.3.3 版 [2005,5月,05] MiniOS7 image 檔案: For 7188XA (40M CPU) (更新) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\XA050701.img For 7188XB (40M CPU) (更新) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\XB050701.img For 7188EX (40M CPU) (不變) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\e-050701.img For 8000 (40M CPU) (更新) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8k050902.img For 8000 (80M CPU) (更新) 2.00 build 004, Sep 02 2005 CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8e050902.img ------------------------------------------------------------------------ 1.6.2 版[26,8月,2005] by Kevin 改善系統的穩定度和效能 本次更新了多個函式庫(Lib)來增加穩定度和效能。 詳情請參閱 Lib 目錄下的清單(7188E_Lib_List_162.txt)。 針對寫程式 增加功能 增加 Modbus/TCP 主控端的功能。總共有 3 個命令: 1. ModbusTCP_Init 2. ModbusTCP_Master2Slave 3. ModbusTCP_Close 使用上述命令,7188E/8000E 最多可以連結 8 個遠端的 Modbus/TCP 設備。 這些功能可以偵測遠端的 Modbus/TCP 設備是否運作正常。如果遠端的 設備當機了,這個功能可以偵測出這個狀態,並且當這個設備一但恢復 正常後,這個功能還可以馬上恢復通訊。 ========== 相關訊息 ========== Modbus Utility: 1.3.3 版 [2005,5月,05] MiniOS7 image 檔案: For 40M CPU (更新) 2.00 build 002, Jul 01 2005 CD:\Napdos\Modbus\7188e\OS_Image\For_40M\e-050701.img ------------------------------------------------------------------------ 1.6.1 版 [05,5月,2005] by Kevin 改變 Modbus/RTU gateway 的對應關係 關於 'Station per COM port' 這個選項 以前: 不管串列埠的模式是哪一種,都會被分配到上面選項所定義的 Modbus/RTU 設備數量。但是只有串列埠的模式為 Modbus/RTU gateway 時,才可以處理 Modbus/TCP 到 Modbus/RTU 的轉換。也就是說,有些設備的站號被分配到 某些串列埠,卻沒有被使用到。 Now: Modbus/RTU 設備的站號只被分配到 Modbus/RTU gateway 模式 的串列埠。 Modbus Utility 的線上說明文件,改版訊息中有記錄兩者的不同。 === 相關訊息 ====== Modbus Utility: 1.3.3 版 [2005,5月,05] (更新) (必要) ------------------------------------------------------------------------ 1.6.0 版[08,4月,2005] by Kevin 使得 NAP OPC server 可以支援 "使用 Modbus/RTU Gateway 模式連接在 COM port 上面" 的 Modbus/RTU 設備(例如 PLC)。 以前: OPC server 只支援和 7188XA/7188XA/7188XB 內部的暫存器通訊。 ------------------------------------------------------------------------ 1.5.9 版[22,9月,2004] by Kevin 提供一個 7188EX 使用的 Modbus/RTU 函式庫 (MBR7Ennn.Lib and MBRTU_7E.h)。 它可以和其他不是使用 Xserver 架構開發的程式整合在一起。 範例程式請參考 MBDemo00_Modbus_RTU_Only。 ------------------------------------------------------------------------ 1.5.8 版 [26,7月,2004] by Kevin 改善通訊的效能 (減少 3ms 或 6 ms 通訊時間) 以前: 使用方式 0: 接線方式: PC <===> 7188 詢問 7188 內部暫存器花費時間 (通訊時間)+(延遲 3 ms)+(CPU 運算時間) 使用方式 1: 接線方式: PC <===> 7188 <===> Modbus/RTU 設備 詢問 Modbus/RTU 設備花費時間 (通訊時間)+(延遲 3 ms)+(CPU 運算時間) (通訊時間)+(延遲 3 ms)+(CPU 運算時間) 1.5.8 版 使用方式 0: 接線方式: PC <===> 7188 詢問 7188 內部暫存器花費時間 (通訊時間)+(CPU 運算時間) 使用方式 1: 接線方式: PC <===> 7188 <===> Modbus/RTU device 詢問 Modbus/RTU 設備花費時間 (通訊時間)+(CPU 運算時間) (通訊時間)+(CPU 運算時間) 備註: CPU 運算時間花費約 1~2ms (只針對欲修改 Modbus 的 firmware 而言) 修改函數 ModbusMaster2Slave: 支援 modbus function code 5 and 6. 釐清回傳值的意義 以前:總是傳回 0 現在:針對各種不同狀況,傳回不同的回應值, 例如 timeout、CRC 檢查錯誤、例外碼....等等。 增加變數 iModbusRequest_Fun iModbusRequest_Addr iModbusRequest_IOCount ------------------------------------------------------------------------ 1.5.7 版 [16,2月,2004] by Kevin 支援 7188XA ------------------------------------------------------------------------ 1.5.6 版 [1,1月,2004] by Kevin 修正錯誤: 1. 無法和 NAP OPC server 正常通訊。 1.5.5 版 [24,11月,2003] by Kevin 支援多個 Modbus/RTU 上傳串列埠(COM port) 用法1: 執行 Modbus Utility 將串列埠的動作模式設定成 UpLink 用法2: 修改 Modbus 的 Firmware (使用 C 語言), 呼叫 Set_EnableMode 將將串列埠的動作模式設定成 UpLink 移除函數 (只針對欲修改 Modbus 的 firmware 而言) Set_DebugPort, Set_ModbusUpLinkPort 移除變數 (只針對欲修改 Modbus 的 firmware 而言) iModbusUpLinkPort, iDebugPort 注意: Modbus 的範例程式的原始碼中,和 Modbus 核心、設定相關的部分, 也被修改了。請參考 MBDemo00 (針對 7188XB) 或 MTDemo00 (針對 7188EX) 來修改您客制化過的 Modbus 的 firmware 以使用新版 的函式庫。 ------------------------------------------------------------------------ 1.5.4 版 [14,8月,2003] by Kevin 修正錯誤: 1. 當在 Modbus Utility 中更改了串列埠 (COM port)的動作模式之後, 必須將 7188E 的電源重新啟動使得這些更改有效。 這個問題是因為Xserver中的EnableCom和DisableCom這兩個函數並沒 有被正確地執行。將Xserver的核心(Vcom3009.Lib)更新到 2003年8月4日的版本就可以解決這個問題。此後,你並不需要再重新 啟動7188E的電源來使得這個改變生效。 開放功能: 1. 允許使用者更改串列埠 (COM port) 的設定(data bit, stop bit, parity)。 注意:欲使用此功能,Modbus Utility 必須是 1.2.4 以後的版本。 MiniOS7 image 檔案: 針對 7188EX: 2.00.001 (e-030529.img) 針對 7188XB: 2.00.001 (xb030516.img) =============================================================================== 1.5.3 版 [26,6月,2003] by Kevin 更改軔體(在 7188EX 中執行的.exe 檔案)的名稱 原本的名稱,不管版本號碼為何,都是叫做 MBTCP_7E.exe 。 新的名稱變成 MBT7_nnn.exe ,其中 nnn 代表版本號碼。 例如: MBT7_153.exe 代表其軔體版本為 "1.5.3". 更新 7188EL.Lib (25,1月,2003) 假如你只需要使用預設的軔體 而不需要使用 C 語來修改此軔體,那麼請忽略 以下的詳細說明。 詳細說明: 7188E 的 COM1 和 COM2 具有兩種工作模式,一個一般模式,另一個是 DMA 模 式。 欲將 COM1/2 安裝在一般模式,請呼叫函式 InstallCom 。 欲將 COM1/2 安裝在 DMA 模式,請呼叫函式 InstallCom1_DMA 和 InstallCom2_DMA。 Xserver 核心所使用的預設模式是 DMA。 發現到的錯誤是: 當呼叫 InstallCom 將 COM1/2 的由一般工作模式改變成 DMA 工作模式時, COM1/2 無法正常動作。這個問題在更新完 7188EL.Lib 之後,就解決了。 =============================================================================== 1.5.3 版 [13,6月,2003] by Kevin 修正錯誤: 1. 無法和 NAP OPC server 正常通訊。 修改函數 ModbusMaster2Slave: 增加 Modbus 的命令 01 和 03 將 DO 和 AO 的值讀回來。 7188E-MTCP 支援 Modbus/RTU Slave 的功能。 =============================================================================== 1.5.2 版 [30,4月,2002] by Kevin 更改程式中的變數宣告 1. MAX_REGISTER_COUNT 舊方式: #define MAX_REGISTER_COUNT 100 目前方式: int MAX_REGISTER_COUNT=500; 2. iMemory_DI, iMemory_DO, iMemory_AI, iMemory_AO 舊方式: unsigned char iMemory_DI[MAX_REGISTER_COUNT]; 目前方式: unsignedchar *iMemory_DI; 上述的更動可以讓使用者在 C 的原始碼中,重新指定 MAX_REGISTER_COUNT 的 數值來調整可以使用的資料暫存器大小(預設值為各 500 組)。 用法: MAX_REGISTER_COUNT=512; iRet=InitModbus(); =============================================================================== 1.5.1 版 [31,5月,2002] by Kevin 修正錯誤: 當存取 DO 或 DI 暫存器的數量小於 8 組時,會得到錯誤的回應訊息。 =============================================================================== 1.5.0 版 [17,5月,2003] by Kevin 更改: 1. Modbus 設定用的命令由 39 號改成 107號。 2. iModbusInternalID 改成 iModbusNetID 注意: Modbus Utility 必須是 1.2.0 以後的版本 MiniOS7 image 檔案必須是 e-021023.img =============================================================================== 1.4.0 版 [31,Dec,2002] by Kevin 1. 移除所有用來除錯的程式碼,以提升效能。 2. 使用 EEPROM 來儲存各項設定,並且支援 Modbus Utility 設定 7188E -MTCP。 =============================================================================== 1.3.0 版 [16,10月,2002] by Kevin 7188XB 和 7188E 使用相同的 Modbus 核心。