发布于 2013-12-28 11:56:56
1楼
原先的30秒有点写错了,应该是30次。
1、
1.5秒是指有16台从机中有15台同时通讯中断在非重试周期内时,纯粹只有1台在通讯的情况且通讯周期在50ms左右(等待5ms+请求数据15ms+等待5ms+接收数据25ms=50ms)。1.5s内是只有通讯正常的那1台在通讯而以,其他15台通讯错误的都在该死的排队中不给占用通讯时间。
比如每台从试周期是30次,重试等待250ms,那么15台顺序重试下来就大概4s,而单独剩下的1台通讯都正常每个通讯周期就是50ms,30个周期后刚好1.5s,那15台通讯中断的又开始批量重试了。所以,单独那1台能够自由活动的时间是1.5s。
2、
在该死的重试周期内,是不去管那15台通讯是正常呢还是失败的,全部当做通讯失败处理。只有在一个通讯周期结束后才去减1他们的重试周期。当ta们的重试周期为0时就重新测试通讯是否正常,如果正常就保持重试周期是0,每次通讯都有ta的份;如果通讯不正常咯,那就对不起ta,依然给ta弄个30次周期进入下一轮等待重试时间。
ps:这是一种通讯的简单优化,实际情况你可以根据设备的重要性规定不同的重试周期,而且限制每个通讯周期重试的从机数量。不过这些用PLC来实现是有点累。建议多看看编程思想的书籍拓宽思路,对于多通讯口设备作为数据交换服务器编程是很有帮助的。
ps2:还有,我不是老师,乃这样称呼我为老师,老衲我惭愧得无地自容啊。