发明内容
本发明的目的在于克服上述缺点而提供一种使智能控制系统的数据同步简化,数据同步效率高的基于Petri网的软PLC系统数据同步方法。
本发明的一种基于Petri网的软PLC系统数据同步方法,包括以下步骤:
(1)基于Petri网工作流的数据流转模型:根据软PLC系统中数据流转过程,确定库所集、变迁集,构建软PLC系统数据流转Petri网模型;
(2)构建数据同步数据结构:根据软PLC系统数据流转Petri网模型,构建分堆存储的哈希表数据结构来存储PLC系统数据;
(3)改进观察者模式及数据同步:根据目标和观察者双方的要求建立映射关系,从观察者模式代理分离出注册类RegisterClass和映射类MappingClass;增加Delegate类对view视图层不同数据类型的变量进行渲染和编辑,并采用Model-View框架,实现View视图层随Model数据层的自动同步刷新;采用准双向数据同步方法,哈希表与对象组态层、View视图层、Model数据层、元件映射视图层、配置文件间采用星型拓扑结构关系。
上述的基于Petri网的软PLC系统数据同步方法,其中:所述步骤(3)中的注册类RegisterClass类负责注册目标和观察者,映射类MappingClass类中记录系统中哈希表和多个不同观察者的映射关系,MappingFile类的设计确保了映射关系的一致性。
上述的基于Petri网的软PLC系统数据同步方法,其中:所述注册类RegisterClass中加入DisplaySubject方法,显式地为所有注册过希表的不同观察者提供目标清单,目标清单的粒度达到目标的特定内容的级别,使不同的观察者拥有不同的权限。
本发明与现有技术的相比,具有明显的有益效果,由以上方案可知,所述的基于Petri网工作流的数据流转模型,对系统同步过程中的数据流流向分析,利用Petri网理论对软PLC系统工作流的整体流程进行建模。PLC系统工作流中对象组态层存储大量的数据对象,而系统执行业务逻辑时,需要频繁地从对象层中获取对象的指针或是对象的相关信息,通过构建分堆存储的哈希表数据结构来存储PLC系统数据,对对象层的存储进行优化,建立合理的索引查找机制显著提高系统的运行效率。改进观察者模式,观察者模式不但存在冗余,而且映射关系的一致性也不能得到保障。改进观察者模式,从模式代理分离出注册类RegisterClass和映射类MappingClass,注册类RegisterClass类负责注册目标和观察者,映射类MappingClass类中记录系统中哈希表和多个不同观察者的映射关系,MappingFile类的设计确保了映射关系的一致性,从而通过改进观察者模式,保障映射关系的一致性,减少冗余。哈希表与对象组态层、View视图层、Model数据层、元件映射视图层、配置文件间采用星型拓扑结构,哈希表节点起到了一个汇总所有数据的作用,只要有数据更新到哈希表节点,其它节点便可从哈希表导出所需数据实现数据同步。总之,本发明能使智能控制系统的数据同步简化,数据同步效率高。
以下通过具体实施方式,进一步说明本发明的有益效果。
实施例如下:
1 Soft-PLC系统及应用背景
Soft-PLC(软PLC)系统是带有调试和编译功能的PLC编程器,通常其具备如下功能:1)编程语言标准化,遵循IEC61131-3标准,支持多语言编程,编程语言之间可以相互转换;2)具有丰富的控制模块,支持多种PID算法、控制算法;3)开放的控制算法接口,支持用户嵌入自己的控制算法模块;4)仿真运行,实时在线监控,在线修改程序和编译;5)强大的网络功能。目前国内外均有不少机构组织开发具有自主产权的软PLC产品,如美国RockwellAB、德国Beckhoff公司、华中科技大学、北京工业大学等。虽然美国Rockwell AB的产品比较成熟,但是对于自主研发的智能控制系统却也不一定完全适用。作者所在研究组以研发中央空调节能控制系统为目标,研发具有自主知识产权的软PLC系统便于逻辑编程与调试,使智能控制系统的升级维护变得简单,提高智能控制系统定制化功能开发效率。系统的主要功能有:1)对象组态功能:添加实体对象,与硬件通讯,取值等。对象组态,是整个系统的基础,属于中间层。2)硬件组态功能:模块配置、模块写值/点映射、端口配置等。3)控制逻辑与策略编制功能:完成系统的控制逻辑,实现对被控设备的控制。4)数据分析功能等。本文研究成果正是应用于此系统,后文提到的测试数据也是基于此系统。
2 基于Petri网的数据流建模
Petri网以研究模型系统的组织结构和动态行为为目标,它着眼于系统中可能发生的各种状态变化以及变化之间的关系,是一种适合于描述异步并发现象的系统模型,作为一种数学化工具,Petri网可以建立各种状态方程、代数方程和其它描述系统行为的数学模型。
2.1 Petri网理论
首先对Petri网进行一个简单的介绍,一个基本的Petri网定义如下:
定义1三元组N=(S,T,F)称为一个Petri网,iff(当且仅当):(1)S∩T=φ,(2)S∪T≠φ,(3)(4)dom(F)∪cod(F)=S∪T,其中S与T分别表示库所集和变迁集,F是流关系,并且有
根据上述定义,一个基本Petri网可以用有向图进行表示,图中变迁集T用竖线表示,库所集S采用圆表示,有向弧是库所和变迁之间的有向弧,令牌用黑点来表示,是库所中的动态对象,可以从一个库所移动到另一个库所。Petri网可用于计算机智能制造系统的建模、分析、控制和优化设计。经典Petri网的规则为:
规则1:变迁的发生是原子的,即没有一个变迁只发生一半。
规则2:两个或多个变迁被允许发生,但一次只能发生一个变迁。
规则3:如果出现一个变迁,其输入库所的个数与输出库所的个数不相等,令牌的个数将发生变化,令牌的个数不守恒。
规则4:Petri网是静态的,不存在发生一个变迁后突然冒出另一个变迁或库所,从而改变Petri网的结构。
规则5:Petri网的状态由令牌在库所的分布决定,变迁发生完毕、一个变迁等待发生时才有确定的状态,正在发生变迁时无明确状态的。
2.2 基于Petri网工作流的数据流转模型
软PLC系统中数据流转过程如下:(1)工业现场采集到实时基础数据,把基础数据存储于对象层模块数据库中。(2)软PLC系统扫描周期开始,刷新映射对象层的数据到系统全局变量,同步刷新全局变量中输入数据。(3)系统运行控制逻辑策略,对数据进行分析处理后依次同步编辑显示层、数据视图层、配置文件中的数据信息。(4)扫描周期结束,同步软PLC系统输出变量信息到对象层。(5)对象层映射相应数据到具体硬件,控制硬件的运行状态。
对上述流程进行分析得到系统中库所集S={S1:现场采集数据;S2:对象层输入变量;S3:全局输入变量;S4:哈希表;S5:配置文件;S6:编辑显示数据层;S7:视图层;S8:控制策略;S9:全局输出变量;S10:对象层输出变量;S11:硬件组态层},变迁集为T={T1:采集输入;T2:扫描刷新输入;T3:同步哈希表;T4:同步配置文件;T5:同步编辑显示层;T6:同步视图层数据;T7:分析、运算数据;T8:同步全局输出变量;T9:扫描刷新输出;T10:控制硬件}。根据Petri网的基本理论、规则和系统同步过程中的数据流流向分析,得到图4所示的系统模型结构图。
3 数据同步数据结构设计
对象组态层存储大量的数据对象,而系统执行业务逻辑时,需要频繁地从对象层中获取对象的指针或是对象的相关信息,所以设计建立合理的索引查找机制将会显著提高系统的运行效率,本文中利用分堆存储的哈希表数据结构来对对象层的存储进行优化。块是指一定长度二进制位串,假定长度为k位的块为基本块,所有的基本块构成的集合记为Gk。数据的信息块加上在堆中的索引值构成堆中的基本数据结构,并将哈希表分堆的个数记为d,采用除留余数法实现哈希表的构建,则有hash(x0,x1,x2...xd-1)是定义在Gd×k上的任意一个哈希函数。
设sName为数据信息块的名称属性,tempSize为sName属性的字符位数长度,sName中单个字符的索引值记为i,ASCII是字符对应的ASCII值,则哈希表构建方法的数学公式可表示为公式(1)。
项目工程下面不同子系统的哈希表存储于一个集合中,采用子系统名称作为键值(Key)实现与哈希表的一一映射,多个总工程之间同样通过唯一的工程名称作为键值实现和集合的一一映射关系,系统数据结构层次如图1所示。
4 改进的观察者模式及数据同步策略
准双向数据同步方法(如图5所示),两节点的数据同步是双向流动的,即既有节点A的数据向节点B同步,也有节点B中的数据向节点A同步,但是两个方向的数据流是异步的,两个方向上的数据同步不能同时进行。此数据同步方法遵循了Petri网建模的规则2和规则4,符合Petri网建模思想,因此选其作为数据同步方法。
观察者模式(Observer)是软件设计模式的一种。在模式中,管理一个目标对象依于它的观察者对像,并且在目标对象本身的状态改变时主动发出通知,通常透过调用各观察者所提供的方法来实现,图6是经典观察者模式的类视图。现有的观察者模式为了保持映射关系,目标中保留了观察者的记录;而观察者在更新自身之前也必须设置目标的引用,致使整个观察者模式不但存在冗余,而且映射关系的一致性也不能得到保障。
基于这种认识,作者根据目标和观察者双方的要求建立映射关系,从模式代理分离出注册类RegisterClass和映射类MappingClass。RegisterClass类负责注册目标和观察者,MappingClass类中记录系统中哈希表和多个不同观察者的映射关系,MappingFile类的设计确保了映射关系的一致性。为了赋予不同级别观察者观测不同级别的内容,在注册类RegisterClass中加入DisplaySubject方法,显式地为所有注册过希表的不同观察者提供目标清单,目标清单的粒度达到目标的特定内容的级别,使不同的观察者拥有不同的权限。设计Delegate类对view视图层不同数据类型的变量进行渲染和编辑,并采用Model-View框架,实现View视图层随Model数据层的自动同步刷新。图2是改进的观察者模式的类视图。
同时,数据同步要确定各数据节点和哈希表数据结构之间的关系,哈希表与对象组态层、View视图层、Model数据层、元件映射视图层、配置文件间采用星型拓扑结构,哈希表数据向其它节点数据同步过程中,多个变迁可能同时被允许,依照Petri网建模规则,同一时刻只能发生一个变迁,数据同步拓扑结构关系如图3所示。星型结构中,除了哈希表中心节点外,其它节点最多也只与一个节点进行数据同步,但是这种同步是双向同步;只有哈希表节点处理所有节点的数据,供其它节点同步使用。哈希表节点起到了一个汇总所有数据的作用,只要有数据更新到哈希表节点,其它节点便可从哈希表导出所需数据实现数据同步。
5 性能测试与分析
5.1 测试环境及问题
作者在QT平台上,用C++语言实现所提出的数据结构、数据流模型与同步策略。为了验证同步机制的有效性,采用3种测试设备:中央空调系统仿真调试平台、核心控制器、MSC-400高效变频调速柜。中央空调系统仿真调试平台用于模拟客户空调系统的运行参数、负荷特性、现场环境,核心控制器上的软PLC系统其对象组态模块依据仿真控制台模拟产生工控现场各种运行参量值,包括系统送回风温度、二氧化碳浓度、不同监控区域内的温度与湿度等,经核心控制器软PLC系统自动控制算法处理后输出优化的控制参数值,通过MSC-400高效变频调速柜对空气处理系统的各设备进行动态调控制,并显示被监控设备动态信息。
5.2 测试结果与分析
图7是测试实验中所使用的场景,它为上海地铁七号线岚皋站的节能控制逻辑,系统所涉及的属性点由支管回管温度、流量、阀门开度、控制区的温度与湿度、主机运行状态等属性点及辅助参数共计80个数据变量映射点。同时为了测试数据规模的增长对性能的影响,将数据变量映射点设计成80、400、800、2400及8000,在扫描周期为500ms的情况下分别随机抽取50个扫描周期内系统各模块完成数据同步所消耗时间样本进行统计,采样数据的统计结果如表1所示,数据同步时间的变化如图8所示。图8中横坐标是50个随机抽样样本标号,纵坐标是所测试到的完成模块间数据同步所需时间。
从数据中可知,在数据映射规模为80个数据点时,各模块完成数据同步所需要的最小时间为12ms,最大时间需求为17ms。而当变量映射规模变大时,所需要的平均时间也随之增大。虽然规模以5倍、10倍、30倍及100倍增长,但所需时间增长的幅度分别仅为10.00%、18.35%、58.57%及126.79%。这表明本文所设计的数据同步机制具有良好的性能,并没有随映射数据点的大规模增加而增加大量的数据同步时间。
表1不同数据规模下数据同步时间的统计表
总之,随着工业控制领域IEC61131-3标准的制定和实施,软PLC技术迅速发展,被广泛应用于工业控制领域。数据同步是消除系统中不同模块间数据不一致的主要方法,论文针对系统中不同模块的数据同步问题,在分析软PLC系统中数据流转过程的基础上,利用所建立的数据流模型、数据同步数据结构、改进的观察者模式,形成了一种基于Petri网工作流的数据同步策略。在上海地铁七号线等环控项目的应用结果表明:运用所获得的数据同步策略能够使智能控制系统的数据同步变得简单,可以促进提高智能控制系统的节能控制目标。
以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,任何未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。