FP_MODBUS_MASTER

将数据写入从站或从从站中读取

使用此指令,通过采用Modbus RTU协议的通信端口,将数据从主站写入从站或从从站读取数据(如所用端口的系统寄存器中所定义)。 确保对主站和从站设置相同的协议。

参数

输入

Port (WORD, INT, UINT)

根据PLC的类型指定通信端口:

  • COM端口,例如SYS_COM0_PORT

  • 以太网端口,例如SYS_ETHERNET_USER_CONNECTION_1

  • MCU/SCU,例如COM01中的16#xx01 (xx = 插槽编号)

SlaveAddress (WORD, INT, UINT)

从站的站号

  • 仅对于FP7

    • 函数代码05、06、15、16:0–247

      当使用SCU且为从站单元编号指定“0”时,将执行全局传输。在这种情况下,从站单元没有响应信息。

    • 函数代码01、02、03、04:1-247

  • 对于其他PLC:

    • 函数代码05、06、15、16:0–99

      当为从站单元编号指定“0”时,将执行全局传输。在这种情况下,从站单元没有响应信息。

    • 函数代码01、02、03、04: 1-99

如果SYS_ETHERNET_USER_CONNECTION_xx应用到输入Port,则设置为1

FunctionCode* (WORD, INT, UINT)

SYS_MODBUS_01_READ_COIL

SYS_MODBUS_02_READ_INPUT

SYS_MODBUS_03_READ_HOLDING_REGISTER

SYS_MODBUS_04_READ_INPUT_REGISTERS

SYS_MODBUS_05_FORCE_COIL

SYS_MODBUS_06_PRESET_REGISTER

SYS_MODBUS_15_FORCE_COILS

SYS_MODBUS_16_PRESET_REGISTERS

StartRegister (WORD, INT, UINT)

起始地址(0–65535)。地址类型根据由FunctionCode*指定的命令而定。

NumberOfRegisters* (WORD, INT, UINT)

发送的位数或字数。

  • 1表示函数代码05、06

  • 函数代码01、02为1–2040

  • 函数代码15为2–2040

  • 函数代码03、04为1–127

  • 函数代码16为2–127

MasterData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

要写入从站的数据在主站上的源地址。

输出

Result (WORD, INT, UINT)

仅对于FP7 如需查看所有错误代码的说明,请参阅Modbus/MEWTOCOL通信错误代码表。

对于其他PLC:设置为0

时间图

  1.  (1) 主站通信清除–发送标志,例如sys_bIsEthernetUserConnection1MasterCommunication
  2.  (2) 确认主站通信清除–发送标志为TRUE且主站通信发送标志为FALSE
  3.  (3) 主站通信发送标志,例如sys_bIsEthernetUserConnection1MasterCommunicationActive

    发送过程中主站通信发送标志TRUE

    发送完成后主站通信发送标志FALSE

  4.  (4) 执行此指令
  5.  (5) 主站通信发送完成标志,例如sys_bIsEthernetUserConnection1CommunicationError

    正常完成FALSE

    异常完成TRUE

  6.  (6) 发送数据
  7.  (7) 处理收到的响应

错误标志

sys_bIsOperationErrorHold(变为TRUE并保持为TRUE)
  • 如果使用索引寄存器指定的区域超出限制。

  • 如果从站或主站数据超出可用地址范围。
  • 如果通信模式未被设置为MEWTOCOL-COM主站/从站或Modbus RTU主站/从站。
  • 如果所选的COM端口需要尚未安装的通信插件。
sys_bIsOperationErrorNonHold(对于一次扫描变为TRUE)
  • 如果使用索引寄存器指定的区域超出限制。

  • 如果从站或主站数据超出可用地址范围。
  • 如果通信模式未被设置为MEWTOCOL-COM主站/从站或Modbus RTU主站/从站。
  • 如果所选的COM端口需要尚未安装的通信插件。

示例

SYS_MODBUS_01_READ_COIL

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

针对已连接的从站为通过系统寄存器被配置为Modbus RTU从站的Panasonic PLC的特殊情况,将从下述项目中读取一个或多个位:

  • Y输出

  • R内部继电器

示例

执行Modbus命令01:从以变量StartRegister设置的起始寄存器56起始的Modbus从站中读取1位。然后命令会将1位存储至以变量bBool2设置的地址起始的主站中。从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,起始寄存器56将对应于输出Y383*16+8=56)。

SYS_MODBUS_02_READ_INPUT

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

针对已连接的从站为通过系统寄存器被配置为Modbus RTU从站的Panasonic PLC的特殊情况,将从下述项目中读取一个或多个位:

  • X输入

示例

执行Modbus命令02:从以变量StartRegister设置的起始寄存器66起始的Modbus从站中读取1位。然后命令会将1位存储至以变量bBool2设置的地址起始的主站中。从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,起始寄存器66将对应于输入X424*16+2=66)。

SYS_MODBUS_03_READ_HOLDING_REGISTER

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

针对已连接的从站为通过系统寄存器被配置为Modbus RTU从站的Panasonic PLC的特殊情况,将从下述项目中读取一个或多个位:

  • DT(数据寄存器)

示例

执行Modbus命令03:从以变量StartRegister设置的起始寄存器100 起始的Modbus从站中读取2个字。然后命令会将2个字存储至以变量rCount2设置的地址起始的Modbus主站2中。从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,起始寄存器100将对应于数据寄存器DT100

寄存器最大数量:127。

SYS_MODBUS_04_READ_INPUT_REGISTERS

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

针对已连接的从站为通过系统寄存器被配置为Modbus RTU从站的Panasonic PLC的特殊情况,将从下述项目中读取一个或多个位:

  • WL0–WL127链接继电器

  • LD0–LD256链接数据寄存器

示例

执行Modbus命令04:从以变量StartRegister设置的起始寄存器2018 起始的Modbus从站中读取7个字。然后命令会将7个字存储至以变量MasterData设置的由LD25起始的主站中。从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,起始寄存器2018将对应于链接数据寄存器LD18

寄存器最大数量:127。

SYS_MODBUS_05_FORCE_COIL

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:

  • Y输出

  • R内部继电器

示例

执行Modbus命令05:向以变量MasterData设置的地址WY1起始的Modbus从站中写入1位。然后命令会将1位存储至以变量StartRegister设置的起始寄存器35起始的Modbus从站中。从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,地址35将对应于输出Y232*16+3=35)。

写入多位数据时,使用SYS_MODBUS_15_FORCE_COILS常量。

寄存器最大数量:1

SYS_MODBUS_06_PRESET_REGISTER

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:

  • DT(数据寄存器)

示例

执行Modbus命令 06:向以变量MasterData设置的地址 DT14起始的Modbus从站中写入1个字。然后命令会将1个字存储至以变量StartRegister设置的起始寄存器21起始的Modbus从站中。从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,起始寄存器21将对应于数据寄存器DT21

写入多位数据时,使用SYS_MODBUS_15_FORCE_COILS常量。

寄存器最大数量:1

SYS_MODBUS_15_FORCE_COILS

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:

  • Y输出

  • R内部继电器

示例

执行Modbus命令15:向以变量MasterData设置的地址WY1起始的Modbus从站中写入64位。然后命令会将64位存储至以变量StartRegister设置的起始寄存器48起始的Modbus从站中。 从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,地址48将对应于输出Y303*16=48)。

SYS_MODBUS_16_PRESET_REGISTERS

将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。

已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:

  • DT(数据寄存器)

示例

执行Modbus命令16:向以变量rCount1设置的地址起始的Modbus从站中写入数据。然后命令会将数据存储至以变量StartRegister设置的起始寄存器100起始的Modbus从站2中。从站的地址根据设备的Modbus规格转换为设备特定地址。

如果已连接的从站为Panasonic PLC,起始寄存器100将对应于数据寄存器DT100

寄存器最大数量:127。

最后更新日期: 2025-01-10此页面上的反馈松下热线