### MODBUS External Device

#### IEC variable address range

The following table lists the equipment variable address range if you have selected the IEC61131 Syntax

Device | Bit Address | Word address | 32 bits | Remarks
--- | --- | --- | --- | ---
%I | %I000.000.000 - %I255.255.255 | ------ |  | *2 *3
%IW | %IW000.000.000:X00 - %IW255.255.255:X15 | %IW000.000.000 - %IW255.255.255 |  | *2 *3
%KW | %KW00000:X00 - %KW65535:X15 | %KW00000 - %KW65535 | or *1 | *2
%MD | ------ | %MD00000 - %MD65534 |
%MF | ------ | %MF00000 - %MF65534 |
%M | %M00000 - %M65535 | ------ |
%MW | %MW00000:X00 - %MW65535:X15 | %MW00000 - %MW65535 |
%Q | %Q000.000.000 - %Q255.255.255 | ------ | *4
%QW | %QW000.000.000:X00 - %QW255.255.255:X15 | %QW000.000.000 - %QW255.255.255 | *4
%S | %S000 - %S000 | ------ | *5 *6
%SW | %SW000:X00 - %SW999:X15 | %SW000 - %SW999 |

*1You can set the data storing order in 32-bit data word units and 64-bit data double-word units in the Device Setting dialog box.

*2Write disable

*3For input addresses, such as %Ir.m.c, %IWr.m.c, or %IWr.m.c:Xj, with a minimum of two and a maximum of three segments. Each segment identifies a physical rack, module, and channel as necessary, for the associated I/O.

*4For output addresses, such as %Qr.m.c, %QWr.m.c, or %QWr.m.c:Xj, with a minimum of two and a maximum of three segments. Each segment identifies a physical rack, module, and channel as necessary, for the associated I/O.

*5Read/Write, depending on the bit/word number.

*6To fit with equipment variable coding, the most significant byte could be chosen by the software.

NOTE

- When you write to %IWr.m.c:Xj or %QWr.m.c:Xj variables, the Display reads the entire word, sets the defined bit, then returns the new word value to the External Device. If the ladder program writes data to this word address during the bit read/write process, the resulting data may be incorrect.

- %I, %K, %Q, and %S (and their W variants) are supported for Schneider Modbus equipment.

- When the [Base Address] check box is selected for a 8-bit data type array or structure, and a %MW or %KW address is specified as the device address, the bottom byte and top byte of consecutive addresses is allocated to each element.
  Example: BYTE type array Var1
  Var1[0]...%MW1:X0
  Var1[1]...%MW1:X8
  Var1[2]...%MW2:X0

###

#### Non IEC variable address range

The following table lists the equipment variable address range if you haven’t selected the IEC 61131 Syntax.

Device | Bit Address | Word address | 32 bits | Remarks
--- | --- | --- | --- | ---
Coils (C) | 00001 - 65536 | ------ | or *1 |
Discrete Inputs | 10001 - 165536 | ------ | *2 *3
Single word Input Registers | 30001,00 - 365536,15 | 30001 - 365536 | *2
Single word Holding Registers | 40001,00 - 465536,15 | 40001 - 465536 | *3
Double word Input Registers | 30001,00 - 365536,15 | 30001 - 365536 | *2
Double word Holding Registers | 40001,00 - 465536,15 | 40001 - 465536 |

*1You can set the data storing order in 32-bit data word units and 64-bit data double-word units in the Device Setting dialog box.

*2Write disable

*3When you write to the bit address, the Display reads the entire word, sets the defined bit, then returns the new word value to the External Device. If the ladder program writes data to this word address during the bit write process, the resulting data may be incorrect.

#### IEC equivalents

The following table gives the equivalents between the Modbus syntax and the IEC61131 syntax.

Device | MODBUS Syntax | IEC61131 Syntax
--- | --- | ---
Format | Range | First element | Format | Range | First element
Internal coils and Output coils | 00001+i | i = 0 to 65535 | 00001*1 | %Mi | i = 0 to 65535 | %M0
Holding register (word) | 40001+i | i = 0 to 65535 | 40001 | %MWi | i = 0 to 65535 | %MW0
Holding register (word bit) | 40001+i,j*2 | i = 0 to 65535 j = 0 to 15 | 40001,0 | %MWi:Xj | i = 0 to 65535 j = 0 to 15 | %MW0:X0
Holding register (double word) | 40001+i | i = 0 to 65534 | 40001 | %MDi | i = 0 to 65534 | %MD0
Holding Register (float) | 40001+i | i = 0 to 65534 | 40001 | %MFi | i = 0 to 65534 | %MF0
Holding register (string) | 40001+i | i = 0 to k*3 | 40001 | %MWi | i = 0 to k*3 | %MW0

*1Leading zeros "00001" must be preserved.

*2j is a bit index with the following convention: 0 for the least significant bit and 15 for the most significant bit.

*3k is equal to 65535 - string length / 2 rounded to the upper value. For instance with a 11 characters string we’ve got 65535 - 6 = 65529.

NOTE

- The addresses 100000 and 300000 cannot be accessed using IEC61131 syntax. Also, non-IEC syntax cannot access memory areas %I, %Q, %K, and %S.

#### IEC61131 Syntax Address Mapping

Address mapping in BLUE is as follows. %MD and %MF use two sequential words form the specified address. The %KW, %KD, and %KF are mapped similarly.

#### Symbol Specification

You can import symbol data from the project created by your programming software.

Device | Bit Address | Word Address | 32 bit | Notes
--- | --- | --- | --- | ---
BOOL EBOOL | Single | <SYMNAME> | - | - | *1 *2
1D Array | <SYMNAME>[xl] - <SYMNAME>[xh]
2D Array | <SYMMNAME>[xl,yl] - <SYMNAME>[xh,yh]
3D Array | <SYMNAME>[xl,yl,zl] - <SYMNAME>[xh,yh,zh]
BYTE | Single | - | <SYMNAME> |  | *1 *2
1D Array | <SYMNAME>[xl] - <SYMNAME>[xh]
2D Array | <SYMNAME>[xl,yl] - <SYMNAME>[xh,yh]
3D Array | <SYMNAME>[xl,yl,zl] - <SYMNAME>[xh,yh,zh]
INT UINT WORD | Single | - | <SYMNAME> | *1 *2
1D Array | <SYMNAME>[xl] - <SYMNAME>[xh]
2D Array | <SYMNAME>[xl,yl] - <SYMNAME>[xh,yh]
3D Array | <SYMNAME>[xl,yl,zl] - <SYMNAME>[xh,yh,zh]
DINT UDINT DWORD | Single | - | <SYMNAME> | *1 *2
1D Array | <SYMNAME>[xl] - <SYMNAME>[xh]
2D Array | <SYMNAME>[xl,yl] - <SYMNAME>[xh,yh]
3D Array | <SYMNAME>[xl,yl,zl] - <SYMNAME>[xh,yh,zh]
REAL TIME | Single | - | <SYMNAME> |  | *1 *2
1D Array | <SYMNAME>[xl] - <SYMNAME>[xh]
2D Array | <SYMNAME>[xl,yl] - <SYMNAME>[xh,yh]
3D Array | <SYMNAME>[xl,yl,zl] - <SYMNAME>[xh,yh,zh]
STRING | Single | - | <SYMNAME> | - | *1 *2
1D Array | <SYMNAME>[xl] - <SYMNAME>[xh]
2D Array | <SYMNAME>[xl,yl] - <SYMNAME>[xh,yh]
3D Array | <SYMNAME>[xl,yl,zl] - <SYMNAME>[xh,yh,zh]
LWORD | Single | - | <SYMNAME> | - | *1 *2
1D Array | <SYMNAME>[xl] - <SYMNAME>[xh]
2D Array | <SYMNAME>[xl,yl] - <SYMNAME>[xh,yh]
3D Array | <SYMNAME>[xl,yl,zl] - <SYMNAME>[xh,yh,zh]

*1 <SYMNAME>: When referring to structures, the Symbol Name includes the structure name. The maximum number of characters for the Symbol Name is 255, which includes delimiters and elements.
Example)
BOOL type single symbol "BOOLSYMBOL"
BOOL type 1D Array "BOOL1D[10]
WORD type 2D Array "WORD2D[10,10]
UDINT type 3D Array "UDINT3D[0,1,2]
STRING in User Defined Structure [STRUCT001] "STRUCT001.STRINGSYM"

*2 The number of elements for each dimension is shown from "l" (the first number of the elements) to "h" (the last number of elements).

NOTE

- Import EcoStruxure Control Expert (former Unity Pro) XVM file for using elements of array, structure and function block. These elements of the XSY file are not supported by BLUE.

- If you use unlocated variables, import a XVM file. Unlocated variables cannot be imported by a XSY file.

- When using Safety variables or unlocated Process variables, import the XVM file generated on download by EcoStruxure Control Expert when its [Project autosaving on download] setting's [save XVM] check box is selected.

- If you export symbols by folder, during import the symbols in the folder are imported as normal variables. Therefore, when Safety or Process variables are included in a folder, the prefix is removed from each variable.

- When using symbol data in BLUE, in the [Properties] window of the equipment, set [String Mode] to [Little Endian].

- You cannot write values to a safety variable from the Display.

- The Redundant CPU variables in M580 cannot be imported.

- User-defined Function Blocks cannot be imported.

- For symbol import procedures, see the following.
  Importing Symbols from External Devices

#### Supported Function Codes

The supported function code list is shown below.

Function Code (Hex) | Description
FC01(0x01) | Read the ON/OFF status of the slave coil (0X).
FC02(0x02) | Read the ON/OFF status of the slave discrete input (1X).
FC03(0x03) | Read the description of the slave holding register (4X).
FC04(0x04) | Read the description of the slave input register (3X).
FC05(0x05) | Change (Write) the slave coil (0X) status to either ON or OFF.
FC06(0x06) | Change (write) the description of the slave holding register (4X).
FC15(0x0F) | Change (Write) the slave consecutive multiple coils (0X) status to either ON or OFF.
FC16(0x10) | Change (write) the descriptions of the slave consecutive multiple holding registers (4X).

NOTE

- FC15/FC16 are used for writing. FC05/FC06 are used for the External Devices that do not support the function codes mentioned on the left.

NOTE

- Please refer to the precautions on manual notation for icons in the table.
  Supported Devices Symbol and Terms