李 强,张建丰
(杭州电子科技大学 计算机学院,浙江 杭州 310018)
具有安全属性图编程组件的设计研究*
李 强,张建丰
(杭州电子科技大学 计算机学院,浙江 杭州 310018)
研究和实现了具有安全属性的可编程逻辑控制器(Programmable Logic Controller,PLC)编程组件。组件采用IEC61131-3标准功能块模型,既满足了IEC61131-3标准编程语言规范,也实现了组件在标准PLC编程软件的复用。组件在PLC编程中可按需求改变接口,其封装接口满足TC6 XML schema属性定义,增加的安全属性实现了组件的安全复用。最后,在Microsoft Visual Studio(VS)2012中运用.NET组件技术和C#编程语言实现了组件,并对组件进行了相关验证。
IEC61131-3;TC6 XML schema;组件安全性
IEC61131-3标准不仅对工控编程语言产生了指导规范作用,而且对PLC技术的发展也发挥了重要的指导作用[1]。由于PLC编程使用相应编程语言组件开发,且目前软件开发主流是面向对象及组件技术[2],因此有必要为符合IEC61131-3标准的编程软件设计更为优越的组件。
在PLC图编程组件研究中,有的利用组件技术对模块进行封装提高了组件的复用性[3-5],有的基于IEC61131-3设计标准组件,利于提高组件的规范性[6-8]。
结合组件复用性和规范性研究,本文通过研究IEC61131-3标准图编程功能块模型、TC6 XML schema以及组件安全性,利用.NET组件技术设计了一种安全组件并进行了验证,使得组件可以安全使用。
1.1 IEC61131-3标准软件模型
IEC61131-3是当今世界第一个为工业自动化控制系统的软件设计提供标准化编程语言的国际标准[1],标准分为两个部分[9-10]:公共元素和编程语言。公共元素部分规范了变量的定义、数据类型,给出了系统软件模型如图1所示,并引入配置、资源、任务和程序组织单元(Program Organizition Unit,POU)的概念。编程语言规定了指令表、结构化文本、梯形图、功能块图、顺序功能图。
图1 IEC61131-3标准的软件模型
从IEC61131-3标准的软件模型可知一个设备对应一个配置,每个配置包含若干个资源,每个资源内可以定义若干个任务,任务配置后周期地或事件驱动地控制一组POU执行。
图3 功能块属性定义
1.2 IEC61131-3标准功能块模型
POU由3种类型的基本单元组成:程序、功能块(Function Block,FB)、函数,其中功能块是IEC61131-3标准的核心元素,所以本文设计的组件本质上是基于功能块的。功能块面向对象特性的基本单元,由输入变量、输出变量、内部算法组成,且由一个类型名标识,如图2所示。功能块的输入输出变量来自于全局数据区且可存取,由用户编程时设定。功能块具有封装性,能把特定的算法封装起来,把具体的操作和操作数据分离开。
图2 IEC61131-3功能块模型
IEC61131-3功能块的输入输出通过全局数据区、变量存取路径等方法交换信息,这样简单的结构方式适合描述复杂控制回路,能满足工程的功能需求。功能块的封装性把系统的总体算法组态和单个算法组态的研制开发过程分开,增加了程序的可重用性和移植性[11]。
虽然IEC61131-3标准促使PLC的编程软件达到了统一化,但是不同编程软件采用不同的数据描述格式,这样不利于数据的交互。为了解决这一问题,PLCopen 技术委员会的TC6组织定义了一种被不同编程软件跨平台地传输屏幕信息的完整的开放标准接口[12],使得符合标准的数据描述文件能相互转换,实现数据共享。其中IEC61131-3标准的核心部件POU的属性在TC6 XML schema中定义如下:
标准编程软件根据用户设定的pouType属性选择对应的PROG、FB或者FUN。而支持本文组件设计的FB属性以5种编程语言为基础,定义如图3所示。FB对应属性在TC6 XML schema中有详细的描述,定义了元素命名规范、XML描述文档的结构以及元素的使用原则。本文定义的基于IEC61131-3标准图形编程语言的安全组件包含的属性就是基于TC6 XML schema所定义的。
PLC编程是基于可视化组件进行的,所以组件的安全性是整个工程的关键。组件安全性是与防止恶意侵入对程序数据非授权访问或改变的能力有关的软件属性。针对非法代码侵入所引发的组件安全性问题,本文为组件进行了两个方面的安全性设计:(1)从组件设计层面,在组件生成时为组件库添加
通过以上对IEC61131-3标准图形编程语言定义的功能块模型、TC6 XML schema以及组件安全性,本文对功能块组件先进行组件属性的设计,并在VS2012开发软件中利用.NET组件技术和C#编程语言实现组件的设计。
本文设计了BaseInOut、BaseIn、BaseOut、FUN、Label 5种组件分别表示基本输入输出模块、基本输入模块、基本输出模块、函数模块、标签模块,下面以BaseInOut为例对组件属性设计进行阐述。
4.1 组件属性与元素节点设计
图4
因为FB包含在POU中,所以必须从TC6 XML schema定义
图5
元素节点定义FBD元素定义规定
针对组件安全性属性,本文对组件库设计了
4.2 组件实现
在VS2012中,在Windows Form中继承.NET Framework的UserControl类构造BaseInOut组件的类,并在类中对4.1节中的组件属性与元素节点用C#语言编程实现。定义
private string block= "基本控件";
[Category("基本属性")] [Browsable(false)]
public string Block
{get{return this.block;} set{this.block= value;}}
[Category("基本属性")] [DisplayName("模块类别")]
public string ShowBlock {get{return this.block;} set{;}}
依次对其余属性进行设计。此外根据TC6 XML schema对常规对象的定义,本文对组件进行设计并实现了
图6 组件自动生成操作初始界面
安全属性
组件安全性在PLC编程工程的XML描述文件的安全验证是通过XML结构定义(XML Schema Definition,XSD)对工程中组件XML描述进行验证。定义一个ValidateXMLBySchemaUtils工具类,在工程中对组件安全性需要验证时,调其ValidateByTC6()方法进行验证。ValidateXMLBySchemaUtils工具类的设计如下:
class ValidateXMLBySchemaUtils{
public void ValidateByTC6(string XMLName){
XmlDocument xd= new XmlDocument();
xd.Load(Application.StartupPath + XMLName);
xd.Schemas.Add(null,Application.StartupPath+"TC6_XML_V10.xsd");
ValidationEventHandler eventHandler = new ValidationEventHandler(ValidationEventHandler);
xd.Validate(eventHandler);}
Void ValidationEventHandler(object sender, ValidationEventArgs e){
switch (e.Severity){
case XmlSeverityType.Error:
MessageBox.Show("Error: {0}" + e.Message);
break;
case XmlSeverityType.Warning:
MessageBox.Show("Warning {0}" + e.Message);
break;}}}
5.1 组件自动生成验证
进行PLC可视化编程时,在组件自动生成界面双击组件对组件类型名、输入变量个数、输出变量个数以及执行控制的改变可以实现组件的自动生成,验证结果如图7所示。
图7 组件自动生成操作验证
5.2 组件安全性验证
错误注入作为一种有效的安全性测试技术,在评估硬件和软件领域的可靠性和安全性方面都获得了充分的肯定[13],因此在组件安全性验证方面采用错误注入的方式:(1)组件设计层面的验证,注入错误对比MD5值,组件实现后以动态链接库(Dynamic Link Library,DLL)文件存在,利用MD5计算工具,测得组件库DLL文件MD5值为69932c20816d42298dfe58cd54d1b7e1,将其作为“数字指纹”。为验证其安全性,对组件库进行错误注入后测得其MD5值为e56fcd99c8e972ac5bb6ee6814c2dddc,对比MD5值可以验证组件库文件是否被侵入。(2)注入错误后,用TC6_XML_V10.xsd文件对编译后的PLC工程中组件部分的XML描述文件进行XSD验证,编程软件会弹出错误提示框,如图8所示。
图8 XSD验证错误示例
本文在研究了基于IEC61131-3标准平台的相关工作后,通过研究IEC61131-3标准图形编程语言定义的功能块模型,对组件的可视化形式进行了设计和实现;通过研究TC6 XML schema,对组件的属性设计达到了可跨标准平台的目的;并对组件和组件库安全性相应地进行了
[1] 彭瑜. 工控编程语言国际标准IEC 61131-3及其影响[J]. 国内外机电一体化技术,2006(4):53-61.
[2] 邓绍芳. 组件技术在软件开发中的应用研究[D].成都:西南交通大学,2003.
[3] 唐莉萍. 用组件技术实现计算机与PLC通信的研究[J]. 东华大学学报(自然科学版),2002,28(6):66-69.
[4] LI X, LI D, YIN X, et al. Protocol conversion of plant control system consisted of different type PLCs[C].International Conference on Power System Technology, 2002:1509-1512.
[5] 林立春,林琼麒,张功镀. 面向对象的PLC上位机软件平台设计[J]. 自动化仪表,2007,28(12):15-18.
[6] 秦华. 基于IEC61131-3标准的PLC编辑模块设计与实现[J]. 计算机与数字工程,2012,40(3):136-139.
[7] 张海伟. 和利时IEC 61131-3编程软件平台[J]. 自动化博览,2016,33(6):42-44.
[8] JAMRO M, TRYBUS B. IEC 61131-3 programmable human machine interfaces for control devices[C]. 2013 6th International Conference on Human System Interactions(HSI),2013:48-55.
[9] JOHN K H,MICHAEL T.IEC61131-3:工业自动化系统的程序编制[M].中国机电一体化技术应用协会秘书处,译.2002.
[10] NEMA.Programmable Controllers-Part3: Programming languages[S]. Virginia : National Electrical Maunfacturers Association,2003.
[11] 周士贵,宋颖超. IEC61131-3工控编程语言国际标准及其应用[J]. 计算机与信息技术,2008(7):78-80.
[12] PLCopen Technical Committee 6. XML Formats for IEC61131-3[S]. 2009.
[13] CLARK J A, PRADHAN D K.Fault injection: a method for validating computer-system dependability[J]. Computer, 1995, 28(6):47-56.
Design and research of graph programming component with safety attribute
Li Qiang,Zhang Jianfeng
(School of Computer Science and Technology,Hangzhou Dianzi University, Hangzhou 310018, China)
This paper mainly studies and realizes the programmable logic controller (PLC) programming components with security attributes. Using IEC61131-3 standard function block model, components both meet the IEC61131-3 standard programming language specification, and achieve the components reuse in the standard PLC programming software. Components in the PLC programming, the interface can be changed according to demands. The interface meets the TC6 XML schema attributes delimited,and the added security attributes achieve the safety of component reuse. Finally, the components are implemented in Microsoft Visual Studio (VS) 2012 by using .NET component technology and C # programming language, and the components are verified.
IEC61131-3;TC6 XML schema;component safety
风力发电系统国家重点实验室开放课题(2013002)
TP311
A
10.19358/j.issn.1674- 7720.2017.03.022
李强,张建丰.具有安全属性图编程组件的设计研究[J].微型机与应用,2017,36(3):75-78,81.
2016-09-30)
李强(1966-),男,博士,副教授,主要研究方向:嵌入式开发平台。
张建丰(1991-),男,硕士研究生,主要研究方向:人工智能,智能算法,图编程应用。