一文解析西门子S7-1200的Modbus RTU通信

西门子s7-1200通过通信板和通信模块可以进行modbus rtu通信,plc作为控制器,一般用作modbus主站。当作为modbus主站时,一般会对多个从站设备的参数进行轮询。本文介绍西门子s7-1200作为modbus rtu主站时的定时轮询程序。
1
主要使用的硬件和软件
2
通信任务
3
程序思路
要实现该功能,采用定时器轮询的方式来读写参数,其流程图如下所示。
4
plc程序
在该程序中,使用fb块的方式进行封装,其用到的plc变量、plc数据类型、全局数据、fb接口如下所示。
上电初始化程序
将有效的工作模式改成4,也就是半双工(rs485)二线制模式
初始化modbus组态端口,首次循环、硬件标识符、波特率、奇偶校验在形参中定义,mb_db来自modbus rtu主站的背景数据块。
定时器程序
定义100ms的定时器脉冲,该时间可根据modbus主站读写的速度来调整。
计数器程序
定义计数器的值,通过定时器接通的信号,进行计数加1,当计数值大于等于任务数的时候,则复位计数值。这里的任务数是modbus轮询时的任务数量,该程序中任务数4。
modbus rtu主站通信
由于plc数据类型(udt)的数组是从0开始,所以对计数值进行减1操作。
modbus主站轮询的程序,定时器接通信号作为触发信号,输入数据和状态使用plc数据类型(udt),不同的任务使用索引来寻址。
ob中调用fb块
将该fb块在ob1中调用,并关联实参。
5
参数设置
在该项目中,需要完成5个任务(详见2. 通信任务),由于任务1和任务2不同时进行,则是4个任务进行轮询。其参数在全局数据块中进行设置,如图所示。
这里的从站地址、读写模式、数据地址、数据长度需要根据实际的任务进行设定。
对于其中的一个任务需求是,读和写进行分开,所以可以通过外部的条件修改模式和给定的值,如下图所示。
当需要写入参数时,给定一个写命令,也就是这里的“取料完成”信号。通过该信号,更改任务1(索引是0)的读写模式和值,当该任务完成或出错,复位该信号。
6
总结
以上就是该程序的全部内容。这种定时轮询的方式优点是就算其中一个设备出现故障,由于其定时轮询的方式,也不影响其它设备,适合从站的数据类似,读写的速度接近且不要求进行故障处理的场合。如果大家有更多关于modbus的应用,欢迎留言交流。


亚太天能科技T52X指纹锁介绍
华为云IoT联合旺龙智能推出无接触智能乘梯解决方案
DSP的大功率开关电源的设计方案
李开复谈人工智能:中国有机会追赶美国
点焊机焊接出现故障时该如何处理
一文解析西门子S7-1200的Modbus RTU通信
信息技术的技术特征在制造业方面的具体表现介绍
如何才能购买你心仪的笔记本
爆款推荐! 入选Intel物联网开发套件的高性能开发板-UP Squared
半导体光电子器件, 半导体光电子器件是什么意思
Elektrobit和NXP Semiconductors合作S32G3处理器
华为Sound X正式发售 售价1999元
机器人联合“天眼” 在新疆电力系统中首次运用
【新专利介绍】数字直读式防污垢液封水表
realme X系列限时直降150元搭载骁龙710处理器最高配置为8GB+128GB
浅谈嵌入式C语言设计模式
电阻、电感与电容的区别
PSO输出脉冲同步激光器时钟信号的功能解析
简析LVGL基础知识之对象模块
交流变频电源的特点,交流变频电源调试方法