/*************************************************************/
/*  w 7188E  Modbus/TCP  Modbus/RTU  Modbus/RTU     */
/*   7188XB  Modbus/RTU  Modbus/RTU  ĳഫ禡w  */
/*  [25,9,2002] ׵oG by Kevin                          */
/*************************************************************/
1.6.8 [13,3,2007] by Kevin
    䴩 P824 CPU.
    
    W[@ COM port u@Ҧ
       Mode5 = Consol.
       ET-6000 ϥΦҦi@²檺]wC
       
    ܧ 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
        o blank value OϥΦb COM port ƮɨϥΪC
               
    iHM MiniOS7 Utility 3.x.x @_ϥ
        MiniOS7 Utility 3.x.x iHzLAӺ 7188E/8000E ]wBWɮסC
        oϱo@u@²FC
        
    === g{ ====   
    sWRO Modbus_Request_Event,
        @ 7188E/8000E @ Modbus/TCP  Modbus/RTU ROɡA
        AiH@ǵ{XCUCܼ (wqb .h )A]OܦγBC 
            extern unsigned int iModbusRequest_Fun;
            extern unsigned int iModbusRequest_Addr;
            extern unsigned int iModbusRequest_IOCount;
            extern unsigned long lModbusRequest_TimeTicks;

    ץD
        1.  COM port Q]w Gateway ҦɡAN COM port  buffer A] IDELA
           _hbܧL COM port ҦAo Gateway \i|LkϥΡC
           
        2. ID Lk] 128~255C
        
        3. ModbusRTU_Master, ModbusASCII_Master iLkTau@C
            uoͦb Modbus RO 1, 2, 15. 
            {Is "ceil" N Byte ƭഫ bit ƭȡAO "Ceil" ɭ԰ä
            TAҥHϥΥt~kӨN "ceil"C
                    
    ========== T ==========
    Modbus Utility: Ver 1.6.8 [2006,Aug,16]    
    
    MiniOS7 image file: 
        7188XA (40M CPU) (s) 
            2.00 build 008, Feb 26 2007
            CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\7188XA_CR_20070226.img
        7188XB (40M CPU) (s)
            2.00 build 006, Mar 1 2007
            CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\7188XB_CR_20070301.img
        7188XC (20M CPU) (s)
            2.00 build 006, Mar 1 2007
            CD:\Napdos\Modbus\7188XC\OS_Image\For_20M\7188XC-20070301.img
        7188EX (40M CPU) (s)
            2.02 build 002, Mar 01 2007
            CD:\Napdos\Modbus\7188e\OS_Image\For_40M\7188E-UDP-CR-20070301.img
            
        8000 (40M CPU) (s)
            2.02 build 002, Mar 12 2007
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8000_UDP_20070312.img
        8000 (80M CPU) (s)
            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. ץLk Ū/g WL 500 HWȦs (register) }
        F VcomCmdModbus ̭ MAX_REGISTER_COUNT C
        MAX_REGISTER_COUNT q 1.6.4 ANQq .h ɤFA
        Ob source code AèSQC
    
    2. ץ Modbus/RTU qTD
        UӼҦA 1.6.5 QgL
            a. COM port ] UpLink Ҧ (Is CheckModbusRequest RO)
            b. ModbusRTU_Master
         I-7188XA and 7188XB qT|ܦíwCboӪAoөRO
        wgQﵽoíwFC
        
        ҥHApA^(firmware)ϥ mbr7_165.Lib  mbr7_166.LibA
        As 1.6.7 ӸѨMoӰDC
        
    3. 䴩@ TCP/IP ʥ]]th Modbus ROC 
        зǪ Modbus/TCP 榡A@ TCP/IP ʥ]u]t@ Modbus RO
        (6 bytes eɦr + RO)C
        boӪAAiHb@ TCP/IP ʥ]JhөROAåB
        b^Ъʥ]A@oGC
        Ҧp:
            ʥ]A ==>  [6 Leading bytes] + [RO B] 
                     + [6 Leading bytes] + [RO B]
                     + [6 Leading bytes] + [RO C]
                     + [6 Leading bytes] + [RO D]
                       
            ʥ]B <==  [6 Leading bytes] + [G A] 
                     + [6 Leading bytes] + [G B]
                     + [6 Leading bytes] + [G C]
                     + [6 Leading bytes] + [G D]
                       
        oӤkiH TCP/IP ʥ]ƶqAåBA{M Modbus/TCP ]
        qTįnC
        
        MAA Modbus/TCP driver ݦ䴩C
        
    === g{ ====    
    1. W[ ܼ
            lModbusRequest_TimeTicks
                ھڳoܼơAiHDW Modbus ROoͮɪ timeticks C
                
    2. ץ ModbusRTU_Master D
        q 1.6.6 }lAoөROQק令iH䴩 non-blocked qTҦC
        o non-blocked  M-7000 tC I/O ҲաAèS`B@C
                    
    ========== T ==========
    Modbus Utility: Ver 1.6.8 [2006,8,16]    
    
    MiniOS7 image ɮ: 
        For 7188XA (40M CPU) (s)
            2.00 build 002, Jul 14 2006
            CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\7188XA_CR_20060614.img
        For 7188XB (40M CPU) (s)
            2.00 build 002, Jul 14 2006 
            CD:\Napdos\Modbus\7188XB\OS_Image\For_40M\7188XB_CR_20060614.img
        For 7188EX (40M CPU) (s)
            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 M 7188E @ˡA䴩UCPҦ 
       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 iHΨӳ]w COM port պAC
       
    wg{
        1. MBT8_150.lib ɮ ==> MBT8_166.lib M IO_153.lib
            MBT8_nnn.Lib tdBz Modbus qT
            IO_nnn.Lib tdBz I/O 
            
        2.  EEPROM xsƪm 
           (N 7188/8000 ƦmPB)
           аѦ lib ؿU EEPROM_List.txt ԲӻC
           
        3. ﵽ ModbusRTU_Master2Slave M ModbusASCII_Master2Slave
            (a) W[ non-blocked qTҦ
                @ iWait ѼƥiHΨӨMwnϥ blocked (Ҧ) 
                 non-blocked (sҦ)C
            (b) W[RO
                    ModbusRTU_Master_Send
                    ModbusRTU_Master_Receive
                    ModbusASCII_Master_Send
                    ModbusASCII_Master_Receive  
                    
        4. ﵽ VcomSaveComData
            oөROiHˬdsb EEPROM ƬO_MngJsƬۦPC
            pOۦPAhoөRON|мgJCo˥iHקK EEPROM
            gJʧ@WcC
            (EEPROM uQgJ 1 ʸU)
            (ouw D-Xserver {)
            
        5. qo@Ӫ}l, 7188/8000 ϥάۦP Modbus ֤ߡC
            (a)  7188 M 8000 ӨAC modbus ROOۦPC
                ]NO, I-8000  COM port iHQ] 
                VxComm, Modbus/RTU gateway, UpLink, Debug 䤤@ءC
                
            (b) nϥ I-8000 W I/O ҲաAA[Jt@ 
                I/O  library (IO_nnn.lib)
                (b MBT8_150.lib e, modbus ֤ߩM I/O ˪֤
                 OXb@)
                 
            (c) Lib and Head ɮ׳Q²Ʀ 
                    MBRTU.h         (w 7188/8000)
                    MBTCP.h         (w 7188/8000)
                    MBR7_nnn.Lib    (w 7188)
                    MBR8_nnn.Lib    (w 8000)
                    MBT7_nnn.Lib    (uw 7188E)
                    MBT8_nnn.Lib    (uw 8000E)
                    
    ========== T ==========
    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 ϥήɪqTD
        ƭ slave ]ƦbP@ RS-485 WAqT|DC
        DwѨMC
        
        RS-232  Ethernet qTO`C
        
    ========== T ==========
    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. W[ Modbus/RTU Gateway \઺ROwİϥ\
        C COM port iHxs 4 өRObwİϤCƭ Modbus Master
        nϥΦP@ COM port  gateway \ɡAwİϥiHNƭөRO
        Ȧs_ӡAM@Ӥ@ COM port W Modbus/RTU ]ƤWC
        oӥ\iHקKƸIC
        
    wg{
        1. 䴩 XS [c
        2. [J RefreshWDT  ModbusRTU_Master2SlaveCo˥iHקK timeout
           oӰѼƶWL 0.8 ӳQ WDT reset C
        3. W[ Debug T Modbus/AsCII Master to Slave.  
        4.  InitModbus
            ݭnJB~ 4 ӰѼơCѦ InitModbus C
        5. W[ Modbus/TCP master to slave RO     
    
    ========== T ==========
    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
    wg{
        1.  ModbusMaster2Slave:
                W٧אּ ModbusRTU_Master2Slave,
                åBW[@ lTimeout ѼơC
        
        2. sW ModbusASCII_Master2Slave
           oӥ\ణFϥΪqTwO Modbus/ASCII ~A
           lΪkM  ModbusRTU_Master2Slave ۦPC
        
        3. 䴩 i-8000 tC
           7188XA/XB/EX M i-8000 ϥΦP@{XC
           Ow i-8000 禡wä䴩bѤW I/O ҲաC
           ҥHApݭn۰ʱ˼ҲժA\A̦nOϥέ쥻 i-8000 
            Modbus/TCP 禡w (MBT8_xxx.lib)C
           
           pn 8410/8411/8810/8811 㦳 Modbus qT\Ao
           禡wNiHFCOAݦۦ漶g󴡼ѤW I/O Ҳժ{C
           
    ========== T ==========
    Modbus Utility: 1.3.3  [2005,5,05]
    
    MiniOS7 image ɮ:  
        For 7188XA (40M CPU) (s)
            2.00 build 002, Jul 01 2005
            CD:\Napdos\Modbus\7188XA\OS_Image\For_40M\XA050701.img
        For 7188XB (40M CPU) (s)
            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) (s)
            2.00 build 004, Sep 02 2005
            CD:\Napdos\Modbus\8000e\OS_Image\For_40M\8k050902.img
        For 8000 (80M CPU) (s)
            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
    ﵽtΪíwשMį
        sFhӨ禡w(Lib)ӼW[íwשMįC
        ԱаѾ\ Lib ؿUM(7188E_Lib_List_162.txt)C
         
        
    wg{
        W[\
            W[ Modbus/TCP Dݪ\C`@ 3 өROG
            1. ModbusTCP_Init
            2. ModbusTCP_Master2Slave
            3. ModbusTCP_Close
            
        ϥΤWzROA7188E/8000E ̦hiHs 8 ӻݪ 
        Modbus/TCP ]ơC
        oǥ\iHݪ Modbus/TCP ]ƬO_B@`CpGݪ
        ]ƷFAoӥ\iHXoӪAAåBoӳ]Ƥ@_
        `Aoӥ\٥iHW_qTC
        
    ========== T ==========
    Modbus Utility: 1.3.3  [2005,5,05]
    
    MiniOS7 image ɮ: 
        For 40M CPU (s)
            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 Y
         'Station per COM port' oӿﶵ
        He: ަC𪺼ҦO@ءA|QtWﶵҩwq
              Modbus/RTU ]ƼƶqCOuC𪺼Ҧ 
                Modbus/RTU gateway ɡA~iHBz Modbus/TCP 
                Modbus/RTU ഫC]NOAǳ]ƪQt
                YǦCAoSQϥΨC
        Now: Modbus/RTU ]ƪuQt Modbus/RTU gateway Ҧ
             CC
             
        Modbus Utility uWA睊TO̪PC
        
    === T ======
    Modbus Utility: 1.3.3  [2005,5,05] (s) (n)
------------------------------------------------------------------------
    
1.6.0 [08,4,2005] by Kevin
    ϱo NAP OPC server iH䴩 "ϥ Modbus/RTU Gateway Ҧsb
    COM port W"  Modbus/RTU ](Ҧp PLC)C
        He:
            OPC server u䴩M 7188XA/7188XA/7188XB ȦsqTC
------------------------------------------------------------------------

1.5.9 [22,9,2004] by Kevin
    Ѥ@ 7188EX ϥΪ Modbus/RTU 禡w 
    (MBR7Ennn.Lib and MBRTU_7E.h)C
        iHMLOϥ Xserver [c}o{Xb@_C
        dҵ{аѦ MBDemo00_Modbus_RTU_OnlyC
------------------------------------------------------------------------

1.5.8  [26,7,2004] by Kevin
    ﵽqTį ( 3ms  6 ms qTɶ)
        He:
            ϥΤ覡 0:
                u覡: PC <===> 7188
                ߰ 7188 ȦsOɶ 
                (qTɶ)+( 3 ms)+(CPU Bɶ)
                
            ϥΤ覡 1:
                u覡: PC <===> 7188 <===> Modbus/RTU ]
                ߰ Modbus/RTU ]ƪOɶ  
                (qTɶ)+( 3 ms)+(CPU Bɶ)
                (qTɶ)+( 3 ms)+(CPU Bɶ) 
                
        1.5.8 
            ϥΤ覡 0:
                u覡: PC <===> 7188
                ߰ 7188 ȦsOɶ
                (qTɶ)+(CPU Bɶ)
                
            ϥΤ覡 1:
                u覡: PC <===> 7188 <===> Modbus/RTU device
                ߰ Modbus/RTU ]ƪOɶ  
                (qTɶ)+(CPU Bɶ)
                (qTɶ)+(CPU Bɶ)                
                
        Ƶ: CPU BɶO 1~2ms
        
    (uwק Modbus  firmware Ө)
        ק ModbusMaster2Slave:
            䴩 modbus function code 5 and 6.
            M^ǭȪNq
                HeG`OǦ^ 0
                {bGwUؤPpAǦ^P^ȡA
                      Ҧp timeoutBCRC ˬd~Bҥ~X....C
        
        W[ܼ
            iModbusRequest_Fun
            iModbusRequest_Addr
            iModbusRequest_IOCount
------------------------------------------------------------------------

1.5.7  [16,2,2004] by Kevin
    䴩 7188XA      
------------------------------------------------------------------------

1.5.6  [1,1,2004] by Kevin
    ץ~:
        1. LkM NAP OPC server `qTC
        
1.5.5  [24,11,2003] by Kevin
    䴩h Modbus/RTU WǦC(COM port)
        Ϊk1:  Modbus Utility NC𪺰ʧ@Ҧ]w UpLink 
                
        Ϊk2: ק Modbus  Firmware (ϥ C y)A
               Is Set_EnableMode NNC𪺰ʧ@Ҧ]w UpLink 
                
     (uwק Modbus  firmware Ө)
        Set_DebugPort, Set_ModbusUpLinkPort
    
    ܼ (uwק Modbus  firmware Ө)
        iModbusUpLinkPort, iDebugPort
            
    `N: Modbus dҵ{lXAM Modbus ֤ߡB]wA
          ]QקFCаѦ MBDemo00 (w 7188XB)  MTDemo00 
          (w 7188EX) ӭקzȨƹL Modbus  firmware Hϥηs
          禡wC 

------------------------------------------------------------------------
1.5.4  [14,8,2003] by Kevin
    ץ~:
        1. b Modbus Utility FC (COM port)ʧ@ҦA
           N 7188E qsҰʨϱooǧ靈ġC
           oӰDO]XserverEnableComMDisableComoӨƨèS
           QTaCNXserver֤(Vcom3009.Lib)s
           2003~84骺NiHѨMoӰDCAAäݭnAs
           Ұ7188EqӨϱooӧܥͮġC
           
    }\:
        1. \ϥΪ̧C (COM port) ]w(data bit, stop bit, parity)C
           `NGϥΦ\AModbus Utility O 1.2.4 H᪺C
           
    MiniOS7 image ɮ:
        w 7188EX: 2.00.001 (e-030529.img)
        w 7188XB: 2.00.001 (xb030516.img)       

===============================================================================           
1.5.3  [26,6,2003] by Kevin
    b(b 7188EX 檺.exe ɮ)W
        쥻W١AުXAOs MBTCP_7E.exe C
        sWܦ MBT7_nnn.exe A䤤 nnn NXC
        ҦpG MBT7_153.exe Nb骩 "1.5.3".
        
    s 7188EL.Lib (25,1,2003)
        pAuݭnϥιw]b Ӥݭnϥ C yӭק惡bAЩ
        HUԲӻC 

        ԲӻG  
        7188E  COM1 M COM2 㦳ؤu@ҦA@Ӥ@ҦAt@ӬO DMA 
        C     
        N COM1/2 w˦b@ҦAЩIs禡 InstallCom C
        N COM1/2 w˦b DMA ҦAЩIs禡 InstallCom1_DMA M 
        InstallCom2_DMAC Xserver ֤ߩҨϥΪw]ҦO DMAC
        
        o{쪺~OG
            Is InstallCom N COM1/2 Ѥ@u@Ҧܦ DMA u@ҦɡA
            COM1/2 Lk`ʧ@CoӰDbs 7188EL.Lib ANѨMFC

===============================================================================
1.5.3  [13,6,2003] by Kevin
    ץ~:
        1. LkM NAP OPC server `qTC
        
    ק ModbusMaster2Slave:
        W[ Modbus RO 01 M 03 N DO M AO Ū^ӡC
        
    7188E-MTCP 䴩 Modbus/RTU Slave \C

===============================================================================    
1.5.2  [30,4,2002] by Kevin
    {ܼƫŧi
        1. MAX_REGISTER_COUNT 
                ¤覡G   #define MAX_REGISTER_COUNT 100
                ثe覡G int MAX_REGISTER_COUNT=500;
           
        2. iMemory_DI, iMemory_DO, iMemory_AI, iMemory_AO 
                ¤覡G   unsigned char iMemory_DI[MAX_REGISTER_COUNT];
                ثe覡G unsignedchar *iMemory_DI;
 
        WzʥiHϥΪ̦b C lXAsw MAX_REGISTER_COUNT 
        ƭȨӽվiHϥΪƼȦsjp(w]ȬU 500 )C
        ΪkG
            MAX_REGISTER_COUNT=512;
            iRet=InitModbus();          

===============================================================================
1.5.1  [31,5,2002] by Kevin
	ץ~G
		s DO  DI Ȧsƶqp 8 ծɡA|o~^TC

===============================================================================
1.5.0  [17,5,2003] by Kevin
	:
		1. Modbus ]wΪRO 39 令 107C
		2. iModbusInternalID 令 iModbusNetID
	
	`N:
		Modbus Utility O 1.2.0 H᪺
        MiniOS7 image ɮץO e-021023.img
        
===============================================================================
1.4.0  [31,Dec,2002] by Kevin
	1. ҦΨӰ{XAHɮįC
	2. ϥ EEPROM xsU]wAåB䴩 Modbus Utility ]w 7188E -MTCPC

===============================================================================
1.3.0  [16,10,2002] by Kevin
	7188XB M 7188E ϥάۦP Modbus ֤ߡC
