/************************************************/
/* EEPROM location for 7188/8000 Modbus library */
/*                                              */
/* First  update [2006/Jul/04] by Kevin         */
/* Latest update [2012/Jan/03] by Mac           */
/************************************************/
[2012/01/03] by Mac
    1.Every AI module is resvered data for 20 channels, and the block location changed.
                                 I/O library 1.5.9 or earlier       1.6.0
      Block_System                         1                          1
      Block_IO_Type_Name                   1                          1
      Block_IO_RangeCode                   2                          2
      Block_IO_ChannelEnable               2                          3
      Block_IO_Offset                      3                          4,5
      Block_IO_AO_PowerOnValue             4                          6
      Block_IO_AO_SafeValue                4                          6
      Block_IO_DO_PowerOnValue             5                          7
      Block_IO_DO_SafeValue                5                          7
      
[2006/Jul/17] by Kevin
    1. Add block1, offset 0x50~0x51
    2. Add block4, all
    3. Add block5, offset 0x00~0x3F

[2006/Aug/16] by Kevin
    1. Add block1, offset 0x07~0x08

Following EEPROM location are applied to 
HARDWARE:i-8000-MTCP
SDK:Modbus library 1.7.2, I/O library 1.6.0    

====== Block 0 =====================================================
//Store COM port function (for 7188/8000)

====== Block 1 =====================================================
// System
0x00~0x01:  Modbus Lib version=123~nnn: version 1.2.3
0x02:       NetID=0x00~0xFF
0x03:       Station Per COM port=0x00~0xFF
0x04:       Freeze I/O Config=0 or <>0
0x05~0x06   I/O scan Lib version=123~nnn: version 1.2.3
0x07~0x08   CPU reset events (0~65535)
0x09:       iAI_Filter_Num
0x0A:       IP Filter enable
0x0B~0x0F


//COM port configuration
[Enable mode]   [Timeout]  [Reserved]
    0x10:       0x11~0x12    0x13       (COM1)
    0x14:       0x15~0x16    0x17       (COM2)
    0x18:       0x19~0x1A    0x1B       (COM3)
    0x1C:       0x1D~0x1E    0x1F       (COM4)
    0x20:       0x21~0x22    0x23       (COM5)
    0x24:       0x15~0x26    0x27       (COM6)
    0x28:       0x19~0x2A    0x2B       (COM7)
    0x2C:       0x1D~0x2E    0x2F       (COM8)
    
    
//I/O Module Basic information
[ModuleType] [NameOfModule] [Reserved] [Reserved]
    0x30        0x31          0x32        0x33    (Slot0)
    0x34        0x35          0x36        0x37    (Slot1)
    0x38        0x39          0x3A        0x3B    (Slot2)
    0x3C        0x3D          0x3E        0x3F    (Slot3)
    0x40        0x41          0x42        0x43    (Slot4)
    0x44        0x45          0x46        0x47    (Slot5)
    0x48        0x49          0x4A        0x4B    (Slot6)
    0x4C        0x4D          0x4E        0x4F    (Slot7)
    
//Watch Dog Timer
0x50~0x51: Watch dog timer for AO and DO safe value.
           Range=0~65535
           <5 : Disable safe value
           5~65535: Enable safe value
           unit: second.

====== Block 2 =====================================================
// I/O Module Range Code
Each slot uses 20 channels
Each channel uses 1 bytes

0x00~0x13:  Ch0~Ch19 (Slot0)
0x14~0x27:  Ch0~Ch19 (Slot1)
0x28~0x3B:  Ch0~Ch19 (Slot2)
0x3C~0x4F:  Ch0~Ch19 (Slot3)
0x50~0x63:  Ch0~Ch19 (Slot4)
0x64~0x77:  Ch0~Ch19 (Slot5)
0x78~0x8B:  Ch0~Ch19 (Slot6)
0x8C~0x9F:  Ch0~Ch19 (Slot7)

====== Block 3======================================================
// 87K DI counter enable/disable
Each channel uses 1 bytes(True or False)

0x80~0x8F:  Ch0~Ch15 (Slot0) 
0x90~0x9F:  Ch0~Ch15 (Slot1)
0xA0~0xAF:  Ch0~Ch15 (Slot2)
0xB0~0xBF:  Ch0~Ch15 (Slot3)
0xC0~0xCF:  Ch0~Ch15 (Slot4)
0xD0~0xDF:  Ch0~Ch15 (Slot5)
0xE0~0xEF:  Ch0~Ch15 (Slot6)
0xF0~0xFF:  Ch0~Ch15 (Slot7)

====== Block 4 =====================================================
// AI/AO offset value 
Each channel uses 2 bytes(-32768~+32767)

0x00~0x27:  Ch0~Ch19 (Slot0)
0x28~0x4F:  Ch0~Ch19 (Slot1)
0x50~0x77:  Ch0~Ch19 (Slot2)
0x78~0x9F:  Ch0~Ch19 (Slot3)

====== Block 5 =====================================================
// AI/AO offset value 
Each channel uses 2 bytes(-32768~+32767)

0x00~0x27:  Ch0~Ch19 (Slot4)
0x28~0x4F:  Ch0~Ch19 (Slot5)
0x50~0x77:  Ch0~Ch19 (Slot6)
0x78~0x9F:  Ch0~Ch19 (Slot7)

====== Block 6 =====================================================
//AO Power on value  (128 bytes)
0x00~0x0F:  Ch0~Ch15 (Slot0)
0x10~0x1F:  Ch0~Ch15 (Slot1)
0x20~0x2F:  Ch0~Ch15 (Slot2)
0x30~0x3F:  Ch0~Ch15 (Slot3)
0x40~0x4F:  Ch0~Ch15 (Slot4)
0x50~0x5F:  Ch0~Ch15 (Slot5)
0x60~0x6F:  Ch0~Ch15 (Slot6)
0x70~0x7F:  Ch0~Ch15 (Slot7)

//AO Safe value      (128 bytes)
0x80~0x8F:  Ch0~Ch15 (Slot0)
0x90~0x9F:  Ch0~Ch15 (Slot1)
0xA0~0xAF:  Ch0~Ch15 (Slot2)
0xB0~0xBF:  Ch0~Ch15 (Slot3)
0xC0~0xCF:  Ch0~Ch15 (Slot4)
0xD0~0xDF:  Ch0~Ch15 (Slot5)
0xE0~0xEF:  Ch0~Ch15 (Slot6)
0xF0~0xFF:  Ch0~Ch15 (Slot7)

====== Block 7 ====================================================
//DO Power on value  (32 bytes)
0x00~0x03:  Ch0~Ch31 (Slot0)
0x04~0x07:  Ch0~Ch31 (Slot1)
0x08~0x0B:  Ch0~Ch31 (Slot2)
0x0C~0x0F:  Ch0~Ch31 (Slot3)
0x10~0x13:  Ch0~Ch31 (Slot4)
0x14~0x17:  Ch0~Ch31 (Slot5)
0x18~0x1B:  Ch0~Ch31 (Slot6)
0x1C~0x1F:  Ch0~Ch31 (Slot7)

//DO Safe value  (32 bytes)
0x20~0x23:  Ch0~Ch31 (Slot0)
0x24~0x27:  Ch0~Ch31 (Slot1)
0x28~0x2B:  Ch0~Ch31 (Slot2)
0x2C~0x2F:  Ch0~Ch31 (Slot3)
0x30~0x33:  Ch0~Ch31 (Slot4)
0x34~0x37:  Ch0~Ch31 (Slot5)
0x38~0x3B:  Ch0~Ch31 (Slot6)
0x3C~0x3F:  Ch0~Ch31 (Slot7)
0x40~0x7C:  IP Filter 10 bytes x 6 
0x7D~0x7F   not used
0x80~0xFF   Store IP, Mask, Gateway

====== Register Mapping ============================================
=== iMemory_IO_DO ===
0x13C: Write DO Power on value to EEPROM
0x13D: Write DO Safe value     to EEPROM
0x13E: Write AO Power on value to EEPROM
0x13F: Write AO Safe value     to EEPROM

//DO Power on value (320~575)
0x140~0x15F: Ch0~Ch31 (Slot0)
0x160~0x17F: Ch0~Ch31 (Slot1)
0x180~0x19F: Ch0~Ch31 (Slot2)
0x1A0~0x1BF: Ch0~Ch31 (Slot3)
0x1C0~0x1DF: Ch0~Ch31 (Slot4)
0x1E0~0x1FF: Ch0~Ch31 (Slot5)
0x200~0x21F: Ch0~Ch31 (Slot6)
0x220~0x23F: Ch0~Ch31 (Slot7)

//DO Safe value (576~831)
0x240~0x25F: Ch0~Ch31 (Slot0)
0x260~0x27F: Ch0~Ch31 (Slot1)
0x280~0x29F: Ch0~Ch31 (Slot2)
0x2A0~0x2BF: Ch0~Ch31 (Slot3)
0x2C0~0x2DF: Ch0~Ch31 (Slot4)
0x2E0~0x2FF: Ch0~Ch31 (Slot5)
0x300~0x31F: Ch0~Ch31 (Slot6)
0x320~0x33F: Ch0~Ch31 (Slot7)


=== iMemory_IO_AO ===
//AO Power on value (320~383)
0x140~0x147: Ch0~Ch7 (Slot0)
0x148~0x14F: Ch0~Ch7 (Slot1)
0x150~0x157: Ch0~Ch7 (Slot2)
0x158~0x15F: Ch0~Ch7 (Slot3)
0x160~0x167: Ch0~Ch7 (Slot4)
0x168~0x16F: Ch0~Ch7 (Slot5)
0x170~0x177: Ch0~Ch7 (Slot6)
0x178~0x17F: Ch0~Ch7 (Slot7)

//AO Safe value (384~447)
0x180~0x187: Ch0~Ch7 (Slot0)
0x188~0x18F: Ch0~Ch7 (Slot1)
0x190~0x197: Ch0~Ch7 (Slot2)
0x198~0x19F: Ch0~Ch7 (Slot3)
0x1A0~0x1A7: Ch0~Ch7 (Slot4)
0x1A8~0x1AF: Ch0~Ch7 (Slot5)
0x1B0~0x1B7: Ch0~Ch7 (Slot6)
0x1B8~0x1BF: Ch0~Ch7 (Slot7)








/------------------------------------------------------------------/
/Following EEPROM location are applied to                          /
/Modbus library 1.6.6 to 1.7.0                                     /
/I/O library 1.5.3 to 1.5.9                                        /
/------------------------------------------------------------------/    
====== Block 0 =====================================================
//Store COM port function (for 7188/8000)

====== Block 1 =====================================================
// System (for 7188/8000)
0x00~0x01:  Modbus Lib version=123~nnn: version 1.2.3
0x02:       NetID=0x00~0xFF
0x03:       Station Per COM port=0x00~0xFF
0x04:       Freeze I/O Config=0 or <>0
0x05~0x06   I/O scan Lib version=123~nnn: version 1.2.3
0x07~0x08   CPU reset events (0~65535)
0x09~0x0F


//COM port configuration (for 7188/8000)
[Enable mode]   [Timeout]  [Reserved]
    0x10:       0x11~0x12    0x13       (COM1)
    0x14:       0x15~0x16    0x17       (COM2)
    0x18:       0x19~0x1A    0x1B       (COM3)
    0x1C:       0x1D~0x1E    0x1F       (COM4)
    0x20:       0x21~0x22    0x23       (COM5)
    0x24:       0x15~0x26    0x27       (COM6)
    0x28:       0x19~0x2A    0x2B       (COM7)
    0x2C:       0x1D~0x2E    0x2F       (COM8)
    
    
// I/O Module Basic information (for I-8000 only)
[ModuleType] [NameOfModule] [Reserved] [Reserved]
    0x30        0x31          0x32        0x33    (Slot0)
    0x34        0x35          0x36        0x37    (Slot1)
    0x38        0x39          0x3A        0x3B    (Slot2)
    0x3C        0x3D          0x3E        0x3F    (Slot3)
    0x40        0x41          0x42        0x43    (Slot4)
    0x44        0x45          0x46        0x47    (Slot5)
    0x48        0x49          0x4A        0x4B    (Slot6)
    0x4C        0x4D          0x4E        0x4F    (Slot7)
    
//
0x50~0X51: Watch dog timer for AO and DO safe value.
           Range=0~65535
           <5 : Disable safe value
           5~65535: Enable safe value
           unit: second.

====== Block 2 =====================================================
// I/O Module Range Code  (for I-8000 only)
Each channel uses 1 bytes(0x00~0x7F)

0x00~0x0F:  Ch0~Ch15 (Slot0)
0x10~0x1F:  Ch0~Ch15 (Slot1)
0x20~0x2F:  Ch0~Ch15 (Slot2)
0x30~0x3F:  Ch0~Ch15 (Slot3)
0x40~0x4F:  Ch0~Ch15 (Slot4)
0x50~0x5F:  Ch0~Ch15 (Slot5)
0x60~0x6F:  Ch0~Ch15 (Slot6)
0x70~0x7F:  Ch0~Ch15 (Slot7)


// 87K DI counter enable/disable  (for I-8000 only)
Each channel uses 1 bytes(True or False)

0x80~0x8F:  Ch0~Ch15 (Slot0) 
0x90~0x9F:  Ch0~Ch15 (Slot1)
0xA0~0xAF:  Ch0~Ch15 (Slot2)
0xB0~0xBF:  Ch0~Ch15 (Slot3)
0xC0~0xCF:  Ch0~Ch15 (Slot4)
0xD0~0xDF:  Ch0~Ch15 (Slot5)
0xE0~0xEF:  Ch0~Ch15 (Slot6)
0xF0~0xFF:  Ch0~Ch15 (Slot7)

====== Block 3 =====================================================
// AI/AO offset value (for I-8000 only)
Each channel uses 2 bytes(-32768~+32767)

0x00~0x1F:  Ch0~Ch15 (Slot0)
0x20~0x3F:  Ch0~Ch15 (Slot1)
0x40~0x5F:  Ch0~Ch15 (Slot2)
0x60~0x7F:  Ch0~Ch15 (Slot3)
0x80~0x9F:  Ch0~Ch15 (Slot4)
0xA0~0xBF:  Ch0~Ch15 (Slot5)
0xC0~0xDF:  Ch0~Ch15 (Slot6)
0xE0~0xFF:  Ch0~Ch15 (Slot7)

====== Block 4 =====================================================
//AO Power on value  (128 bytes)
0x00~0x0F:  Ch0~Ch15 (Slot0)
0x10~0x1F:  Ch0~Ch15 (Slot1)
0x20~0x2F:  Ch0~Ch15 (Slot2)
0x30~0x3F:  Ch0~Ch15 (Slot3)
0x40~0x4F:  Ch0~Ch15 (Slot4)
0x50~0x5F:  Ch0~Ch15 (Slot5)
0x60~0x6F:  Ch0~Ch15 (Slot6)
0x70~0x7F:  Ch0~Ch15 (Slot7)

//AO Safe value      (128 bytes)
0x80~0x8F:  Ch0~Ch15 (Slot0)
0x90~0x9F:  Ch0~Ch15 (Slot1)
0xA0~0xAF:  Ch0~Ch15 (Slot2)
0xB0~0xBF:  Ch0~Ch15 (Slot3)
0xC0~0xCF:  Ch0~Ch15 (Slot4)
0xD0~0xDF:  Ch0~Ch15 (Slot5)
0xE0~0xEF:  Ch0~Ch15 (Slot6)
0xF0~0xFF:  Ch0~Ch15 (Slot7)

====== Block 5 =====================================================
//DO Power on value  (32 bytes)
0x00~0x03:  Ch0~Ch31 (Slot0)
0x04~0x07:  Ch0~Ch31 (Slot1)
0x08~0x0B:  Ch0~Ch31 (Slot2)
0x0C~0x0F:  Ch0~Ch31 (Slot3)
0x10~0x13:  Ch0~Ch31 (Slot4)
0x14~0x17:  Ch0~Ch31 (Slot5)
0x18~0x1B:  Ch0~Ch31 (Slot6)
0x1C~0x1F:  Ch0~Ch31 (Slot7)

//DO Power on value  (32 bytes)
0x20~0x23:  Ch0~Ch31 (Slot0)
0x24~0x27:  Ch0~Ch31 (Slot1)
0x28~0x2B:  Ch0~Ch31 (Slot2)
0x2C~0x2F:  Ch0~Ch31 (Slot3)
0x30~0x33:  Ch0~Ch31 (Slot4)
0x34~0x37:  Ch0~Ch31 (Slot5)
0x38~0x3B:  Ch0~Ch31 (Slot6)
0x3C~0x3F:  Ch0~Ch31 (Slot7)

not used

====== Block 6 =====================================================
not used

====== Block 7 =====================================================
//Store IP, Mask, Gateway (for 7188E/8000E only)
*/



/*
====== Register Mapping ============================================

=== iMemory_IO_DO ===
0x13C: Write DO Power on value to EEPROM
0x13D: Write DO Safe value     to EEPROM
0x13E: Write AO Power on value to EEPROM
0x13F: Write AO Safe value     to EEPROM

//DO Power on value (320~575)
0x140~0x15F: Ch0~Ch31 (Slot0)
0x160~0x17F: Ch0~Ch31 (Slot1)
0x180~0x19F: Ch0~Ch31 (Slot2)
0x1A0~0x1BF: Ch0~Ch31 (Slot3)
0x1C0~0x1DF: Ch0~Ch31 (Slot4)
0x1E0~0x1FF: Ch0~Ch31 (Slot5)
0x200~0x21F: Ch0~Ch31 (Slot6)
0x220~0x23F: Ch0~Ch31 (Slot7)

//DO Safe value (576~831)
0x240~0x25F: Ch0~Ch31 (Slot0)
0x260~0x27F: Ch0~Ch31 (Slot1)
0x280~0x29F: Ch0~Ch31 (Slot2)
0x2A0~0x2BF: Ch0~Ch31 (Slot3)
0x2C0~0x2DF: Ch0~Ch31 (Slot4)
0x2E0~0x2FF: Ch0~Ch31 (Slot5)
0x300~0x31F: Ch0~Ch31 (Slot6)
0x320~0x33F: Ch0~Ch31 (Slot7)


=== iMemory_IO_AO ===
//AO Power on value (320~383)
0x140~0x147: Ch0~Ch7 (Slot0)
0x148~0x14F: Ch0~Ch7 (Slot1)
0x150~0x157: Ch0~Ch7 (Slot2)
0x158~0x15F: Ch0~Ch7 (Slot3)
0x160~0x167: Ch0~Ch7 (Slot4)
0x168~0x16F: Ch0~Ch7 (Slot5)
0x170~0x177: Ch0~Ch7 (Slot6)
0x178~0x17F: Ch0~Ch7 (Slot7)

//AO Safe value (384~447)
0x180~0x187: Ch0~Ch7 (Slot0)
0x188~0x18F: Ch0~Ch7 (Slot1)
0x190~0x197: Ch0~Ch7 (Slot2)
0x198~0x19F: Ch0~Ch7 (Slot3)
0x1A0~0x1A7: Ch0~Ch7 (Slot4)
0x1A8~0x1AF: Ch0~Ch7 (Slot5)
0x1B0~0x1B7: Ch0~Ch7 (Slot6)
0x1B8~0x1BF: Ch0~Ch7 (Slot7)


*/