资源描述
大连理工大学本科毕业设计(论文)现场总线控制系统功能块组态软件设计Design of Configuration Software based on Filedbus Control System学 院(系): 电子与信息工程学院 专 业: 计算机科学与技术 学 生 姓 名: 刘国强 学 号: 200591109 指 导 教 师: 仲崇权 评 阅 教 师: 完 成 日 期: 2009年6月 大连理工大学Dalian University of Technology摘 要IEC61131标准作为工业自动化控制系统标准化编程语言的国际标准,受到了广泛的关注和重视。目前国际上已有多个自动化设备生产商推出了以这个标准为基础的控制系统。研究基于IEC61131标准的控制系统意义重大。本文研究了IEC61131标准中关于功能块编程的技术内容,给出了指令规约和编程方法,研究了功能块程序的可视化编辑和编译技术,设计和实现可编程控制器编程软件PLC_Config。该程序是在Microsoft Visual Studio 2003环境平台下,使用C+编程语言,基于MFC程序框架开发完成的。该软件可对现场网络上的所有设备和资源进行配置和规划,使现场网络中的设备成为一个有机整体,协同工作完成控制功能。该软件应用了模块化设计思想,将整个软件分解成现场设备管理模块、可视化组态模块、现场设备监控模块、文件管理模块、通信服务模块及信息报告模块。可视化功能块编程模块实现了操作方便功能强大的用户操作界面,通过描述文件与可视化的编程元件的互转实现了功能块程序的保存与读取,编译模块实现了功能块程序在上位机与下位机存储表达形式的互转,用户可以方便的下载上载功能块程序。通过设计和开发PLC_Config可视化编辑模块和组态编译模块,以及在PLC_Config程序中地应用,证明了编辑,编译功能块文件方法的可行性和正确性,也提供了一种编辑,编译图形化语言的一种方法。关键词:现场总线;IEC61131-3标准;功能块组态;可编程控制器; Design of Configuration Software based on Filedbus Control SystemAbstract IEC61131 standard for industrial automation and control system programming language standardized international standards, has been widespread concern and attention. At present, there are a number of automation equipment manufacturers with the introduction of the standards-based control system. Research based on the standard IEC61131 control system of great significance. In this paper, the technical content on function block programming in IEC61131 standard is studied. Command and programming are provided. Visual programming and compiler technology of function block programming are researched. Programming software of Programmable Logic Controller(PLC_Config) is designed and implemented. This software uses C+ programming language under Microsoft visual studio 2003 development platform and based on the MFC Framework. This software configurates and plans the filed devices and resources, makes the filed devices implement control function as an organic whole. The software app the modular design concept. It includes Device Manage Module, Visual Configure Module, Watching Module, Files Manage Module, Communication Module and Report Module. Visual Configure Module implement useful and powerful user interface. It implement save and read function by the change between XML files and visual programming elements. Compiler Module implement the change of mode between in computer and in PLC. User can configurate and upload the program conveniently. By developing the Visual Configure Module and Compiler Module and Testing in the application, the design is proved correct. The article provide a method of edit and compile graphics program language. Key Words:Fieldbus; IEC61131-3 standards; Function block configuration; Programmable logic Controller; 目 录摘 要IAbstractII引 言11 概 述31.1 现场总线技术31.1.1 现场总线概念31.1.2 现场总线的特点31.1.3 RS485总线41.1.4 MODBUS协议41.2 现代自动控制系统和IEC61131-3国际标准51.3 IEC 61131-3及其功能块编程61.4 可编程逻辑控制器71.5 组态软件81.6 论文的主要工作92 PLC_Config组态软件设计和实现102.1 概述102.2 现场设备管理模块122.3 文件管理模块122.4 可视化组态模块132.5通信服务模块162.5.1 实时通讯服务的实现172.5.2 套接字映射接口对象的实现172.6信息报告模块192.6本章小结193 PLC_Config组态软件可视化功能块组态以及编译203.1 PLC_Config可视化功能块编辑程序的设计203.1.1文档/视图(Document/View)结构203.1.2 可视化功能块编辑程序设计类关系图203.1.3功能块的图形表示213.1.4功能块的逻辑组成213.1.5在DCCE系列PLC中的功能块程序的表现形式223.1.6 功能块类的设计233.1.7功能块参数类的设计263.1.8链接关系的设计273.1.9网络物件设计283.1.10功能块文档类的设计293.2编译程序(Compile.exe)的设计303.2.1功能块编译程序的设计分析303.2.2编译程序的接口设计313.2.3编译过程中的错误信息的提示实现333.2.3功能块参数的编译333.2.4功能块的编译343.2.5功能块网络的编译353.3 本章小结394.PLC_Config软件在十字路口交通灯控制系统的使用414.1 十字交通灯控制系统概述414.2 十字交通灯控制系统功能需求424.2.1 硬件需求424.2.2 交通等开关动作需求434.3 功能块程序实现454.3.1 正常情况下交通灯程序实现454.3.2可急车强通控制的交通灯程序实现464.4本章小结48结 论49参考文献50附录A 简单功能块程序与对应的XML文档51附录B PEC8000寄存器地址52致 谢53引 言在工业控制领域,PLC技术的发展在上世纪90年代经历了一次高潮。这得益于微电子、网络通信和控制技术的迅猛发展。但随着技术的进步和市场要求的提高,传统的PLC越来越暴露出其在数据封装能力,程序可重用性,顺序操作编程等方面的不足。这些缺陷导致了不同制造商PLC平台的不兼容,也给工程技术人员的学习和操作带来了极大的不便。统一的编程规则成为技术人员的迫切需求。而IEC61131-3是目前关于工业控制编程语言唯一的国际标准,它将现代软件工程的概念和机制与传统PLC编程语言完美结合,使它在工业控制领域的影响已越出PLC的界限,应用越来越广泛。IEC61131-3是国际电工委员会IEC于1999年推出的用于工业控制领域的标准化编程语言,适用于PLC编程12。IEC61131-3是IEC61131的编程语言部分,与传统的PLC编程语言相比较,前者具有突出的优点:(1) 开放性,由于采用独立于制造商的一致性IEC61131-3标准化编程语言,因而应用系统能最大限度地运行于来自不同制造商的PLC。(2) 可移植性,允许程序在IEC61131-3兼容系统上移植。(3) 高水平的软件重复使用性和允许柔性地选择编程语言。一个程序的不同部分可用任一种语言编程。(4) 类似高级语言的先进语言结构,支持“自上而下”和“自下而上”的结构化程序开发。支持复杂的控制过程。支持结构化数据。(5) 有很强的错误检测和纠错能力,能明显地提高程序数据和变量的可靠性。PLC组态具有运行时行为特性。标准化的开放系统是大势所趋,1992年总部设在荷兰的PLCopen成立,目前,多数的PLC制造商,软件公司和研究院所已是这个国际组织的成员。如Siemens、 A-B、ABB、 GE、 Mitsubishi、Fuji、 Schneider都推出了符合IEC61131-3标准的PLC,此外有不少的 IPC工控机、DCS、HMI等制造商配置IEC61131-3编程软件。目前,和利时公司的FOPLC采用IEC61131-3编程语言。IEC61131-3的修订版在2002年底发布,它不仅描述了PLC编程语言本身,还提供了综合的概念和建立PLC项目的导则,当工程设计人员熟悉了IEC61131-3编程语言,就能对上述多家生产的PLC进行编程设计。组态软件是工业应用软件的一个组成部分,其发展受到很多因素的制约。归根结底,应用的带动对其发展起着最为关键的推动作用。类似OPC这样的组织的出现,以及现场总线、尤其是工业以太网的快速发展,大大简化了异种设备间互连、开发I/O设备驱动软件的工作量。I/O驱动软件也逐渐会朝标准化的方向发展。由单一的人机界面朝数据处理机方向发展,管理的数据量越来越大。实时数据库的作用将进一步加强。 很多新的技术将不断地被应用到组态软件当中,组态软件装机总量的提高会促进在某些专业领域专用版软件的诞生,市场被自动地细分了。为此,一种称为“软总线”的技术将被广泛采用。在这种体系结构下,应用软件以中间件或插件的方式被“安装”在总线上,并支持热插拔和即插即用。这样做的优点是:所有插件遵从统一标准,插件的专用性强,每个插件开发人员之间不需要协调,一个插件出现故障不会影响其他插件的运行。XML技术将被组态软件厂商善加利用,来改变现有的体系结构,它的推广也将改变现有组态软件的某些使用模式,满足更为灵活的应用需求。 在IEC61131-3标准的控制编程语言中,功能块图用来描述功能、功能块和程序的行为特征,还可以在顺序功能流程图中描述步、动作和转变的行为特征。功能块图与电子线路图中的信号流图非常相似,在程序中,它可看作两个过程元素之间的信息流。功能块图普遍地应用在过程控制领域。 本文通过对IEC61131-3标准中功能块语言的研究,结合PLC指令的特点,应用MFC设计和开发一种基于IEC61131-3标准中功能块语言的编译方法。全文共分四章:第一章:概述:介绍IEC61131-3国际标准及其编程语言,介绍PLC指令特点,XML描述文件等相关技术知识以及本文主要工作。第二章:介绍PLC_Config组态软件设计和实现。第三章:详细介绍PLC_Config组态软件可视化功能块组态的编译。第四章:PLC_Config组态软件的应用,并给出了应用案例。结论:总结论文所解决的问题,并对下一步研究提出建议。 1 概 述1.1 现场总线技术1.1.1 现场总线概念现场总线是由DCS系统发展而来,采用全数字通信代替模拟传输方式,使控制系统与现场仪表之间不仅能传输生产过程测量与控制信息,而且还能传输现场仪表的大量非控制信息,使整个工业企业的管理控制一体化成为可能3。所谓现场总线,按照国际电工委员会IEC/SC65C的定义,是指安装在制造或过程区域的现场装置之间、以及现场装置与控制室内的自动控制装置之间的数字式、串行和多点通信的数据总线。以现场总线为基础而发展起来的全数字控制系统称作现场控制系统(Field Control System)。现场总线技术将专用微处理器置入传统的测量控制仪表,使它们各自都具有数字计算和数字通信能力,并按照公开、规范的通信协议,在位于现场的多个微机化测量控制设备之间以及现场仪表与远程监控计算机之间,实现数据传输与信息交换,形成各种适应实际需要的自动控制系统。简而言之,它把单个分散的测量控制设备变成网络节点,以现场总线为纽带,把它们连接成可以互相沟通信息、共同完成控制任务的网络系统与控制系统。 1.1.2 现场总线的特点(1)全数字通信现场总线采用完全的数字信号传输。这种数字化的传输方式使得信号的检错、纠错机制得以实现,因此它的抗干扰能力和鲁棒性较高。同时全数字通信使得多参数传输得以实现。(2)多分支结构现场总线的拓扑可以为总线型、星型、树型等多种形式。(3)现场设备状态可控通过现场总线,现场设备的管理信息大大增加,这些信息包括功能模块组态、参数状况、诊断和验证数据、设备材质和过程条件等。操作人员在控制室就可以对这些信息进行管理和利用,对现场设备进行维护。(4)控制分散现场总线系统采用全分散控制。现场设备既有检测、变换、工程量处理和补偿功能,也有运算和控制功能。通过现场总线,将传统DCS、PLC等控制系统复杂的控制任务进行分解,分散在现场设备中,简化了系统结构,提高了系统的可靠性、自治性和灵活性。现场总线自20世纪80年代产生以来,由于适应工业控制系统网络化和智能化的发展方向,受到全世界工业自动化领域的普遍关注,从而发展迅速。目前已开发出40多种现场总线,如Interbus、Bitbus、DeviceNet、Modbus、Arcnet、P-Net、FIP、ISP等。1.1.3 RS485总线RS485总线系统是用于在数据通信系统中满足较复杂应用的主从式系统。其采用差分方式进行双向平衡传输,传输距离较远,最大可达1200m,传输更远距离时可加中继器。RS485以半双工方式通讯,支持多点连接,允许挂接多达32个节点,利用驱动器可使节点增至128个。其传输速率较高,最高可达10Mbit/s。RS485总线已成为工业领域应用最为广泛的总线之一。RS485总线标准只对物理层接口进行定义,上层协议选择比较灵活。相对于FF、PROFIBUS、CAN等真正的现场总线系统,RS485总线系统在软硬件成本上具有较大优势,在一定时间内仍将是中小控制系统的主要形式。1.1.4 MODBUS协议MODBUS 协议最早是由美国 MODICON 公司针对其PLC产品开发的一种通信协议。由于该协议定义的是一种数据帧结构,独立于物理层介质和设备通信网络,容易被控制器识别和使用,因此MODICON 公司将其发展成为标准 MODBUS 接口和MODBUS PLUS 网络,并可扩展到其他网络应用中。MODBUS 协议应用在标准 MODBUS 网络时,将被直接传送;若应用在其他网络,可以将该协议植入其通信数据帧结构中进行传送。因为 MODBUS 协议良好的适用性已经得到了众多大公司(例如GE、SIEMENS、OMRON 等)的支持,所以都把它作为一种标准的通信接口提供给用户,并且作为与主系统通信的主要途径。目前,我国电力和化工行业已经广泛使用集散控制系统DCS ( Distributed Control System )系统。不过在大多数场合,DCS 系统都与其他专用控制系统混合使用。专用系统包含PLC、数据采集器、智能控制器、智能仪表等。如果将这些系统都接入 DCS 系统统一监视、控制、管理,无疑会极大提高企业的经济效率和管理水平。值得关注的是现在几乎所有的 DCS 系统都提供了 MODBUS 通信接口。所以,进行基于 MODBUS 协议的控制器远程监控系统开发具有现实意义和可行性。MODBUS 协议采用MasterSlave技术,是一种问答方式的通信协议。一个 Master 可以对应一个或多个Slave,只有 Master 才可进行初始化的询问,为 Slave 分配地址,对所有的 Slave 发送广播信息 。MODBUS 协议在点对点通信时采用 RS232/RS422 串口通信标准。多点通信时则采用 RS485 串口通信标准。1.2 现代自动控制系统和IEC61131-3国际标准在工业控制领域,PLC技术的发展在上世纪90年代经历了一次高潮。这得益于微电子、网络通信和控制技术的迅猛发展。但随着技术的进步和市场要求的提高,传统的PLC越来越暴露出其在数据封装能力,程序可重用性,顺序操作编程等方面的不足。这些缺陷导致了不同制造商PLC平台的不兼容,也给工程技术人员的学习和操作带来了极大的不便。统一的编程规则成为技术人员的迫切需求。IEC61131标准正是在这种情况下应运而生。IEC61131-3是IEC 61131国际标准的第三部分121314, 是第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准。该标准提供给用户一种良好结构、自上而下或自下而上的程序开发方法,提供全套的配置集成,允许程序分解成功能块和软件元素,进行完全的程序控制。程序不同部分在不同时间,以不同周期或平行的运行。提供了一套统一的应用于PLC的语法和语义。IEC61131-3包括5种编程语言,即指令表、结构化文本、梯型图、功能块图和顺序功能图。规范了编程语言、PLC与编程系统的接口、字符集和工程管理,使得所有PLC使用相同的概念,平台程序可以互相移植,从而整体降低自动化控制系统的费用。这些都是在工业控制系统所阐述的软件设计的概念和软件模型等的基础上制定的,适应了当今世界软件、工业控制系统的发展方向。符合IEC 61131-3的软件系统是一个结构完善、可重复使用、可维护的工业控制系统软件。标准最初主要用于可编程序控制器PLC的编程系统,但随着可编程序控制器PLC技术、编程语言等的不断进步也在不断地进行着补充和完善。目前该标准同样也适用于过程控制领域、分散型控制系统、基于控制系统的软逻辑、SCADA等。IEC 61131-3国际标准在技术上的实现是高水平的,因此有足够的发展空间和变动余地,这也使得该标准能很好地适应工业控制的发展和要求。因此IEC 61131-3标准在1993颁布之后被国际用户和开发商团体广泛接受,目前得到全世界的认可。世界顶尖的工业控制商接受了这个编程模型,各种软件公司提供相应的开发工具。IEC 61131-3国际标准已对整个控制领域形成了巨大的冲击,采用或应用符合IEC 61131-3国际标准的组态产品,已经成为国际工业控制领域的一大趋势。1.3 IEC 61131-3及其功能块编程IEC 61131标准提供给用户一种良好结构、自上而下或自下而上的程序开发方法,提供全套的配置集成,允许程序分解成功能块和软件元素,进行完全的程序控制,程序不同部分在不同时间,以不同周期或平行的运行。IEC 61131将特定应用的控制系统称为配置,包括硬件的分配、过程资源划分、输入输出通道分配、内存地址分配及系统的性能分析。一个配置中可定义一个或多个资源,资源可以理解为可执行的过程处理设备,像一个CPU。一个资源中可以定义一个或多个任务。由任务控制一套程序或/和功能块的执行,可以周期或由事件驱动。程序可以使用5种语言的任何一种。典型程序由功能块、函数组成,包括数据结构和逻辑。与一个资源、一个任务、运行于一个闭环系统的传统PLC相比,IEC 61131-3是开放和先进的。IEC 61131-3标准中提供了4种内部操作语言和一个结构化语言定义:(1)顺序功能图(SFC)是IEC 61131-3标准的中心语言,用于工业控制软件的结构化的内部组织。SFC语言源于Petri Nets,用于解决面向序列的问题。它将控制过程周期分成定义好的步骤,并由转移条件隔开。步骤描述了行为,对应程序组织单元;转换描述了条件,对应程序组织单元的逻辑联系,它决定其他语言描述行为的执行顺序。不管是平行的执行逻辑或有多个选项的过程都很容易地用SFC表示。(2)功能块图(FBD)是图形化的编程语言,使用IEC功能块库中的功能块进行图形化程序开发,主要用于过程工业。允许用户基于存在的功能块组成更复杂的控制过程。功能块图的支持使IEC 61131-3有较大的发展空间。(3)结构化文本(ST)是类Pascal的高级结构化语言,但更直观,可以实现不易用图形化语言实现的复杂应用。ST能够实现IF和ELSE选择、FOR和WHILE循环,提供对结构化文本支持。ST像一般语言的语句,适合于编程新手,并能简化梯形图和功能块中的长代码。(4)指令表(IL)是寄存器级别的低级语言,由一套连续的指令组成,每行一条,很像微处理器的汇编语言。IL一般用于熟练的编程人员。(5)梯形图(LD)是使用接触器和线圈的图形化编程方法,一般用于离散控制系统。LD使用接触器表示输入元素,线圈表示输出结果,以用户最熟悉的方法取代逻辑等式和简单行为。IEC 61131-3的5种语言中,FBD最有生命力和发展前途。FB(功能块)是控制系统的基本构件,是一个包装好的控制程序,可以是任何IEC 61131-3语言编写的控制逻辑和策略包装成的软件元素,可以在相同程序的不同部分或分散的其他程序中使用。功能块能够封装数据和逻辑,超过了FORTRAN和C语言所写的子程序,有面向对象的含义,其组成及对控制编程软件的贡献很像是现代电子电路中的集成芯片。功能块的使用提高了系统可靠性。数据封装避免了许多错误源,用户不必关心具体实现细节,只需关心与外部的接口和如何使用。开发人员只需注重于实现,而不必关心使用。功能块允许来自不同程序、项目、位置、公司甚至国家的不同组件的结合。IEC 61131-3标准保证了功能块定义接口的使用,即定义的输入和输出参数。由不同程序员设计的功能块可借助输入和输出参数进行交互,当然输入和输出参数必须是标准中定义的数据类型。FB不仅利于结构化程序设计,长远地看还能加速应用开发,尤其对相近的应用开发有效。现代控制系统的一个目标是代码重用,相同的控制逻辑无论硬件是PLC、DCS或是 PC,均有相同的程序源代码,这个目标只有通过FB实现。功能块的支持使得远程控制成为可能。符合IEC 61131-3标准的DCS系统编程软件,必不可少地会使用FB。DCS中所有控制单元的控制逻辑一般都以FB的形式提供在编程环境中。DCS还需要提供一个现场总线通信系统中用于分散处理的FB。开放式现场总线控制系统FCS通过组态软件生成的参数及算法,不仅可以在控制器中运行,还可以在远程I/O或智能设备上运行,这就需要定义好的FB,可以在智能仪表及执行机构中进行运算,实现真正的分布式控制。1.4 可编程逻辑控制器可编程逻辑控制器(Program Logic Controller)是在工业环境中使用的数字操作的电子系统,它使用可编程存储器内部存储用户设计的指令,这些指令用来实现特殊的功能,诸如逻辑运算、顺序操作、定时、计数以及算数运算和通过数字或模拟输入/输出来控制各种类型的机械或过程。4781968年美国GM(通用汽车)公司提出取代继电器控制装置的要求,第二年美国数字公司研制出了第一代可编程序控制器,满足了GM公司装配线的要求。可编程控制器从产生到现在,尽管只有四十几年的时间由于其编程简单、可靠性高、使用简单、维护容易等优点,使其得到了迅猛的发展,在冶金、机械、石油、化工、纺织、建筑、电力等领域都得到了广泛的应用。 随着PLC技术的进步和市场要求的提高,传统的PLC越来越暴露出其在数据封装能力,程序可重用性,顺序操作编程等方面的不足。这些缺陷导致了不同制造商PLC平台的不兼容,也给工程技术人员的学习和操作带来了极大的不便。统一的编程规则成为技术人员的迫切需求。1.5 组态软件组态英文是“Configuration”,组态就是用应用软件中提供的工具、方法、完成工程中某一具体任务的过程。56组态软件是指一些数据采集与过程控制的专用软件,它们是在自动控制系统监控层一级的软件平台和开发环境,使用灵活的组态方式,为用户提供快速构建工业自动控制系统监控功能的、通用层次的软件工具。组态软件应该能支持各种工控设备和常见的通信协议,并且通常应提供分布式数据管理和网络功能。对应于原有的HMI(人机接口软件,Human Machine Interface)的概念,组态软件应该是一个使用户能快速建立自己的HMI的软件工具,或开发环境。当前的组态软件产品有:iFIX组态软件、悉雅特citect组态软件、紫金桥组态软件、MCGS组态软件、三维力控ForceControl组态软件、西门子WinCC组态软件、Rockwell RSView32组态软件等。使用组态软件开发系统工程的一般步骤:(1) 将所有I/O点的参数收集齐全,并填写表格,以备在监控组态软件和PLC上组态时使用。(2) 搞清楚所使用的I/O设备的生产商、种类、型号、使用的通信接口类型,采用的通信协议,以便在定义I/O设备时做出准确选择。(3) 将所有I/O点的I/O标识收集齐全,并填写表格,I/O标识是唯一地确定一个I/O点的关键字,组态软件通过向I/O设备发出I/O标识来请求其对应的数据。在大多数情况下I/O标识是I/O点的地址或位号名称。(4) 根据工艺过程绘制、设计画面结构和画面草图。(5) 按照第一步统计出的表格,建立实时数据库,正确组态各种变量参数。(6) 根据第一步和第二步的统计结果,在实时数据库中建立实时数据库变量与I/O点的一一对应关系,即定义数据连接。(7) 根据第四步的画面结构和画面草图,组态每一幅静态的操作画面(主要是绘图)。(8) 将操作画面中的图形对象与实时数据库变量建立动画连接关系,规定动画属性和幅度。(9) 视用户需求,制作历史趋势,报警显示,以及开发报表系统。之后,还需加上安全权限设置。(10) 对组态内容进行分段和总体调试,视调试情况对软件进行相应修改。(11) 将全部内容调试完成以后,对上位软件进行最后完善(如:加上开机自动打开监控画面,禁止从监控画面退出等),让系统投入正式(或试)运行。1.6 论文的主要工作 本文主要研究了IEC61131-3标准,介绍了组态软件PLC_Config的整体设计方案,对软件的各个模块进行了总体的描述,着重介绍了PLC_Config中的功能块组态的编辑和编译的设计和实现方法,解决了图形化编程语言的可视化编辑和编译的实现方法,功能块在PLC_Config和PLC嵌入式程序之间的表现形式的转化等关键问题。本文的重点是功能块程序的编辑和编译的实现方法和思路。在文章的最后,对PLC_Config进行了简单的测试应用,得到了理想的效果。2 PLC_Config组态软件设计和实现2.1 概述PLC_Config主要有以下几个模块组成:现场设备管理模块、工程管理模块、可视化功能块组态模块、现场设备监控模块、通信服务模块及信息报告模块,各个模块之间的关系如图2-1所示。现场设备管理模块设备信息保存现场设备管理网络监控可视化组态模块基于功能块的控制回路编辑功能块参数组态符号表编写、状态表编写工程管理、I/O配置等现场设备监控模块创建监控画面,监控现场信息,监视过程变量,强制变量输出信息报告模块报告系统信息、操作信息、编译信息及通信信息文件管理模块维护、生成、修改工程信息、组态信息等。 通信服务模块包括通信服务,如变量读写、设备声明、程序上载、程序下载等服务。图2-1 PLC_Config的总体模块划分结构可视化组态模块是整个组态软件的核心部分,实现了PLC应用组态的可视化操作。现场设备管理模块负责维护、修改控制策略。现场设备监控模块负责监控现场网络的运行情况,同时也可强制过程变量的值。文件管理模块维护、生成、修改工程信息、组态信息等,并保存功能块回路的组态信息。通信服务模块提供了系统中的各类通信服务。信息报告模块负责及时通报各类系统信息,如设备信息、网络信息、操作信息、编译信息等。PLC_Config以工程的方式对组态信息进行管理。一个工程对应一个工程目录,工程目录结构如图4-2所示。每个工程目录包含一个工程文件,功能块程序文件,状态表,符号表等文件。工程文件描述整个工程的总体框架,对工程下的所有文件进行有效的组织管理。程序块文件保存了设备的功能块组态信息,这些信息可以形成代码,并下载到控制器。符号表主要是为了使用符号编程,方便程序的维护和修改,以及程序的可读性。状态表用于过程变量的监视以及强制。通信配置可配置当前网络的信息,配置扩展I/O模块的信息。其结构如下:工程目录功能块程序目录功能块程序1工程文件:保存工程的总体结构信息图2-2 PLC_Config所创建工程的目录结构功能块程序2功能块程序n工程状态表文件:保存了状态表的有关信息工程符号表文件:保存了符号表的有关信息PLC_Config启动时首先要调用文件管理模块、现场设备管理模块的初始化函数,对这两个模块进行初始化,然后新建或打开一个工程,启动工程,同时打开网络套接字映射接口对象,监听网络设备信息,每发现一个在线设备就在设备管理窗口中添加该设备相关信息。创建一个功能块文件,选择功能块添加到控制回路编辑窗口中,通过鼠标操作建立链接对象,确定功能块之间的连接关系及功能块的执行顺序,形成一个完整的控制回路,对各个功能块进行参数配置。最后对组态信息进行编译,下载组态信息到现场设备中。2.2 现场设备管理模块现场设备管理模块负责侦听网络设备信息,维护和管理现场设备信息。本模块至底向上可分为三层:网络层、设备管理层、后台数据库层。实时网络监控层:启动套接字映射接口对象,监听网络上的设备信息,将获取的设备相关信息转交给现场设备管理层处理。现场设备信息现场设备管理实时网络监控后台数据库层设备管理层网络层图2-3 现场设备管理模块的三层体系结构可视化工程管理模块、信息报告模块通信服务模块现场设备管理层:该层负责接收来自实时网络监控层的消息,对该消息进行处理,将消息报告给可视化工程管理模块、信息报告模块,维护后台数据库。该层是现场设备管理模块的核心层,是该模块和其他模块交互的主要接口。现场设备信息层:该层维护一个Access数据库,存放现场设备的信息。该数据库的主表是一个名为DevOnline数据表。DevOnline数据表是一个动态变化的数据表,该数据表存放的是目前在线的设备,根据设备在线、离线状态,及时地删除和添加设备信息,供组态使用。2.3 文件管理模块在PLC应用系统中用文件来描述设备信息,保存回路信息以及符号表和状态表。PLC_Config需指定一个专用目录来存放各类应用程序文件,将这个目录定义为应用程序根目录。该目录下的各种文件就是应用程序生成的工程相关的文件。PECX后缀的文件是用来保存工程信息的,其中包含工程名,工程所在的根目录,以及工程的配置信息等。FBD后缀的文件是用来保存功能块回路的组态信息的。其中包括对功能块网络的保存,网络中功能块的保存以及功能块参数的保存、网络注释的保存等编译需要使用的信息。STS后缀的文件是用来保存状态表配置的,状态表是用来调试的时候观察PLC内部数据的。同时也可以对内部数据进行强制。在MFC为中系统文件的保存提供了Serialize函数,Serialize()序列化函数是一个虚函数,因此可以借助这个函数来实现对文件数据的读取,保存或者修改。但是现代更加主流的保存方法是采用XML描述文件来保存,使用XML文件的好处在于各个平台通用,可移植性好,几乎所有的应用程序都能处理XML文件,并且通过DOM提供的方法可以很快捷的对XML文件进行操作。2.4 可视化组态模块PLC_Config组态软件是以工程的方式来管理和组织信息,而这是通过可视化工程管理窗口来实现的。图2-4表示一个新创建的工程,工程名为df.pecx。如图所示,一个新创建的工程会自动为工程添加一个节点,节点名为df.pecx。在df.pecx节点下面有四个节点:程序块节点、符号表节点、状态表节点、通信配置节点、指令节点。图2-5表示的是项目的数据结构图。工程管理窗口对应的视图类CProjectView、文档类是CProjectDoc。程序块节点负责管理当前由用户创建的所有程序。程序块节点负责管理所有功能块控制策略。可通过鼠标右键操作,创建一个新的控制策略文件,每一个控制策略文件对应一种控制策略。一个控制策略可包含多个网络,每个网络中由各种基本功能块组成复杂的运算逻辑,用户可创建并选择合适的回路文件编译并下载。双击某一控制策略节点,将打开控制策略编辑窗口,在该窗口中完成控制回路组态。控制策略编辑窗口是基于VC+的Document/View结构,在本程序实现中,CFBDDoc类、CFBDView类和CFBDFrame类构成了控制策略编辑窗口的三位一体的Document/View结构。图2-4 PLC_Config中的工程树符号表中的文件是用来保存符号表的,符号表是用来保存变量定义的,他定义了PLC内部的物理地址和符号的一一对应关系。为了增强程序的可读性以及修改程序的方便性,需要使用符号表。符号表同样是采用VC+的Document/View结构,即它的三位一体结构分别是CSymbolTblDoc类、CSymbolTblFrame类和CSymbolTblView类。编程人员可以定义,修改,删除符号表项,同时也可将符号表应用于程序中。以方便程序设计以及调试。符号表的保存主要采用链表完成。链表成员即是一个符号项。如图2-6。项目根节点m_projectItem在工程树中的编号hItem工程信息m_Project工程名m_projectname工程目录m_projectpath工程配置m_projectcfg程序块节点m_fbItem在工程树中的编号hItem程序块列表m_loopTable控制回路信息LoopInfo控制回路信息LoopInfo符号表节点m_SblTblItem在工程树中的编号hItem符号表信息m_SblNodeTable绝对地址m_strAbsAddress符号名m_strSymbol注释m_strVarComment状态表节点m_StatusItem在工程树中的编号hItem符号表信息m_StatusChtTbl绝对地址m_strAbsAddress符号名m_strSymbol数据类型m_strVarType图2.5 项目数据结构图图2-6 符号状态表功能块的可视化编辑模块在下一章详细介绍。2.5通信服务模块通信服务模块主要包括实时通信服务和套接字映射接口对象的实现。实时通信服务模块中的各项通信服务以全局对象的形式,由组态程序的其他模块所调用。当组态程序用户层需要与网络通信时,调用相应服务的请求原语(Requset)将请求报文交给实时通信服务,而通信服务在收到通信请求后,将调用套接字映射接口对象的数据发送接口将请求报文发送到网络上。当套接字映射接口对象通过数据接收接口接收到来自网络的通信请求后,将调用相应服务的指示原语(Indicate)把请求转交给相应通信服务,通信服务收到通信请求后把该请求转交给用户层。如果该请求需要回应,用户层会调用相应通信服务的响应原语(Response)把回复报文转交给通信服务,通信服务通过调用套接字接口对象的数据发送接口把回复报文发送到网络上。当套接字映射接口对象通过数据接收接口接收到来自网络的通信回复后,将调用相应服务的确定原语(Confirm)把回复报文交给通信服务,然后再由通信服务把回复报文转交给用户层。图2-7描述了的通信过程。请求用户层确定响应指示实时通信服务套接字映射接口用户层实时通信服务套接字映射接口图2-7 EPA通信过程2.5.1 实时通讯服务的实现实时通信服务分为应用层实时通信服务和管理服务两类。实时通信服务提供四种服务原语:请求、指示、响应、确定。服务原语是通信服务提供给外部的调用接口,同时服务原语也表示一种执行方向。在本程序中,将通信服务设计成对象的模式。每个通信服务在程序中表现为一个全局对象,称为通信服务对象。每一个通信服务对象都具有以下几个参数:服务序号ID(m_MessageID)、服务使用标志(m_beUsed)、服务请求完成标志(m_reqFinished)。服务序号ID参数表示本服务被调用的次数,该参数初始值为0,服务每调用一次,该值加1。服务使用标志参数用于表示通信服务对象是否正在被调用,通常情况下,在同一时刻,通信服务对象只能响应一个服务请求,即只有本次服务调用结束通信服务对象才能响应下一个服务请求。服务请求完成标志表示本次服务请求是否结束,对于确定性服务,其服务请求需要得到响应,它有一定的等待时间,如果服务请求超过等待时间仍没有收到响应,则认为本次请求失败。2.5.2 套接字映射接口对象的实现 (1)套接字映射接口对象套接字映射接口对象(PLCSocket)封装了各个网络端口,如管理功能端口、应用层服务端口。套接字映射接口提供了实时通信服务与TCP(UDP)/IP之间的映射。在网络层次结构上,套接字映射接口介于应用层和传输层之间,向上它提供面向所有实时通讯服务的调用接口,向下它提供向网络发送数据的调用接口。(2)套接字映射接口对象的报文发送管理组态程序在调用管理功能块服务和应用层服务发送数据时,需要将数据传送给套接字映射接口对象。套接字映射接口对象首先按发送优先级,将这些待发送的数据分别缓存在不同的队列中,以等待发送,优先级最高的报文最先发送。在系统中,定义了三级优先级:设备间周期性信息发布具有最高的优先级,以确保控制系统的连接正常运行。对于事件信息、设备信息等的广播发布具有次高优先级,而点对点之间的单播通信的优先级最低。来自应用层服务的请求报文,有些是需要确认的,有些是不需要确认的。对于不需要确认的应用层服务请求报文,套接字映射接口对象只需将该报文进行打包,并发送出去即可。对于需要确认的应用层服务请求报文,套接字映射接口对象在向网络上发送该报文时,将根据发送该消息的服务ID(ServiceID)以及报文序号(MessageID),创建一个定时器对象,并开始启动定时,并作以下处理:如果在当前报文响应时间ActiveMsgTime(即最大响应等待时间)到之前收到正确的响应报文,则由套接字映射接口对象将该响应报文发送到相应的服务接口,并同时将定时器清零,并删除该定时器对象;如果在当前报文响应时间ActiveMsgTime(即最大响应等待时间)到之前收到错误的响应报文,则由套接字映射接口对象将该响应报文发送到相应的服务接口,并同时将定时器清零,并删除该定时器对象;服务将不对该报文进行处理,并直接通知用户功能块实例,由用户功能块实例作出判断并处理。如果定时时间超过当前报文响应时间ActiveMsgTime(即最大响应等待时间),套接字映射对象仍未收到相应于该请求报文的响应报文,则向应用层服务返回一个负响应,及超时响应错误类型,同时删除该定时器对象。(3)套接字映射接口对象的报文接受管理组态程序启动之后,套接字接口对象就打开管理功能块端口、应用层服务端口,监听来自现场网络的所有消息。当接收到消息时,由套接字映射接口对象对消息头进行解包,并根据消息所接收的端口的不同,将消息分送到不同的功能模块处理。套接字映射接口对象接收到来自管理功能块端口或应用层服务端口的消息后,根据服务标识(ServiceID)进行判断与处理,如服务标识无效,则将报文丢弃,不作处理;如果服务标识ID有效,则根据其服务类型,判断是否作出应答或响应:如果收到的消息是来自其他现场设备的请求消息,则根据其服务类型,判断是否作出应答或响应;如果收到的消息是组态程序发送出去的请求消息的响应,则根据消息序号(MessageID)、以及肯定或否定的响应,由用户层作出判断与处理。2.6信息报告模块信息报告模块将系统收集到各类信息及时通知给用户,使用户能清楚地得知目前的操作状态。图2-8是信息报告窗口的一个示意图。信息报告窗口分为三个部分:编译信息,系统日志信息,设备日志信息编译信息:记录控制回路组态信息的编译信息,报告编译错误等。系统日志信息:记录软件的操作信息,用户的操作信息。设备日志信息:提示设备的上线下线,并且提示设备IP冲突。 图2-8 信息报告模块2.6本章小结本章简单介绍了PLC_Config的5大模块,在下一章详细介绍功能块程序的编辑模块和编译模块。,PLC_Config是基于功能块的分布式控制系统的可视化组态程序。它通过创建链接对象,建立现场设备中各个功能块之间连接关系,构建成一个个控制回路,将组态信息下载现场设备中,完成对控制网络的组态工作。整个组态过程以一种类似于搭建积木的方式,通过鼠标拖拽、点击完成,而不需要复杂的套接字编程,使得建立功能强大的应用变得非常容易,大大降低了对工程师技术水平的要求,使用和操作起来更加简单、方便,缩短了整个工程的实施周期,降低了生产成本。3 PLC_Config组态软件可视化功能块组态以及编译3.1 PLC_Config可视化功能块编辑程序的设计3.1.1文档/视图(Document/View)结构PLC_Config是基于MFC框架设计开发的,MFC应用程序的核心就是文档视图结构,利用文档视图结构,可以把数据与数据的用户视图分开,一个明显的好处是同一组数据可有有多个视图。在PLC_Config中,程序的核心功能之一就是编辑功能块程序,功能块程序是一种图形化的语言,用户的编程过程是对图形的操作,所以功能块的绘制和操作都是由视图部分来完成,在操作的同时,要保留操作的记录,而且在保存功能块程序时要将当时的文件永久的保存在磁盘中,这些工作有文档类来完成。文档的保存格式不是唯一的,它可以是应用程序序列化形成的特定格式文件,也可以是XML描述文件等。910在设计功能块物件时,要从三方面来考虑,一个是视图角度,包括了物件的绘制,对物件操作时的重绘,对物件监视时物件的变化等等,另一个就是文档角度,包括了物件内部数据的维护,物件的保存,物件数据的读取等,还有一点就是文档与视图的联系,比如视图的变化要保存到文档,视图的初始要读取文档等。3.1.2 可视化功能块编辑程序设计类关系图通过对功能块编辑程序的需求分析进行分析,可以将一个功能块的程序物件分解成5大元素,分别是:功能块物件,功能块参数物件,功能块网络物件,链接线物件,和功能块程序文件物件,这5个物件之间的主要关系是包含关系,这是由功能块程序内在结构定义的,用面向对象的角度设计,在设计时可以对每种物件定义一个类,包含物件的信息和操作方法,根据功能块程序物件的结构分析,得到了如下的类关系图3-1。功能块文档物件功能块网络物件集合功能块物件集合功能块参数集合链接线物件集合图3-1 功能块编辑程序类关系图 3.1.3功能块的图形表示图3-2是一个功能块的图形表示。一个典型的功能块从图形结构上可以分为两个部分:功能块参数部、功能块体部。功能块体部包含功能块名称,功能块参数部包含功能块的输入和输出参数单元。功能块输入参数单元功能块输出参数单元功能块名称功能块体部图3-2功能块的图形3.1.4功能块的逻辑组成 每个功能块从逻辑角度可以看做一个函数,包括了输入参数和输出结果和函数功能的实现,所以我们可以将一个功能块从逻辑上分为三个部分,输入参数,输出参数和函数执行部分,由于功能块的逻辑执行是在PLC中实现的,所以在PLC_Config中不用考虑功能块是怎样实现逻辑的,而输入参数和输出参数作为逻辑执行函数的接口需要在PLC_Config中组织起来,产生PLC可以识别的代码(一组数据结构),通过通讯模块下载到PLC设备的Flash Rom中,PLC通过嵌入式的软件来分析这组数据结构来实现逻辑上的运算。3.1.5在DCCE系列PLC中的功能块程序的表现形式如上所述,功能块程序通过PLC_Confug编译后,通过通讯接口下载到下位机中,由下位机的嵌入式程序来执行功能块的功能,在下位机中的功能块也需要一定的数据
展开阅读全文