功能块 FB_WriteReadVar 可用于:
o在功能块的同一执行周期内(单次事务)写入连续的内部寄存器并读回它们的值,
o写入连续的内部寄存器并读取不同的寄存器。
下图显示了功能块 FB_WriteReadVar 的引脚图:
功能块 FB_WriteReadVar 可以向采用 Modbus 协议的外部设备读取和写入内部寄存器(仅限 MW 类型)。读取和写入操作包含在单个事务中。请注意,写入操作将会首先执行。
下表描述了 TwidoEmulationSupport 库中功能块的输入变量:
输入 |
数据类型 |
描述 |
---|---|---|
i_xExecute |
BOOL |
此功能在此输入的上升沿上执行。 注意: 如果在冷复位或热复位后的第一个运行模式下的任务循环中将 i_xExecute 设置为“真”,则检测不到上升沿。 |
i_xAbort |
BOOL |
停止上升沿上正在执行的操作。 |
i_iLink |
INT |
指示用于通讯的端口。 o1 = 串行端口 1 o2 = 串行端口 2 o3 = 以太网 / Modbus TCP |
i_iId |
INT |
目标外部设备的设备标识符: o串行线路从站地址:1 至 247 或 o以太网索引:1 至 16 (取决于链路配置)。 |
i_iTimeout |
INT |
设置从调制解调器接收响应须等待的最长时间。指定时以毫秒作为单位。0 值表示没有强制执行超时。 |
i_diFirstReadObj |
DINT |
从其中读取值的第一个对象的地址。 |
i_iReadQuantity |
INT |
要读取的对象的数量。 |
i_pbyReadBuffer |
POINTER TO BYTE |
读取对象值存储所在的缓冲区的地址。 |
i_diFirstWriteObj |
DINT |
从其中写入值的第一个对象的地址。 |
i_iWriteQuantity |
INT |
要写入的对象的数量. |
i_pbyWriteBuffer |
POINTER TO BYTE |
用来存储要写入的对象值的缓冲区的地址。 |
i_astRemoteDevices |
ARRAY [1..Gc_uiRemoteAddressTableLen] OF ST_RemoteDevice |
包含 Modbus TCP 通讯所用远程设备地址的列表。 |
下表描述了 TwidoEmulationSupport 库中功能块的输出变量:
输出 |
数据类型 |
描述 |
---|---|---|
q_xDone |
BOOL |
如果功能成功完成,q_xDone 将设置为“真”。 |
q_xBusy |
BOOL |
如果功能正在执行,q_xBusy 将设置为“真”。 |
q_xAborted |
BOOL |
如果使用 i_xAbort 输入中止功能,q_xAborted 将设置为“真”。 |
q_xError |
BOOL |
如果功能由于检测到错误而停止,q_xError 将设置为“真”。 |
q_etCommError |
SEN.CommunicationErrorCodes |
q_etCommError 包含了通讯错误代码 SEN.CommunicationErrorCodes 的值。 |
q_etOperError |
SEN.OperationErrorCodes |
q_etOperError 包含了操作错误代码 SEN.OperationErrorCodes 的值。 |