李 強(qiáng),張建豐
(杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,浙江 杭州 310018)
具有安全屬性圖編程組件的設(shè)計(jì)研究*
李 強(qiáng),張建豐
(杭州電子科技大學(xué) 計(jì)算機(jī)學(xué)院,浙江 杭州 310018)
研究和實(shí)現(xiàn)了具有安全屬性的可編程邏輯控制器(Programmable Logic Controller,PLC)編程組件。組件采用IEC61131-3標(biāo)準(zhǔn)功能塊模型,既滿足了IEC61131-3標(biāo)準(zhǔn)編程語(yǔ)言規(guī)范,也實(shí)現(xiàn)了組件在標(biāo)準(zhǔn)PLC編程軟件的復(fù)用。組件在PLC編程中可按需求改變接口,其封裝接口滿足TC6 XML schema屬性定義,增加的安全屬性實(shí)現(xiàn)了組件的安全復(fù)用。最后,在Microsoft Visual Studio(VS)2012中運(yùn)用.NET組件技術(shù)和C#編程語(yǔ)言實(shí)現(xiàn)了組件,并對(duì)組件進(jìn)行了相關(guān)驗(yàn)證。
IEC61131-3;TC6 XML schema;組件安全性
IEC61131-3標(biāo)準(zhǔn)不僅對(duì)工控編程語(yǔ)言產(chǎn)生了指導(dǎo)規(guī)范作用,而且對(duì)PLC技術(shù)的發(fā)展也發(fā)揮了重要的指導(dǎo)作用[1]。由于PLC編程使用相應(yīng)編程語(yǔ)言組件開發(fā),且目前軟件開發(fā)主流是面向?qū)ο蠹敖M件技術(shù)[2],因此有必要為符合IEC61131-3標(biāo)準(zhǔn)的編程軟件設(shè)計(jì)更為優(yōu)越的組件。
在PLC圖編程組件研究中,有的利用組件技術(shù)對(duì)模塊進(jìn)行封裝提高了組件的復(fù)用性[3-5],有的基于IEC61131-3設(shè)計(jì)標(biāo)準(zhǔn)組件,利于提高組件的規(guī)范性[6-8]。
結(jié)合組件復(fù)用性和規(guī)范性研究,本文通過研究IEC61131-3標(biāo)準(zhǔn)圖編程功能塊模型、TC6 XML schema以及組件安全性,利用.NET組件技術(shù)設(shè)計(jì)了一種安全組件并進(jìn)行了驗(yàn)證,使得組件可以安全使用。
1.1 IEC61131-3標(biāo)準(zhǔn)軟件模型
IEC61131-3是當(dāng)今世界第一個(gè)為工業(yè)自動(dòng)化控制系統(tǒng)的軟件設(shè)計(jì)提供標(biāo)準(zhǔn)化編程語(yǔ)言的國(guó)際標(biāo)準(zhǔn)[1],標(biāo)準(zhǔn)分為兩個(gè)部分[9-10]:公共元素和編程語(yǔ)言。公共元素部分規(guī)范了變量的定義、數(shù)據(jù)類型,給出了系統(tǒng)軟件模型如圖1所示,并引入配置、資源、任務(wù)和程序組織單元(Program Organizition Unit,POU)的概念。編程語(yǔ)言規(guī)定了指令表、結(jié)構(gòu)化文本、梯形圖、功能塊圖、順序功能圖。
圖1 IEC61131-3標(biāo)準(zhǔn)的軟件模型
從IEC61131-3標(biāo)準(zhǔn)的軟件模型可知一個(gè)設(shè)備對(duì)應(yīng)一個(gè)配置,每個(gè)配置包含若干個(gè)資源,每個(gè)資源內(nèi)可以定義若干個(gè)任務(wù),任務(wù)配置后周期地或事件驅(qū)動(dòng)地控制一組POU執(zhí)行。
圖3 功能塊屬性定義
1.2 IEC61131-3標(biāo)準(zhǔn)功能塊模型
POU由3種類型的基本單元組成:程序、功能塊(Function Block,F(xiàn)B)、函數(shù),其中功能塊是IEC61131-3標(biāo)準(zhǔn)的核心元素,所以本文設(shè)計(jì)的組件本質(zhì)上是基于功能塊的。功能塊面向?qū)ο筇匦缘幕締卧?,由輸入變量、輸出變量、?nèi)部算法組成,且由一個(gè)類型名標(biāo)識(shí),如圖2所示。功能塊的輸入輸出變量來(lái)自于全局?jǐn)?shù)據(jù)區(qū)且可存取,由用戶編程時(shí)設(shè)定。功能塊具有封裝性,能把特定的算法封裝起來(lái),把具體的操作和操作數(shù)據(jù)分離開。
圖2 IEC61131-3功能塊模型
IEC61131-3功能塊的輸入輸出通過全局?jǐn)?shù)據(jù)區(qū)、變量存取路徑等方法交換信息,這樣簡(jiǎn)單的結(jié)構(gòu)方式適合描述復(fù)雜控制回路,能滿足工程的功能需求。功能塊的封裝性把系統(tǒng)的總體算法組態(tài)和單個(gè)算法組態(tài)的研制開發(fā)過程分開,增加了程序的可重用性和移植性[11]。
雖然IEC61131-3標(biāo)準(zhǔn)促使PLC的編程軟件達(dá)到了統(tǒng)一化,但是不同編程軟件采用不同的數(shù)據(jù)描述格式,這樣不利于數(shù)據(jù)的交互。為了解決這一問題,PLCopen 技術(shù)委員會(huì)的TC6組織定義了一種被不同編程軟件跨平臺(tái)地傳輸屏幕信息的完整的開放標(biāo)準(zhǔn)接口[12],使得符合標(biāo)準(zhǔn)的數(shù)據(jù)描述文件能相互轉(zhuǎn)換,實(shí)現(xiàn)數(shù)據(jù)共享。其中IEC61131-3標(biāo)準(zhǔn)的核心部件POU的屬性在TC6 XML schema中定義如下:
標(biāo)準(zhǔn)編程軟件根據(jù)用戶設(shè)定的pouType屬性選擇對(duì)應(yīng)的PROG、FB或者FUN。而支持本文組件設(shè)計(jì)的FB屬性以5種編程語(yǔ)言為基礎(chǔ),定義如圖3所示。FB對(duì)應(yīng)屬性在TC6 XML schema中有詳細(xì)的描述,定義了元素命名規(guī)范、XML描述文檔的結(jié)構(gòu)以及元素的使用原則。本文定義的基于IEC61131-3標(biāo)準(zhǔn)圖形編程語(yǔ)言的安全組件包含的屬性就是基于TC6 XML schema所定義的。
PLC編程是基于可視化組件進(jìn)行的,所以組件的安全性是整個(gè)工程的關(guān)鍵。組件安全性是與防止惡意侵入對(duì)程序數(shù)據(jù)非授權(quán)訪問或改變的能力有關(guān)的軟件屬性。針對(duì)非法代碼侵入所引發(fā)的組件安全性問題,本文為組件進(jìn)行了兩個(gè)方面的安全性設(shè)計(jì):(1)從組件設(shè)計(jì)層面,在組件生成時(shí)為組件庫(kù)添加
通過以上對(duì)IEC61131-3標(biāo)準(zhǔn)圖形編程語(yǔ)言定義的功能塊模型、TC6 XML schema以及組件安全性,本文對(duì)功能塊組件先進(jìn)行組件屬性的設(shè)計(jì),并在VS2012開發(fā)軟件中利用.NET組件技術(shù)和C#編程語(yǔ)言實(shí)現(xiàn)組件的設(shè)計(jì)。
本文設(shè)計(jì)了BaseInOut、BaseIn、BaseOut、FUN、Label 5種組件分別表示基本輸入輸出模塊、基本輸入模塊、基本輸出模塊、函數(shù)模塊、標(biāo)簽?zāi)K,下面以BaseInOut為例對(duì)組件屬性設(shè)計(jì)進(jìn)行闡述。
4.1 組件屬性與元素節(jié)點(diǎn)設(shè)計(jì)
圖4
因?yàn)镕B包含在POU中,所以必須從TC6 XML schema定義
圖5
元素節(jié)點(diǎn)定義FBD元素定義規(guī)定
針對(duì)組件安全性屬性,本文對(duì)組件庫(kù)設(shè)計(jì)了
4.2 組件實(shí)現(xiàn)
在VS2012中,在Windows Form中繼承.NET Framework的UserControl類構(gòu)造BaseInOut組件的類,并在類中對(duì)4.1節(jié)中的組件屬性與元素節(jié)點(diǎn)用C#語(yǔ)言編程實(shí)現(xiàn)。定義
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{;}}
依次對(duì)其余屬性進(jìn)行設(shè)計(jì)。此外根據(jù)TC6 XML schema對(duì)常規(guī)對(duì)象的定義,本文對(duì)組件進(jìn)行設(shè)計(jì)并實(shí)現(xiàn)了
圖6 組件自動(dòng)生成操作初始界面
安全屬性
組件安全性在PLC編程工程的XML描述文件的安全驗(yàn)證是通過XML結(jié)構(gòu)定義(XML Schema Definition,XSD)對(duì)工程中組件XML描述進(jìn)行驗(yàn)證。定義一個(gè)ValidateXMLBySchemaUtils工具類,在工程中對(duì)組件安全性需要驗(yàn)證時(shí),調(diào)其ValidateByTC6()方法進(jìn)行驗(yàn)證。ValidateXMLBySchemaUtils工具類的設(shè)計(jì)如下:
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 組件自動(dòng)生成驗(yàn)證
進(jìn)行PLC可視化編程時(shí),在組件自動(dòng)生成界面雙擊組件對(duì)組件類型名、輸入變量個(gè)數(shù)、輸出變量個(gè)數(shù)以及執(zhí)行控制的改變可以實(shí)現(xiàn)組件的自動(dòng)生成,驗(yàn)證結(jié)果如圖7所示。
圖7 組件自動(dòng)生成操作驗(yàn)證
5.2 組件安全性驗(yàn)證
錯(cuò)誤注入作為一種有效的安全性測(cè)試技術(shù),在評(píng)估硬件和軟件領(lǐng)域的可靠性和安全性方面都獲得了充分的肯定[13],因此在組件安全性驗(yàn)證方面采用錯(cuò)誤注入的方式:(1)組件設(shè)計(jì)層面的驗(yàn)證,注入錯(cuò)誤對(duì)比MD5值,組件實(shí)現(xiàn)后以動(dòng)態(tài)鏈接庫(kù)(Dynamic Link Library,DLL)文件存在,利用MD5計(jì)算工具,測(cè)得組件庫(kù)DLL文件MD5值為69932c20816d42298dfe58cd54d1b7e1,將其作為“數(shù)字指紋”。為驗(yàn)證其安全性,對(duì)組件庫(kù)進(jìn)行錯(cuò)誤注入后測(cè)得其MD5值為e56fcd99c8e972ac5bb6ee6814c2dddc,對(duì)比MD5值可以驗(yàn)證組件庫(kù)文件是否被侵入。(2)注入錯(cuò)誤后,用TC6_XML_V10.xsd文件對(duì)編譯后的PLC工程中組件部分的XML描述文件進(jìn)行XSD驗(yàn)證,編程軟件會(huì)彈出錯(cuò)誤提示框,如圖8所示。
圖8 XSD驗(yàn)證錯(cuò)誤示例
本文在研究了基于IEC61131-3標(biāo)準(zhǔn)平臺(tái)的相關(guān)工作后,通過研究IEC61131-3標(biāo)準(zhǔn)圖形編程語(yǔ)言定義的功能塊模型,對(duì)組件的可視化形式進(jìn)行了設(shè)計(jì)和實(shí)現(xiàn);通過研究TC6 XML schema,對(duì)組件的屬性設(shè)計(jì)達(dá)到了可跨標(biāo)準(zhǔn)平臺(tái)的目的;并對(duì)組件和組件庫(kù)安全性相應(yīng)地進(jìn)行了
[1] 彭瑜. 工控編程語(yǔ)言國(guó)際標(biāo)準(zhǔn)IEC 61131-3及其影響[J]. 國(guó)內(nèi)外機(jī)電一體化技術(shù),2006(4):53-61.
[2] 鄧紹芳. 組件技術(shù)在軟件開發(fā)中的應(yīng)用研究[D].成都:西南交通大學(xué),2003.
[3] 唐莉萍. 用組件技術(shù)實(shí)現(xiàn)計(jì)算機(jī)與PLC通信的研究[J]. 東華大學(xué)學(xué)報(bào)(自然科學(xué)版),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] 林立春,林瓊麒,張功鍍. 面向?qū)ο蟮腜LC上位機(jī)軟件平臺(tái)設(shè)計(jì)[J]. 自動(dòng)化儀表,2007,28(12):15-18.
[6] 秦華. 基于IEC61131-3標(biāo)準(zhǔn)的PLC編輯模塊設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)與數(shù)字工程,2012,40(3):136-139.
[7] 張海偉. 和利時(shí)IEC 61131-3編程軟件平臺(tái)[J]. 自動(dòng)化博覽,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:工業(yè)自動(dòng)化系統(tǒng)的程序編制[M].中國(guó)機(jī)電一體化技術(shù)應(yīng)用協(xié)會(huì)秘書處,譯.2002.
[10] NEMA.Programmable Controllers-Part3: Programming languages[S]. Virginia : National Electrical Maunfacturers Association,2003.
[11] 周士貴,宋穎超. IEC61131-3工控編程語(yǔ)言國(guó)際標(biāo)準(zhǔn)及其應(yīng)用[J]. 計(jì)算機(jī)與信息技術(shù),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
風(fēng)力發(fā)電系統(tǒng)國(guó)家重點(diǎn)實(shí)驗(yàn)室開放課題(2013002)
TP311
A
10.19358/j.issn.1674- 7720.2017.03.022
李強(qiáng),張建豐.具有安全屬性圖編程組件的設(shè)計(jì)研究[J].微型機(jī)與應(yīng)用,2017,36(3):75-78,81.
2016-09-30)
李強(qiáng)(1966-),男,博士,副教授,主要研究方向:嵌入式開發(fā)平臺(tái)。
張建豐(1991-),男,碩士研究生,主要研究方向:人工智能,智能算法,圖編程應(yīng)用。