将数据写入从站或从从站中读取
可用的函数代码(包含编程示例)
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
要写入从站的数据在主站上的源地址。
建议使用相应的FP7指令,来代替使用此F型指令:FP_MODBUS_MASTER
与其他F145或F146指令相比,可通过参数FunctionCode*直接设置所需Modbus命令。
F145或F146指令只有在这两个指令均未激活时才可执行。评估程序中的"F145/F146未激活"标志以检查指令的状态。
F145指令仅请求要发送到从站的数据。实际处理发生在扫描结束时。
评估"F145/F146错误"标志以检查发送是否正常完成或有错误。
当播送时(SlaveAddress设置为0),确保仅在经过最大扫描时间后才执行发送。
如果目标地址是特殊内部寄存器(从R9000开始)、特殊数据寄存器(从DT9000/DT90000开始)或文件寄存器FL,则无法执行F145或F146指令。
主站支持的命令:
函数代码 |
系统常量 |
起始寄存器 |
寄存器数 |
参考编号(根据Modbus从站而定) |
---|---|---|---|---|
01 |
SYS_MODBUS_01_READ_COIL |
0–65535 |
1–2040 |
000001–065536 |
02 |
SYS_MODBUS_02_READ_INPUT |
0–65535 |
1–2040 |
100001–165536 |
03 |
SYS_MODBUS_03_READ_HOLDING_ REGISTER |
0–65535 |
1–127 |
400001–465536 |
04 |
SYS_MODBUS_04_READ_INPUT_ REGISTERS |
0–65535 |
1–127 |
300001–365536 |
5 |
SYS_MODBUS_05_FORCE_COIL |
0–65535 |
1 |
000001–065536 |
6 |
SYS_MODBUS_06_PRESET_ REGISTER |
0–65535 |
1 |
400001–465536 |
15 |
SYS_MODBUS_15_FORCE_COILS |
0–65535 |
2–2040 |
000001–065536 |
16 |
SYS_MODBUS_16_PRESET_ REGISTERS |
0–65535 |
2–127 |
400001–465536 |
Panasonic PLC的Modbus指定:
参考编号 |
Panasonic PLC的地址区域 |
---|---|
从000001 |
从Y0 |
从002049 |
从R0 |
从100001 |
从X0 |
从400001 |
从DT0 |
从300001 |
从WL0 |
从302001 |
从LD0 |
关于Panasonic PLC可用的参考编号及地址区域范围,请参阅PLC用户手册。如果参考编号超出支持的可用范围,将返回错误。
FP-X0, 复合通信单元: 请参阅可在互联网下载中心找到的对应手册。
将此常量应用于输入参数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。