/************************************************************/
/*  I-8000 的 I/O 掃瞄 函式庫改版訊息                       */
/*                                                          */
/************************************************************/
1.7.0 版 [2021/02/03] by Mac
    新支援模組 I-87026W. I-8026W, I-87084W
    新功能：支援I-8014W, I-8017HW, I-9017HCW, I-8026W移動平均，
            可以在Modbus Utility設定取樣長度5~50來啟用此功能，並會刪除最大最小值後才計算。
	  新功能：支援I-8088W duty設定。
    ========== 相關訊息 ==========
    Modbus Utility: 1.8.5 2021/06/30版 (必需更新來搭配這一版的 firmware)
------------------------------------------------------------------------    
1.6.7 版 [2017/11/09] by Mac
		新功能：支援顯示模組掃描時間，有即時與最大最小值
		支援 I-87028VW-20V, I-87005W, I-87024CW, I-8088W, I-87016W
		修正timeout時間太短造成AI模組顯示斷線的問題
		========== 相關訊息 ==========
    Modbus Utility: 1.8.4 2017/11/10版 (必需更新來搭配這一版的 firmware)
------------------------------------------------------------------------
1.6.4 版 [2013/08/12] by Mac
		支援 I-8093W, I-8084W for iP-8000
		支援 iP-8000-MRTU
		修正錯誤
				修正I-87042 DI值讀錯的問題
		========== 相關訊息 ==========
    Modbus Utility: 1.8.0 2013/08/06版 (必需更新來搭配這一版的 firmware)
------------------------------------------------------------------------
1.6.3 版 [2012/10/17] by Mac
    Bug修正
        1.支援Ch16~Ch31 DI Counter設定，舊版本最多只支援到16個DI Counter設定
        2.87019, 87019Z 新增0x0D, -20mA~20mA type
        3.修正8050最多只有設到8個DI的問題
    ========== 相關訊息 ==========
    Modbus Utility: 1.7.3 2012/10/15版 (必需更新來搭配這一版的 firmware)
------------------------------------------------------------------------
1.6.2 版 [2012/06/08] by Mac
		支援ET-87Pn
		支援8046W,87015PW,87016W,87017W-A5,87017RW87017RCW,87017DW,
        87017DW-SE,87018RW,87018PW,87019PW,87037W,87040PW,87042W,
        87053PW,87053W-A5,87053W-E5,87057PW,87059W,87069W
        8017DW,8017HCW,I-87024DW,I-87024RW,I-8050W modules.
    ========== 相關訊息 ==========
    Modbus Utility: 1.7.2 2012/06/27版 (必需更新來搭配這一版的 firmware)
------------------------------------------------------------------------
1.6.1 版 [2012/02/23] by Mac
		支援87017RCW
------------------------------------------------------------------------
1.6.0 版 [2012/01/03] by Mac
    支援iPAC-8000
    支援87017Z, 87018Z, 87019Z, 8084W, 87028, 87061
    ========== 相關訊息 ==========
    Modbus Utility: 1.7.2 版 (必需更新來搭配這一版的 firmware)
    
    MiniOS7 image file: 
	      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.5.7 版 [14,9月,2007] by Mac
    支援 87019  
    支援模組自動設定:
        如果要替換損壞的模組,可以關閉電源後，
        直接將損壞的模組拔除,再插上新的相同模組，
        重新開啟電源之後 8000主機會自動將其組態設定好。
    ========== 相關訊息 ==========
    Modbus Utility: 1.7.0 版 (必需更新來搭配這一版的 firmware)
    
    MiniOS7 image file: 
	      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.5.6 版 [19,3月,2007] by Kevin
    支援 87022, 87026  
    
    ========== 相關訊息 ==========
    Modbus Utility: 1.6.9 版 (必需更新來搭配這一版的 firmware)
    
    MiniOS7 image file: 
      For 40M CPU (Ethernet version) (更新)
          2.02 build 002, Mar 12 2007
          CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8000_UDP_20070312.img
      For 80M CPU (Ethernet version) (更新)
          2.02 build 002, Mar 12 2007
          CD:\Napdos\Modbus\8000e\OS_Image\For_80M\C836-UDP_20070312.img
              
------------------------------------------------------------------------ 
1.5.5 版 [28,8月,2006] by Kevin   
    1. 修正 8090 的錯誤
        它的計數值被放到錯誤的 AI 暫存器位址。
    
    2. 修正 87K 16 bit DO 模組的錯誤
        DO module 無法正確工作。它的狀態一直是離線 (offline) 。
    
    3. 修正設定 I-87013,17,18 的輸入範圍的問題
        開機後，輸入範圍的設定變成舊的設定，甚至於已經用 Modbus Utility
        設定過了也是如此。
        這個問題存在於 1.5.0 ~ 1.5.4 版。
        
    4. 支援 AO 和 DO 模組的開機值功能
        當開機時，AO 和 DO 模組跑到其預先設定的開機值。
        
    5. 支援 AO 和 DO 模組的安全值 (Safe value) 功能
        當 I-8000 控制器和 PC 之前的 modbus 通訊斷掉，時間超過 WDT (看門狗) 
        的設定值, 全部的 AO 和 DO 都會跑到其預先設定的安全值。
        
        WDT 預設是 0 秒(失效)，當數值 >5 時，這個機制就會啟動。
        
        
    6. 讀/寫 modbus 的 AO 和 DO 暫存器 (registers) 可以設定開機值(power on value)
       和安全值(safe value)
        
       [DO 暫存器]
          位址(十六進制)(十進制) 敘述 
          --------------------------------------------------------
          iTotal_DINum ~ 315     保留給客戶使用
          --------------------------------------------------------       
          0x140-4       316      將 DO 的開機值寫到 EEPROM
          0x140-3       317      將 DO 的安全值寫到 EEPROM
          0x140-2       318      將 AO 的開機值寫到 EEPROM
          0x140-1       319      將 AO 的安全值寫到 EEPROM
          --------------------------------------------------------
          0x140~0x15F   320~351  DO 開機值 [slot0]
          0x160~0x17F   352~383  DO 開機值 [slot1]
          0x180~0x19F   384~415  DO 開機值 [slot2]
          0x1A0~0x1BF   416~447  DO 開機值 [slot3]
          0x1C0~0x1DF   448~479  DO 開機值 [slot4]
          0x1E0~0x1FF   480~511  DO 開機值 [slot5]
          0x200~0x21F   512~543  DO 開機值 [slot6]
          0x220~0x23F   544~575  DO 開機值 [slot7]
          --------------------------------------------------------
          0x240~0x25F   576~607  DO 安全值 [slot0]
          0x260~0x27F   608~639  DO 安全值 [slot1]
          0x280~0x29F   640~671  DO 安全值 [slot2]
          0x2A0~0x2BF   672~703  DO 安全值 [slot3]
          0x2C0~0x2DF   704~735  DO 安全值 [slot4]
          0x2E0~0x2FF   736~767  DO 安全值 [slot5]
          0x300~0x31F   768~799  DO 安全值 [slot6]
          0x320~0x33F   800~831  DO 安全值 [slot7]
        
       [AO 暫存器]
          位址(十六進制)(十進制) 敘述
          --------------------------------------------------------
          iTotal_AONum ~ 315     保留給客戶使用
          --------------------------------------------------------       
          0x140-4       316      CPU reset 的狀態
                                    1: 由電源開關造成
                                    2: 由 0.8 秒的看門狗 (WDT) 造成
          0x140-3       317      CPU reset 的事件次數 
                                    1. 被存到 EEPROM
                                    2. 可以被 reset
          0x140-2       318      設定 host WDT 數值 (針對安全值) 
                                    1. 被存到 EEPROM
                                    2. 6~65535 (秒) =啟動
                                    3. <=5 (秒) =失效
                                    4. 預設=0
          0x140-1       319      安全值發生的次數
          --------------------------------------------------------
          0x140~0x147   320~327  AO 開機值 [slot0]
          0x148~0x14F   328~335  AO 開機值 [slot1]
          0x150~0x157   336~343  AO 開機值 [slot2]
          0x158~0x15F   344~351  AO 開機值 [slot3]
          0x160~0x167   352~359  AO 開機值 [slot4]
          0x168~0x16F   360~367  AO 開機值 [slot5]
          0x170~0x177   368~375  AO 開機值 [slot6]
          0x178~0x17F   376~383  AO 開機值 [slot7]
          --------------------------------------------------------
          0x180~0x187   384~391  AO 安全值 [slot0]
          0x188~0x18F   392~399  AO 安全值 [slot1]
          0x190~0x197   400~407  AO 安全值 [slot2]
          0x198~0x19F   408~415  AO 安全值 [slot3]
          0x1A0~0x1A7   416~423  AO 安全值 [slot4]
          0x1A8~0x1AF   424~431  AO 安全值 [slot5]
          0x1B0~0x1B7   432~439  AO 安全值 [slot6]
          0x1B8~0x1BF   440~447  AO 安全值 [slot7]
    
    7. 更改 LED 的狀態
        L2 閃爍 = CPU 中的設定值和插在插槽 (slot) 上的模組不一致。
        L3 閃爍 = AO 和 DO 的安全值已啟動。
        
    8. 增加 UpdateIOModule 的效能
        在 1.1.5 版 [23,6月,2003], 這個命令每檢查 4 次 Ethernet 是否有
        服務需要處理，然後才更新一個插槽 (slot) 的資料。這樣造成 I/O 資料的更
        新效率並不是很好。
        
        在這個版本之中，改成每檢查兩次，就更新一個插槽 (slot) 的資料，並且跳
        過空的插槽 (slot) 。
    
    === 針對寫程式 ===
    IO_155.lib 必需和 mbt8_167.lib 或較新的版本一起使用。
    
        
    ========== 相關訊息 ==========
    Modbus Utility: 1.6.8 版 (必需更新來搭配這一版的 firmware)
    
    MiniOS7 image file: 
      For 40M CPU
          2.00 build 004, Sep 02 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050902.img
      For 80M CPU (Ethernet version)
          2.01 build 000, Nov 03 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8000E-80-20051103.img
           
------------------------------------------------------------------------          
1.5.4 版[20,7月,2006] by Kevin         
    修正 87K DI 計數器的 enable/disable 狀態的問題
        87K DI 計數器預設為 0 (disabled).
        
        在你第一次使用這個 Controller 並且按 Modbus Utility  的
        "Refresh" 鈕的時候，1.5.3 版沒有給它正確的預設值 (Disabled).
        
        一旦你曾經將 87K DI 計數器的狀態設定過一次，這個問題就不存在了，
        而且可以依你設定的狀態來工作。
        
        所以，即使你沒有將 library 更新，也沒有關係。

    ========== 相關訊息 ==========
    Modbus Utility: 1.6.7 版 (必需更新來搭配這一版的 firmware)
    
    MiniOS7 image file: 
      For 40M CPU
          2.00 build 004, Sep 02 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050902.img
      For 80M CPU (Ethernet version)
          2.01 build 000, Nov 03 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8000E-80-20051103.img

------------------------------------------------------------------------          
1.5.3 版[11,7 月,2006] by Kevin
    1. 修正 8080 問題
        當變更 8080 的工作模式, Modbus Utility 可以更新 register 
        對應的位址。但是 Firmware 中的 register 對應，並沒有更新。
        
    2. 修正 8 bit 87KDI 模組的問題
        無法得到 DI 的值，而且模組的狀態一直都是 off-line 。
        
    3. 修正 8KDIO 模組的問題
        DI 是正確的，但是 DO 是錯的。
        
    4. 修正 AI, AO  offset 問題
        AI, AO 模組換 Slot 後，Offset 值會變成 +10000 或 -10000。
        正常的話，應該是 0。
        
    ========== 相關訊息 ==========
    同 1.5.2 版
------------------------------------------------------------------------
1.5.2 版[22,6 月,2006] by Kevin
    支援 87015, 87046.
    
    MBT8_150.lib 分成兩個檔案 ==> MBT8_166.lib 和 IO_152.lib
        MBT8_nnn.Lib 負責處理 Modbus 通訊
        IO_nnn.Lib 負責處理 I/O 掃瞄
    
    ========== 相關訊息 ==========
    Modbus Utility: Ver 1.5.1  (必需更新來搭配這一版的 firmware)
    
    MiniOS7 image file: 
      For 40M CPU
          2.00 build 004, Sep 02 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050902.img
      For 80M CPU (Ethernet version)
          2.01 build 000, Nov 03 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8000E-80-20051103.img 
          
------------------------------------------------------------------------          
1.5.0 版[05,5月,2006] by Kevin
    修正錯誤
        Modbus Utility 中按 Refresh 的按鈕，還是無法找到插槽上的
        I/O 模組。

1.5.0 版[23,3月,2006] by Kevin
    支援 
        1. 87K DI 模組的低速 (100Hz) 計數器功能。
        2. 8017HS 單端輸入模式的 16 Channel 讀值的功能。
    
    更新 8024 Lib
        解決 8024 一開始輸出 -10V 的問題。 
            
    新功能    
        自動設定組態 (configuration)
            當將一個模組更換成另一個型號一樣的模組時，其設定值會保持和
            存在 CPU 上的設定相同。
            
            若是插在 I-8000 控制器上的 I/O 模組型號和存在 CPU 上
            的型號不同，L2 和 L3 會一直閃爍。必須利用 Modbus Utility
            將 CPU 上的設定值和現況設成一致。
            
            當更換損壞模組時，這非常有用。維修工人不需要攜帶 PC，
            透過執行 Modbus Utility 再次重新設定這個新的模組。
            
    ========== 相關訊息 ==========
    Modbus Utility: Ver 1.5.0  (必需更新來搭配這一版的 firmware)
    
    MiniOS7 image file: 
      For 40M CPU
          2.00 build 004, Sep 02 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050902.img
      For 80M CPU (Ethernet version)
          2.01 build 000, Nov 03 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8000E-80-20051103.img 
          
------------------------------------------------------------------------
1.4.0 版 [10,1月,2006] by Kevin
    更新 8017H lib:
        1.0.4 修正了當輸入訊號在最大、最小值附近時，得到錯誤值的問題。
        例如：輸入 +10.1伏特，得到 -9.98伏特，類似的問題。
    
    ===== 針對寫程式 =====
    修正 ModbusRTU_Master2Slave:
        以前, 總是回傳 0 (無錯誤)
        現在, 回傳相對於結果的正確值。 
        例如：逾時, CRC 檢查錯誤, ....
        
    ========== 相關訊息 ==========
    Modbus Utility: Ver 1.3.3
    
    MiniOS7 image file: 
      For 40M CPU
          2.00 build 004, Sep 02 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050902.img
      For 80M CPU (Ethernet version)
          2.01 build 000, Nov 03 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8000E-80-20051103.img
            
------------------------------------------------------------------------
1.3.9 版 [14,Nov,2005] by Kevin
    當 COM3 是設定成 UpLink 串口，而且在此 RS-485 上串有數個 Modbus/RTU
    的設備，通訊會變得不正常。

    ========== 相關訊息 ==========
    Modbus Utility: Ver 1.3.3
    
    MiniOS7 image file: 
      For 40M CPU
          2.00 build 004, Sep 02 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050902.img
      For 80M CPU (Ethernet version)
          2.01 build 000, Nov 03 2005
          CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8000E-80-20051103.img
          
------------------------------------------------------------------------
1.3.8 版[08,11月,2005] by Kevin
    沒有更改任何東西，只是更新 8000E.Lib 讓這個 firmware 可以使用在
    1.2 and 2.5 版的 CPU (80M)。
    
    ========== 相關訊息 ==========
    Modbus Utility: Ver 1.3.3
    
    MiniOS7 image file: 
        For 40M CPU
            2.00 build 003, Aug 11 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050811.img
        For 80M CPU (Ethernet version)
            2.01 build 000, Nov 03 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8000E-80-20051103.img
------------------------------------------------------------------------ 
1.3.7 版[29,9月,2005] by Kevin
    針對寫程式
        1. 改變 ModbusMaster2Slave:
                名稱改為 ModbusRTU_Master2Slave,
                並且增加一個 lTimeout 的參數。
        
        2. 新增 ModbusASCII_Master2Slave
           這個功能除了使用的通訊協定是 Modbus/ASCII 之外，
           其餘用法和  ModbusRTU_Master2Slave 相同。
        
    ========== 相關訊息 ==========
    Modbus Utility: Ver 1.3.3 
    
    MiniOS7 image file: 
        For 40M CPU
            2.00 build 003, Aug 11 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050811.img
        For 80M CPU (Ethernet version)
            2.00 build 003, Aug 15 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8E050815.img 
------------------------------------------------------------------------

1.3.6 版[26,8月,2005] by Kevin
    改善系統的穩定度和效能
        本次更新了多個函式庫(Lib)來增加穩定度和效能。
        詳情請參閱 Lib 目錄下的清單(8000E_Lib_List_136.txt)。
         
        
    針對寫程式
        增加功能
            增加 Modbus/TCP 主控端的功能。總共有 3 個命令：
            1. ModbusTCP_Init
            2. ModbusTCP_Master2Slave
            3. ModbusTCP_Close
            
        使用上述命令，7188E/8000E 最多可以連結 8 個遠端的 
        Modbus/TCP 設備。
        這些功能可以偵測遠端的 Modbus/TCP 設備是否運作正常。如果遠端的
        設備當機了，這個功能可以偵測出這個狀態，並且當這個設備一但恢復
        正常後，這個功能還可以馬上恢復通訊。
        
    ========== 相關訊息 ==========
    Modbus Utility: Ver 1.3.3 (更新) (非必要)
    
    MiniOS7 image file: 
        For 40M CPU (更新)
            2.00 build 003, Aug 11 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050811.img
        For 80M CPU (Ethernet version) (更新)
            2.00 build 003, Aug 15 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8E050815.img 
------------------------------------------------------------------------
            
1.3.5 版 [12,4月,2005] by Kevin
    修正錯誤
        連線/斷線 的狀態 (1.3.1起新增加的功能) 沒有正確對應到 DI 的
        暫存器。當有某些插槽是空的時候，它會干擾到 DI 模組。
    
        
    支援 87040, 87041    
    
    ================== 相關訊息 ==================
    Modbus Utility: 1.3.2 版 (更新)
        
    MiniOS7 image file: 
        For 40M CPU (更新)
            2.00 build 002, Apr 08 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K050408.img
        For 80M CPU (Ethernet version) (更新)
            2.00 build 001, Apr 20 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8E050408.img 
------------------------------------------------------------------------
            
1.3.3 版 [18,2月,2005] by Kevin
    針對寫程式
        修正使用 TC++ 1.01 來編譯 .exe 檔案的錯誤。
            設定AI,AO 模組的輸出/輸出入範圍發生錯誤。不管如何，
            新的範圍都被設定到 Ch0 。
------------------------------------------------------------------------
            
1.3.3 版 [27,1月,2005] by Kevin
    更新 8024 的函式庫以修正下面的錯誤:
        80M CPU 加上下面底板的組合，8024插在最後面兩個插槽，
        可能無法量到實際輸出。
            B843 V 6.2 (4 slots + COM4) 
            B883 V 8.1 (8 slots + COM4)
            B883 V 8.2 (8 slots + COM4)
            
    更新 8080 的函式庫以修正下面的錯誤:
        初始化或清除計數器後，無法得到正確的計數值。
        
    ================== 相關訊息 ==================
    Modbus Utility: 1.3.1 版
        
    MiniOS7 image file: 
        For 40M CPU
            2.00 build 001, Mar 30 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K040330.img
        For 80M CPU (Ethernet version)
            2.00 build 001, Apr 20 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8E040420.img
------------------------------------------------------------------------
    
1.3.1 版 [24,12月,2004] by Kevin
    增加 SMMI Menu (網路設定)
        同時按 SMMI 的 "Up" 和 "Down" 可以設定 IP, Mask, Gateway。
        細節請參考 to CD:\Napdos\Modbus\8000E\Document\
        SMMI_Network_Configuration.pdf 
    
    增加每一個 I/O 模組的 連線/斷線 檢測功能
        當模組是好的，DI 暫存器 (register) 為 1。
        假如這個模組已經失效，這個 DI 暫存器 (register) 會變成 0。
            
    支援 8080
    
    修正 87024 錯誤
        87024 輸出的範圍是 4~20 mA 時，輸出值並不正確。
        現在這個問題已經被解決，新的數值對應關係為
        4~20 mA <===> 0000~7FFF(Hex)
        
    修正錯誤 
        使用 Modbus Utility 或是 LED 選單來設定 offset 值到 
        AI 模組沒有問題，但是對於 AO 模組就不行。
    
    針對寫程式
        將 CheckLEDMenu 改名成 SMMI_Offset_CheckIn
        
    ================== 相關訊息 ==================
    Modbus Utility: 1.3.1 版
        
    MiniOS7 image file: 
        For 40M CPU
            2.00 build 001, Mar 30 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K040330.img
        For 80M CPU (Ethernet version)
            2.00 build 001, Apr 20 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8E040420.img
------------------------------------------------------------------------            
            
1.3.0 版 [19,11月,2004] by Kevin
    修正和 VLC 的連線問題 (必需使用 80M CPU)
        VLC 是一個速度非常快的軟体。在這一個版本之前，執行 VLC 和
        8000-MTCP 的連線，每一小時可能會出現數次的斷線 (因為接收
        8000-MTCP 的回應逾時)。現在，通訊非常順暢。
        
        === 詳細說明 ===
        這個問題是因為 MiniOS7 的 1 ms 間隔的計時器 (timer) 是在 Flash
        中執行。Flash 是慢速度的記憶体。當 Ethernet 通訊非常頻繁時，
        MiniOS7 無法及時完成和此計時器相關的動作，來服務 Ethernet 的請
        求。所以就有可能會漏掉一些 Ethernet 的請求。目前，使用新的計時
        器驅動程式，可以讓這個 1ms 間隔的計時器執行在 SRAM 之中。SRAM 
        是高速度的記憶体，MiniOS7 可以花費較短的時間來完成計時器相關的
        動作。然後 Ethernet 的請求就可以被準時地完成。 

    針對寫程式
        1. 更新 8000E.Lib 到 2.0.2 版
        2. 呼叫 InstallNewTimer.
               這已被包含在 InitModbus 之中。使用者無需再次呼叫這個
               命令。而且 55 ms 間隔的計時器，將使去作用。
        3. 將    IsSystemKey,  GetSystemKey,  ClearSystemKey
           換成 _IsSystemKey, _GetSystemKey, _ClearSystemKey.
               這已被包含在 CheckLEDMenu 之中，使用者的程式不需做任何
               改變。
        4. 更新 XS8_3009.Lib 到 XS8_3201.Lib  (3.2.01 版)
               需要增加 PortUserStart 到 user.c
               和增加 Port9999Start 到 v7000.c
             
    ================== 相關訊息 ==================
    1.3.0 版只更改軔体 (firmware) 中關於通訊部分的動作，所以 
    Modbus Utility 和 MiniOS7 image 都不需要更動。
     
    Modbus Utility: 1.2.7 版
        
    MiniOS7 image file: 
        For 40M CPU
            2.00 build 001, Mar 30 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K040330.img        
        For 80M CPU (Ethernet version)
            2.00 build 001, Apr 20 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8E040420.img       
            
------------------------------------------------------------------------
1.2.2 版 [15,6月,2004] by Kevin
    改變宣告 (in MBTCP_8E.h)                         
        1. _MaxModule: 常數的型態改成 int iMax_Module_Count
        2. iMemory_DI, iMemory_DO,              
           iMemory_AI, iMemory_AO ===> 改成指標(pointer)
           
        ===> 當使用 Modbus 函式庫來開發客制化的軔体 (firmware) 時，
             可以改變 iMax_Module_Count 來加大可用的暫存器(Register) 
             的數量來儲存更多的資料。 
             用法：
                iMax_Register_Count=1000;
                iRet=InitModbus();
                
             請參閱 MBTCP_8E.h 得到更詳細的訊息。   
    
    支援 8KE4/8KE8
        因為主体上沒有 NetID (station number) 的指撥開關可以調整，
        所以 NetID 是固定為 1。     
          
    ================== 相關訊息 ==================
    Modbus Utility: 1.2.7 版
        
    MiniOS7 image file: 
        For 40M CPU
            2.00 build 001, Mar 30 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K040330.img        
        For 80M CPU (Ethernet version)
            2.00 build 001, Apr 20 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8E040420.img
            
------------------------------------------------------------------------
1.2.1 版 [08,6月,2004] by Kevin
    改變 
        將 TCP 重送的時間由 1100 ms (大部分Ethernet 設備的預設值) 縮短成
        110 ms 。 假如 110 ms 到了，8000E 還沒有收到目的端回應的的 ACK 
        訊號，它會重新發送封包給目的端設備。 
    
    新發佈 COM1 的 Modbus/RTU slave port 功能
        在 user.c 的 UserLoopFun 中加入下面這一行程式碼可以將 COM1 啟動
        成為一個 Modbus/RTU 的 slave port。
        
        //COM port 有收到任何 Modbus/RTU 命令嗎 ?
        CheckModbusRequest(iModbusUpLinkPort);   
        
        注意：在 Modbus Utility 還沒有支援設定 UpLink port 
              (baudrate, start bit, data bit, stop bit, parity bit)之前，
              你可以使用 SendTCP.exe 來設定這個 COM port 的組態。
               
    修正 CheckLEDMenu
        這個功能若和 Modbus/RTU slave 功能的 CheckModbusRequest 命令一起
        執行，就會不正常。已修正。
            
    新增加 87018 的 CJC 的 Disable/Enable 功能選項。
        
    ================== 相關訊息 ==================
    Modbus Utility: 1.2.7 版
        支援 87018 的 CJC eanble/disable 功能
        
    MiniOS7 image file: 
        For 40M CPU
            2.00 build 001, Mar 30 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8K040330.img        
        For 80M CPU (Ethernet version)
            2.00 build 001, Apr 20 2004
            CD:\Napdos\Modbus\8000e\OS_Image\For_80M\8E040420.img
        
-------------------------------------------------------------------------------
1.2.0 版 [23,9月,2003] by Kevin
    修改 AI offset 的可調整範圍：
        -128 ~ +127     ===> Utility:  1.2.3 ~ 1.2.4
                             Firmware: 1.1.5 ~ 1.1.9
        -10000 ~ +10000 ===> Utility:  1.2.5 ~ 更新版本
                             Firmware: 1.2.0 ~ 更新版本
                
    新增加 CheckLEDMenu 的功能選項來調整 AI offset。
        主機上面的 LED 和按鈕可以用來調整 AI offset。
        請參考 CD:\Napdos\Modbus\document\8000e\LED_Menu.pdf
        之中詳細的操作步驟。
                     
    支援 8037
    
    ================== 相關訊息 ==================
    Modbus Utility: 1.2.5 版
        支援新的 AI offset 調整選項
        支援 8037
        
    MiniOS7 image file: 
        2.00 build 001, Jun 05 2003
        CD:\Napdos\MiniOS7\MiniOS7_2.0\I-8000\8K030605.img
        
------------------------------------------------------------------------
1.1.8 版 [12,9月,2003] by Kevin
    修正錯誤：
        8040: ch8~ ch15 總是讀到 0 的值。
        
------------------------------------------------------------------------
1.1.5 版 [23,6月,2003] by Kevin
    修改軔体 (firmware) 名稱 
        原先不管版本號碼為何，檔名一律為 MBTCP_8E.exe 。
        新的方式，檔名為 MBT8_nnn.exe ，其中 nnn 為版本號碼。
        例如：MBT8_115.exe 的版本號碼為 1.1.5
        
    修正錯誤 
        當讀取超過 63 個 AI 或 AO 的暫存器 (register) 內容時，8000 主機
        會主動切斷。
        
    修改 ModbusMaster2Slave 命令：
        增加 Modbus 的 01 和 03 命令來讀回 DO 和 AO 的暫存器(register)
        內容。
        
    改善 Ethernet 通訊的效能 (修改 "更新 I/O 模組的方式")
        新增加 mode 3 到 UpdateIOModule 並且將其他 mode 都取消。
        也就是說全部只有一種模式可以使用。
        請參考 1.0.7 版關於 "更新 I/O 的模式" 的說明。
        
        當有多品 Modbus/TCP clients 連到同一個 8000 主機時，8000 主機
        同時間需要處理的 Modbus/TCP 請求(request)會有很多。
        新的 "更新 I/O 的模式" 可以同時間服務更多的 Ethernet 請求。
        每一個 Modbus/TCP client 不會等待 "Modbus/TCP 回應" 太久，同時
        更新 I/O 模組的次數也維持在一定的頻率以上。 
        假如服務 Ethernet 請求的動作太慢 (其他模組就有這個問題)，
        Modbus/TCP clients 就必須增加收到 Modbus/TCP 回應的等待時間。
        那意味著這個 Modbus/TCP client 的通訊效能就不好。目前這個模式就
        是為了在 Ethernet 服務和 I/O 模組更新頻率之間取得平衡。
        
                
Ethernet     +--+ +--+ +--+   +--+ +--+ +--+           +--+ +--+ +--+ 
服務請求 :  _|  |_|  |_|  |___|  |_|  |_|  |_........._|  |_|  |_|  |_
                                                              
                           +-+              +-----+                  +-+  
更新 I/O 模組: ____________| |______________|     |_................_| |_
                          Slot0              Slot1                  Slot7 
                          
------------------------------------------------------------------------
1.1.4 版 [27,5月,2003] by Kevin
    修正錯誤：
        無法輸出 87024 的 ch1,ch2 和 ch3
    
    改變：
        使用 DMA 的技術來存取插槽上的 87K 模組。這樣可以減少 CPU 的運算
        負擔，並且避免 87K 模組資料遺失的狀況。
        
    支援：
        8077,8090
       
    注意：
        Modbus Utility 必需更新為 1.2.2 版。
        
------------------------------------------------------------------------
1.1.3 版 [20,5月,2003] by Kevin
    新增命令：
       CheckModbusRequest 命令可以讓某一 COM port 變成一個 Modbus/RTU 的
       slave port。
        
    修正錯誤：
       使用 87013 時，在它後面的 4 個 channel 的 AI 值會變成 0。

    注意：
        Modbus Utility 必須是 1.2.1 版
        
------------------------------------------------------------------------    
1.1.2 版 [17,3月,2003] by Kevin                           
    新增
        87018 的 CJC 值調整功能選項
    
    注意：
        Modbus Utility 必須是 1.2.0 版
    
------------------------------------------------------------------------
1.1.1 版 [23,2月,2003] by Kevin                       
    支援 87018 的斷線偵測功能(只針對熱電耦輸入)。       
    當某一 Channel 的線斷掉了，Modbus 會傳回最大數值 (7FFF)
    來表示這種狀態。  
    
------------------------------------------------------------------------
1.1.0 版 [06,1月,2003] by Kevin
    更新 
    1. Xserver (VxComm) 更新到 3.0.9 版(XS8_3009.lib)
         當使用 Modbus SDK 來開發特殊版本的 Modbus 軔体(firmware) 時，
         必須增加 VcomCmdUser 這個副程式到 user.c 之中。 
    2. Modbus 核心更新到 1.1.0 版(MBT8_110.Lib)
         只需要使用新的 lib 重新編譯程式，並不需要更動其他東西。
    3. TCPIPL.Lib 更新到 1.0.2 版 [1 月,02,2003]
         改善 Ethernet 通訊效能。
    4. 硬体的函式庫
         8000L.Lib, 8000.h  ==> [11月,15,2002]
         8017HL.Lib         ==> [11月,07,2002] ==> can be linked to TC 2.0
         
------------------------------------------------------------------------
1.0.7 版 [13,Dec,2002] by Kevin
  增加 "更新 I/O 模組的方式"
    系統會將 "更新 I/O 模組的方式" 設定值從 EEPROM 中讀出來。
    總共有下列幾種方式:
      方式0(預設): 自動
        自動偵測全部的插槽， 若有 1 個以上的 87K I/O 模組，
        則選擇方式1 ，否則選擇方式2。
          
      方式1: 每一次週期更新一個插槽的 I/O 模組 (in UpdateIOModule)
        8000 主機和 87K 模組的通訊速度比和 Ethernet 的通訊相比，
        會比較慢。假如系統每次都掃瞄全部的I/O 插槽完，再檢查一次是否有
        Ethernet 的服務請求，那麼這個 Ethernet 的服務請求就會等待比較
        久的時間才被處理到。
        
        
        原本問題: (The time to service the Ethernet request is long)
        
    Ethernet     +--+                                      +--+         
    服務請求 :  _|  |______________________________________|  |_____              
             
    更新 I/O 模組:    +-----+ +-----+               +-----+    +-----+ 
                ______|     |_|     |_............._|     |____|     |_ 
                       Slot0   Slot1                 Slot7       Slot0 
         
        為了處理這個速度上的問題，系統必須每更新一個 I/O 模組就
        檢查一次是否有 Ethernet 的服務請求。

Ethernet     +--+        +--+                  +--+       +--+ 
服務請求 :  _|  |________|  |_................_|  |_______|  |_
            
                  +-----+    +-----+               +-----+    +-----+ 
更新 I/O 模組: ___|     |____|     |_............._|     |____|     |_
                   Slot0        Slot1                  Slot7       Slot0                           
                                   
      方式2: 每一次週期更新全部插槽上的 I/O 模組 (in UpdateIOModuel)
        8000 主機和 8K 模組的通訊速度比和 Ethernet 的通訊相比，
        會比較快。假如系統每次都掃瞄全部的I/O 插槽完，再檢查一次是否有
        Ethernet 的服務請求，那麼 I/O 模組的更新速度可以很快，而且處理 
        Ethernet 的服務請求也不會比原來慢多少。     
        

        Ethernet       +--+                    +--+
        服務請求 :  ___|  |____________________|  |_____
                  
                            +-+ +-+         +-+     +-+ 
        更新 I/O 模組: _____| |_| |_......._| |_____| |_
                          Slot0 Slot1      Slot7   Slot0          
                        
      others: use mode 1
  
                   整個系統的週期為：
                                   (開始)
                                      |
                      +-------------->+
                      |               |
                      |   +-----------+--------------+
                      |   | 檢查是否有 Modbus 的請求 |
                      |   +-----------+--------------+
                      ^               |
                      |   +-----------+------------+
                      |   |    更新 I/O 模組的資料 |
                      |   +-----------+------------+  
                      |               |
                      +-------<-------+                             
     
------------------------------------------------------------------------
Version 1.0.6 [02,Dec,2002] by Kevin
  Correct frame check for "OPC server of ICPDAS"
  
------------------------------------------------------------------------
Version 1.0.5 [11,Nov,2002] by Kevin
  Add function ModbusMaster2Slave
  
------------------------------------------------------------------------
Version 1.0.4 [24,Oct,2002] by Kevin
  Change ACK delay to 20 ms (in InitModbus())




 


                                                           
