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