技术论坛

 s7 200 smart modbus rtu通信例程,单条msg指令多任务,读轮询,写优先,掉站处理

返回主题列表
作者 主题
不欲勿施
奇侠

经验值:8119
发帖数:842
精华帖:14
楼主    2021-10-05 12:05:49
主题:s7 200 smart modbus rtu通信例程,单条msg指令多任务,读轮询,写优先,掉站处理 精华帖 

好几年前做过用一台226PLC与二十几台变频的modbus通信,当时就是一个msg指令接一个msg的指令编程,把PLC的空间填满了。因为都是同样的变频器,后来通过只改变从站的站号把通信功能实现了。现在知道了,不仅有那种多个msg组成的传统方式,还有对数据区V先赋值再用指针把值传给msg的脚的方式,还有这个帖子里的在程序里进行赋值的方式,有其它方式网友跟帖探讨。

各种方式各有优缺点吧

1,传统方式,优点:比较直观,缺点:当通信的任务多了以后,程序量会比较大。

2,数据区赋值方式,优点:程序量小,缺点:数据区占用的多一些

3,本帖方式,就是在程序里赋值。程序量比数据区赋值方式多一些,但比传统方式的程序量少,数据区占用少一些。


此例程是个子程序

此例程是PLC串口连接了一台电能表(地址2),四台变频器(地址3,4,5,6),

此例程有写操作优先功能

此例程有掉站跳过功能,另外还有1分钟掉站通信恢复功能


拿到程序后的疑问:

1、为什么都是局部变量

这个通信子程序是我程序框架里里的一小部份,全部都是局部变量在我的程序框架里正常工作。下载者将变量自行替换。

2、为什么上升沿信号不是上升沿指令产生的

因为子程序里使用上升沿指令程序工作不正常

3、为什么我直接用这个子程序无法正常工作

此程序是我框架程序里的一部份,直接使用不可以。要根据自己的应用对变量地址更改。

4、可以重复调用吗?

在我的框架程序里是可以重复调用,但也就调用两次,因为只有两个串口嘛,相应的指令也要变一下。

如果有其它问题欢迎留言,共同探讨。


看下面的帖子

【S7-200 Smart开源标准化编程】modbus rtu终极封装-单条msg指令多任务读轮询写优先掉站跳过掉站恢复

https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1760741&b_id=64&s_id=0&num=0#anc


13478405725
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。