技术论坛

S7-1200 MODBUS 轮询程序

作者 主题
游民

经验值: 122
发帖数: 6
精华帖: 0
主题:【探讨】S7-1200 MODBUS 轮询程序


只看楼主 楼主 2019-07-06 21:57:14



在各位大佬面前不敢献丑,虚心请教。。。。程序错误之处还请指点。

以前用FX3U轮询20个仪表,通过偏移量修改数据,几乎很少的步数就能完成。

后面接触S7-1200,看手册,要想实现轮询,有多少个站点就需要写对应数量主站指令,不知是我理解错了还是啥???!!

现在自己琢磨了一套,数组里面下标不一定是常量,也可以是变量,这就方便了很多,用三菱的思路套过来,一样可以只写一个主站程序就完成多个仪表的数据接收、发送、站的连接成功。

我现场试过了,能满足要求。



 
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1571473&b_id=50&s_id=0&num=5

至圣

经验值: 127368
发帖数: 22003
精华帖: 824
回复:S7-1200 MODBUS 轮询程序


只看楼主 2楼 2019-07-09 17:26:46

嗯,我觉得可以通讯上是根本的。

使用的是485通讯模块,当EN=1时,每扫描周期到FB时就能获得模块信息;模块它自己按配置工作,不用管理。

所以不应该用定时(周期)REQ。每次REQ上升沿,是将FB输入送给模块,启动一次通讯。

这是异步通讯,没必要这样做。

实际做法应该是,监控FB的输出 DONE、BUSY、ERROR和STATUS;由此判断通讯状态;完成一个站点,立即配置下一站点参数、报文;下个周期 REQ 上升沿即可。

你说呢?



学而时习之,不亦说乎?温故而知新,不亦乐乎?
以下网友喜欢您的帖子:

  
游侠

经验值: 387
发帖数: 31
精华帖: 0
回复:S7-1200 MODBUS 轮询程序


只看楼主 3楼 2019-09-06 15:28:55
以下是引用yming在2019-07-09 17:26:46的发言 >2楼

嗯,我觉得可以通讯上是根本的。

使用的是485通讯模块,当EN=1时,每扫描周期到FB时就能获得模块信息;模块它自己按配置工作,不用管理。

所以不应该用定时(周期)REQ。每次REQ上升沿,是将FB输入送给模块,启动一次通讯。

这是异步通讯,没必要这样做。

实际做法应该是,监控FB的输出 DONE、BUSY、ERROR和STATUS;由此判断通讯状态;完成一个站点,立即配置下一站点参数、报文;下个周期 REQ 上升沿即可。

你说呢?


对,没必要加时间,我只监控DONE和ERROR,完成了进行下一个,错误时间长了也进行下一个,不影响整体通讯,但是可以输出通讯报警


当你排除了所有的不可能,无论剩下的是什么,即使再不可能也一定是真相
以下网友喜欢您的帖子:

  
游士

经验值: 178
发帖数: 12
精华帖: 0
回复:S7-1200 MODBUS 轮询程序


只看楼主 5楼 2019-09-12 22:07:54

精彩好文!


 
以下网友喜欢您的帖子:

  
奇侠

经验值: 8099
发帖数: 1308
精华帖: 6
回复:S7-1200 MODBUS 轮询程序


只看楼主 6楼 2019-10-05 16:41:04

嗯,这种方法也可以,看到论坛里面有人讨论过,这种方法唯一不足是 当某一站点报错的时候发现不了 ,下个周期又执行别的站了  因为那个报错点就一个,如果用SCL  把输出的错误字 放一个数组变量 每执行一站就让数组的下标动作一次


养活一团春意思,撑起两根穷骨头
以下网友喜欢您的帖子:

  
至圣

经验值: 12690
发帖数: 2083
精华帖: 23
回复:S7-1200 MODBUS 轮询程序


只看楼主 7楼 2019-11-06 07:56:38

手册里没有说一定要多个主站指令才能轮询,也提供了FAQ用一个主站指令实现的。三菱的我也用过,确实更简洁方便,因为三菱用指令代替功能块了。


 
以下网友喜欢您的帖子:

  
  • 上一页
  • 1
  • 下一页
收起
S7-1200 MODBUS 轮询程序
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。