首页 > 范文大全 > 正文

异构系统通信中间件及其软件的设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇异构系统通信中间件及其软件的设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘 要: 不同生产厂家的工业控制系统一般具有不同的通信接口、通信方式及通信协议,这给应用软件开发带来极大不便。中间件作为分布式环境及网络异构问题的解决方案备受关注。从异构通信协议同构化思想入手,在研究理论和实验的基础上,研究了在工业控制系统中异构通信网络通信中间件的解决方案,详细设计并实现了针对PLC的异构通信网络中间件系统。

关键词: 控制系统; 中间件; 异构通信; 通信协议

中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2012)12-11-03

Design of communication middleware and software in heterogeneous system

Huang Guanren1, Zhao Jianyong2

(1. Zhejiang Provincial Testing Institute of Electronic & Information Products, Hangzhou, Zhejiang 310012, China; 2. Hangzhou Dianzi University)

Abstract: Different industrial control systems have different communication interfaces, communication means and communication protocol, which is really inconvenient for application developpers. Middleware technologies are getting more attention as a solution to this problem. Starting with how to amalgamate heterogeneous structure of the communication protocol, based on certain theoretical and experimental research, heterogeneous communications network communication middleware solutions in industrial control systems are studied. The PLC heterogeneous communications network middleware system is designed and realized.

Key words: control system; middleware; heterogeneous communication; communication protocol

0 引言

PLC可编程逻辑控制器、DCS集散控制系统极大地推动了工业自动化的发展。然而,在采用这些控制系统的时候,出于对安全、经济等多方面的考虑,往往会采用多个不同厂家生产的控制器。不同制造商提供的控制系统在结构设计、标准等方面自成体系,互不兼容,技术标准互不公开,这些异构的通信网络环境由于访问方法和机制各不相同,即通信协议各不相同,使得控制系统之间的通信连接不易实现[1-2]。

为了便捷地在不同的通信接口之间通信,更好地开发和运行异构平台上的应用软件,解决PC机与以嵌入式技术为基础的控制系统之间的互通、互连和互操作问题,本文引入异构通信中间件HCM(Heterogeneous Communication Middleware)的概念,并设计了解决方案。该设计解决了异构通信网络的互通、互连,方便了应用层用户开发应用程序,提高了开发效率,缩短了开发周期。

1 异构通信中间件HCM总体设计

中间件技术近年来得到了广泛地研究与实践[3-4],解决网络异构问题的中间件[5-6]也是研究的热点。根据异构通信网络协议的需要,我们设计了异构通信中间件HCM的整体结构框架,为用户提供了统一的数据访问接口;完成应用层和底层以及底层和异构通信网络间数据的传输和处理;提供适合各种编程模式的开放接口,并提供应用执行时的各种运行机制。

整个系统采用三层构架体系,HCM作为中间层构建在应用层和网络层之间,它有两个接口,分别为与应用服务器的接口(接口一)及与网络资源实体的接口(接口二)。HCM中间件平台的功能集包含以下主要功能模块:协议调度模块、通信模块、数据处理模块,如图1所示。

协议调度模块:在构建好的通信协议库中调度适合当前通信网络所需的通信协议。

通信模块:包括组帧模块(组装读/写数据帧)和通信口操作模块(读/写通信口)。其中组帧模块是面向应用层的接口模块,用来获取应用层数据信息;通信口操作模块是面向网络层的接口模块,用来根据组帧模块的数据帧通过通信接口与通信网络进行数据交互。

数据处理模块:包括数据类型处理模块、规则转换模块和有效验证模块。

2 系统各组成的研究与设计

对HCM系统的各组成部分及功能,从通信协议库的数据结构模型、通信协议调度算法、共享内存访问、通信线程状态转换、规则转换算法几个方面进行研究。

2.1 通信协议库数据结构模型

对于通信协议库ProtocodStore,可以把它看成是一片森林,ProtocodStore(Tree1,Tree2…Treei…TreeN),N≥0,森林中的每棵树Treei(Child1,Child2,…,ChildN),N≥0,是由一个或多个子协议库组成,按照森林的构建方法通信协议库可以抽象为图2所示的数据结构。

图2中,节点A和H代表公司名,节点B、C、D代表隶属于A的PLC类型,节点I、J代表隶属于H的PLC类型,节点E、F、G、K、L分别代表隶属于某个PLC型号的通信协议。

2.2 通信协议调度算法及调度模块设计

2.2.1 协议调度算法

协议调度管理器根据应用层用户提供的调度信息在通信协议库中调度具体通信协议,按照先序遍历ProtocodStore森林的算法来完成协议的调度,具体调度算法如下。

⑴ 取得调度元数据结构struct_Protocol;

⑵ 访问ProtocodStore森林的第一棵树的根节点A;

⑶ 先序遍历第一棵树Tree1中根节点的子树森林;

⑷ 若找到Tree1中节点度为0的叶子节点符合要求则转⑹;

⑸ 先序遍历除去第一棵树Tree1之后剩余的树(Tree2…TreeN)构成的森林;

⑹ 若查找成功返回找到的叶子节点信息,否则返回NULL。

经过该算法得到图2中所示森林中L节点的先序序列为:

ABECFDGHIKJL

2.2.2 协议调度的数学描述

定义1 设通信协议库的所有通信协议的集合为Cprot:

Cprot={C1,C2,C3,…,CN} N≥0 ⑴

式⑴中,Ci为某个通信协议对象,对每个对象Ci的描述形式为:

Ci={Companyi,PLCTypei,CheckSumTypei,

ComInfoi,ConfirmCounti,Modei} ⑵

式⑵中的Companyi,PLCTypei,CheckSumTypei,ComInfoi,ConfirmCounti,Modei表示第i个协议对象的属性。

定义2 设协议调度模块调度集为:

Action={Choose,Fold} ⑶

式⑶中,动作Choose表示调度器调度通讯协议库协议事件;动作Fold表示通信协议导入协议调度管理器事件。

定义3 通过定义1和定义2,协议库中的单个通信协议可定义为协议集、调度和通信网络的集合。

Mi={Ci,Actioni,CommunicationNetWorki} ⑷

式⑷中,Ci、Actioni和CommunicationNetWorki表示协议库中的第i个通信协议、调度事件和对应于Ci的通信网络。

通过以上三个定义描述了在HCM系统中的协议调度模块集合。协议调度模块主要由异构通信网络所需的通信协议库和协议调度器组成,协议调度模块结构框图如图3所示。

2.3 共享内存访问

共享内存作为一种进程间数据共享的方法,通过让两个或多个进程映射到同一个内存映射文件对象的视图,实现不同的进程共享物理存储器的相同页面。当一个进程将数据写入一个共享文件映射对象的视图时,其他进程可以立即获得该视图中的数据变更情况。利用共享内存实现数据的共享访问,能够达到系统资源的高效利用。因此,采用共享内存访问技术,通过HCM提供的接口ConstructReadData实现两者之间的内存交互,如图4所示。

在HCM中的共享内存方式不涉及内存互斥访问的问题,是“半双工”形式的内存共享,即:应用层动态开辟一块内存区域通过接口ConstructReadData分配给HCM,应用层循环从该内存区域获取信息,而HCM则通过数据处理模块将处理好的数据添入该内存区域,从而完成应用层和中间件层的内存交互,达到数据传递的目的。

2.4 通信线程中三态转换

在通信线程中涉及三个状态间的转换关系,分别为读数据状态、写数据状态以及空闲状态。三者之间的转换关系如图5所示。

读/写状态是在进行数据交互时的状态,由于写数据的优先级最高,所以无论是处于读状态还是空闲状态,一旦写数据事件产生,要立即转为写状态。通讯时,若接收到有效命令,则根据具体协议进行译码,执行相应操作,并对命令做出响应;若检查到错误,则说明接收字符不正确,予以丢弃,并保持通信口为接收状态,开始下一次接收操作。设置空闲状态的目的是为了释放内存占用资源,防止产生资源独占。在大多数情况下为读数据状态和空闲状态间的转换,只有在用户传递写数据时才发生读状态和写状态或空闲状态和写状态间的状态转换关系。

2.5 HCM通信模块设计实现

通信模块在整个中间件系统中是一个交互层,包括与上层应用层的接口、与下层网络层的接口。应用层需要读写数据时通过该模块的应用层接口将读写指令传递给组帧处理器。处理器根据用户给出的指令进行相应处理,处理后再通过该模块与网络层的接口进行通信,通信成功后得到需要的数据并交由数据处理模块进行数据处理。

由于在通信过程中不同的通信协议(如波特率等)和应用环境会影响到系统运行速度,如果采用单线程来完成数据处理和通信等功能,系统整体响应速度会很慢。因此,采用异步多线程的处理方案,组帧模块和通信口模块分别采用各自独立线程完成数据帧的组装和与通信网络的数据交互。通信操作时的独立线程方式,可以减少系统的闲置时间,提高通信口的吞吐能力。

2.6 数据处理模块的设计实现

数据处理模块主要负责对通信得到的数据进行分析处理,包括数据有效性验证、数据类型处理、规则转换处理三个子模块,如图6所示。

⑴ 有效性验证模块,目的是为了获得通信网络中正确的数据信息,包括通信站号、数据字节个数、数据校验等有效性验证。如果验证通过则进行数据类型和规则转换的处理,如果有一项验证失败则整帧数据均丢弃。

⑵ 数据类型处理模块,数据的基本类型包括:位(BIT)类型、字节(BYTE)类型、字(WORD)类型、双字(DWORD)类型、浮点数(FLOAT)类型。

⑶ 规则转换模块,目的是对⑴和⑵处理后的数据按照不同的规则进行数据转换,如果不需要转换则将数据直接传递给应用层。数据处理时根据特定通信协议进行设置,对接收数据按照不同协议语法格式进行检查和提取,包括数据有效性检查、数据类型处理、转换规则处理等操作。数据处理结束后,动态刷新接收缓冲区中的数据,该缓冲区与应用层实现内存共享。

3 系统仿真和测试

为了测试HCM系统的稳定性、可靠性等性能,通过建立仿真环境来进行性能测试和数据验证。测试过程中仿真了西门子S7-200、三菱FX1N、欧姆龙CPM2A三种型号的PLC构成的异构通信网络环境,在PC端生成对应的HCM系统并设计了应用层界面下载到Windows CE中运行,PC机模拟PLC运行环境。通过测试异构环境及通信数据,验证了HCM系统的稳定性和可靠性。

参考文献:

[1] Li Xiaoming, Li DongXiao. Protocol conversion of plant control

system consisted of different type PLCs[J].IEEE Trans on Software Engineering,2002.2:1509-1512

[2] 李男,黄永忠,陈海勇.一种嵌入式系统通信中间件的设计[J].微计算

机信息,2006.22(1-2):48-50

[3] Richard Soley and the OMG Staff Strategy Group. Model Driven

Architecture:OMG White Paper Draft 3.2[EB/OL].http:///mda,2000,Nov 27th.

[4] 杨放春,龙湘明,赵耀.异构网络中间件与开发式API技术[M].北京邮

电大学出版社,2007.

[5] Richard E. Schantz,Douglas C. Schmidt.Middleware for Distributed

Systems: Evolving the common Structure for Network-Centric Applications[M]. Chapter in The Encyclopedia of Software Engineering. John Wiley & Sons,2001.

[6] Cecelia Mascolo, Licia Capra and Wolfgang Emmerich. Mobile

Computing Middleware[C].Fourth IEEE Conference on Mobile and Wireless Communication networks,2002.