隐藏一次数据采集中的底层通讯过程(某些设备完成一次采集需要一次以上的发收过
程,如西门子S7200);封装针对采集点分散的动态采集算法;封装常用的命令操作;对与监控系统间的交互提供统一的接口;PLC 驱动封装了底层的通讯过程,只将接口方法暴露在外面,开发人员以统一的方式去调用这个方法,从而保证软件对客户的透明性,使开发人员从低层的开发中脱离出来,降低开发的难度。 字串9
对驱动的开发人员来说,需要关注的接口仅有以下部分: 字串7
定义设备本身的属性;如地址、实时采集的时间要求等;定义设备的读写操作属性;如通道数量等;通用设计仅提供跟设备协议相关的组包和解包接口,实现过程将由开发人员完成。 字串7
5 关键问题分析
字串1
为提供信道利用率,提高系统效率,在PLC 的通信框架设计中考虑了几个关键问题。 字串6
5.1 三种采集模式
经过对现有的数据交换的分析,将用户的一般需求拟概括为三种采集模式,即密集采集,按需采集,定时采集。
字串6
密集采集模式:在这种情况下,用户希望能尽量利用物理带宽,保证最快的采集速度和更新。在这种模式下,理想状态是设备始终处于采集状态。采集目前所有激活通道中离需要采集的周期时间最小的通道。保证所有的通道都能获得采集机会,但是相对与其他模式,在该模式下CPU 占用率会比较高。 字串2
按需采集模式:在通讯链路需要受控的情况下,比如用户采用GPRS 进行采集,按流量计费,所以不能进行大量的通讯。这时候通过设置采集模式为按需采集,然后在需要时再调用接口函数启动单次采集。否则不进行数据采集。
定时采集模式:该模式是在CPU 的占用率和采集速度之间进行折衷的采集框式,保证在用户设置的通道刷新周期的时间内进行通道的采集,之后直到下一次通道的刷新周期到达再进行下一次采集。
字串8
在模块设计中,采集模式作为设备类的一个属性,由开发人员根据具体情况,选择合适的采集模式。不同采集模式的采集算法实现如下: 字串5
密集采集执行流程:设置一个采集周期如1000ms。每当开始一个新采集周期时,重新计算采集通道的优先级别。遍历所有的通道,找出目前优先级最高的通道,进行采集。对通道进行分块(块中包含最需要刷新的通道)。进入通讯循环(某些设备进行一次采集至少需要两次通讯所以需要通讯循环)。发送数据请求并等待回应;根据返回的信息解析出结果,并作相应处理;判断是否需要下一次采集,如果不需要跳出循环;更新通道和采集标志;继续发送线程消息启动下一次采集直到一次通讯循环结束;直到遍历完所有需采集的通道。 字串2
按需采集执行流程:循环对每个通道进行采集,保存采集成功的值,并进行后续处理。定时采集执行流程由定时器触发,采集流程与密集采集一样,但在判断没有满足采集要求的通道不进行采集。 字串3
5.2 采集点分散的动态采集算法 字串6
在现有的数据交换过程中,用户关心的数据往往只占全部信息的很小一部分,而且这些采集点分散在海量的数据中,如果不加判断的依次读取数据,有效信息与采集信息的比例很低,实时性差;如果仅采集有效信息,分配的采集粒度过小,又会造成系统效率低下,信道利用率差。针对这一问题,采取以下的解决方法: 字串7
(1)只采集用户关心的数据。如当有多个通道时,只传送当前用户只关心的通道的数据,而不关心其它的通道。保证采集尽量少的通道,为每个需要采集的通道提供更快的采集周期。从而减少通讯量。
字串9
(2)对于待采集的数据分配不同的优先级,对实时性要求高的部分数据优先采集。可以根据用户设置的数据刷新时间来改变其优先级。 字串7
(3)实现一个动态分块算法,在一个合理的粒度上对采集的信息分块传输,兼顾信道利用率与有效信息获取的实时性;实现的分块算法简述如下:在采集时判断,如果当前采集的寄存器类的激活通道可以组成一个数据请求包,则进行处理,提高一次采集的通道数。根据开发人员定义的通道优先级,找出优先级最高的通道地址附近的地址连续(或紧密)的通道,这些通道形成一个通道块。重复同样的过程,将剩下的通道继续分块,直到形成的块数大于某一规定的数值比如20 或将本寄存器的所有通道分配完成。 字串2
(4)根据通讯协议的特点,在打包数据请求时尽量保证包含更多的请求,从而减少请求的总次数。
字串5
6 结论
字串7
根据本文的PLC 通用性数据接口开发人员已开发出多个厂家的PLC 驱动,并在不同项目中得到应用。在此PLC 通用数据接口基础上开发PLC 驱动,缩短了开发时间和难度。投入运行的系统通信稳定,采集速度快,通用性好,可靠性高。保证了项目的顺利实施。本文作者创新点:具有通用性的监控系统与PLC 通信接口设计,能够大大缩短开发时间和难度,并提高通信稳定性、实时性,具有很高的实用价值和经济价值。

