S7-1200 Modbus RTU通讯及V3版指令Function

freefree技术Resources

这篇内容可直接阅读,适合用于基础学习和Search引流。

S7-1200 Modbus RTU通讯及V3版指令Function缩略图
🌐 This page is not yet available in English. Showing the Chinese version. Back to Chinese page.
本文目录
  1. 1. (一)概述
  2. 2. (二)Modbus RTU指令版本与限制
  3. 3. (1)博途中的 S7-1200 Modbus RTU指令
  4. 4. (三)Frequently Asked Questions
  5. 5. (一)Modbus RTU指令概述
  6. 6. (二)Modbus RTU指令实例环境介绍
  7. 7. (三)实例之设备configuration
  8. 8. 1、configurationCM1241 RS422/485模块
  9. 9. 2、configurationET200 SP CM PtP 模块
  10. 10. (四)实例之软件编程
  11. 11. (2)插入”Pull or plug of modules” 中断OB83
  12. 12. (3)插入”Rack or Station failure” 中断OB86
  13. 13. (五)Frequently Asked Questions

(一)概述

Modbus具有两种串行传输模式:分别为ASCII和RTU。Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站existence,主站在Modbus网络上没有address,每个从站必须有唯一的address,从站的address范围为0 – 247,其中0为广播address,从站的实际address范围为1-247。Modbus RTU通信以主从的方式进行data传输,在传输的过程中Modbus RTU主站是主动方,即主站senddataRequestmessage到从站,Modbus RTU从站返回Responsemessage。S7-1200以下模块支持 Modbus RTU通信:

通信模块/通信板订货号
CM1241 RS2326ES7241-1AH32-0XB0
CM1241 RS422/4856ES7241-1CH32-0XB0
CB 1241 RS4856ES7241-1CH30-1XB0

注意:

(1)使用通信模块CM 1241 RS232作为Modbus RTU主站时,只能与一个从站通讯。
(2)使用通信模块CM 1241 RS485作为Modbus RTU主站时,则允许建立最多与 32 个从站的通讯。

(3)使用通信板CB 1241 RS485时,CPU 固件必须为 V2.0 或更高版本,且使用软件必须为STEP 7 Basic V11 或STEP 7 Professional V11 以上更高版本。

(二)Modbus RTU指令版本与限制

随着博途软件和 S7-1200 CPU 固件的不断更新,S7-1200 Modbus RTU 指令也出现了不同的版本。用户需要根据使用的软件和硬件,正确选择使用符合要求的 S7-1200 Modbus RTU 指令来实现 Modbus RTU 通信,其软件和硬件要求和指令版本说明如下。

(1)博途中的 S7-1200 Modbus RTU指令

博途中提供了2个版本的 Modbus RTU指令。如下图 1 所示:

  • 早期版本的 Modbus RTU 指令(图1. 中 MODBUS (V2.2))仅可通过 CM1241 通信模块或 CB1241 通信板进行 Modbus RTU 通信。
  • 新版本的 Modbus RTU 指令(图1. 中 MODBUS(RTU) V3.0)扩展了 Modbus RTU 的Function,该指令除了支持 CM1241 通信模块、CB1241 通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的 PTP 通信模块实现 Modbus RTU 通信。

(2)新版本 Modbus RTU 指令的使用限制条件
新版本 Modbus RTU 指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件:
a. S7-1200 CPU 的固件版本不能低于V4.1
b. CM1241通信模块 V2.1 以上或 CB1241

S7-1200 Modbus RTU通讯及V3版指令Function插图

图1. 两个版本 Modbus RTU 指令

(三)Frequently Asked Questions

(1)S7-1200 是否支持 Modbus ASCII 通信模式?

西门子不提供支持上述通信模式的的现成指令,需要用户自己用自由口模式编程。

(2)Modbus RTU指令V1和V2两个版本有什么区别?

Modbus RTU指令版本 V2 将参数 “REQ” 和 “DONE” 添加到“MB_COMM_LOAD”指令。而且,“MB_MASTER(图片)”和“MB_SLAVE ”指令的“MB_ADDR ”参数现在允许一个 UInt 值以进行扩展寻址。

(3)同一CPU程序中是否可以同时使用V1和V2两个不同版本的Modbus RTU指令?

不能在同一CPU 程序中同时使用V1(V1.x)和V2(V2.y)指令版本。用户程序的 Modbus 指令必须具有相同的主版本号;主版本组内的各个指令可具有不同的次版本号。

(4)S7-1200 通信模块CM1241是否可作为Modbus RTU主站或作为Modbus RTU从站?

对S7-1200 通信模块CM1241configuration并编程调用“MB_COMM_LOAD”指令,可将其设置为Modbus RTU通信模式。通过编程调用“MB_MASTER”指令,S7-1200 通信模块CM1241可作为Modbus RTU主站,或调用“MB_SLAVE”指令,S7-1200 通信模块CM1241可作为Modbus RTU从站。

注意:无论S7-1200 通信模块CM1241作为Modbus RTU主站还是从站,都需要调用“MB_COMM_LOAD”指令进行编程。

(5)S7-1200 CM1241/CB1241 Modbus RTU 通信是否支持两位stop bit?

支持。

注意:S7-1200 CM1241/CB1241属性里可以设置stop bit, 但是该模块用于 Modbus 通信时,此设置的stop bitInvalid, 需要在 Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITSstop bitnumerical value为 2。如下图 2-3所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图1

图2. CM1241 配置stop bit参数

Modbus_Commload 指令的背景 DB 里 Static 修改 STOP_BITSstop bitnumerical value为 2(默认值=1)

S7-1200 Modbus RTU通讯及V3版指令Function插图2

图3. 修改 Modbus RTU 通信stop bit

第二部分:V3版指令Function

(一)Modbus RTU指令概述

博途V13 SP1版本软件中提供了2个版本的Modbus RTU指令:

S7-1200 Modbus RTU通讯及V3版指令Function插图3

图1. 两个版本Modbus RTU指令

(1)早期版本的Modbus RTU指令(图1. 中 MODBUS (V2.2))仅可通过CM1241通信模块或CB1241通信板进行Modbus RTU通信。
(2)新版本的 Modbus RTU指令(图1. 中 MODBUS(RTU) V3.0)扩展了Modbus RTU的Function,该指令除了支持CM1241通信模块、CB1241通信板,还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。

(3)新版本 Modbus RTU指令所支持的PTP模块如下图2所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图4

图2. 新版本 Modbus RTU指令所支持的PTP模块

(二)Modbus RTU指令实例环境介绍

新版本Modbus RTU指令中包含Modbus RTU 主站指令和从站指令。本文以 CPU1217C+CM1241 RS422/485+ET200SP CM PTP 模块为例,介绍新版本 Modbus RTU 指令主从通信的编程步骤。其中CPU 机架CM1241 RS422/485作为Modbus RTU从站,分布式机架ET200SP 中 CMPTP 模块作为Modbus RTU主站。

1、网络结构图如下:

S7-1200 Modbus RTU通讯及V3版指令Function插图5

图3. Modubus RTU 网络通信结构图

2、本项目中使用到的硬件和软件如下:

(1)硬件:
① CPU1217C (订货号:6ES7 217-1AG40-0XB0),固件版本V4.1.3
② CM1241 RS422/485模块 (订货号:6ES7 241-1CH32-0XB0),固件版本V2.1
③ 24V 电源PS307(订货号:6ES7307-1KA02-0AA0)
④ ET200 SP IM155-6PN HF(订货号:6ES7155-6AU00-0CN0)
⑤ CM PTP模块(订货号:6ES7137-6AA00-0BA0)

(2)软件:
① 博途SP1 UP 9

(三)实例之设备configuration

1、configurationCM1241 RS422/485模块

(1)打开设备视图,添加S7-1200CPU,并在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS422/485)”,拖拽此模块至CPU左侧即可,如下图4所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图6

图4. 添加 CM 1241 RS422/485模块

注意:固件版本>=V2.1 的CM 1241 RS422/485模块,才支持新版本Modbus RTU指令。

(2)接下来,在“设备视图”中用鼠标选中CM1241(RS422/485)模块,在“属性”→“端口configuration”中配置此模块硬件接口参数,本例以传输率=9.6Kbps,奇even parity=无奇even parity,data bit=8位字符,stop bit=1为例。如CM 1241 端口configuration设置如下图5所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图7

图5. CM1241 RS422/485 模块端口configuration

(3)最后在“硬件标识符”里Confirm一下硬件标识符为269(该参数在程序编程中会被使用),如下图6所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图8

图6 硬件标识符

(4)另外,S7-1200 还提供了system和时钟存储器Function,为了便于后续指令,建议使能该Function。在CPU “属性”→“常规”→“system和时钟存储器”使能system和时钟存储器Function,如图7所示。

S7-1200 Modbus RTU通讯及V3版指令Function插图9

图7. system和时钟存储器Function

2、configurationET200 SP CM PtP 模块

(1)插入一个ET200SP分布式站点,打开网络视图并拖入一个ET200SP站点,并将其分配给相应的IO 控制器(本例CPU1217C 为 IO 控制器),如图8所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图10

图8. 插入ET200SP站点

(2)configurationET200SP 站点,在ET200SP的”设备视图”环境下,为ET200SP 站点添加信号、通信模块和服务器模块,在本例中只添加了CM PTP模块和服务器模块。在ET200SP”设备视图”中用鼠标选中CM PTP,在“属性”→“常规”→“接口”→“Operation模式”中配置此模块硬件接口参数,本例设定“指定工作模式”:”半双工(RS485)2线制Operation”;”receive线路的初始状态”:”无”。如下图9所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图11

图9. CM PTP Operation模式

注意:ET200SP站点中,服务器模块是必须configuration的。服务器模块随接口模块一起采购,无需单独购买。ET200SP接口模块需要为其分配IPaddress和Device Name, 有关ET200 SP 分布式IO configuration详细步骤,请参考《ET200 SP 使用Quick Start》,本例不再描述Profinet IO通信的Related设置与步骤。《ET200 SP 使用Quick Start》Download链接:

https://support.industry.siemens.com/cs/cn/zh/view/78304711

(3)接下来,在“属性”→“常规”→“接口”→“端口configuration”中配置此模块端口configuration参数,本例设定”协议”:”Freeport/Modbus”;”端口参数”设置:传输率=9.6Kbps,奇even parity=无奇even parity,data bit=8位字符,stop bit=1为例。端口configuration设置如下图10所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图12

图10. CM PTP 端口configuration

(4)最后需要在“硬件标识符”里Confirm一下CM PTP 模块硬件标识符,该参数在程序编程中会被使用。

(四)实例之软件编程

1、Modbus RTU 主站编程

Modbus RTU主站编程需要调用Modbus_Comm_Load 指令和Modbus_Master 指令,其中Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行configuration,Modbus_Master 指令可通过由 Modbus_Comm_Load 指令configuration的端口作为 Modbus 主站进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须connect到 Modbus_Master 指令的(静态)MB_DB 参数。本例中分布式机架ET200SP 中 CM PTP 模块作为Modbus RTU主站,其Related编程步骤如下:

(1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Master 指令。如图11所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图13

图11. 拖入Modbus RTU 主站指令

Modbus_Comm_Load指令各参数意义如下表1所示:

引脚说明
REQ上升沿触发
PORT通信端口的硬件标识符
BAUDBaud rate选择:3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200
PARITY奇偶检验选择:0-无;1-odd parity;2-even parity
FLOW_CTRL流控制选择:0-(默认值)无流控制
RTS_ON_DLYRTS延时选择:0-(默认值)
RTS_OFF_DLYRTS关断延时选择:0-(默认值)
RESP_TOResponse超时:默认值 = 1000 ms。MB_MASTER 允许用于从站Response的time(以毫秒为单位)。
MB_DB对 Modbus_Master 或 Modbus_Slave 指令的背景data块的引用。
MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。
DONE如果上一个RequestComplete并且没有Error,DONE 位将变为 TRUE 并保持一个周期。
ERROR如果上一个RequestComplete出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的Error代码仅在 ERROR = TRUE 的周期内effective。
STATUS端口configurationError代码,请参考TIA 软件在线帮助或S7-1200 system手册。

表1 MB_COMM_LOAD指令参数意义

Modbus_Master指令各参数意义如下表2所示:

引脚说明
EN使能端
REQTRUE = Request向 Modbus 从站senddata ,建议采用上升沿触发
MB_ADDRModbus RTUslave address。默认address范围:0至247;扩展address范围:0至65535。值0被保留用于将消息广播到所有Modbus从站。
MODE模式选择:指定RequestType(读取或写入)。
DATA_ADDR从站中的starting address:指定Modbus从站中将供访问的data的starting address。
DATA_LENdataLength:指定要在该Request中访问的位数或字数。
DATA_PTRdata指针:指向要进行data写入或data读取的标记或data块address。
DONEComplete位:上一Request已Complete且没有出错后,DONE 位将保持为 TRUE 一个扫描周期time。
BUSYFALSE – Modbus_Master 无激活命令:
TRUE – Modbus_Master 命令执行中
ERROR对 Modbus_Master 或 Modbus_Slave 指令的背景data块的引用。
MB_DB 参数必须与 Modbus_Master 或 Modbus_Slave 指令中的静态变量MB_DB 参数相连。
STATUS如果上一个RequestComplete并且没有Error,DONE 位将变为 TRUE 并保持一个周期。
ERROR如果上一个RequestComplete出错,则 ERROR 位将变为 TRUE 并保持一个周期。STATUS 参数中的Error代码仅在 ERROR = TRUE 的周期内effective。
STATUSError代码

表2 Modbus_Master指令参数意义

注意:
①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” system存储器位。
②Modbus_Comm_Load指令背景data块中的静态变量“MODE”用于描述PTP模块的工作模式,effective的工作模式包括:

  • 0 = 全双工 (RS232)
  • 1 = 全双工 (RS422) 四线制模式(点对点)
  • 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP))
  • 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP))
  • 4 = 半双工 (RS485) 二线制模式

该静态变量“MODE”默认data为0(RS232 全双工模式),需要根据CM PTP模块实际configuration修改该numerical value,本例中CM PTP模块工作在RS485半双工模式需要将该numerical value修改为4,如图12所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图14

图12. Modbus_Comm_Load背景data块静态变量“MODE”修改为

③Modbus_Master指令的“DATA_PTR”参数用于指向要进行data写入或data读取的data area域address,该data area域支持优化访问的data块或者非优化(标准的)data块,建议采用非优化访问的data块。
本例中使用的data area为非优化访问的data块,在data块的属性中Cancel“优化的块访问”即可将data块修改为非优化访问的data块(鼠标右键data块,选择“属性”,Cancel“优化的块访问”),如图13所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图15

图13. 设置data块为非优化访问

当Modbus_Master指令的“DATA_PTR”指向非优化访问的data块时,该输入参数需要使用指针方式填写如P#DB3.DBX0.0 WORD 5 方式填写。
④当Modbus RTU网络中existence多个modbus RTU从站或一个modbus RTU从站同时需要读Operation和写Operation,则需要调用多个Modbus_Master指令,Modbus_Master指令之间需要采用轮询方式调用。
下图14. 用于描述两个Modbus_Master指令轮询调用的方式。

S7-1200 Modbus RTU通讯及V3版指令Function插图16

图14.Modbus_Master轮询调用方式

(2)插入”Pull or plug of modules” 中断OB83

本例中Modbus RTU主站模块安装在分布式IO站点上,因此程序中需要考虑分布式IO站点故障、CM PTP 模块插拔模块等故障。分布式IO站点中插出、拔入模块时,Operationsystem都会调用一次OB83。通过OB83接口区的输入变量“16#Event_Class”判断故障的模块和Type:事件Type16#39表示模块被拔出,事件Type16#38表示模块被插入。CM PTP 模块被重新插入的时候,需要在中断OB83中调用Modbus_Comm_Load 指令对通信模块进行重新configuration,如图15所示。

S7-1200 Modbus RTU通讯及V3版指令Function插图17

图15. OB83中再次调用Modbus_Comm_Load 指令

注意:
①OB83 中调用Modbus_Comm_Load指令的背景data块需要与OB1中调用的Modbus_Comm_Load指令的背景data块相同。
②CM PTP模块的硬件标识符也可以在”PLC变量”—>”systemconstant”中查询,如图16所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图18

图16. system常量

(3)插入”Rack or Station failure” 中断OB86

分布式IO站点故障和恢复时,Operationsystem都会调用一次OB86。通过OB86接口区的输入变量“16#Event_Class”判断故障的模块和Type:事件Type16#39表示站点故障,事件Type16#38表示站点恢复。CM PTP 模块所在的IO站点恢复时,需要在中断OB86中调用Modbus_Comm_Load 指令对通信模块进行重新configuration,如图17所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图19

图17. OB86中调用Modbus_Comm_Load 指令

注意:
①OB86 中调用Modbus_Comm_Load指令的背景data块需要与OB1中调用的Modbus_Comm_Load指令的背景data块相同。
②分布式IO 站点的硬件标识符也可以在”PLC变量”—>”systemconstant”中查询。

2、Modbus RTU 从站编程

Modbus RTU从站编程需要调用Modbus_Comm_Load 指令和Modbus_Slave 指令,其中Modbus_Comm_Load 指令通过 Modbus RTU 协议对通信模块进行configuration,Modbus_Slave 指令可通过由 Modbus_Comm_Load 指令configuration的端口作为 Modbus 从站进行通信, Modbus_Comm_Load 指令的 MB_DB 参数必须connect到 Modbus_Slaver 指令的(静态)MB_DB 参数。本例中CPU 机架CM1241 RS422/485作为Modbus RTU从站,其Related编程步骤如下:

(1)OB1 中插入一个FC函数,并在函数中拖入Modbus_Comm_Load 指令和Modbus_Slave 指令。如图18所示:

S7-1200 Modbus RTU通讯及V3版指令Function插图20

图18. 拖入Modbus RTU 从站指令

Modbus_Slave指令各参数意义如下表3所示:

引脚说明
MB_ADDRModbus 从站的标准寻址:
标准寻址范围(1 到 247)
扩展寻址范围(0 到 65535)
MB_HOLD_REGdata指针,指向Modbus 保持register的address, Modbus 保持register可以为M存储区或DBdata area。
如果Modbus 保持register为DBdata area,则DBdata area支持优化访问的data块或非优化访问的data块,建议采用非优化访问的data块。
NDR可用的新data:FALSE – 无新dataTRUE – 表示新data已由 Modbus 主站写入
如果上一个RequestComplete并且没有Error,NDR 位将变为 TRUE 并保持一个周期。
DR读取data:FALSE – 无新dataTRUE –表示该指令已将 Modbus 主站receive到的data存储在目标区域中。
如果上一个RequestComplete并且没有Error,DR 位将变为 TRUE 并保持一个周期。
ERROR如果上一个RequestComplete出错,则 ERROR 位将变为 TRUE 并保持一个周期。如果执行因Error而终止,则 STATUS 参数中的Error代码仅在 ERROR = TRUE 的周期内effective。
STATUSError代码

表3 Modbus_Slave指令参数意义

注意:
①Modbus_Comm_Load指令不建议在启动组织块OB100中调用,建议在OB1中调用。Modbus_Comm_Load指令在OB1中调用时,其输入位“REQ”需使用上升沿触发,本例中该输入位采用 “FirstScan” system存储器位。
②Modbus_Comm_Load指令背景data块中的静态变量“MODE”用于描述PTP模块的工作模式,effective的工作模式包括:

  • 0 = 全双工 (RS232)
  • 1 = 全双工 (RS422) 四线制模式(点对点)
  • 2 = 全全双工 (RS 422) 四线制模式(多点主站,CM PtP (ET 200SP))
  • 3 = 全全双工 (RS 422) 四线制模式(多点从站,CM PtP (ET 200SP))
  • 4 = 半双工 (RS485) 二线制模式

该静态变量“MODE”默认data为0(RS232 全双工模式),需要根据CM1241 RS422/485模块实际configuration修改该numerical value,本例中CM1241 RS422/485模块工作在RS485半双工模式需要将该numerical value修改为4,如何修改“MODE”静态变量见图12所示。

③Modbus_Slave指令的“MB_HOLD_REG”用于指向Modbus 保持register的data area域address,该data area域支持优化访问的data块或者非优化(标准的)data块,建议采用非优化访问的data块。本例中使用的data area为非优化访问的data块,固该输入参数需要使用指针方式填写如P#DB6.DBX0.0 WORD 100 方式填写。如何在data块的属性中Cancel“优化的块访问”,见图13所示。将程序Download到PLC中,并使用Profibus DP通信电缆将CM1241 RS422/485与CM PTP串口模块connect起来,即可测试Modbus RTU通信了。

(五)Frequently Asked Questions

1. 新版本 Modbus RTU指令的使用是否existence些限制条件?
新版本 Modbus RTU指令通过CM1241通信模块或CB1241通信板进行Modbus RTU通信时,需要满足如下条件:

a. S7-1200 CPU 的固件版本不能低于V4.1;
b. CM1241通信模块或CB1241通信板的固件不能低于V2.1。

S7-1200 V4.0 固件CPU可以通过固件更新到V4.1版本,V2.0固件的CM1241通信模块也可以通过固件更新的方式更新到V2.1版本。Related固件更新的方法请参考 S7-1200 固件更新 。

2 .Modbus_Comm_Load指令背景data块中的静态变量“MODE”的作用是什么?为什么一般项目中,都需要对该变量进行修改?
新版本的 Modbus RTU指令扩展了Modbus RTU的Function,该指令除了支持CM1241通信模块、CB1241通信板还支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PTP通信模块实现Modbus RTU通信。而分布式 I/O 机架上的PTP通信模块可以支持多种工作模式,以ET200SP CM PtP模块(订货号:6ES7137-6AA00-0BA0)为例,其可以支持RS232、RS485以及RS422等多种工作模式。Modbus_Comm_Load指令背景data块中的静态变量“MODE”则用于定义PTP模块的工作模式。“MODE”的默认numerical value为0,代表“全双工 (RS232)”工作模式,实际项目configuration中则需要根据实际工作模式对该变量进行修改。

3. Modbus_Comm_Load指令能否在启动组织块OB100中调用?
Modbus_Comm_Load指令不建议在启动组织块OB100中调用。新版本的Modbus RTU指令扩展了Modbus RTU的Function,该指令支持 PROFINET 或 PROFIBUS 分布式 I/O 机架上的PtP通信模块实现Modbus RTU通信。Operationsystem需要调用读取data记录和写入data记录等指令来实现与分布式I/O机架上PtP模块的Modbus RTU通信。读取data记录和写入data记录指令为异步读写指令,指令的执行需要N个扫描周期,所以不建议Modbus_Comm_Load指令在启动组织块OB100中调用。

4. 如何查询Modbus RTU通信Error时的Error代码?
以Modbus_Master指令为例,当通信出现Error时,Modbus_Master指令的“ERROR”输出位将变为 TRUE 但是只保持一个扫描周期,所以通过TIA 软件程序监控时无法查询到Error。Modbus_Master指令“STATUS” 参数中的Error代码仅在“ERROR” = TRUE 的扫描周期内effective,为了获取了Modbus RTU通信Error的Error代码我们可以采用下图19. 方式编程。

S7-1200 Modbus RTU通讯及V3版指令Function插图21

图19. 获取STATUS

技术术语(共 9 个)—— 点击展开
Modbus RTU基于串行链路的Modbus协议,使用binaryCoding和CRC check
Modbus ASCII使用ASCII字符传输的Modbus协议,以冒号开头、CR/LF结尾
RS485工业常用的差分串行通信标准,支持多点通信
RS232点对点串行通信标准,常用于短距离设备通信
registerModbus register存储data单元,分线圈/离散输入/保持/输入register四类
PLC可编程逻辑控制器,Automation控制的核心设备
Baud rate串行通信每秒传输符号数,Modbus RTU常用9600/19200
串口计算机与外部设备进行串行通信的物理接口
保持registerModbus 16位可读写data,address从40001开始
来源/Tools信息 —— 点击展开
来源 Modbus Chinese Network(modbus.cn) —— China leadingModbus通信协议技术社区 Category 工业物联网 字数 9909 字 · 阅读约 25 分钟 更新 2023-12-15 永久链接 https://www.modbus.cn/26314.html
Recommended Tool: Modbus Debug Assistant WeChat Mini Program
Modbus Chinese Network官方推出的Modbus DebuggingTools,支持 Modbus RTU/TCP 实时通信debug、register读写、线圈控制、data监控和message分析。 无需安装,微信Search「Modbus DebuggingAssistant」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
把这篇Resources用于真实项目?

进入Tools中心进行messageParse、CRC verification和设备debug,或Submit requirements获取选型与接入建议。

工程师member

把这篇文章变成可执行的debugResources

开通后可使用高级messageParse、Resources包Download、Code Example、工程案例和优先Technical Support,适合真实项目交付。

高级Tools不限次
Resources包与代码包
Complete Engineering Case Library
优先Technical Support入口

发表回复

您的邮箱address不会被公开。 必填项已用 * 标注