西门子S7-1200 PLC的Modbus RTU寄存器映射表指令
引用于 管理员 在 2024年3月2日, 上午8:56一、Modbus RTU 指令的使用
二、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-4655351 – 125 03 读取保持寄存器
每个请求1-125个字0 30001-39999 1 – 125 04 读取输入字
每个请求1-125个字1 10001 – 19999 1 05 写入输出位
每个请求1位1 .40001-49999(等同于400001-409999
.400001-4655351 06 写入保持寄存器
每个请求1个字1 10001 – 19999 2 -1968 15 写入多个输出位
每个请求2-1968个位1 .40001-49999(等同于400001-409999
.400001-4655352-123 16 写入多个保持寄存器
每个请求2-123个字2 10001 – 19999 1 – 1968 15 写入输出位
每个请求1-1968个位2 .40001-49999(等同于400001-409999
.400001-4655351 -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
一、Modbus RTU 指令的使用
二、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 |