中国自动化学会专家咨询工作委员会指定宣传媒体
免费注册 登录 广告服务 | 客服中心
您现在所在的是:

PLC论坛

抖音 西门子减速电机 德嘉 台达 英威腾 泓格论坛 西门子 我和LOGO!有个约会 FLIR红外热像论坛 【有奖活动】英威腾 “Ni美国国家仪器 “PLC发展趋势大讨论”活动圆满结束 施耐德 cc-link图文征集活动 西门子SMART LINE V3
工控论坛首页 PLC论坛 → 浏览主题: 超实用,非常典型的Modbus通讯项目案例,轻松学会
发表新帖 回复该主题
回帖:9个,阅读:624 [上一页] [1] [下一页]
* 帖子主题:

超实用,非常典型的Modbus通讯项目案例,轻松学会

分享到
290
工控帮
文章数:34
年度积分:92
历史总积分:290
注册时间:2018/11/6
发站内信
发表于:2018/12/19 11:36:46
#0楼
本文主要介绍两部分,1.简单介绍Modbus通讯相关知识。2.通讯案例详解。
附件 001.jpg

一.Modbus通讯介绍
1.通讯概述
Modbus具有两种串行传输模式:分别为ASCII和RTU。Modbus是一种单主站的主从通信模式,Modbus网络上只能有一个主站存在,主站在Modbus网络上没有地址,每个从站必须有唯一的地址,从站的地址范围为0 - 247,其中0为广播地址,从站的实际地址范围为1 - 247。Modbus RTU 使用主/从站网络,其中整个通信仅由一个主站设备触发,而从站只能响应主站的请求。主站将请求发送到一个从站地址,并且只有该地址上的从站做出响应。
Modbus RTU是用于网络中通信的标准协议,使用 RS232 或 RS422/485 连接在网络中的 Modbus 设备之间进行串行数据传输。
注: Modbus 从站地址为 0 时会向所有从站发送广播帧(从站均不响应)。

2.Modbus 通讯协议
Modbus的通讯协议可在网上查阅相关详细资料,这里简单说明:数据传送帧结构顺序是,主站和从站/从站和主站之间的数据通信从从站地址开始,接下来是功能代码。 随后传输数据。 数据字段的结构取决于使用的功能代码。 帧的最后传送的是校验和 (CRC)。
附件 01.jpg

二.通讯案例详解
案例背景:一套以西门子S7_1200PLC作为控制器的控制系统(带HMI面板),与一套加湿器控制系统(单片机)进行Modbus RTU通讯,读取和写入加湿器数据,并通过控制面板进行显示和设置加湿器参数,以及通过HMI面板手动控制加湿机的充水、排水、加湿和停机。(与除湿机的通讯只是该项目中的一部分,这里只介绍与加湿机的通讯部分,其他控制部分未说明)加湿器的参数如下图
附件 02.jpg
注:PLC的控制系统作为主站,加湿器控制系统为从站
1.  硬件及软件需求
硬件:CPU 1215C AC/DC/Rly(订货号:6ES7 215-1BG40-0XB0)
     CM 1241 (RS422/485)(订货号:6ES7 241-1CH32-0XB0)
HMI面板KTP1200Basic PN(订货号:6AV2 123-2MB03-0AX0)
     屏蔽电缆(用于通讯)
附件 1545103596(1).jpg
注:本项目采用RS485接线方法, 3号针脚--RS485信号 B(+) ;8号针脚--RS485信号A(-);5号针脚--接屏蔽等电位点。
软件:博途V15(或其他)
2. 硬件组态
①通讯模块组态:设置好传输率=9.6Kbps、奇偶校验、数据位和停止位,其它保持默认。
启用PLC系统时钟
附件 03.jpg
附件 04.jpg
附件 05.jpg
②设备和网络组态:添加HMI面板,并组态网络连接。
附件 06.jpg
3.数据发送和接受缓冲区设置
①根据加湿机系统的点数表找到需要的参数,加湿机的点数表需提供地址、变量名、功能码、数据类型等,本项目需用到的参数我已飘绿并进行了标注说明。下面介绍如何使用这些变量。
附件 07.jpg
附件 08.jpg
②创建数据发送和接收缓冲区
在软件中单独创建一个DB数据块,用来作为数据发送和接收的缓冲区。
附件 09.jpg
缓冲区如何设置?举一个例子(其他按照该方法操作即可)
加湿机充水阀、排水阀状态参数如下:
附件 1545104085(1).jpg
在DB块中建立数组名Read_DI_Array,数据类型为Bool型。
注:数组长度要大于读取参数数量,这里设置数组长度为6(0~5)
附件 11.jpg
到这里,所有的前期工作已经完成,到了进行软件编程的环节。
4.软件编程
① 创建一个FB数据块作为Modbus通讯程序块,然后在Main[OB1]组织块中调用该程序块。
② 调用MB_COMM_LOAD指令,会自动生成背景数据块。对每个通讯端口进行组态。
附件 12.jpg
程序快几个主要端口引脚组态说明:
REQ:连接系统时钟的首次循环变量地址%M1.0 (FirstScan(1))。
PORT:连接通信的通信模块的硬件标识符,在PLC变量表里的系统变量里找到。
附件 13.jpg
MB_DB:连接参数在这里必须与 Modbus_Master的MB_DB参数相连。
波特率BAUD、奇偶校验PARITY和前面设置一样。
③ 调用Modbus_Master指令
MB_ADDR:加湿机从站地址为1。
DTAA_ADDR:数据起始地址
DATA_LEN:访问的数据位数或字的个数
DATA_PTR:在前面建立的数据发送接收缓冲区,在这里将用到。表示指向要进行数据写入或数据读取的标记或数据块地址。
附件 14.jpg
对加湿机参数数据位、字的读取和写入,该项目中使用到了多个Modbus_Master指令,一定要采集用轮询的方式。否则读写的数据会报错。轮询方式如下:
附件 15.jpg
前一个Modbus_Master的完成位DONE作为下一个Modbus_Master的数据请求位REQ
5.    HMI画面组态
① 创建一个加湿机参数画面“加湿机参数”
② 设计编辑画面:如下
附件 16.jpg
③ 变量连接
举例:加湿机需求量地址为30001,在PLC中对应DB数据块Master_HR的Read_AI数组的第一个元素Master_HR_Read_AI_Array{0},在过程----变量中拖拽即可。画面中其他参数组态按照该方式依次组态完成即可。
注:PLC的变量一定与加湿机的变量地址对应好。
附件 17.jpg
至此一个完整的通讯项目已经完成。
附件 18.jpg
533
hwjtxf
文章数:257
年度积分:239
历史总积分:533
注册时间:2018/3/29
发站内信
发表于:2018/12/19 15:33:27
#1楼
楼主要是有相关程序图纸 做下附件就更完美了!
290
工控帮
文章数:34
年度积分:92
历史总积分:290
注册时间:2018/11/6
发站内信
发表于:2018/12/19 16:16:37
#2楼
回复 #1楼 hwjtxf
好的
181
摸金校尉
文章数:26
年度积分:151
历史总积分:181
注册时间:2018/12/19
发站内信
发表于:2018/12/19 17:01:07
#3楼
感谢
19505
liuxd6909
文章数:11150
年度积分:275
历史总积分:19505
注册时间:2008/7/19
发站内信
2017国庆活动(三)
2015Indusoft体验
LOGO!体验一等奖
发表于:2018/12/21 1:17:57
#4楼
西门子1200 ,正在学,感谢 楼主分享!
19590
zzn6737
文章数:11937
年度积分:374
历史总积分:19590
注册时间:2006/9/18
发站内信
2016国庆活动(三)
发表于:2018/12/21 6:53:47
#5楼
这个好详细,弄成单个文件,加实例程序更好!!
13239
fuhuafeng72
文章数:4820
年度积分:253
历史总积分:13239
注册时间:2011/11/21
发站内信
2017国庆活动(三)
2016国庆活动(三)
2014逛工博
发表于:2018/12/21 8:32:17
#6楼
很好的分享
81
HBZkKIVvlAAJ
文章数:1
年度积分:50
历史总积分:81
注册时间:2018/12/23
发站内信
发表于:2018/12/23 16:00:03
#7楼
请问 DATA——LEN长度数值代表位还是字,是根据功能类型确定了吗。例如 功能码 01 读取线圈位 ,长度6,代表6个位码?
118
copy4445
文章数:5
年度积分:118
历史总积分:118
注册时间:2019/1/12
发站内信
发表于:2019/1/12 21:24:28
#8楼
3接485+,2接485-,5接变频器里的GND是吗
此帖发自论坛APP
492
jingjing7999
文章数:176
年度积分:439
历史总积分:492
注册时间:2019/1/3
发站内信
发表于:2019/1/13 12:21:54
#9楼
学习了。
工控学堂推荐视频:

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 中华工控网 Copyright©2019 Gkong.com, All Rights Reserved

202.8