将数据写入从站或从从站中读取
可用的函数代码(包含编程示例)
SYS_MODBUS_03_READ_HOLDING_REGISTER
SYS_MODBUS_04_READ_INPUT_REGISTERS
SYS_MODBUS_16_PRESET_REGISTERS
使用此指令,通过采用Modbus RTU协议的通信端口,将数据从主站写入从站或从从站读取数据(如所用端口的系统寄存器中所定义)。确保对主站和从站设置相同的协议。
输入
根据PLC的类型指定通信端口:
COM端口,例如SYS_COM0_PORT
以太网端口,例如SYS_ETHERNET_USER_CONNECTION_1
MCU/SCU,例如COM01中的16#xx01 (xx = 插槽编号)
从站的站号 (0–255)
如果SYS_ETHERNET_USER_CONNECTION_xx应用到输入Port,则设置为1
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
起始地址(0–65535)。地址类型根据由FunctionCode*指定的命令而定。
发送的位数或字数。
函数代码01、02为1–2040
函数代码15为2–2040
函数代码03、04为1–127
函数代码16为2–127
要写入从站的数据在主站上的源地址。
输出
0:正常完成
1:通信端口用于主站通信
2:通信端口用于从站通信
3:已超过可同时使用的最大主站通信指令数
4:发送超时
5:响应接收超时
6:接收数据错误
通信模式 |
使用SCU或ET-LAN时 |
---|---|
MODBUS |
1-247 |
对于通过Modbus进行的连接,请指定"1"。目标将由IP地址决定。
通信模式 |
地址范围 |
---|---|
MODBUS |
0–65535 (16#FFFF) |
传输方法 |
发送的数据量 |
要使用的命令 |
---|---|---|
字传输 |
1–127字 |
|
位传输 |
1–2040位 |
|
从CPU单元的COM1端口发送指令,从外部设备(站号1)的数据区域DT400–DT401读取数据,并写入PLC的数据寄存器DT100–DT101。
确认主站通信清除–发送标志为TRUE (XC)且未在同一端口中进行发送(YC),然后执行SEND指令。
要执行RECV指令,请指定合作伙伴站号(U1)、起始地址(DT400)、数据量(U2)和用于存储数据的PLC起始地址(DT100)。
仅在选择了MEWTOCOL或MODBUS时主站通信才会被启用。确认相应通道的主站通信清除–发送标志(XC–XE)为TRUE,然后执行SEND/RECV指令。
对于正在进行主站通信的通信端口,不可执行另一个SEND/RECV指令。确认主站通信发送标志(YC–YE)为FALSE,然后执行指令。
对于正在进行站通信的端口,不可执行SEND/RECV指令。
如没有响应,则主站通信发送标志(YC–YE)将在设置于CPU配置中的超时期间内保持为TRUE。
对于不同的COM端口,最多可同时执行16个SEND/RECV指令。
COM端口号 |
名称 |
说明 |
||
1 |
2 |
0 |
||
XC |
XD |
XE |
主站通信清除–发送标志 |
当MEWTOCOL-COM、MEWTOCOL-COM或MODBUS-RTU设置为通信模式且PLC处于RUN模式时,将变为TRUE。 |
YC |
YD |
YE |
主站通信发送标志 |
由SEND和RECV指令发送数据时变为TRUE。完成发送后变为FALSE。 |
Y0 |
Y1 |
Y2 |
主站通信发送完成标志 |
当程序控制通信或主站通信发送正常完成时变为TRUE,当发送异常完成时变为FALSE。 |
触点用于读取操作状态。请勿使用用户程序向其中写入内容。
从CPU单元的LAN端口发送指令,从外部设备的数据区域DT400–DT401读取数据,并写入PLC的数据寄存器DT100–DT101。
确认连接1的主站通信清除–发送标志为TRUE (X90)且未在同一端口中进行发送(Y90),然后执行发送指令。
要执行RECV指令,请指定合作伙伴站号(U1)、起始地址(DT400)、数据量(U2)和用于存储数据的PLC起始地址(DT100)。
仅在选择了MEWTOCOL或MODBUS时主站通信才会被启用。确认相应连接的主站通信清除–发送标志(X90–X9F)为TRUE,然后执行SEND/RECV指令。
对于正在进行主站通信的连接,不可执行另一个SEND/RECV指令。确认主站通信发送标志(Y90–Y9F)为FALSE,然后执行指令。
对于正在进行从站通信的连接,不可执行SEND/RECV指令。
对于不同的端口,最多可同时执行16个SEND/RECV指令。
要在FP7的LAN端口之间进行通信,请为合作伙伴站号指定“U1”。目标由IP地址确定。
发送过程中:主站通信发送标志为TRUE
发送完成后:主站通信发送标志为FALSE
正常完成:FALSE
异常完成:TRUE
I/O编号 |
名称 |
说明 |
X90–X9F |
主站通信清除–发送标志 |
当MEWTOCOL-COM、MEWTOCOL-COM或MODBUS-RTU设置为通信模式且PLC处于RUN模式时,将变为TRUE。 |
Y90–Y9F |
主站通信发送标志 |
由SEND和RECV指令发送数据时变为TRUE。完成发送后变为FALSE。 |
Y70–Y7F |
主站通信发送完成标志 |
当程序控制通信或主站通信发送正常完成时变为TRUE,当发送异常完成时变为FALSE。 |
触点用于读取操作状态。请勿使用用户程序向其中写入内容。
将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。
针对已连接的从站为通过系统寄存器被配置为Modbus RTU从站的Panasonic PLC的特殊情况,将从下述项目中读取一个或多个位:
Y(输出)
R (内部继电器)
执行Modbus命令01:从以变量StartRegister设置的起始寄存器56起始的Modbus从站中读取1位。然后命令会将1位存储至以变量bBool2设置的地址起始的主站中。 从站的地址根据设备的Modbus规格转换为设备特定地址。
如果已连接的从站为Panasonic PLC,起始寄存器56将对应于输出Y38(3*16+8=56)。
将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。
针对已连接的从站为通过系统寄存器被配置为Modbus RTU从站的Panasonic PLC的特殊情况,将从下述项目中读取一个或多个位:
执行Modbus命令02:从以变量StartRegister设置的起始寄存器66起始的Modbus从站中读取1位。然后命令会将1位存储至以变量bBool2设置的地址起始的主站中。 从站的地址根据设备的Modbus规格转换为设备特定地址。
如果已连接的从站为Panasonic PLC,起始寄存器66将对应于输入X42(4*16+2=66)。
将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。
针对已连接的从站为通过系统寄存器被配置为Modbus RTU从站的Panasonic PLC的特殊情况,将从下述项目中读取一个或多个位:
执行Modbus命令03:从以变量StartRegister设置的起始寄存器100 起始的Modbus从站中读取2个字。然后命令会将2个字存储至以变量rCount2设置的地址起始的Modbus主站2中。 从站的地址根据设备的Modbus规格转换为设备特定地址。
如果已连接的从站为Panasonic PLC,起始寄存器100将对应于数据寄存器DDT100。
寄存器最大数量:127。
将此常量应用于输入参数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。
将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。
已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:
Y(输出)
R (内部继电器)
执行Modbus命令05:向以变量MasterData设置的地址WY1起始的Modbus从站中写入1位。然后命令会将1位存储至以变量StartRegister设置的起始寄存器35起始的Modbus从站中。 从站的地址根据设备的Modbus规格转换为设备特定地址。
如果已连接的从站为Panasonic PLC,地址35将对应于输出Y23(2*16+3=35)。
使用SYS_MODBUS_15_FORCE_COILS函数代码写入多个位数据时
寄存器最大数量: 1
将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。
已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:
执行Modbus命令 06:向以变量MasterData设置的地址 DT14起始的Modbus从站中写入1个字。然后命令会将1个字存储至以变量StartRegister设置的起始寄存器21起始的Modbus从站中。 从站的地址根据设备的Modbus规格转换为设备特定地址。
如果已连接的从站为Panasonic PLC,起始寄存器21将对应于数据寄存器DT21。
使用SYS_MODBUS_15_FORCE_COILS函数代码写入多个位数据时
寄存器最大数量: 1
将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。
已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:
Y(输出)
R (内部继电器)
执行Modbus命令15:向以变量MasterData设置的地址WY1起始的Modbus从站中写入64位。然后命令会将64位存储至以变量StartRegister设置的起始寄存器48起始的Modbus从站中。 从站的地址根据设备的Modbus规格转换为设备特定地址。
如果已连接的从站为Panasonic PLC,地址48将对应于输出Y30(3*16=48)。
将此常量应用于输入参数FunctionCode*时,将执行相应的Modbus命令。
已连接的从站为Modbus RTU模式的Panasonic PLC时,一个或多个位将被写入:
执行Modbus命令16:向以变量rCount1设置的地址起始的Modbus从站中写入数据。然后命令会将数据存储至以变量StartRegister设置的起始寄存器100起始的Modbus从站2中。 从站的地址根据设备的Modbus规格转换为设备特定地址。
如果已连接的从站为Panasonic PLC,起始寄存器100将对应于数据寄存器DDT100。
寄存器最大数量:127。