李 強,張建豐
(杭州電子科技大學 計算機學院,浙江 杭州 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-),男,碩士研究生,主要研究方向:人工智能,智能算法,圖編程應用。