一种采集可编程逻辑控制器数据的数据项采集调度方法
技术领域
本发明涉及一种采集可编程逻辑控制器数据的数据项采集调度方法,主要应用在工业现场针对可编程逻辑控制器的数据采集上报装置中。
背景技术
1)可编程逻辑控制器
可编程逻辑控制器(Programmable Logic Controller,PLC),是一种专门为在工业环境下应用而设计的数字运算操作电子系统。它采用一种可编程的存储器,在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令,通过数字式或模拟式的输入输出来控制各种类型的机械设备或生产过程。
PLC的硬件主要由中央处理器(CPU)、存储器、输入单元、输出单元、通信接口、扩展接口电源等部分组成。其中,CPU是PLC的核心,输入单元与输出单元是连接现场输入/输出设备与CPU之间的接口电路,通信接口用于与编程器、上位计算机等外设连接。
现在工业上使用的可编程逻辑控制器已经相当或接近于一台紧凑型电脑的主机,其在扩展性和可靠性方面的优势使其被广泛应用于目前的各类工业控制领域。不管是在计算机直接控制系统还是集中分散式控制系统DCS,或者现场总线控制系统FCS中,总是有各类PLC控制器的大量使用。PLC的生产厂商很多,如西门子、施耐德、三菱、台达等,几乎涉及工业自动化领域的厂商都会有其PLC产品提供。
2)可编程逻辑控制器的通信方式
可编程逻辑控制器网络是由几级子网复合而成,各级子网的通信过程是由通信协议决定的,而通信方式是通信协议最核心的内容。通信方式包括存取控制方式和数据传送方式。所谓存取控制(也称访问控制) 方式是指如何获得共享通信介质使用权的问题,而数据传送方式是指一个站取得了通信介质使用权后如何传送数据的问题。
1.总线一般指RS485的串行通讯方式,其通讯距离和速率要远高于RS232通讯方式,一般现场的PLC 或变频器等设备用此协议较多,比较典型的是西门子的Profibus-DP,Modicon的Modbus等;
2.自由口通讯一般是指RS232的串行通讯方式,其通讯距离较短,速率较慢,一般在现场的某些仪表会采用这种方式,比较典型的是西门子的PC-PPI通讯;
3.以太网采用的是国际通用的以太网通讯协议,具备相当高的速率,但其问题是设备成本较前两种方法要高很多,因此没有总线方式普及。
3)工业设备上云
“工业4.0”是智能制造为主导的第四次工业革命,已在通过充分利用信息通讯技术和网络空间虚拟系统——信息物理系统相结合的手段,将制造业向智能化转型。而“工业4.0”这个概念要想落地,其中必不可少的环节则是工业设备上云,以智能制造为目标,达到生产的个性化和定制化。工业设备上云不仅包括传统的软件要素,还包括硬件传感器、云服务平台和智能控制等,除了要求数字化之外,更注重制造和运营的自动化和智能化,尤其是工业大数据采集和处理。
结合工业设备上云的核心——数据采集和控制两大特点,可以把实现工业设备上云的的过程分为四个层面:
1.感知层:主要负责连接设备,以及获取多维数据。实现感知的方式大致有以下几种:一类是通过网关对接各种PLC从而实现工业设备的数据采集和设备运行状态的控制;一类是直接通过有线或者无线的通讯方式直接与各种仪器仪表对接;还有一类是网关对接由集控器与传感器组成的整套硬件设备管控系统进行实时状态、参数、故障等数据的采集。
2.网络层:负责数据传输和设备控制。通过GPRS或者VPN通道,将采集到的数据远传至云端通讯服务,或者接收平台层下达的控制指令,最终实现与平台层的交互。
3.平台层:以云计算为核心,将采集到的数据进行汇总和处理。服务器将数据进行处理后通过web或者webservice方式提供给WEB端(PC、平板、手机)进行展示、分析、诊断和管理。
4.应用层,位于最顶层,是面向客户的各类应用。中易云物联网综合管控云平台是通用性平台,手机 APP、电脑端都不需要编程开发,其具有的6大类40几小类的功能模块可所见即所得的搭建出符合用户需求的各种物联网应用系统。
4)针对可编程逻辑控制器的数据采集上报装置
在可编程逻辑控制器场景中实现工业数据上云中的感知层的功能。主要负责可编程逻辑控制器的数据采集和数据上报到云平台两项功能,同时支持一些本地的数据处理、数据存储、数据展示、设备配置等功能。一般是基于嵌入式技术开发的电子设备,安置在工业现场,通过串口、网口等方式直接连接可编程逻辑控制器进行数据采集,然后通过有线、无线等各种不同的通信方式将数据上报到远端的云平台。
发明内容
传统的可编程逻辑控制器(PLC)设备及系统,大都部署在工业现场本地,仅限于企业内部对系统进行控制,并在企业内部查看实时采集数据,无法直接将数据上传到云端,具有较大的局限性。因此,建立一套完整的设备远程监测系统,实现设备数据上云,有着重要的意义。在建立这套设备远程监测系统的过程中,通过专用的采集设备将数据从PLC中高效准确的采集出来,是一个关键的环节。传统的PLC设备,特别是一些早期的PLC设备,往往存在处理能力较弱、采集数据的回复响应速度较慢的问题,还有一些PLC 设备采用了一些速度较慢的通信方式(比如RS232),也会导致采集速度较慢,这些都给PLC数据的高效采集设置了较大的障碍。在这种情况下,如果沿用传统的数据项固定周期性采集方式,必将导致大量的采集空窗,使得可用的采集资源没有被充分利用,造成采集能力低下,同时也会导致部分时刻采集任务过重使得采集任务无法完成,导致很多时候难以满足用户的实际采集需求。即使是一些响应和通信速度较快的PLC 设备,如果能进一步提升数据采集的效率,也会带来巨大的效益。因此,急需发明一种高效的PLC数据采集的调度方法,提升对PLC进行数据采集的效率,最终为现场设备进行边缘计算和云上实现各种业务应用提供更为强大的数据源支撑。
本发明解决其技术问题所采用的技术方案是一种数据项采集的调度算法。在对PLC进行数据采集的过程中,一般按照数据项为基本单位进行采集,每个数据项对应一个唯一的PLC寄存器地址,PLC收到采集命令后,通过命令中的这个PLC寄存器地址进行相应的数据寻址采集。每次数据采集的基本流程是采集装置先向PLC发送采集命令,PLC完成数据采集后将数据返回给采集装置,采集失败则返回错误信息,一次采集对应一个特定的数据项。按照常规做法,采集装置会为每一个数据项设置一个固定的采集周期,并按照这个采集周期每隔一段时间下发采集命令到PLC,本发明在该机制的基础上对采集命令下发的时刻进行了优化。
本发明的基本思路如下:
1.输入需要采集的数据项,给每个数据项编号,并为每一个数据项预设一个采集周期,确定数据项的属性。数据项属性的含义是将采集中的所有数据项分成两类,一类是固定数据项,一类是可优化数据项。固定数据项的采集时刻不会被优化,将严格按照设定的采集周期时间点进行采集;可优化数据项的采集时刻有可能被优化,将有可能不会严格按照设定的采集周期时间点进行采集。通过这个做法,将使得一些希望严格按照预设的周期进行采集的数据项受到保护。
2.将数据项按照采集周期大小进行排序。
3.根据PLC的采集速度计算并预先设定单位时间内采集数据项数量的上限。
4.根据所有输入数据项的采集周期,计算满足采集要求的单位时间内采集数据项最大数量的下限。由于固定数据项将被保证严格满足预设时间点,这个下限还将不小于固定数据项的数量。
5.如果满足采集要求的单位时间内采集数据项最大数量的下限已超过预设上限,则自动增加部分或全部可优化数据项的采集周期,直到满足要求。如果满足采集要求的单位时间内采集数据项最大数量的下限没有超过预设上限,则不调整预设的数据项采集周期。此步骤过后,所有数据项的预设采集周期已完全确定,单位时间内采集数据项最大数量定为这个下限。
6.在每一个具体的采集周期中,执行优化算法,确定本周期需要采集的数据项,并执行采集。
每一个具体的采集周期中,执行优化算法的基本思路如下:
1.判断所有固定数据项是否到了采集时刻,如果到了就优先安排采集。后面的步骤全部针对可优化数据项。
2.轮数小于最小的采集周期的情况,如果第一步结束后采集数据项没有安排满额,依次安排可优化数据项进行采集
3.当轮数大于或等于最小采集周期的情况,如果第一步结束后采集数据项没有安排满额,安排已到达采集周期且从未采集过的的数据项进行采集
4.当轮数大于或等于最小采集周期的情况,如果上一步骤结束后采集数据项没有安排满额,安排已到达采集周期但是之前轮数曾经采集过的的数据项进行采集
5.当轮数大于或等于最小采集周期的情况,如果上一步骤结束后采集数据项没有安排满额,安排未到采集周期且从未采集过的的数据项进行采集
6.当轮数大于或等于最小采集周期的情况,如果上一步骤结束后采集数据项没有安排满额,判断哪些数据项即将到达下一轮的开始,则安排符合条件的数据项中最接近下一轮采集的数据项进行采集
本发明所述的数据项采集调度方式既可以应用在工业现场对可编程逻辑控制器进行数据采集上报的各种装置中,也可以应用在工业现场对其他类似设备、仪表进行数据采集上报的各种装置中,可有效提高数据采集的效率,更好得满足实际的采集需求。
附图说明
下面结合附图和实施例对本发明进一步说明。
图1为本发明依赖设备所在系统的整体结构图
图2为本发明的简要流程图
图3为本发明每一轮采集的简要流程图
图4为本发明初始化部分的详细流程图
图5为本发明每一轮采集的详细流程图
具体实施方式
以下结合附图实施例对本发明进一步详细阐述。
1.本发明是用于针对PLC数据采集上报装置的算法,该装置依托于整个物联网系统存在,如图1。整个物联网系统的最底层是被控设备、仪表,这些被控设备、仪表的工作都受上一层的PLC的直接控制,同时PLC也会采集这些被控设备、仪表的实时运行数据。本发明位于PLC的上一层,可同时连接多个不同的PLC,并对这些PLC主动发起数据实时采集,支持丰富的物理连接方式。本发明直接连接上一层的云平台,以实现设备运行数据实时上报到云平台,可兼容连接多个不同种类的云平台,大量设备数据主要存放在云平台上。云平台的上一层是应用服务器,负责对云平台的数据进行进一步的处理,以支撑各种应用,支持多个不同的应用服务器同时工作。系统的最上层是各种PC端、手机端的应用程序,包括网页、 PC软件、手机APP等,实现最终向用户呈现数据。
2.本发明的简要流程图,如图2。输入需要采集的数据项,给每个数据项编号,并为每一个数据项预设一个采集周期,确定数据项的属性(固定数据项或者可优化数据项)。将数据项按照采集周期大小进行排序。根据PLC的采集速度计算并预先设定单位时间内采集数据项数量的上限。根据所有输入数据项的采集周期,计算满足采集要求的单位时间内采集数据项最大数量的下限。由于固定数据项将被保证严格满足预设时间点,这个下限还将不小于固定数据项的数量。如果满足采集要求的单位时间内采集数据项最大数量的下限已超过预设上限,则自动增加部分或全部可优化数据项的采集周期,直到满足要求。如果满足采集要求的单位时间内采集数据项最大数量的下限没有超过预设上限,则不调整预设的数据项采集周期。此步骤过后,所有数据项的预设采集周期已完全确定,单位时间内采集数据项最大数量定为这个下限。最后在每一个具体的采集周期中,执行优化算法,确定本周期需要采集的数据项,并执行采集。
3.本发明每一轮采集的简要流程图,如图3。先判断所有固定数据项是否到了采集时刻,如果到了就优先安排采集。然后判断当前轮数,轮数小于最小的采集周期的情况,如果采集数据项没有安排满额,依次安排可优化数据项进行采集。当轮数大于或等于最小采集周期的情况,如果采集数据项没有安排满额,安排已到达采集周期且从未采集过的的数据项进行采集。继续判断采集数据项是否已满,如果采集数据项没有安排满额,安排已到达采集周期但是之前轮数曾经采集过的的数据项进行采集。继续判断采集数据项是否已满,如果采集数据项没有安排满额,安排未到采集周期且从未采集过的的数据项进行采集。继续判断采集数据项是否已满,如果采集数据项没有安排满额,判断哪些数据项即将到达下一轮的开始,则安排符合条件的数据项中最接近下一轮采集的数据项进行采集。
4.本发明初始化部分的详细流程图,如图4。首先将固定数据项的编号放入数组d,将所有数据项的采集周期赋值给数组a,所有数据项的编号和采集周期赋值给二维数组b。数组b用于记录每个数据项的编号、采集周期和上一次采集的轮次三项信息。通过冒泡排序法将数组b按照采集周期升序排序。将数组 d中固定数据项在数组b中的位置放到数组e里面去。然后根据数组b的采集周期和固定数据项的数量计算满足采集要求的单位时间内采集数据项最大数量的下限,计算方法为将所有数据项的采集周期(单位是秒)的倒数求和,下限就是不小于这个累加值的最小整数。如果下限小于等于实际可以支撑的采集能力则调整数据项采集周期,则下限满足要求,初始化结束转入每一轮采集。如果下限大于实际可以支撑的采集能力则调整数据项采集周期,则不满足采集要求,超出了设备的实际采集能力,需要自动增大数据项采集周期。数组b中按照采集周期最大的数据项优先的顺序依次对数据项的采集周期加1秒,每加一次就重新计算满足采集要求的单位时间内采集数据项最大数量的下限,如果满足要求就初始化结束转入每一轮采集,如果不满足要求就继续增加采集周期,所有数据项一轮结束后仍不满足后则再执行一遍,直到下限满足要求。
5.本发明每一轮采集的详细流程图,如图5。开始一个数据采集周期,根据e数组记录的b数组中固定数据项的位置,在b数组提取固定数据项信息。在b数组中找出从未采集过的固定数据项,判断数据项是否已经到采集轮(算法是当前轮数减去上一次采集的轮数大于等于采集周期),满足则记录需采集数据项编号到数组c。然后在b数组中判断数据项是否已经到采集轮,满足则记录需采集数据项编号到数组c。如果采集数据项满额则结束本轮判断执行采集(需要本轮执行采集的数据项编号已放入数组c),如果采集数据项没有满额,则判断轮数是否到最小采集周期。如果不到最小采集周期,在b数组中找出从未被采集过的数据项,满足则记录需采集数据项编号到数组c,然后结束本轮判断执行采集。如果已超过最小采集周期,在b数组中找出从未采集过的可优化数据项,判断数据项是否已经到采集轮,满足则记录需采集数据项编号到数组c。如果采集数据项满额则结束本轮判断执行采集,如果采集数据项没有满额,在b数组中找出从未采集过的可优化数据项,判断数据项是否已经到采集轮,满足则记录需采集数据项编号到数组c。如果采集数据项满额则结束本轮判断执行采集,如果采集数据项没有满额,在b数组中找出从未采集过的可优化数据项,满足则记录需采集数据项编号到数组c。如果采集数据项满额则结束本轮判断执行采集,如果采集数据项没有满额,则将部分即将采集的数据项提前到本轮进行。将b数组赋值给f数组,按照距离下一次采集的剩余轮数从大到小,对f数组中的数据项进行冒泡排序,将f数组中固定数据项的位置记录到g数组,在f数组中找出满足下一轮采集临近条件的数据项,根据g数组内容排除固定数据项,满足则记录需采集数据项编号到数组c,然后结束本轮判断执行采集。最后等待下一轮采集周期的开始,重复执行本流程。