回复:modbus轮询到底要不要加延时

已锁定

yming

西门子1847工业学习平台

  • 帖子

    23200
  • 精华

    881
  • 被关注

    1254

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2024-04-17 21:42:31

23楼

展开查看
以下是引用昔日如诗在2024-04-17 16:55:47的发言 >22楼

怎么写错开扫描周期的程序?

以下是引用yming在2024-04-05 10:13:05的发言 >19楼:不是加不加延时的问...

引用19楼详细内容:

不是加不加延时的问题。

写任何轮询程序,就是要错开一个扫描周期!(启动下一个发送前,要隔一个扫描周期)

原因是:DONE只存在一个周期;若不隔一个扫描周期,你一定会遇到DONE周期内的另一个发送/接收。这样就出错了!


我们知道,所有(上升/下降)沿的指令,仅“生存”(=1;True)于该指令之后本扫描周期

功能块的DONE/ERROR也同样仅“生存”一个周期;因此,DONE=1(功能完成);MOVE 缓冲区数据到指定位置;ERROR=1;根据STATUS 处理错误;

检测(DONE或ERROR)的下降沿一定是下一个周期获得的。用它间隔标志位(仅“生存”一个周期)修改(MOVE)功能块地址、或读写参数等;若是连续读,也可以用它启动下一个功能块的REQ(请求);

否则,用间隔标志位下降沿,触发功能块的REQ。

这样完成DONE和下一个触发中间就隔了一个扫描周期。

通常PN/IO控制程序扫描周期不应该超过10ms。



学而时习之,不亦说乎?温故而知新,不亦乐乎?
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15234条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

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