FB_MBUdpReadWriteRegs (Modbus function 23)

 FB_MBUdpReadWriteRegs (Modbus function 23) 1:

This function first reads 1 to 128 output registers (16 bit) and then writes 1 to 128 output registers (16 bit).

VAR_INPUT

VAR_INPUT
    sIPAddr         : STRING(15);
    nTCPPort        : UINT:= MODBUS_TCP_PORT;
    nUnitID         : BYTE:=16#FF;
    nReadQuantity   : WORD;
    nMBReadAddr     : WORD;
    nWriteQuantity  : WORD;
    nMBWriteAddr    : WORD;
    cbDestLength    : UDINT;
    pDestAddr       : UDINT;
    cbSrcLength     : UDINT;
    pSrcAddr        : UDINT;
    bExecute        : BOOL;
    tTimeout        : TIME;
END_VAR

sIPAddr    : Is a string containing the IP address of the target device.

nTCPPort    : Port number of the target device.

nUnitID:   Identification number of a serial sub-network device. If a device is addressed directly via TCP/IP, this value must be 16#FF.

nReadQuantity  : Number of output registers (data words) to be read. The value of nReadQuantity must be > 0.

nMBReadAddr : Start address of the output registers to be read (word offset).

nWriteQuantity  : Number of output registers (data words) to be written. The value of nWriteQuantity must be > 0.

nMBWriteAddr : Start address of the output registers to be written (word offset).

cbDestLength : Contains the max. byte size of the destination buffer. The minimum destination buffer byte size must be nReadQuantity * 2.

pDestAddr  : Contains the address of the destination buffer into which the data are to be read. The buffer can be a single variable, an array or a structure, whose address can be found with the ADR operator.

cbSrcLength : Contains the max. byte size of the source buffer. The minimum source buffer byte size must be nWriteQuantity * 2.

pSrcAddr  : Contains the address of the source buffer containing the data to be written. The buffer can be a single variable, an array or a structure, whose address can be found with the ADR operator.

bExecute: The function block is activated by a rising edge at this input.

tTimeout: States the length of the timeout that may not be exceeded by execution of the ADS command.

VAR_OUTPUT

VAR_OUTPUT
    bBUSY       : BOOL;
    bError      : BOOL;
    nErrId      : UDINT;
    cbRead      : UDINT;
END_VAR

bBusy :    When the function block is activated this output is set. It remains set until an acknowledgement is received.

bError :    If an ADS error should occur during the transfer of the command, then this output is set once the bBusy output is reset.

nErrId :    Supplies the ADS error number when the bError output is set.

cbRead:    Contains the number of bytes currently read.

Function specific ADS error code

Possible reason

0x8001 

Modbus function not implemented

0x8002 

Invalid address or length

0x8003

Invalid parameters:

- wrong number of registers

0x8004

Modbus server error

Requirements

Development environment

Target system type

PLC libraries to be linked

TwinCAT v2.8.0

PC (i386)

TcModbusSrv.Lib