Please or 注册 to create posts and topics.

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

一、Modbus RTU 指令的使用

Modbus技术论坛插图2

二、Modbus RTU 主站编程

  • 主站编程需调用 Modbus Comm_Load 和 Modbus_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_DLY RTS 延时选择: 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 使能端
REQ TRUE=请求向 Modbus 从站发送数据,建议采用上升沿触发
MB_ADDR Modbus RTU 从站地址。默认地址范围:0至247;扩展地址范围:至65535。值0被保留用于将消息广播到所有 Modbus 从站
MODE 模式选择: 指定请求类型(读取或写入)。
DATA ADDR 从站中的起始地址: 指定 Modbus 从站中将供访问的数据的起始地址
DATA_LEN 数据长度:指定要在该请求中访问的位数或字数。
DATA PTR 数据指针: 指向要进行数据写入或数据读取的 M区或数据块地址。
DONE 完成位:上一请求已完成且没有出错后,DONE 位将保持为 TRUE一个扫描周期时
间。
BUSY FALSE-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_MODE MB_DATA ADDR MB_DATA_LEN Modbus RTU 功能码 操作和数据
0 1-9999 1-2000 01 读取输出位
每个请求1-2000个位
0 10001-19999 1-2000 02 读取输入位
每个请求1-2000个位
0 .40001-49999(等同于400001-409999
.400001-465535
1 – 125 03 读取保持寄存器
每个请求1-125个字
0 30001-39999 1 – 125 04 读取输入字
每个请求1-125个字
1 10001 – 19999 1 05 写入输出位
每个请求1位
1 .40001-49999(等同于400001-409999
.400001-465535
1 06 写入保持寄存器
每个请求1个字
1 10001 – 19999 2 -1968 15 写入多个输出位
每个请求2-1968个位
1 .40001-49999(等同于400001-409999
.400001-465535
2-123 16 写入多个保持寄存器
每个请求2-123个字
2 10001 – 19999 1 – 1968 15 写入输出位
每个请求1-1968个位
2 .40001-49999(等同于400001-409999
.400001-465535
1 -123 16 写入保存寄存器
每个请求1-123个字
11     11 详情见下文
80   1 08 详情见下文
81   1 08 详情见下文
104 0-65535 1-125 04 读取输入字
每个请求1-125个字

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

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

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

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

Modbus RTU 从站编程

引脚 说明
MB ADDR Modbus 从站的标准寻址: 标准寻址范围(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
微信
微信
分享本页
返回顶部