回复:西门子1510SP扫描周期提升探讨

yming

西门子1847工业学习平台

  • 帖子

    23148
  • 精华

    881
  • 被关注

    1253

论坛等级:至圣

注册时间:2004-03-06

钻石 钻石 如何晋级?

发布于 2018-06-07 00:38:10

11楼

展开查看
以下是引用Zane在2018-06-06 23:33:49的发言 >10楼

如果中断的时间间隔在50MS以内,那么我认为在中断里和在OB1里调用MB-RTU的通讯程序几乎是没有什么区别的,如果中断的间隔大于100ms,那我认为是会有问题的,通讯的结果返回因为中断的延时被延迟了,除非有通讯接收中断,但MB-RTU通讯没有这样的机制。


因此,整体来说,我并不建议把MB-RTU通讯程序放在定时中断子程序中,增加编程的难度,固定的定时触发间隔受制与通讯波特率,太长了不行,太短了也不行,跟OB1一样没有啥意义,现在的OB1也是可以固定扫描周期的。

以下是引用东方红一红在2018-06-06 14:35:19的发言 >7楼:通讯程序怎么能放在...

引用7楼详细内容:

通讯程序怎么能放在循环中断里呢?比如,程序发出了指令报文后退出了中断,而通讯对象返回了应答,plc通讯modbus程序没有在中断激活中,会出什么情况?不丢数据才怪呢。

以下是引用冬天里的雪在2018-06-06 11:41:21的发言 >3楼: 有些人Modbus R...

引用3楼详细内容:

 有些人Modbus RTU可以放在OB30中, 我放进去后通讯数据丢的不要不要的

 想想还真的是这么回事儿。如果主循环扫描周期就是30毫秒左右,放在主扫描循环中,和30毫秒中断中不是一码事么。

要是主扫描周期100毫秒,30毫秒的循环中断,实际上,30毫秒中断已经与CM模块交换了3次,主循环OB中才处理一次。这前两次接收的数据不是丢了么?

这就是说,主循环扫描周期要少于30毫秒才行。

看来真是有些要注意的地方呢。

幸亏我的程序主循环扫描瞬时最大才十几毫秒。所以才不会出现丢数据的情况。

如果100毫秒主循环要不丢数据,那在30毫秒中断中,要能“压入”至少3次以上读回的数据才行。(如果CM是接收数据模式的话。)

-------------------

再一次说明,要知道硬件是如何工作的!不能仅就程序说话。

CM通讯模块是自己工作的!每次访问它,如果通讯没完成,会告诉你Busy;完成了就交换数据。





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

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10587条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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