/****************************************************************/ /* 針對 7188E/8000E 的 Modbus/TCP 及 Modbus/RTU 轉 Modbus/RTU */ /* 及 7188XB 的 Modbus/RTU 轉 Modbus/RTU 的協議轉換函式庫 */ /* [25,9月,2002] 首度發佈 by Kevin */ /****************************************************************/ 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 核心。