一種plc編程語言的編譯方法
【專利摘要】本發(fā)明涉及工業(yè)控制領域,尤其涉及一種PLC編程語言的編譯方法,包括指令表轉(zhuǎn)換、指令分析、中間代碼生成和目標代碼生成。本發(fā)明利用梯形圖語言與指令表語言之間的一一對應關系,將指令表語言作為中介,對梯形圖語言程序轉(zhuǎn)換為指令表源程序,再對指令表進一步處理、編譯、解釋成目標代碼,語言邏輯關系清晰,書寫格式簡單,代碼利用率高,編譯效果好。本發(fā)明有助于提出一個適用于多種硬件平臺的軟PLC控制方案,開發(fā)一個對多種運行系統(tǒng)硬件平臺均適用的開發(fā)系統(tǒng),當用戶在使用不同廠商的硬件平臺作為軟PLC的運行系統(tǒng)時,使用該開發(fā)工具,無需重新學習新硬件平臺的編程,省去了重新學習編程耗費的大量時間,對PLC的發(fā)展具有十分重要的現(xiàn)實意義。
【專利說明】一種PLC編程語言的編譯方法
【技術領域】
[0001]本發(fā)明涉及工業(yè)控制領域,尤其涉及一種PLC編程語言的編譯方法。
【背景技術】
[0002]長期以來,計算機控制和傳統(tǒng)PLC控制一直是工業(yè)控制領域的兩種主要控制方法。PLC自1969年問世以來,以其功能強、可靠性高、使用方便、體積小等優(yōu)點在工業(yè)自動化領域得到迅速推廣,成為工業(yè)自動化領域中極具競爭力的控制工具。伴隨著計算機技術的迅速發(fā)展和廣泛應用,人們逐漸認識到硬件PLC的種種弊端。首先由于生產(chǎn)廠商眾多,各種機型互不兼容,沒有統(tǒng)一的標準,在編程元件的種類、數(shù)目、編程語言等方面各不相同;其次,產(chǎn)品的功能實現(xiàn)依賴于硬件,數(shù)據(jù)結(jié)構(gòu)相對封閉,用戶難以自由改變或增添PLC的功能;第三,現(xiàn)行的PLC產(chǎn)品,其編程方式要求使用者對PLC的硬件結(jié)構(gòu)、PLC的電氣原理、編程指令均要有相當?shù)牧私?,這就不利于PLC的進一步推廣和使用;第四,當PLC出現(xiàn)故障時,需由專業(yè)人員用專用工具檢測硬件,再維修,可維護性差;同時,其昂貴的價格也嚴重制約其發(fā)展。
[0003]軟PLC是一種基于PC機的軟邏輯控制軟件,它具有硬PLC在功能、可靠性、速度、故障查找等方面的特點,利用軟件技術可以將標準的工業(yè)PC轉(zhuǎn)換成全功能的PLC過程控制器。軟件PLC綜合了計算機和PLC的開關量控制、模擬量控制、數(shù)學運算、數(shù)值處理、網(wǎng)絡通信、PID調(diào)節(jié)等功能,通過一個多任務控制內(nèi)核,提供強大的指令集、快速而準確的掃描周期、可靠的操作和可連接各種I/O系統(tǒng)及網(wǎng)絡的開放式結(jié)構(gòu)。它遵循IEC61131-3標準,支持多語言編程,所以,軟件PLC提供了與硬PLC同樣的功能,同時又提供了 PC環(huán)境如PC機容量大、處理速度快、網(wǎng)絡互聯(lián)方便等PLC不具備的優(yōu)點,是PC技術和PLC技術的結(jié)晶。研究軟PLC技術可以消除硬PLC本身具有的諸多不足之處,提高產(chǎn)品開發(fā)效率,使PLC性價比提高。應用于實際工程中后,將會極大提升企業(yè)的自動化水平和生產(chǎn)效率?;赑C的軟PLC,既有良好的人機交互功能,又有極快的數(shù)據(jù)處理能力和強大的網(wǎng)絡功能。研究基于PC的軟PLC控制系統(tǒng),對降低成本、加強系統(tǒng)的開放性和推廣軟PLC在工業(yè)中的應用等具有很大的經(jīng)濟意義。
[0004]如果能夠提出一個可以適用于多種硬件平臺的軟PLC控制方案,開發(fā)一個能夠?qū)Χ喾N運行系統(tǒng)硬件平臺均適用的開發(fā)系統(tǒng),這樣當用戶在使用不同廠商的硬件平臺作為軟PLC的運行系統(tǒng)時,使用該開發(fā)工具,則無需重新學習新硬件平臺的編程,省去了重新學習編程耗費的大量時間,因此具有十分重要的現(xiàn)實意義。而其中的問題,就在于如何將PLC程序編譯為軟PLC運行系統(tǒng)可以識別執(zhí)行的代碼。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的目的在于提供一種PLC編程語言的編譯方法,解決【背景技術】提到的將PLC程序編譯為軟PLC目標代碼的問題。
[0006]為了實現(xiàn)上述的目的,采用如下的技術方案。一種PLC編程語言的編譯方法,包括指令表轉(zhuǎn)換、指令分析、中間代碼生成和目標代碼生成,所述指令表轉(zhuǎn)換是將PLC編程語言轉(zhuǎn)換成指令表源程序,所述指令分析是對指令表源程序進行詞法分析、語法分析和語義分析的綜合,它分析指令表源程序中某條指令是否正確,包括分析指令的操作碼是否存在,操作數(shù)代碼是否符合操作碼的要求和操作數(shù)是否超過操作數(shù)代碼的允許范圍,所述中間代碼生成是將指令表源程序翻譯成中間代碼,所述目標代碼生成是把中間代碼變換為特定機器上的絕對指令代碼或可以重定位的指令代碼。
[0007]上述方案中,所述詞法分析是讀入指令表源程序,對構(gòu)成指令表源程序的字符串進行掃描和分解,識別出指令表語言源程序中任何合法的單詞。所述詞法分析還可以完成預處理工作,所述預處理工作包括刪除注釋。
[0008]上述方案中,所述語法分析是在詞法分析的基礎上根據(jù)指令表源程序的語法規(guī)貝1J,把單詞符號串分解成各類語法單位。所述語法單位包括程序、字句、語句、程序段、表達式。
[0009]上述方案中,所述語義分析審查指令表源程序中有無語義錯誤,為代碼生成階段收集類型信息。
[0010]上述方案中,還包括代碼優(yōu)化,所述代碼優(yōu)化是對中間代碼進行變換或改造,使生成的目標代碼更為高效。
[0011]上述方案中,還包括表格管理,所述表格管理用來建立變量、常量和過程標識符的說明與引用之間的信息聯(lián)系。
[0012]上述方案中,還包括出錯處理,所述出錯處理用來對指令分析遇到的錯誤給出在指令表源程序中出錯的位置和錯誤性質(zhì)。
[0013]上述方案中,所述目標代碼生成是在指令表源程序和目標代碼之間建立一個指令和地址的目標代碼查詢表,逐行掃描編寫的指令表源程序,查表將指令表源程序中的指令翻譯成其對應的代碼,并將代碼按照規(guī)律組合起來形成可執(zhí)行的目標代碼。
[0014]與現(xiàn)有技術相比,本發(fā)明利用梯形圖語言與指令表語言之間的一一對應關系,將指令表語言作為中介,對梯形圖語言程序轉(zhuǎn)換為指令表源程序,再對指令表進一步處理、編譯、解釋成目標代碼,語言邏輯關系清晰,書寫格式簡單,代碼利用率高,編譯效果好。本發(fā)明有助于提出一個適用于多種硬件平臺的軟PLC控制方案,開發(fā)一個對多種運行系統(tǒng)硬件平臺均適用的開發(fā)系統(tǒng),當用戶在使用不同廠商的硬件平臺作為軟PLC的運行系統(tǒng)時,使用該開發(fā)工具,無需重新學習新硬件平臺的編程,省去了重新學習編程耗費的大量時間,對PLC的發(fā)展具有十分重要的現(xiàn)實意義。
【具體實施方式】
[0015]下面對本發(fā)明作進一步的描述。
[0016]本發(fā)明的目的是要將PLC編程語言轉(zhuǎn)換為PLC硬件能夠識別執(zhí)行的目標代碼。由于PLC編程語言采用的梯形圖語言作為一種“圖形”語言,要直接對其編譯是比較困難的,考慮到梯形圖語言與指令表語言之間的一一對應關系,可以先將梯形圖語言轉(zhuǎn)換為指令表語言。另外,指令表語言邏輯關系清晰,書寫格式簡單,也提高了代碼的利用率。因此,本發(fā)明選擇將指令表語言作為中介語言,對于梯形圖語言程序,先將其轉(zhuǎn)換為指令表源程序,再對指令表進一步處理,編譯,解釋成目標代碼。本發(fā)明主要包括指令表轉(zhuǎn)換、詞法分析、語法分析、語義分析、中間代碼生成、代碼優(yōu)化和目標代碼生成,其中詞法分析、語法分析和語義分析綜合起來稱為指令分析。此外,還包括表格管理和出錯處理。
[0017]第一步,指令表轉(zhuǎn)換,利用梯形圖語言與指令表語言之間的一一對應關系,將PLC編程語言轉(zhuǎn)換成指令表源程序。
[0018]第二步,詞法分析,從左到右一個字符一個字符地讀入指令表源程序,指令表源程序可以簡單的被看成一個多行的字符串,對構(gòu)成指令表源程序的字符串進行掃描和分解,識別出指令表源程序中任何合法的單詞。把單詞作為源程序的最小單位,等待語法分析。此外,還可以完成如刪除注釋等的預處理工作。
[0019]第三步,語法分析,在詞法分析的基礎上根據(jù)指令表語言的語法規(guī)則,把單詞符號串分解成各類語法單位(語法范疇),如“程序”、“字句”、“語句”、“程序段”、“表達式”等。在語法分析中,如果源程序存在語法錯誤,給出相應的出錯信息,當沒有語法錯誤后,就可以正確的畫出其分析樹或其他中間表示。
[0020]第四步,語義分析,審查指令表源程序中有無語義錯誤,為代碼生成階段收集類型信息。語義分析要的一個工作是進行類型審查,審查每個算符是否具有語言規(guī)范允許的運算對象,當不符合語言規(guī)范時,編譯程序應報告錯誤。只有語法、語義正確的指令表源程序才能被翻譯成正確的目標代碼。
[0021]第五步,中間代碼生成,在進行上述的語法分析和語義分析之后,將指令表源程序翻譯成一種內(nèi)部表示形式,這種內(nèi)部表示形式叫做中間代碼。中間代碼是一種結(jié)構(gòu)簡單、含義明確的記號系統(tǒng),它有兩個特點:一是容易生成,另一個則是容易被翻譯為目標代碼。
[0022]第六步,代碼優(yōu)化,對前面生成的中間代碼進行變換或進行改造,目的是使生成的目標代碼更為高效。
[0023]第七步,目標代碼生成,把中間代碼變換為特定機器上的絕對指令代碼或可以重定位的指令代碼,目標代碼的生成與硬件結(jié)構(gòu)和指令含義有關,涉及到硬件系統(tǒng)功能部件的運用,及其指令的選擇,各種數(shù)據(jù)類型變量的存儲空間分配以及寄存器和后緩寄存器的調(diào)度。
[0024]在上述的各個步驟中,表格管理用來建立變量、常量和過程標識符的說明與引用之間的信息聯(lián)系,出錯處理程序則用來對指令分析遇到的錯誤給出在源程序中出錯的位置和錯誤性質(zhì)。
[0025]目標代碼生成是一個把指令轉(zhuǎn)化成目標代碼的過程,指令和目標代碼之間是一一對應的關系。因此,在指令和目標代碼之間建立一個指令和地址的目標代碼查詢表,逐行掃描編寫的指令表源程序,查表將指令表源程序中的指令翻譯成其對應的代碼,并將代碼按照規(guī)律組合起來形成可執(zhí)行的目標代碼。目標代碼查詢表是預先建好的靜態(tài)數(shù)據(jù)文件,供編譯程序查詢數(shù)據(jù),其目的是將程序與數(shù)據(jù)文件分離,便于系統(tǒng)擴展。
【權利要求】
1.一種PLC編程語言的編譯方法,其特征在于,包括指令表轉(zhuǎn)換、指令分析、中間代碼生成和目標代碼生成, 所述指令表轉(zhuǎn)換是將PLC編程語言轉(zhuǎn)換成指令表源程序, 所述指令分析是對指令表源程序進行詞法分析、語法分析和語義分析的綜合,它分析指令表源程序中某條指令是否正確,包括分析指令的操作碼是否存在,操作數(shù)代碼是否符合操作碼的要求和操作數(shù)是否超過操作數(shù)代碼的允許范圍, 所述中間代碼生成是將指令表源程序翻譯成中間代碼, 所述目標代碼生成是把中間代碼變換為特定機器上的絕對指令代碼或可以重定位的指令代碼。
2.根據(jù)權利要求1所述的方法,其特征在于,所述詞法分析是讀入指令表源程序,對構(gòu)成指令表源程序的字符串進行掃描和分解,識別出指令表語言源程序中任何合法的單詞。
3.根據(jù)權利要求2所述的方法,其特征在于,所述詞法分析還可以完成預處理工作,所述預處理工作包括刪除注釋。
4.根據(jù)權利要求1所述的方法,其特征在于,所述語法分析是在詞法分析的基礎上根據(jù)指令表源程序的語法規(guī)則,把單詞符號串分解成各類語法單位。
5.根據(jù)權利要求4所述的方法,其特征在于,所述語法單位包括程序、字句、語句、程序段、表達式。
6.根據(jù)權利要求1所述的方法,其特征在于,所述語義分析審查指令表源程序中有無語義錯誤,為代碼生成階段收集類型信息。
7.根據(jù)權利要求1所述的方法,其特征在于,還包括代碼優(yōu)化,所述代碼優(yōu)化是對中間代碼進行變換或改造,使生成的目標代碼更為高效。
8.根據(jù)權利要求1所述的方法,其特征在于,還包括表格管理,所述表格管理用來建立變量、常量和過程標識符的說明與引用之間的信息聯(lián)系。
9.根據(jù)權利要求1所述的方法,其特征在于,還包括出錯處理,所述出錯處理用來對指令分析遇到的錯誤給出在指令表源程序中出錯的位置和錯誤性質(zhì)。
10.根據(jù)權利要求1所述的方法,其特征在于,所述目標代碼生成是在指令表源程序和目標代碼之間建立一個指令和地址的目標代碼查詢表,逐行掃描編寫的指令表源程序,查表將指令表源程序中的指令翻譯成其對應的代碼,并將代碼按照規(guī)律組合起來形成可執(zhí)行的目標代碼。
【文檔編號】G06F9/45GK104239115SQ201410354614
【公開日】2014年12月24日 申請日期:2014年7月24日 優(yōu)先權日:2014年7月24日
【發(fā)明者】葉生紅, 趙永杰 申請人:汕頭大學, 汕頭輕工裝備研究院