电工进修网

 找回暗码
 急速注册
电工进修网 电工进修网 技巧文库 plc 三菱plc 检查内容

西门子PLC的“ModbusRTU通信”和“轮询”

2019-11-6 12:15| 来源:电工进修网| 检查: 895| 评论: 0|来自: PLC法式榜样猿

摘要: Modbus是PLC应用中经常使用的通信手段,轮询是在停止一个控制器连接多个从站的通信时经常使用的编程手段,由于ST说话在数据处理上的优势,此办法变得更加简单。下面以西门子S7 1214C PLC的ModbusRTU通信为例,展示ST说话下的 ...
Modbus是plc应用中经常使用的通信手段,轮询是在停止一个控制器连接多个从站的通信时经常使用的编程手段,由于ST说话在数据处理上的优势,此办法变得更加简单。下面以西门子S7 1214C PLC的ModbusRTU通信为例,展示ST说话下的modbus通信和轮询。
硬件连接
要预备的硬件和软件:
1.西门子plc 1214C;
2.通信板CB1241;
3.USB转RS485转换器;
4.Modscan2/Modsim32电脑模仿软件模仿主/从站,
5.SPU(serial port Utility),监督通信报文。
PLC作为主站,应用软件Modsim32模仿从站,应用两芯线(最好是带樊篱双绞线)停止连接:


硬件连接
将通信板的AB两端与转换器的AB两端停止连接,要留意AB两端辨别正负极,反接不会烧坏设备,然则没法正常通信。
编写法式榜样
1.设备组态
在博图软件中设备西门子PLC和通信板。modbus通信须要设置波特率、数据位、停止位和校验位等通信参数,在博图中的设备组态中设置此参数,主从站设置分歧便可通信。


通信参数
设置波特率9600,数据位8位,停止位1位,无校验,在PLC离线形式下下载硬件组态。


下载组态信息
2.调用modbus功能块
西门子的通信普通都须要调用体系功能块,在“指令”-“通信”-“通信处理器”下可以找到modbus通信功能块:


通信功能块
可以看到这里供给两套modbus通信模块,这两套都可以应用(暂不清楚详细的差别),本文选用的是下面的版本较低的模块。
新建法式榜样段,将设备模块MB_COMM_LOAD和主站模块MB_MASTER拖入法式榜样中:


调用功能块
功能块调用后要对须要的引脚停止赋值,各个引脚的功能可以按F1检查,建立一个DB数据块,声明一些变量连接功能块的引脚:


声明变量
下面声清楚明了两个容量为5的字数组,用于数据的发送和接收,这个容量可以根据需求随便任性设置。然后将这写变量写入模块引脚:


模块赋值
设备模块MB_COMM_LOAD的触发REQ只须要在连接时触发一次啊,是以直接将体系内置的变量“firstscan”写入便可,上电后履行一次。
由于通信的读和写都由主站模块MB_MASTER完成,是以我们对这个模块停止两次赋值,第一次完成读的功能,由modbus地址40100开端,读5个数据,写入"ModbusData".Read_Data中;第二次完成写的功能,将"ModbusData".Sent_Data中的数据写入由modbus地址40110开真个5个数据中。
法式榜样写到这里曾经可以停止通信了,假设想要在线实验一下,可以将变量写入监控表,手动触发读写触发引脚变量,不雅察模块的输入状况,这里就不演示了。
3.编写轮询法式榜样
所谓轮询就是顺次询问,假定我们有3个设备作为modbus从站,从站地址(站号)顺次为1,2,3,应用case语句顺次对这3个设备停止读写操作,而读出和写入的数据分别存入3套不合的变量傍边。


建立设备变量
应用一个构造体来描述一个设备的一切信息,包含5个状况字(states:Array[0..4] of Word)和5个控制字(ctrl:Array[0..4] of Word),将构造体声明为数量为3的数组,存放3个设备的数据。
在全部轮回开端前,设定肇端设备地址,然后按照“读操作触发,读数据,读设备地址+1,延时,写数据,写操作触发,写设备地址+1,延时”的次序持续轮回,按照设备地址号选择下面的构造体变量:


读操作
iStep=0时,封闭读写触发,设定读写设备地址为1;
iStep=10时,读操作触发,模块收回读数据敕令,模块置位busy旌旗灯号;
iStep=11时,等待读操作完成,模块读到设备数据后会置位done旌旗灯号,复位busy旌旗灯号,根据旌旗灯号状况将读到的数据(Read_Data)写入设备数据构造体(DeviceData.states),假设设备地址=1,则写入DeviceData[1].states,设备地址变更,写入的构造体也会照应的变更,包管不合设备的数据不会相互干涉。这里加一个断定,一段时间读不到数据前往10步调重新停止读操作。
iStep=12时,用计数的方法做一个简单的延时功能,防止因读写频率太快招致设备反响不过去。


写操作
向设备写入信息,在写入操作触发前要先将照应设备构造体中的数据(DeviceData.ctrl)写入发送数据缓存区(Sent_Data),然后再停止写操作,与读操作类似,写入完成后设备地址+1,跳转下一步调。
运转法式榜样
将法式榜样编译写入后重启PLC,可以看到通信板的指导灯曾经开端闪烁,而轮询步调iStep一直在10,11两步,证明读数据敕令曾经收回,然则没有接收到设备的反应,一直在停止第一个设备的读操作。


固然可以或许看到通信灯在闪,但我们依然不克不及直不雅的看到这个搜集中的状况,这是就须要前面提到的SPU软件,监督串口搜集中的报文。


监督报文
设定端标语,选择Hex数据格局,点击开端,可以看到以后搜集中一切报文,根据modbus协定的规格(可以自行百度),可以断定这些报文就是plc收回的读敕令。
想要读到数据必须要有从站,我们应用modsim软件模仿出3个从站:


modsim
将3个模仿从站地址分别设为1,2,3,肇端modbus地址与法式榜样设为分歧:40100,长度设为20,如许读写地址都能看到。点击connection设定通信参数(波特率,数据位,停止位,校验位与法式榜样中设为分歧)。点击肯定后能后看到通信板和转换器的接收发送指导灯开端闪烁,法式榜样中的设备地址也在1-3中轮回变更:


通信指导灯
由于动图的帧率选的较低,会漏掉落几个灯的状况。。。


变更的设备地址
监看法式榜样中设备地址,可以或许看到地址在1-3之间轮回变更。可惜的是modsim与SPU不克不及共用一个串口,看不到modsim反应的报文了。
接上去我们在modsim中改变几个地址的值,看看PLC的设备数据构造体中可否停止照应的变更,将设备1的数据设定为:
40100设置为110,
40101设置为111,
40102设置为112,
40103设置为113,
40104设置为114,


设定命据
数据设定后在PLC的DB块中监督DeviceData的值:


读取数据
可以看到DeviceData[1].states的值曾经变更(16进制),而DeviceData[2]和DeviceData[3]并没有变更。
下面停止写数据的验证,在法式榜样中将DeviceData[2].ctrl随便任性赋值,然后再modsim中检查:


写入数据赋值


写入成功
可以看到modsim 3中照应地址的数据也曾经变更,而其他模仿设备中并没有改变。
其他
在实际的项目中,例如变频器控制,通信参数和数据地址普通都是设备(从站)规定好的,我们须要查阅设备手册,在法式榜样中做照应的设置便可,经过过程通信获得的数据可以有触摸屏显示出来,便利操作人员监控设备状况,也能够做一写断定,用于设备的报警等处理。

看过《西门子PLC的“ModbusRTU通信”和“轮询”》的人还看了以下文章:

最新评论

热点文章

|电工进修网 ( )

GMT+8, 2019-11-19 09:11

Powered by © 2011-2019 rusdir.com 版权一切 免责声明 不良信息告发

技巧驱动将来! 电工进修网—专业电工基本知识电工技巧进修网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

前往顶部