西门子PLC s71200 modbusrtu通信实例编程详细指导Word文档下载推荐.docx
- 文档编号:20649529
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:16
- 大小:303.80KB
西门子PLC s71200 modbusrtu通信实例编程详细指导Word文档下载推荐.docx
《西门子PLC s71200 modbusrtu通信实例编程详细指导Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《西门子PLC s71200 modbusrtu通信实例编程详细指导Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
RS422/RS485
RS485
波特率(bps)
300;
600;
1.2k;
2.4k;
4.8k;
9.6k;
19.2k;
38.4k;
57.6k;
76.8k;
115.2k
校验方式
∙None(无校验)
∙Even(偶校验)
∙Odd(奇校验)
∙Mark(校验位始终置为1)
∙Space(校验位始终为0)
流控
硬件流控;
软件流控
RS422支持软件流控
不支持
接收缓冲区
1kB
通讯距离(屏蔽电缆)
10m
1000m
电源消耗(5VDC)
200mA
220mA
50mA
电源消耗(24VDC)
-
80mA
注意:
1.使用通信模块CM1241RS232作为ModbusRTU主站时,只能与一个从站通讯。
2.使用通信模块CM1241RS485作为ModbusRTU主站时,则允许建立最多与32个从站的通讯。
3.使用通信板CB1241RS485时,CPU固件必须为V2.0或更高版本,且使用软件必须为STEP7BasicV11或STEP7ProfessionalV11以上更高版本。
2ModbusRTU主站指令库
随着TIAPORATL软件和S7-1200CPU固件的不断更新,S7-1200ModbusRTU指令也出现了不同的版本。
用户需要根据使用的软件和硬件,正确选择使用符合要求的S7-1200ModbusRTU指令来实现ModbusRTU通信。
软件,硬件要求和指令版本说明如下。
TIAPORTAL中的S7-1200ModbusRTU指令
TIAPORTAL软件中提供了2个版本的ModbusRTU指令。
如下图1所示:
∙早期版本的ModbusRTU指令(图1.中MODBUS(V2.2))仅可通过CM1241通信模块或CB1241通信板进行ModbusRTU通信。
∙新版本的ModbusRTU指令(图1.中MODBUS(RTU)V3.0)扩展了ModbusRTU的功能,该指令除了支持CM1241通信模块、CB1241通信板,还支持PROFINET或PROFIBUS分布式I/O机架上的PTP通信模块实现ModbusRTU通信。
新版本ModbusRTU指令的使用限制条件
新版本ModbusRTU指令通过CM1241通信模块或CB1241通信板进行ModbusRTU通信时,需要满足如下条件:
a.S7-1200CPU的固件版本不能低于V4.1;
b.CM1241通信模块V2.1以上或CB1241。
图1.两个版本ModbusRTU指令
3ModbusRTU主站功能编程
ModbusRTUV1-V2版本指令介绍(S7-1200作为ModbusRTU主站)
S7-1200支持ModbusRTU通信模式的模块可作为ModbusRTU主站。
以下以CPU1215CDC/DC/DC和CM1241RS485模块为例,介绍S7-1200ModbusRTU主站通信组态及编程步骤。
硬件和软件需求及所完成的通信任务:
硬件:
①CPU1215CDC/DC/DC(订货号:
6ES7215-1AG31-0XB0)
②CM1241RS485(订货号:
6ES7241-1CH30-0XB0)
③PS307电源(订货号:
6ES7307-1KA02-0AA0)
④ZKA-4488-RS485(综科智控品牌)
⑤TP以太网电缆
软件:
①STEP7ProfessionalV11SP2UPD4+HSP
所完成的通信任务:
将ZKA-4488-RS485从站中Modbus地址从30001开始的5个字中的数据,分别读取到ModbusRTU主站CPU1215C中地址从DB1.DBW0开始的5个字中。
1.组态ModbusRTU通信模块
在硬件目录里找到“通信模块”→“点到点”→“CM1241(RS485)”,双击或拖拽此模块至CPU左侧即可,如下图1所示:
图1组态通信模块
接下来,在“设备视图”中用鼠标选中CM1241(RS485)模块,在“属性”→“端口组态”中配置此模块硬件接口参数。
如下图2所示:
以下以传输率=9.6Kbps,奇偶校验=无奇偶校验,数据位=8位字符,停止位=1,其它保持默认设置为例。
请把ZKA-4488-RS485模块的波特率改成和此处一致的参数。
图2RS485端口设置
最后在“硬件标识符”里确认一下硬件标识符为271,如下图3所示:
图3硬件标识符
2.添加启动OB
在项目树下选择“CPU1215CDC/DC/DC”→“程序块”→“添加新块”,在弹出的窗口中选择“OB组织块”→“Startup”,添加启动OB100,如下图4所示:
图4添加启动OB
3.调用MB_COMM_LOAD指令
为使端口一启动就被设置为ModbusRTU通信模式,可在OB100中调用“MB_COMM_LOAD”指令。
调用“MB_COMM_LOAD”指令时会自动弹出创建相应背景数据块的界面,如下图5所示:
图5调用MB_COMM_LOAD指令
点击“确认”为该指令创建背景数据块后,为各输入/输出引脚分配地址。
尤其需注意MB_DB输入引脚需指向“MB_MASTER”指令的背景数据块,如下图6所示:
“MB_COMM_LOAD”指令输入位“REQ”需使用上升沿触发。
由于OB100只在S7-1200启动时执行一次,因此,此例中将“REQ”设为“TRUE”。
图6MB_COMM_LOAD指令
MB_COMM_LOAD指令参数意义如下表1所示:
引脚
说明
EN
使能端
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-(默认值)
RTS_OFF_DLY
RTS关断延时选择:
RESP_TO
响应超时:
默认值=1000ms。
MB_MASTER允许用于从站响应的时间(以毫秒为单位)。
MB_DB
对MB_MASTER或MB_SLAVE指令所使用的背景数据块。
DONE
完成位:
指令执行完成且未出错置1
ERROR
错误位:
0-未检测到错误;
1-检测到错误。
在参数STATUS中输出错误代码。
STATUS
端口组态错误代码
表1MB_COMM_LOAD指令参数意义
4.创建DATA_PTR数据发送、接收缓冲区
通过“程序块”→“添加新块”,选择“数据块(DB)”创建DB块,选择“标准与S7-300/400兼容”,点击“确认”键。
在DB中创建数据类型为5个字的数组,如下图7所示:
DATA_PTR数据发送、接收缓冲区使用的DB访问类型必须是标准与S7-300/400兼容。
图7创建DATA_PTR数据发送、接收缓冲区
5.调用MB_MASTER指令
在OB1中调用“MB_MASTER”指令,调用该指令时会自动弹出创建相应背景数据块的界面,如下图8所示:
图8调用MB_MASTER指令
点击“确认”为该指令创建背景数据块后,并为各输入/输出引脚分配地址,如下图9所示:
“MB_MASTER”指令的输入位“REQ”必须使用上升沿触发。
以下以S7-1200作为ModbusRTU主站,用F04功能码读取ModbusRTU从站2,从Modbus地址30001开始的五个字,接收的数据存放在缓冲区DB3.DBW0开始区域为例。
设置如下所示:
MB_ADDR=2,MODE=0,DATA_ADDR=30001,DATA_LEN=5。
地址对应关系如下表2所示:
ModbusRTU主站CPU1215C数据缓冲区地址
ModbusRTU从站Modbus地址
DB3.DBW0
30001
DB3.DBW2
30002
DB3.DBW4
30003
DB3.DBW6
30004
DB3.DBW8
30005
表2Modbus地址对应关系
图9MB_MASTER指令
MB_MASTER指令参数意义如下表3所示:
使能端
在上升沿执行该指令,请求将数据发送或读取到Modbus从站
MB_ADDR
ModbusRTU从站地址。
默认地址范围:
0至247;
扩展地址范围:
0至65535。
值0被保留用于将消息广播到所有Modbus从站。
MODE
模式选择:
指定请求类型
DATA_ADDR
从站中的起始地址:
指定Modbus从站中将供访问的数据的起始地址。
DATA_LEN
数据长度:
指定要在该请求中访问的位数或字数。
DATA_PTR
数据指针:
指向要写入或读取的数据的M或DB地址(DB访问类型必须是标准与S7-300/400兼容)。
上一请求已完成且没有出错后,DONE位将保持为TRUE一个扫描周期时间。
BUSY
0–无正在进行的MB_MASTER操作;
1–MB_MASTER操作正在进行
EEROR
上一请求因错误而终止后,ERROR位将保持为TRUE一个扫
描周期时间。
STATUS参数中的错误代码值仅在ERROR=TRUE的一个扫描周期内有效。
错误代码
表3MB_MASTER指令参数意义
关于MODE,DATA_ADDR,DATA_LEN可在下表4中查看:
MB_MASTERModbus功能
Modbus地址参数
地址类型
Modbus数据长度参数
Modbus功能
模式0
读取
00001到09999
输出位
1到2000
10001到19999
输入位
02
30001到39999
输入寄存器
1到125
04
40001到49999
400001到465535(扩展)
保持寄存器
03
模式1
写入
1(单个位)
05
1(单个字)
06
2到1968
15
2到123
16
模式2
有些Modbus从站不支持使用Modbus功能05H或06H写入单个位或字。
在这样的情况下,可通过模式2强制使用Modbus功能15H或16H写入单个位或字
写入
1到123
模式11
读出从站的通信状态字和事件计数器:
状态字指示指令的执行状态(0:
未在执行;
0xFFFF:
正在执行)。
每次成功传送一条消息时,事件计数器值将递增。
使用该功能时,忽略“MB_MASTER”指令的DATA_ADDR和DATA_LEN参数。
模式80
通过读取错误代码(0x0000)检查从站状态:
每个请求1个字
模式81
通过诊断代码0x000A复位从站的事件计数器:
表4MB_MASTERModbus功能表
7.ModbusRTU测试结果
在STEP7ProfessionalV11UPD4软件中打开该项目CPU1215CDC/DC/DC的“监控表”,触发“MB_MASER”指令的输入位M10.0。
PLC主站将从站ZKA-4488-RS485地址30001中的数值11,30002中的数值12,30003中的数值13,30004中的数值14,30005中的数值15,分别读取到了地址DB3.DBW0,DB3.DBW2,DB3.DBW4,DB3.DBW6,DB3.DBW8中,如下图12所示:
图12ModbusRTU测试结果
S7-1200ModbusRTU通信模式的多地址或多站点轮询
多个CM1241RS485通讯模块之间可以使用PROFIBUS电缆相互连接。
可以将1个主站和最多31个MODBUS从站使用PROFIBUS电缆连接组网。
S7-1200ModbusRTU轮询需要通过上一条”MB_MASTER“指令输出位“Done“=1来触发下一条“MB_MASTER“指令。
具体说明及编程思路请参考以下链接:
如何使用STEP7(TIAPortal)V11为SIMATICS7-1200建立ModbusRTU通讯?
MB_COMM_LOAD和MB_MASTER指令STATUS错误代码
STATUS(W#16#)
0000
端口无错误
8180
端口ID值无效
8181
波特率值无效
8182
奇偶校验值无效
8183
流控制值无效
8184
响应超时值无效
8185
MB_DB参数不是MB_MASTER或MB_SLAVE的背景数据块
表5MB_COMM_LOAD指令STATUS错误代码
无错误
80C8
从站超时。
检查波特率,奇偶校验和从站的接线
80D1
接收方发出了暂停主动传输的流控制请求并在指定的等待时间内未重新激活该传输。
如果接收方在等待时间内未检测到CTS,则在硬件流控制期间也会生成该错误。
80D2
由于没有从DCE接收到DSR信号,传送请求终止
80E0
接收缓冲区已满,消息被终止
80E1
奇偶校验错误,消息被终止
80E2
组帧错误,消息被终止
80E3
超时错误,消息被终止
80E4
指定长度超出总缓冲区大小,消息被终止
无效端口ID值
8186
Modbus站地址无效
8188
对于广播调用,参数MODE的值无效。
8189
数据地址值无效
818A
数据长度值无效
818B
指向本地数据源/目标的指针无效
818C
DATA_PTR的指针无效:
使用指向位存储区或访问类型为“标准-与S7-300/400兼容”的数据块的指针。
8200
端口正忙于处理传送请求
表6MB_MASTER指令STATUS错误代码(指令的通信和组态错误消息)
从站的响应代码
8380
CRC错误
8381
不支持此功能码
8382
数据长度错误
8383
数据地址错误或地址超出DATA_PTR的有效范围
8384
>
数据值错误
8385
不支持此数据诊断代码
8386
响应中的功能代码与传送中的功能代码不匹配
8387
响应的从站错误
8388
从站对写请求的响应不正确
表7MB_MASTER指令STATUS错误代码(Modbus协议的错误消息)
4连接超时参数
S7-1200MobusRTU通信网络中包含多个从站站点时,由于轮询的网络特性,只能同时读或写一个站点数据。
因此有如下因素,会影响到最终整体的轮询时间:
1.通信速率(波特率)设置时间
2.每个站点的通信数据量
3.站点数量
4.通信距离
5.各站点连接时间
无论是由于信号干扰,硬件质量引起的从站掉站或是由于工程需要暂时关闭站点,此时都会由于“各站点连接时间”的增加而使通信系统的轮询时间大大延长。
在S7-1200的ModbusRTU通信中,主要有三个参数与“各站点连接时间”的设置相关。
1.从站响应时间RESP_TO
如图1所示,V2.x版本的MB_COMM_LOAD初始化块可设置从站响应时间RESP_TO参数:
设置单次连接从站的可响应时间,范围为5ms到65535ms(默认值为1000ms);
即如从站在此时间段内未作出响应,则MB_MASTER将在发送指定次数的重试请求后终止请求并提示错误信息80C8。
图1.RESP_TO参数设置
如图2所示,Modbus从站的执行频率须至少小于RESP_TO设置的响应时间(需要考虑响应延迟时间),才可以正常通讯。
图2.从站响应时间
2.重试次数RETRIES
在初始化功能块MB_COMM_LOAD的背景数据块中,可设置重试次数RETRIES参数:
主站在返回无响应错误代码0x80C8之前的重试次数。
(默认值为2次)
此参数表示初次连接无响应后,再次连接的次数;
即以默认2次为例,实际尝试连接次数为3次。
图3RETRIES参数设置
在更改RETRIES参数后,需要重新使能MB_COMM_LOAD功能块的REQ管脚,否则更改参数不生效。
3.主站定时参数Blocked_Proc_Timeout
当由于某些原因(如已发出主站请求,但在彻底完成该请求前停止调用主站功能块时),造成Done及Error均没有置1时,需要提供一个定时时间,在时间到达后置位,以便执行下一个功能块或轮询下一个站点。
MB_Master的背景数据块中提供了主站定时参数Blocked_Proc_Timeout(范围0S到5.5S,默认3S)
此前的RESP_TO是针对从站响应时间的,而Blocked_Proc_Timeout则是针对主站的定时时间,此功能参数用于防止单个MB_Master指令独占或锁定对端口的访问。
图4.Blocked_Proc_Timeout参数设置
5ModbusRTU主站常问问题
S7-1200是否支持ModbusASCII通信模式?
西门子不提供支持上述通信模式的的现成指令,需要用户自己用自由口模式编程。
ModbusRTU指令V1和V2两个版本有什么区别?
ModbusRTU指令版本V2将参数“REQ”和“DONE”添加到“MB_COMM_LOAD”指令。
而且,“MB_MASTER”和“MB_SLAVE”指令的“MB_ADDR”参数现在允许一个UInt值以进行扩展寻址。
同一CPU程序中是否可以同时使用V1和V2两个不同版本的ModbusRTU指令?
不能在同一CPU程序中同时使用V1(V1.x)和V2(V2.y)指令版本。
用户程序的Modbus指令必须具有相同的主版本号;
主版本组内的各个指令可具有不同的次版本号。
S7-1200通信模块CM1241是否可作为ModbusRTU主站或作为ModbusRTU从站?
对S7-1200通信模块CM1241组态并编程调用“MB_COMM_LOAD”指令,可将其设置为ModbusRTU通信模式。
通过编程调用“MB_MASTER”指令,S7-1200通信模块CM1241可作为ModbusRTU主站,或调用“MB_SLAVE”指令,S7-1200通信模块CM1241可作为ModbusRTU从站。
无论S7-1200通信模块CM1241作为ModbusRTU主站还是从站,都需要调用“MB_COMM_LOAD”指令进行编程。
由于某一个从站掉站引起的轮询周期时间延长,如何减小此影响?
通常,S7-1200可同时调整两个参数:
从站响应时间RESP_TO和重试次数RETRIES,用于减小Modbus从站掉站或暂时关闭而增大的轮询周期时间。
例:
系统默认的尝试连接次数为3次,每次1S,总计3S;
可根据项目实际工况适当减小从站响应时间RESP_TO。
这一时间无法估算,建议多次测试,确认每个从站都能够正常稳定连接情况下,将此时间设置的尽量小。
以设置500ms为例。
再将RETRIES设置为0。
即对于每个从站,主站只尝试连接一次,总计耗时500ms。
MB_MASTER报错8200(端口正忙于处理传送请求),如何处理?
此情况是由于MB_MASTER的DONE或ERROR均未置位从而与后续MB_MASTER冲突导致。
确保接通下一个MB_MASTER的时间大于Blocked_Proc_Timeout的设定时间(默认3S)。
如何检查S7-1200通信模块CM1241是否已被成功设置为ModbusRTU通信模式?
可在程序或监控表中查看“MB_COMM_LOAD”指令的输出位“DONE”,“ERROR”以及“STATUS”状态来判断S7-1200通信模块CM1241是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西门子PLC s71200 modbusrtu通信实例编程详细指导 西门子 PLC modbusrtu 通信 实例 编程 详细 指导