恭喜,你发布的帖子
发布于 2017-08-15 10:10:53
5楼
那就是众多信息之间的空闲时间的总和 和 断线从站重发时间的和 这两个时间之间的较量了。
你认为会有很多重发的机会 可以让你争取到实质性的时间吗?
你宁可每一条信息都等上5毫秒来弥补重发的一次性等待?
丢了一个站你的设备还能愉快运行吗?
如果用DONE位启动下一个设备发送,环环相扣,会存在设备互相干扰的问题,即前一个设备通讯影响后一个设备发送。这个还是不是主要问题所在,通过DONE位控制轮训会使优先级分配问题变得复杂,举个简单例子。
假如有10台称重仪表,每台仪表有一个读重量、写清零的任务;还有一台变频器,控制启停;变频器的优先级是最高的,当变频器需要启停时,前面所有的读写任务都要让步;仪表的写等级中等,正常不需要写,当该仪表需要清零时候,跳过该仪表读数据;所有仪表的读等级最低;另外,在自动控制时候还可以动态分配优先级,比如其中5台仪表不需要参与控制,可以分时每周期读取一台未用仪表等。
如果使用DONE完成上述过程,是很麻烦的,尤其是设备比较多的情况。
另外还有一点,个人猜想不是很确定:采用DONE位轮训肯定会受到扫描周期的影响的,但是定时中断可能不会影响到。假设扫描周期100MS,定时中断20MS,定时中断和接收中断都不受扫描周期限制,那么理论上一个周期可以读取5个任务,保守4个;采用DONE轮训在主程序里调用,很难保证不受扫描周期限制。
其实就是两种不同的思路和框架,用的习惯就觉得好用了!
请填写推广理由:
分享
只看
楼主