回复:关于MODBUS通讯一点小心得,欢迎探讨

芳季

西门子1847工业学习平台

  • 帖子

    15812
  • 精华

    103
  • 被关注

    988

论坛等级:至圣

注册时间:2007-08-03

钻石 钻石 如何晋级?

发布于 2017-08-15 10:46:46

7楼

展开查看
以下是引用迷失中原在2017-08-15 10:10:53的发言 >5楼

    如果用DONE位启动下一个设备发送,环环相扣,会存在设备互相干扰的问题,即前一个设备通讯影响后一个设备发送。这个还是不是主要问题所在,通过DONE位控制轮训会使优先级分配问题变得复杂,举个简单例子。

     假如有10台称重仪表,每台仪表有一个读重量、写清零的任务;还有一台变频器,控制启停;变频器的优先级是最高的,当变频器需要启停时,前面所有的读写任务都要让步;仪表的写等级中等,正常不需要写,当该仪表需要清零时候,跳过该仪表读数据;所有仪表的读等级最低;另外,在自动控制时候还可以动态分配优先级,比如其中5台仪表不需要参与控制,可以分时每周期读取一台未用仪表等。

     如果使用DONE完成上述过程,是很麻烦的,尤其是设备比较多的情况。


     另外还有一点,个人猜想不是很确定:采用DONE位轮训肯定会受到扫描周期的影响的,但是定时中断可能不会影响到。假设扫描周期100MS,定时中断20MS,定时中断和接收中断都不受扫描周期限制,那么理论上一个周期可以读取5个任务,保守4个;采用DONE轮训在主程序里调用,很难保证不受扫描周期限制。

     

     其实就是两种不同的思路和框架,用的习惯就觉得好用了!

以下是引用芳季在2017-08-15 09:37:02的发言 >3楼:那就是众多信息之间...

引用3楼详细内容:

那就是众多信息之间的空闲时间的总和   和   断线从站重发时间的和   这两个时间之间的较量了。

你认为会有很多重发的机会  可以让你争取到实质性的时间吗?

你宁可每一条信息都等上5毫秒来弥补重发的一次性等待?

丢了一个站你的设备还能愉快运行吗?

首先,不知道怎样互相影响。最好慢慢谈。

第二,优先问题并不代表要用Done位决定。而是由另外的流程控程序决定。Done只是个苦力,告诉我们做好了而已。他做好了然后到做什么,是我们的事是我们程序有选择性的决定,不是硬性的一直排队轮。

第三,我觉得你是试过modbus_msg可以在中断中使用。是吧?还是你只是设想?或许你本来就没用库,是自编的程序。那么,我承认,你赢。

第四,你说不须要超时,那么,你是不须要回复吗?只有广播是不须要超时的。你不须要超时,怎么结束本次通讯?万一你放弃本次通讯后从站偏偏回复了,那么线上信号就开始乱了。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9427条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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