Infosys在阅读器中打开 / AI 翻译

TS6xxx - Communication · 0 次阅读

Modbus address arrays

Modbus defines access functions for different data arrays. These data arrays are declared as variables in a TwinCAT PLC program, e.g. as word arrays, and transferred to the Modbus slave function block as input parameters. Each array has a different Modbus start address, so that the arrays can be distinguished unambiguously. This offset has to be taken account of for addressing.

Inputs

The Inputs data array usually describes the physical input data with read-only access. They can be digital inputs (bit) or analog inputs (word). The PLC programmer can decide whether or not to grant the communication partner direct access to the physical inputs. It is also possible to define an input array for Modbus communication that is not identical with the physical inputs:

  • Definition of the Modbus input data as direct image of the physical inputs. Start and size of the data array can be specified freely. They are limited by the actual size of the input process image of the controller used.
  • VAR Inputs AT%IW0 : ARRAY[0..255] OF WORD; END_VAR
  • Definition of the Modbus input data as a separate Modbus data array independent of the physical inputs
  • VAR Inputs : ARRAY[0..255] OF WORD; END_VAR

Access to the Input array via a Modbus master is possible with the following Modbus functions:

 2 : Read input status 
    4 : Read Input Registers

Addressing

The Input array is addressed with a 0 offset, i.e. address 0 as transferred in the telegram addresses the first element in the input data array.

Examples:

PLC variable

Access type

Address in the Modbus telegram

Address in the end device (device-dependant)

Inputs[0]

Word

16#0

30001

Inputs[1]

Word

16#1

30002

Inputs[0], Bit 0

Bit

16#0

10001

Inputs[1], Bit 14

Bit

16#1E

1001F

Outputs

The Outputs data array usually describes the physical output data with read and write access. Outputs can be digital outputs (coils) or analog outputs (output registers). Like for the Inputs, the array can be declared as a physical output variable or as a simple variable.

  • Definition of the Modbus output data as direct image of the physical outputs. Start and size of the data array can be specified freely. They are limited by the actual size of the output process image of the controller used.
  • VAR Outputs AT%QW0 : ARRAY[0..255] OF WORD; END_VAR
  • Definition of the Modbus output data as a separate Modbus data array independent of the physical outputs
  • VAR Outputs : ARRAY[0..255] OF WORD; END_VAR

Access to the Output array via a Modbus master is possible with the following Modbus functions:

 1 : Read Coil Status 
     3 : Read Holding Registers
     5 : Force Single Coil
     6 : Preset Single Register
    15 : Force Multiple Coils
    16 : Preset Multiple Registers

Addressing

The Output array is addressed with a 16#800 offset, i.e. address 16#800 as transferred in the telegram addresses the first element in the output data array.

Examples:

PLC variable

Access type

Address in the Modbus telegram

Address in the end device (device-dependant)

Outputs[0]

Word

16#800

40801

Outputs[1]

Word

16#801

40802

Outputs[0], Bit 0

Bit

16#800

00801

Outputs[1], Bit 14

Bit

16#81E

0081F

Memory

The Memory data array describes a PLC variable array without physical I/O assignment.

  • Definition of the Modbus memory data as PLC flags. Start and size of the data array can be specified freely.
  • VAR Memory AT%MW0 : ARRAY[0..255] OF WORD; END_VAR
  • Definition of the Modbus memory data as variable without flag address
  • VAR Memory : ARRAY[0..255] OF WORD; END_VAR

Access to the Memory array via a Modbus master is possible with the following Modbus functions:

 3 : Read Holding Registers 
     6 : Preset Single Register
    16 : Preset Multiple Registers

Addressing

The Memory array is addressed with a 16#4000 offset, i.e. address 16#4000 as transferred in the telegram addresses the first word in the output data array.

Examples:

PLC variable

Access type

Address in the Modbus telegram

Address in the end device (device-dependant)

Memory[0]

Word

16#4000

44001

Memory[1]

Word

16#4001

44002