引言
IEC61131—3組態軟件是分布式控制系統中的上位軟件,是工程師與系統的接口,可完成控制系統中現場設備運行的邏輯組態,從而實現對系統的控制。隨著PLC與DCS系統的應用日趨廣泛,IEC6113l一3已經在工業自動化中建立了牢固的國際標準,國內外大部分工業自動化廠商都有提供基于國際標準IEC6113l一3的IEC組態編程系統,IEC組態軟件的研發已經成為工業自動化廠商的核心技術。IEC組態軟件的實現原理之一是將前端用各種組態語言(ST,LD,FBD,SFC,IL)編寫的程序轉化成中間結構,再由組態軟件編譯后端根據不同的硬件平臺信息將中間結構編譯成在該平臺上可執行的目標文件。組態軟件編譯部分的中間結構是組態軟件IEC語言前端與組態軟件編譯后端的主要接口。好的中間結構可使IEC語言前端做到與目標機器無關,而不依賴于目標機器平臺,同時可節省IEC語言前端的翻譯工作。現今編譯程序使用的中間結構有很多種形式,常見的有逆波蘭式、三元式、四元式和樹形結構,本文介紹一種基于三叉樹鏈表的中間結構。
1 、總體設計思想
基于樹形結構的中間結構是現今大多數編譯器中間結構的主流設計方案,比如GCC、LCC、TCC等均使用二叉樹或者多又樹作為其中間結構。本文介紹的是一種三叉樹的設計方案。該方案中,以中間結構表示的高級語言程序單元就是三叉語法樹節點組成的多層森林,每一層森林都是一個一維雙向鏈表,鏈表中的每個“節點”稱之為語法樹(一棵三叉樹),而每棵語法樹的節點則稱之為樹節點。其中,程序單元以POU(程序組織單元)為翻譯單位。
每個三叉樹節點包括的信息主要有語法樹的操作、節點類型、指向三個子樹的指針、鏈表前項與后項指針、關聯符號指針等。樹節點結構體的數據結構表示如下:
其中,語法操作表示該節點可以完成什么樣的“運算”。語法分析樹的語法操作符可以分為分別是POU節點操作符、語句操作符和表達式操作符三種類型,這三種類型的語法操作符將在下一節詳細介紹,通常可以語法分析樹的語法操作來區分不同的語法分析樹。
類型是指當前語法分析樹所代表的語法操作的類型。
符號指針是指向該節點關聯的符號表項,并非所有節點的此項都有內容,具體那些節點中可以關聯符號也將在下一節介紹。
圖1所示是一個POU程序單元以三叉樹鏈表的中間結構總體表示的總體形式。
采用三叉樹森林的方法能夠充分的表示正常的高級語言,同時,與其他編譯器不同,該方法還引入了POU節點操作符和語句操作符,而省去了前端大量語法翻譯的工作,符合IEC工業語言編譯器多前端的特征。
2、 中間結構說明
語法分析樹的語法操作符可分為POU節點操作符、語句操作符和表達式操作符三種類型。下面來詳細介紹這三種語法樹節點的各種屬性。
2.1 POU節點操作符
POU節點操作符可用于表示POU的開始、結束、作用域和變量定義。各節點屬性如表l所列。
其中,語法操作以宏定義的形式聲明。符號是該節點關聯的符號表項。符號可分為POU符號和變量符號。POU符號包括POU名、參數個數及類型、返回值類型、POU地址等信息;變量符號則包括變量名、類型、作用域和地址等信息。
表l中的唯一節點指整個森林第一層鏈表中的節點;葉節點指鏈表中一棵三叉樹的葉節點。
2.2 語句操作符
語句操作符分為分支選擇操作符、循環操作符、跳出、返回、調用和無條件跳轉等。各節點屬性如表2所列。
表2中的根節點指森林中一棵三叉樹的根節點;中間節點指某三叉樹中的中間節點,它既非根節點,也非葉節點。CH00SE的左子節點是條件判定,中子節點是條件為真的內容,右子節點是條件為假的內容。同樣,LOOP的左子節點是條件判定,中子節點是循環體,右子節點是循環計數。對于WHILE語句,右子節點可以為空。RETURN的左子節點是返回表達式子樹。CALL的左子節點是參數子樹,中子節點是調用子樹。
2.3 表達式操作符
表達式操作符包括所有的高級語言運算符,如賦值、算術、關系、邏輯運算符等,以賦值、取地址和加法運算符為例,其表達式操作符號主要屬性如表3所列。
3 、ST語言代碼對應的中間結構表示
本節以一段ST的POU程序為例,將其轉化為中間結構,以證明中間結構的可行性。假設此POU中所定義的整型變量為a,b,那么,其POU程序如下:
對應的中間結構如圖2所示。其中,EQUAL是等值運算符的宏定義。
4、結束語
本文介紹了一種三叉樹的中間結構設計方案。該方案充分考慮了IEC61131—3組態軟件的多前端特性,并能夠做到不依賴于后端,同時為各語言翻譯前端的設計提供了很大的便利。這種中間結構設計在HCC(Hollysys C Compiler)編譯器的開發中已經實現,其可行性也得到了驗證,并已應用在實際的組態軟件開發項目中。
責任編輯:gt
-
plc
+關注
關注
5016文章
13387瀏覽量
465381 -
組態軟件
+關注
關注
4文章
231瀏覽量
27100 -
編譯器
+關注
關注
1文章
1642瀏覽量
49283
發布評論請先 登錄
相關推薦
評論