一、Modbus RTU 指令的使用

西门子S7-1200 PLC的Modbus RTU寄存器映射表指令插图1

二、Modbus RTU 主站编程

  • 主站编程需调用 Modbus Comm_LoadModbus_Master指令:
  • Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行组态;
  • Modbus Master 指令可通过由 Modbus Comm Load 指念组态的端口作为 Modbus 主站进行通信。

Modbus RTU 主站指令 Modbus Comm Load 参数

引脚说明
REQ上升沿触发
PORT通信端口的硬件标识符
BAUD波特率选择: 3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200
PARITY奇偶检验选择: 0-无; 1-奇校验; 2-偶校验
FLOW_CTRL流控制选择: 0-(默认值) 无流控制
RTS_ON_DLYRTS 延时选择: 0- (默认值)

三、详细说明

Modbus RTU 主站编程

1.Modbus RTU 主站指令 Modbus Comm_Load 参数

RESP_TO响应超时: 默认值= 1000 ms。Modbus_Master 允许用于从站响应的时间(以毫秒为单位)。
MB_DB对Modbus_Master或 Modbus_Slave 指令的背景数据块的引用。 MB_DB 参数必须与Modbus_Master 或Modbus_Slave 指今中的静态变量MB_DB参数相连。
DONE如果上一个请求完成并且没有错误,DONE位将变为 TRUE并保持一个周期。
ERROR如果上一个请求完成出错,则ERROR位将变为TRUE并保持一个周期。STATUS参数中的错误代码仅在ERROR=TRUE的周期内有效。
STATUS端口组态错误代码,请参考 TIAPortal 软件在线帮助或S7-1200系统手册

2.Modbus RTU 主站指令 Modbus Master 参数

引脚说明
EN使能端
REQTRUE=请求向 Modbus 从站发送数据,建议采用上升沿触发
MB_ADDRModbus RTU 从站地址。默认地址范围:0至247;扩展地址范围:至65535。值0被保留用于将消息广播到所有 Modbus 从站
MODE模式选择: 指定请求类型(读取或写入)。
DATA ADDR从站中的起始地址: 指定 Modbus 从站中将供访问的数据的起始地址
DATA_LEN数据长度:指定要在该请求中访问的位数或字数。
DATA PTR数据指针: 指向要进行数据写入或数据读取的 M区或数据块地址。
DONE完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE一个扫描周期时
间。
BUSYFALSE-Modbus Master 无激活命令:TRUE -Modbus Master 命令执行中。
ERROR如果上一个请求完成出错,则ERROR位将变为TRUE 并保持一个周期。STATUS参数中的错误代码仅在ERROR=TRUE的周期内有效。
STATUS端口组态错误代码,请参考 TIA Portal 软件在线帮助或S7-1200 系统手册。

3.MB MODE、MB DATA ADDR、MB DATA LEN、Modbus RTU功能码等之间的关系

MB_MODEMB_DATA ADDRMB_DATA_LENModbus RTU 功能码操作和数据
01-99991-200001读取输出位
每个请求1-2000个位
010001-199991-200002读取输入位
每个请求1-2000个位
0.40001-49999(等同于400001-409999
.400001-465535
1 – 12503读取保持寄存器
每个请求1-125个字
030001-399991 – 12504读取输入字
每个请求1-125个字
110001 – 19999105写入输出位
每个请求1位
1.40001-49999(等同于400001-409999
.400001-465535
106写入保持寄存器
每个请求1个字
110001 – 199992 -196815写入多个输出位
每个请求2-1968个位
1.40001-49999(等同于400001-409999
.400001-465535
2-12316写入多个保持寄存器
每个请求2-123个字
210001 – 199991 – 196815写入输出位
每个请求1-1968个位
2.40001-49999(等同于400001-409999
.400001-465535
1 -12316写入保存寄存器
每个请求1-123个字
1111详情见下文
80108详情见下文
81108详情见下文
1040-655351-12504读取输入字
每个请求1-125个字

11 (操作和数据) : 读取服务器的状态字和事件计数器:

1.状态字反映了处理的状态(0-未处理,0xFFFFF-正在处理里);

2.Modbus请求成功执行时,事件计数器将递增。如果执行Modbus功能时出错则服务器将发送消息但不会递增事件计数器。
80(操作和数据) : 通过诊断代码0x0000检查服务器状态(返回循环测试-服务器发回请求

每次调用1个字
81 (操作和数据) : 通过诊断代码0x000A复位服务器的事件计数器:
每次调用1个字

Modbus RTU 从站编程

引脚说明
MB ADDRModbus 从站的标准寻址: 标准寻址范围(1到247),扩展寻址范围(0到65535)
MB_HOLD_REG数据指针,指向 Modbus 保持寄存器的地址,Modbus 保持寄存器可以为 M存储区或DB 数据区
NDR可用的新数据:
>FALSE: 无新数据。
>TRUE: 表示新数据已由 Modbus 主站写入,如果上一个请求完成并且没有错误,NDR位将变为 TRUE 并保持一个周期。
DR读取数据:
>FALSE:无新数据。
>TRUE:表示该指令已将 Modbus 主站接收到的数据存储在目标区域中。如果上一个请求完成并且没有错误,DR 位将变为 TRUE 并保持一个周期。
ERROR如果上一个请求完成出错,则 ERROR 位将变为 TRUE 并保持一个周期。 如果执行因错误而终止,则STATUS 参数中的错误代码仅在ERROR=TRUE的周期内有效.
STATUS错误代码

2.Modbus RTU 从站数据区定义

地址区定义说明
输出位Q0.0 开始Q0.0为地址1,Q0.1为地址 2,Q0.7为地址 8,Q1.0为地址 9…
输入位I0.0开始I0.0为地址10001,I0.1 为地址 10002,I0.7 为地址 10008,I1.0 为地10009…
输入寄存器IW0 开始IW0 为地址30001,IW2 为地址 30002,IW4 为地址 30003…
保持寄存器由MB_HOLD_REG定义指针指向的第一个字为 40001,第二个字为40002.
1.例如:MB_HOLD REG为 P#M100.0 WORD8,则 MW100 为 40001,MW102 为 40002,MW104 为 40003…MW114为40008
2.例如: MB_HOLD_REG为优化 DB 中 INT 数组[0…7],数组名为“XXX”AA,则“XXX”.AA[0]为40001,“XXX”AA[1]为40002,“XXX”.AA[2]为40003.“XXX.AA[7]为40008

相关新闻

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

邮箱

cloud@modbus.cn

QQ
QQ
微信
微信
分享本页
返回顶部