完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
【EVB-335X-II试用体验】之EVB-335X-II通过Modbus-RTU协议控制西门子S7-200 Smart系列PLC(真正的工业级应用案例) 从拿到EVB-335X-II开发板,开始上电测试板载的基本功能,然后搭建开发环境,编写基于寄存器的GPIO驱动程序,编写Linux GPIO库的蜂鸣器控制驱动程序,再到移植QT,软键盘测试,My SQL的移植及远程调用,My SQL数据库的图片存取,最后到Modbus从站在开发板上的应用开发,以及boa的Web服务调用,这一系列的功能应用,为我的车间级、工业级的数据采集服务器做了很好的技术铺垫。这篇试用报告,将结合我手头上的实际项目,综合应用QT+libmodbus库,完成对车间内的基于PLC的工业设备的远程控制与数据采集。 我现在正在做的项目是一个铸造车间的铁液熔炼控制项目,需要上位机系统实时采集熔炼炉中铁液的温度,以及当前铸造工件的模具温度。对于工业设备的自动化控制,由于编写PLC程序简单、快速、高效,以及其抗干扰能力强,当前国内主流方法,还是采用基于PLC的DCS系统控制,我当前的项目也不例外,我的电气控制方式是S7-1500+S7-200 Smart相结合的方式。 其中S7-200 Smart系列PLC天然支持Modbus RTU通讯协议,即可配置为主站,也可配置为从站。 在这篇使用报告中,我们将S7-200 PLC作为Modbus RTU从站,即作为被控制方和数据提供方,我们的EVB-335X-II作为Modbus-RTU主站,完成远程控制西门子PLC的Digital Output。 主要通过EVB-335X-II的QT界面控制PLC的输出接点输出或断开,并通过Modbus协议的线圈读取命令,读取PLC的输出状态。 有些网友可能觉得奇怪,为什么总是写控制GPIO的帖子?我想说的是,如果你真正做过工业过程控制项目,如果你从实际工作中的大部分项目的实际需求出发,不难发现,过程控制中,无非就是GPIO的输入、输出,以及模拟量的输入、输出,再加上相应的通讯,一个项目也就我完成了,并非一定要用到那些所谓的高大上的技术,比如OPencv视觉识别,这些对于一般的项目我们很少会用到,即使有这方面的需求,靠我们一个人两个人搞的一些入门级的测试,根本就过不了关,而是买一些应用比较成熟、稳定可靠的产品,通过标准的接口协议集成的我们的系统中。所谓的标准接口协议,无非就是profinet profibus dp canopen devicenet和我们谈到的主角Modbus,相比较其他的通讯协议,Modbus最简单,最通用,也更容易实现,可以说,把Modbus搞定,我们去集成其他的第三方仪器仪表,一点儿问题没有,分分钟搞定。闲话少说,开始这次的试用之旅。 1. 西门子S7-200PLC侧Modbus RTU从站的程序分析与编写 1. 1西门子S7-200PLC侧Modbus RTU从站的程序分析 我们知道,对于PLC的控制程序开发,主要是采用梯形图编程语言,以电气工程师设计电气控制流程图的方式设计开发程序,即一系列的自锁、互锁等。S7-200 PLC本身就集成了Modbus RTU的库,我们只需要简单的几步即可是PLC工作在主站或从站模式。 首先启动PLC的编程软件,如图所示: 在菜单项中,点击“帮助-帮助”打开编程说明文档,定位到库编程章节,如图所示: 这一章节详细介绍了Modbus主站、从站的相关设置。我们主要关注从站的设置。 首先看一下S7-200支持的Modbus命令: 其他的命令都很好理解,唯有5和15这两个命令比较特殊。对于PLC来讲,主要涉及到过程控制稳定与安全,虽然S7-200支持通过Modbus RTU通讯协议的线圈写入命令来直接控制Q的输出状态,但是实际应用中,西门子是不会将通过Modbus 命令写入的对Q的控制直接驱动硬件,比如说,就是你通过命令,要求Q0.0输出1,命令可以执行成功,但是物理PLC上急速没有输出,只是西门子PLC设计人员故意这样做的。这么做的理由很简单,Q的输出,如果过程控制的逻辑判断,很可能造成工作现场人员的伤害,所以我是无法直接通过命令写线圈的状态来改变Q的输出。 配置Modbus从站只需两个步,初始从站模块的参数设置,启动Modbus命令监听。 1)通讯、寄存器参数设置 初始化参数的子功能块如图所示: 关于每个引脚的定义与说明,请查看帮助文档,主要完成:从站地址、波特率、奇偶校验、PLC RS485接口、保持寄存对应的V区起始地址等。 2)启动监听 配置好参数后,在PLC的每个扫描周期中执行如下功能块: 1. 2西门子S7-200PLC侧Modbus RTU程序编写 1)参数设置 我们设置PLC作为从站的地址为1,开发上位机主站时,也要在访问从机的函数中设置从站地址为1。波特率为9600,无校验,VB起始地址从VB0开始,共2000个字节,即1000个字,程序如下所示: 2)启动服务监听 3)Q的输出控制 通过上面的分析,我们无法直接操作线圈COIL命令来控制PLC的Q输出,我们这里采用一种通过写入保存寄存器的数据,即将数据写入V区,由V区的位控制Q的输出。对于西门子PLC,以VW0Q为例,其高字节放置VB0,低字节放在VB1,如果我们想通过VW0控制Q0.0-Q0.7,对应关系应该为V1.0-V1.7与Q0,.0-Q0.7对于,控制程序如图所示: 1. 3硬件连接 S7-200与上位机通讯需要专用的PPI电缆,对通讯原理比较熟悉的应该知道,所谓的PPI电缆,说白了,就是一根RS232转RS485电缆,我们这里采用一根简易的RS232转RS485电缆,将S7-200 PLC与EVB-335X-II开发板相连,如图所示: 2. EVB-335X-II侧QT上位机软件开发 EVB-335X-II开发板上运行QT上位机程序,作为Modbus RTU主站,这里我们采用前面移植好的libmodbus库,如何创建基于libmodbus的QT工程请看我之前的试用报告。 软件主界面如图所示: 构造函数中初始化libmodbus库,并绑定checkbox与按钮的槽函数: 用户点击checkbox复选框,系统将判断该复选框是选择状态还是取消选择状态,进而控制PLC上的Q输出,程序如图所示: 为了验证我们的QT Modbus主机是否能够通过读取线圈命令,返回PLC输入或输出信息,我们这里采用读取8个Q输出的当前值,以检查读取的值是否和PL上Q输出指示灯相一致,读取函数如下所示: 如果PLC先启动,并且设置了Q的输出,我们后启动QT程序时,如果我们不做一些细节处理,8个复选框都处于未选中状态,无法真实反映当前PLC Q的真是情况,所以,在QT启动后,首选通过Modbus协议读取PLC的Q输出信息,并根据Q的输出为1还是为0,设置相应的复选框的选中状态,程序代码如下: 程序编译结果如图所示: 将libmodbus_s7-smart-plc_rtu拷贝到NFS共享目录 3. 上电测试 1)给PLC和EVB-335X-II上电 上电效果,机系统初始状态如图所示: 2)配置EVB-335X-II 设置EVB-335X-II的IP: ifconfig eth0 192.168.1.221 挂载NFS文件系统: mount -t nfs 192.168.1.109:/nfsshare /mnt-o nolock 3)启动QT程序并测试 cd /mnt ./ libmodbus_s7-smart-plc_rtu QT程序界面如图所示: 初始状态Q0.0-Q0.7均没有输出,复选框都处于未被选中状态。 我在EVB-335X-II触摸屏上选中Q0.2 Q0.4 Q0.7,发现PLC的输出LED灯依次被点亮,如图所示: 来张PLC的特写: 我们点击查看按钮,查看PLC的Q0.0-Q0.7的输出状态结果,如图所示: 来张读取Q状态的特写: 从读取PLC上的Q输出状态,以及物理PLC的指示灯状态,与我们在触摸屏上选中的复选框对应的Q编号是一致的。 4. 小结 通过前面对libmodbus的移植,结合西门子S7-200 PLC的特点,成功的完成了基于ARM的开发板QT程序对PLC的控制,做了EVB-335X-II工业应用的基本尝试,测试效果达到 了我当前项目的通讯要求。写下来,看似很简单,中间分析、测试S7-200的从站线圈、保持寄存器的起始地址,以及线圈的写入不成功的分析,和线圈读取数据的测试,话费了一晚上的时间,只好白天补一觉,下一篇我们将做EVB-335X-II做Modbus TCP主站与西门子S7-1500的通讯测试,S7-1500是西门子PLC中、高端产品,是原来S7-300/S7-400的升级版,期待下一篇测试报告吧,今天就聊这么多,洗洗睡觉去。
|
|
相关推荐
3 个讨论
|
|
只有小组成员才能发言,加入小组>>
【盈鹏飞RK3399安卓主板 XPC-3399Pro免费试用】+烧写出厂固件
10264 浏览 0 评论
【盈鹏飞EVB-T335开发板试用体验】debian系统烧写
3289 浏览 1 评论
【盈鹏飞I.MX6UL工控开发板试用体验】linux can 测试
3188 浏览 0 评论
261浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-18 08:18 , Processed in 0.417005 second(s), Total 42, Slave 34 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号