嵌入式系統硬件平臺的軟件PLC實(shí)現方法

發(fā)布時(shí)間:2010-3-24 09:09    發(fā)布者:李寬
關(guān)鍵詞: PLC , 平臺 , 嵌入式 , 軟件 , 硬件
1嵌入式PLC的總體結構

嵌入式軟PLC與嵌入式系統共享一個(gè)CPU,PLC和嵌入式系統之間沒(méi)有多余的導線(xiàn)連接,增加了系統的可靠性,易于實(shí)現許多高級功能。PLC中的信息也能通過(guò)嵌入式系統的顯示屏顯示,通過(guò)嵌入式系統的編輯鍵可方便地對PLC進(jìn)行編輯操作。

1.1 嵌入式軟PLC的硬件結構

外部輸入的開(kāi)關(guān)量經(jīng)過(guò)光電隔離后連接到FPGA的I/O口,通過(guò)FPGA地址譯碼,FPGA通過(guò)數據地址總線(xiàn)與 CPU相連。這樣CPU就可以通過(guò)數據地址總線(xiàn)獲得和設置輸入量的工作狀態(tài),硬件原理框圖如圖1所示。



1.2嵌入式軟PLC的軟件結構

嵌入式軟PLC程序包括兩類(lèi):一類(lèi)是編輯狀態(tài),實(shí)現PLC程序的輸入和編譯功能;另一類(lèi)是面向生產(chǎn)過(guò)程的應用程序。系統軟件結構由4部分組成,分別是編輯模塊、編譯模塊、執行模塊和監控模塊。

軟件PlC系統模塊間的數據流程如圖2所示。



2 系統關(guān)鍵組成部分的設計與實(shí)現

2.1梯形圖編輯器

Qt/Embedded 是著(zhù)名的Qt庫開(kāi)發(fā)商Trolltech推出的面向嵌入式系統的Qt版本。Qt/Embedded具有可移植性強和支持跨平臺開(kāi)發(fā)等優(yōu)點(diǎn)。本系統采用Qt 編寫(xiě)界面,梯形圖編輯器的界面如圖3所示。



2.1.1梯形圖的數據結構設計

梯形圖編輯具有方便、邏輯直觀(guān)的特點(diǎn),梯形圖編輯器借助于梯形圖的內部數據結構來(lái)實(shí)現顯示、插入、刪除、代碼轉化等功能。

PLC語(yǔ)言中,各種元素包括單個(gè)節點(diǎn)(如常開(kāi)觸點(diǎn)、常閉觸點(diǎn)等)和邏輯塊(如與邏輯塊、或邏輯塊),它們都含有相同的操作,如插入、刪除、繪圖等?梢园呀M成梯級的各個(gè)邏輯塊看成組成梯級的各個(gè)部分,把組成邏輯塊的子邏輯塊和單個(gè)節點(diǎn)看成是組成邏輯塊的各個(gè)部分,符合“部分一整體”的層次結構?梢圆捎妹嫦驅ο蟮脑O計思想,使用composite模式遞歸地創(chuàng )建樹(shù)狀結構。使用組合結構,能夠把相同的操作應用在組合和個(gè)別的對象上。大多數情況下,可以忽略對象組合和個(gè)別對象之間的差別,簡(jiǎn)化程序代碼,增強了軟件的可維護性。采用composite模式的類(lèi)圖[1]如圖4所示。



圖中:LadderElement是一個(gè)抽象類(lèi),為組合對象的接口。代表梯形圖語(yǔ)言的任何一個(gè)圖形元素,它既可以代表元件又可以代表邏輯塊,在適當的情況下可以實(shí)現所有類(lèi)共同的缺省行為,如繪圖和代碼轉換等;LadderCell為所有元件類(lèi)(如常開(kāi)觸點(diǎn)、常閉觸點(diǎn)、輸出、置位、復位)的基類(lèi);LadderBlock為所有邏輯塊(如與邏輯塊類(lèi)、或邏輯塊類(lèi)等)的基類(lèi)。

圖 5為一個(gè)梯級和它對應的數據結構,OrBlock為或邏輯塊類(lèi)的對象,AndBlock為與邏輯塊類(lèi)的對象,Rung為梯級類(lèi)的對象。



此外,為了能夠方便地進(jìn)行繪圖和編輯,引入了一個(gè)空元件類(lèi)。它的作用是梯形圖中的水平連接線(xiàn),實(shí)現方法是繼承LadderCell類(lèi),重新實(shí)現成員函數Draw()來(lái)畫(huà)一條水平的線(xiàn)段。

2.1.2編輯功能的設計與實(shí)現



將屏幕分割成一定數目的小的區域,并創(chuàng )建含有相同數目的二維數組。當繪制元件時(shí),將元件、元件所在的邏輯塊和元件所在的梯級指針保存到數組中,通過(guò)光標在屏幕上的坐標可以獲得二維數組的下標,從而可以獲得光標所在的元件、邏輯塊和梯級在內存中與之相對應的對象。

梯形圖的編輯通過(guò)改變其在內存中的數據結構來(lái)實(shí)現,在數據結構被改變后,重新繪圖。對梯形圖的編輯包括:插入元件、插入分支、插入梯級、刪除元件和刪除梯級等。篇幅所限只作簡(jiǎn)要介紹。

刪除元件:刪除LadderBlock中的一個(gè)元件 Ladder—Cell(A)后,如果LadderBlock中只剩下一個(gè)LadderCell(B)時(shí),LadderCell(B)取代 LadderBlock的位置,插入到LadderBlock的父LadderBlock中;如果LadderBlock中只剩下一個(gè) LadderBlock(B),則將LadderBlock(B)的所有LadderElement插入到LadderBlock的父 LadderBlock中。圖5中的梯級刪除元件X004后梯形圖和其數據結構變?yōu)閳D6所示的情況。



插入分支:通過(guò)光標在屏幕上兩次選擇分支的起始和結束位置,這兩個(gè)位置必須屬于同一個(gè)AndBlock(A)。起始和結束位置選擇后,將兩個(gè)位置問(wèn)的LadderElement作為分支構成一個(gè)AndBlock(B)并計算出AndBlock(B)所占的列數n,然后新建一個(gè)表示插入分支的AndBlock(C),AndBlock(C)中插入n個(gè)空元件。建一個(gè) OrBlock并將AndBlock(B)和AndBlock(C)插入到OrBlock中。OrBlock即表示插入分支后的或邏輯塊。OrBlock 取代兩次選中之間的元素在它們的父邏輯塊中的位置,然后根據修改后的數據結構畫(huà)圖得到插入分支后的梯形圖。圖7為在M001和X006插入分支前后梯形圖的變化。



2.2指令表編譯器的設計與實(shí)現

實(shí)現對PLC編程語(yǔ)言的高效、可靠的編譯,是研制開(kāi)發(fā)嵌入式PLC系統的一項關(guān)鍵性任務(wù)。傳統的開(kāi)發(fā)方法是用高級語(yǔ)言自行開(kāi)發(fā)專(zhuān)用的PLC指令編譯器,需要對每個(gè)程序字和程序規則編寫(xiě)識別和相應的處理程序,工作量大、開(kāi)發(fā)周期長(cháng),容易產(chǎn)生疏漏,可維護性很差。為了提高軟件的開(kāi)發(fā)效率,保證軟件質(zhì)量,增強軟件的可維護性,采用通用編譯工具 Lex&Yacc:開(kāi)發(fā)PLC指令編譯器。

2.2.1Lex&Yacc簡(jiǎn)介

Lex&Yacc是美國貝爾實(shí)驗室用C語(yǔ)言研制的詞法分析程序和語(yǔ)法分析程序的自動(dòng)生成工具,是目前使用最廣泛的編譯軟件之一。Lex是詞法分析程序生成器,Yacc’是語(yǔ)法分析程序生成器。它們可以根據用戶(hù)提供的詞法、語(yǔ)法規范文件,自動(dòng)轉化為多種高級語(yǔ)言源代碼,如C或C++等。[2]

2.2.2編譯器總體結構

所謂“遍”,是對源程序或其等價(jià)的中間語(yǔ)言程序從頭到尾掃描并完成規定任務(wù)的過(guò)程[2]。本系統的編譯過(guò)程包含三遍,分別進(jìn)行詞法分析、語(yǔ)法分析和代碼轉換。

2.2.3詞法分析器設計

指令表源程序可以簡(jiǎn)單地被看成一個(gè)多行的字符串。詞法分析器從上到下、從左到右逐個(gè)字符地對源程序進(jìn)行掃描,產(chǎn)生一個(gè)個(gè)單詞符號,把字符串的源程序改造成為單詞符號串的中間程序,用于隨后的語(yǔ)法分析。

本系統的詞法分析器有兩種工作狀態(tài):一是從頭到尾對源程序進(jìn)行掃描,檢查出所有的詞法錯誤;二是當沒(méi)有詞法錯誤時(shí),從頭到尾對源程序進(jìn)行掃描,將識別出的單詞符號輸入給語(yǔ)法器。

2.2.4語(yǔ)法分析器設計

(1)PLC指令表語(yǔ)言的語(yǔ)法描述

分析PLC指令程序結構,提取隱藏在指令代碼中的結構信息,這種信息中往往會(huì )有操作指令被隱含地表達出來(lái)。例如:指令OR/ORB與梯形圖中的并聯(lián)結構對應,而AND/ANB 則與梯形圖中的串聯(lián)結構對應。

部分PLC指令語(yǔ)句的文法用巴科斯范式描述如下



按照yacc的語(yǔ)法規則,對應于巴科斯范式描述寫(xiě)出yacc源程序后,用 “yacc-dv plcil.y”指令轉換成語(yǔ)法分析器的C語(yǔ)言源程序yyparse。

(2)將PLC指令表轉換為二進(jìn)制代碼

PLC 指令表源程序的二進(jìn)制文件格式為:每條指令的二進(jìn)制編碼占32位,操作符的編碼與元件編碼相加作為目標代碼的高16位,低16位為元件的編號。例如,操作符LD的編碼為0xFF00,元件X的編碼為Ox01,指令LD X1的編碼為OxFF010001。

指令表編譯器的代碼轉換功能由 yacc源程序規則的動(dòng)作部分來(lái)實(shí)現。當語(yǔ)法分析器識別出一條完整的指令時(shí),就將其對應的二進(jìn)制代碼保存到文件中。

(3)將PLC指令表轉換為樹(shù)形結構

Yacc語(yǔ)法分析程序通過(guò)尋找可以匹配目前為止所看到的標記的規則來(lái)工作。Yacc處理語(yǔ)法分析程序時(shí)創(chuàng )建了一組狀態(tài),每個(gè)狀態(tài)都反映一個(gè)或多個(gè)部分地被分析的規則中的一個(gè)可能的位置。當語(yǔ)法分析程序讀取標記時(shí),每次它讀取一個(gè)沒(méi)完成規則的標記,就把它壓入內部堆棧中并切換到一種反映它剛剛讀取的標記的新?tīng)顟B(tài)。這個(gè)動(dòng)作稱(chēng)為移進(jìn)(shift)。當它發(fā)現組成某條規則右側的全部符號時(shí),它就把右側符號彈出堆棧,而將左側符號壓入堆棧中,并且切換到反映堆棧上新符號的新?tīng)顟B(tài)。這個(gè)動(dòng)作成為規約(reduction)。當yacc規約規則時(shí),它都執行與這條規則有關(guān)的用戶(hù)代碼。[4]

利用堆棧的思想實(shí)現指令表語(yǔ)言向梯形圖樹(shù)形結構的轉換。自定義一個(gè)棧Stack,可以壓入和彈出指向Lad— derElement類(lèi)型的對象的指針。在進(jìn)行代碼轉換時(shí),棧Stack動(dòng)作與語(yǔ)法分析棧的動(dòng)作不同。當yacc解析到如LD/IDI、AND/ANI等含有元件的指令語(yǔ)句時(shí),將這些指令中的元件入棧(如上述代碼中的B、C行),邏輯塊的構造在其對應的語(yǔ)法規則的動(dòng)作部分實(shí)現。

2.3執行模塊的設計與實(shí)現

2.3.1邏輯運算算法推導

下面列一段簡(jiǎn)單的PIC程序來(lái)介紹邏輯運算算法的推導過(guò)程:

①LDX1
②ORX6
③ORIM1
④OUT Y5
⑤LDIY5
⑥AND X7
⑦ORM2
⑧ANI X10
⑨ORIM3
⑩OUT M4
⑩END

定義OR、ORI、ORB的或操作為加法“+”,AND、ANI、ANB的與操作為乘法“*”,取反操作為“[]”。則上述程序清單中的輸出Y5和M103分別等于:

Y5=X4+X6+[M1]
M4=([Y5]*x7+M2)*[X10]+[M3]

上式的所有運算符只會(huì )連接兩個(gè)變量或者一個(gè)變量和一個(gè)表達式。由于掃描過(guò)程是順序執行的,因此可以為上述計算過(guò)程建立計算堆棧。建立遞增的堆棧,則計算過(guò)程和堆棧中的數據變化如表1所列。



2.3.2執行模塊的實(shí)現

本系統的執行模塊是由RTLinux的實(shí)時(shí)線(xiàn)程模塊來(lái)實(shí)現的,它運行于內核態(tài)。系統開(kāi)機立即加載執行模塊,并將PLC的二進(jìn)制代碼從文件中復制到共享內存中,執行模塊解釋共享內存中的PLC指令表的二進(jìn)制代碼,按照用戶(hù)輸入的邏輯,完成開(kāi)關(guān)量的控制,工作流程如圖8所示。



3 小結

嵌入式軟PLC最突出的特點(diǎn)是,借助于嵌人式系統的硬件平臺用軟件的方法實(shí)現標準PLC的功能,代替專(zhuān)用控制器,結構開(kāi)放,開(kāi)發(fā)周期短、成本低,具有良好的應用前景。雖然文中PLC指令采用的是日本三菱公司 Fx2N可編程控制器系列指令,但是只需稍作修改即可用于其他廠(chǎng)商的產(chǎn)品。目前該嵌入式軟PLC已成功應用于數控銑床中,完全滿(mǎn)足控制要求。

參考文獻

   1. Erich Gamma 設計模式:可復用面向對象軟件的基礎 2005
   2. Levine John R.Mason Tony.Brown Doug Lex 與Yacc 2003
   3. 陳火旺.錢(qián)家驊.孫永強 編譯原理 1984
   4. 周凱 PC 數控原理、系統及應用 2006
   5. 賀哲榮.石帥軍 流行PLC實(shí)用程序及設計 2006
   6. 沙智華.張生芳.葛研軍.趙亮 通用數控代碼編譯系統研究與實(shí)現 [期刊論文] -中國機械工程2003(9)

作者:南京航空航天大學(xué) 張少坤  游有鵬  王榮
來(lái)源:單片機與嵌入式系統應用 2009 (4)
本文地址:http://selenalain.com/thread-9792-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页