1、一种是常规的多个站点的任务轮询执行的耗时。但这种轮询快慢和通信任务量有关,只要通信任务量不便,就改变不了执行速度,改波特率不算。
除非由于设备工作模式的变化导致通信的任务数量有变化,或者由于个别站点的通信质量不好或者掉站而导致的时间拖延,而这后者是有改善余地的。
就是在经过一定错误次数之后,把有问题的站点退出轮询。这样可以节约有限的通信资源,保证其它正常站点可以能更好执行,不被耽搁。
但这种轮询的快慢并不是这里要探讨的,因为它说明不了单个通信任务在本质上的执行快慢。
2、当用户的操作命令和参数发生变化的时候,Modbus设备能在多少时间之内迅速做出反应,这才是有分析意义的。
这里我们用1200和2个温控器之间的Modbus通信的实例,来做一个细致的分析。
上面这个GIF截图,是PLC和温控器之间的Modbus通信的手机快速连拍。
我在触摸屏仿真上用鼠标快速点击一个按钮。这个按钮是把温控器的工作模式在手动和PID自动模式之间来回切换,所以它是个写任务通信的反复执行。
可以看到点击的速度很快,温控器面板上的数字反应也在快速切换。就主观手感而言,执行是非常快的,滞后微乎其微,很难觉察。
但是这个写任务的执行到底消耗了多少时间呢?这执行中的细节受到哪些因素的影响?这些过程细节需要用Trace才能呈现。
下面用两张详细注释的Trace图来展示。
A、这张图是10秒钟内的整体通信场景的记录。其中可以看到周期性的2个温控器的轮询执行,和偶尔插入的临时写任务的优先执行。
B、下面这张图是单独取出上图中的某一次优先任务,具体分析它的执行和耗时
关于优先权,通常都是写任务。读任务同样可以优先,并且能实现一些很实用的工艺。
在前面细节分析的基础上,用程序来计算每个通信任务的执行时间,以便整体看一下这个写任务执行快慢在整体场景中的分布情况。
可以看到这个写任务的消耗时间在20多ms~50多ms之间变化不等。
下图是5号从站的0号任务、7号任务、18号任务的通信耗时统计,稍微加了点滤波。基本上能看出不同任务耗时的大致状况。