嵌入式系統硬件平臺的軟件PLC實現方法_第1頁
嵌入式系統硬件平臺的軟件PLC實現方法_第2頁
嵌入式系統硬件平臺的軟件PLC實現方法_第3頁
嵌入式系統硬件平臺的軟件PLC實現方法_第4頁
嵌入式系統硬件平臺的軟件PLC實現方法_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、嵌入式系統硬件平臺的軟件PLC實現方法嵌入式軟PLC與嵌入式系統共享一個CPU,PLC和嵌入式系統之間沒有多余的導線連接,增加了系統的可靠性,易于實現許多高級功能。PLC中的信息也能通過嵌入式系統的顯示屏顯示,通過嵌入式系統的編輯鍵可方便地對PLC進行編輯操作。11嵌入式軟PLC的硬件結構外部輸入的開關量經過光電隔離后連接到FPGA的IO口,通過FPGA地址譯碼,FPGA通過數據地址總線與CPU相連。這樣CPU就可以通過數據地址總線獲得和設置輸入量的工作狀態(tài),硬件原理框圖如圖1所示。12嵌入式軟PLC的軟件結構嵌入式軟PLC程序包括兩類:一類是編輯狀態(tài),實現PLC程序的輸入和編譯功能;另一類是

2、面向生產過程的應用程序。系統軟件結構由4部分組成,分別是編輯模塊、編譯模塊、執(zhí)行模塊和監(jiān)控模塊。軟件PlC系統模塊間的數據流程如圖2所示。2系統關鍵組成部分的設計與實現21梯形圖編輯器QtEmbedded是著名的Qt庫開發(fā)商Trolltech推出的面向嵌入式系統的Qt版本。Qt/Embedded具有可移植性強和支持跨平臺開發(fā)等優(yōu)點。本系統采用Qt編寫界面,梯形圖編輯器的界面如圖3所示。211梯形圖的數據結構設計梯形圖編輯具有方便、邏輯直觀的特點,梯形圖編輯器借助于梯形圖的內部數據結構來實現顯示、插入、刪除、代碼轉化等功能。PLC語言中,各種元素包括單個節(jié)點(如常開觸點、常閉觸點等)和邏輯塊(如

3、與邏輯塊、或邏輯塊),它們都含有相同的操作,如插入、刪除、繪圖等??梢园呀M成梯級的各個邏輯塊看成組成梯級的各個部分,把組成邏輯塊的子邏輯塊和單個節(jié)點看成是組成邏輯塊的各個部分,符合“部分一整體”的層次結構??梢圆捎妹嫦驅ο蟮脑O計思想,使用composite模式遞歸地創(chuàng)建樹狀結構。使用組合結構,能夠把相同的操作應用在組合和個別的對象上。大多數情況下,可以忽略對象組合和個別對象之間的差別,簡化程序代碼,增強了軟件的可維護性。采用composite模式的類圖1如圖4所示。圖中:LadderElement是一個抽象類,為組合對象的接口。代表梯形圖語言的任何一個圖形元素,它既可以代表元件又可以代表邏輯塊

4、,在適當的情況下可以實現所有類共同的缺省行為,如繪圖和代碼轉換等;LadderCell為所有元件類(如常開觸點、常閉觸點、輸出、置位、復位)的基類;LadderBlock為所有邏輯塊(如與邏輯塊類、或邏輯塊類等)的基類。圖5為一個梯級和它對應的數據結構,OrBlock為或邏輯塊類的對象,AndBlock為與邏輯塊類的對象,Rung為梯級類的對象。此外,為了能夠方便地進行繪圖和編輯,引入了一個空元件類。它的作用是梯形圖中的水平連接線,實現方法是繼承LadderCell類,重新實現成員函數Draw()來畫一條水平的線段。212編輯功能的設計與實現 將屏幕分割成一定數目的小的區(qū)域,并創(chuàng)建含

5、有相同數目的二維數組。當繪制元件時,將元件、元件所在的邏輯塊和元件所在的梯級指針保存到數組中,通過光標在屏幕上的坐標可以獲得二維數組的下標,從而可以獲得光標所在的元件、邏輯塊和梯級在內存中與之相對應的對象。梯形圖的編輯通過改變其在內存中的數據結構來實現,在數據結構被改變后,重新繪圖。對梯形圖的編輯包括:插入元件、插入分支、插入梯級、刪除元件和刪除梯級等。篇幅所限只作簡要介紹。刪除元件:刪除LadderBlock中的一個元件LadderCell(A)后,如果LadderBlock中只剩下一個LadderCell(B)時,LadderCell(B)取代LadderBlock的位置,插入到Ladde

6、rBlock的父LadderBlock中;如果LadderBlock中只剩下一個LadderBlock(B),則將LadderBlock(B)的所有LadderElement插入到LadderBlock的父LadderBlock中。圖5中的梯級刪除元件X004后梯形圖和其數據結構變?yōu)閳D6所示的情況。插入分支:通過光標在屏幕上兩次選擇分支的起始和結束位置,這兩個位置必須屬于同一個AndBlock(A)。起始和結束位置選擇后,將兩個位置間的LadderElement作為分支構成一個AndBlock(B)并計算出AndBlock(B)所占的列數n,然后新建一個表示插入分支的AndBlock(C),A

7、ndBlock(C)中插入n個空元件。建一個OrBlock并將AndBlock(B)和AndBlock(C)插入到OrBlock中。OrBlock即表示插入分支后的或邏輯塊。OrBlock取代兩次選中之間的元素在它們的父邏輯塊中的位置,然后根據修改后的數據結構畫圖得到插入分支后的梯形圖。圖7為在M001和X006插入分支前后梯形圖的變化。22指令表編譯器的設計與實現實現對PLC編程語言的高效、可靠的編譯,是研制開發(fā)嵌入式PLC系統的一項關鍵性任務。傳統的開發(fā)方法是用高級語言自行開發(fā)專用的PLC指令編譯器,需要對每個程序字和程序規(guī)則編寫識別和相應的處理程序,工作量大、開發(fā)周期長,容易產生疏漏,可

8、維護性很差。為了提高軟件的開發(fā)效率,保證軟件質量,增強軟件的可維護性,采用通用編譯工具Lex&Yacc:開發(fā)PLC指令編譯器。221Lex&Yacc簡介Lex&Yacc是美國貝爾實驗室用C語言研制的詞法分析程序和語法分析程序的自動生成工具,是目前使用最廣泛的編譯軟件之一。Lex是詞法分析程序生成器,Yacc是語法分析程序生成器。它們可以根據用戶提供的詞法、語法規(guī)范文件,自動轉化為多種高級語言源代碼,如C或C+等。2222編譯器總體結構所謂“遍”,是對源程序或其等價的中間語言程序從頭到尾掃描并完成規(guī)定任務的過程2。本系統的編譯過程包含三遍,分別進行詞法分析、語法分析和代碼

9、轉換。223詞法分析器設計指令表源程序可以簡單地被看成一個多行的字符串。詞法分析器從上到下、從左到右逐個字符地對源程序進行掃描,產生一個個單詞符號,把字符串的源程序改造成為單詞符號串的中間程序,用于隨后的語法分析。本系統的詞法分析器有兩種工作狀態(tài):一是從頭到尾對源程序進行掃描,檢查出所有的詞法錯誤;二是當沒有詞法錯誤時,從頭到尾對源程序進行掃描,將識別出的單詞符號輸入給語法器。224語法分析器設計(1) PLC指令表語言的語法描述分析PLC指令程序結構,提取隱藏在指令代碼中的結構信息,這種信息中往往會有操作指令被隱含地表達出來。例如:指令ORORB與梯形圖中的并聯結構對應,而ANDANB則與梯

10、形圖中的串聯結構對應。部分PLC指令語句的文法用巴科斯范式描述如下按照yacc的語法規(guī)則,對應于巴科斯范式描述寫出yacc源程序后,用“yacc-dv plcily”指令轉換成語法分析器的C語言源程序yyparse。(2) 將PLC指令表轉換為二進制代碼PLC指令表源程序的二進制文件格式為:每條指令的二進制編碼占32位,操作符的編碼與元件編碼相加作為目標代碼的高16位,低16位為元件的編號。例如,操作符LD的編碼為0xFF00,元件X的編碼為Ox01,指令LD X1的編碼為OxFF010001。指令表編譯器的代碼轉換功能由yacc源程序規(guī)則的動作部分來實現。當語法分析器識別出一條完整的指令時,

11、就將其對應的二進制代碼保存到文件中。(3) 將PLC指令表轉換為樹形結構Yacc語法分析程序通過尋找可以匹配目前為止所看到的標記的規(guī)則來工作。Yacc處理語法分析程序時創(chuàng)建了一組狀態(tài),每個狀態(tài)都反映一個或多個部分地被分析的規(guī)則中的一個可能的位置。當語法分析程序讀取標記時,每次它讀取一個沒完成規(guī)則的標記,就把它壓入內部堆棧中并切換到一種反映它剛剛讀取的標記的新狀態(tài)。這個動作稱為移進(shift)。當它發(fā)現組成某條規(guī)則右側的全部符號時,它就把右側符號彈出堆棧,而將左側符號壓入堆棧中,并且切換到反映堆棧上新符號的新狀態(tài)。這個動作成為規(guī)約(reduction)。當yacc規(guī)約規(guī)則時,它都執(zhí)行與這條規(guī)則

12、有關的用戶代碼。4利用堆棧的思想實現指令表語言向梯形圖樹形結構的轉換。自定義一個棧Stack,可以壓入和彈出指向LadderElement類型的對象的指針。在進行代碼轉換時,棧Stack動作與語法分析棧的動作不同。當yacc解析到如LDIDI、ANDANI等含有元件的指令語句時,將這些指令中的元件入棧(如上述代碼中的B、C行),邏輯塊的構造在其對應的語法規(guī)則的動作部分實現。23執(zhí)行模塊的設計與實現231邏輯運算算法推導下面列一段簡單的PIC程序來介紹邏輯運算算法的推導過程: LDX1 ORX6 ORIM1 OUT Y5 LDIY5 AND X7 ORM2(ANIX10 ORIM3 OUT M4 END定義OR、ORI、ORB的或操作為加法“+”,AND、ANI、ANB的與操作為乘法“*”,取反操作為“”。則上述程序清單中的輸出Y5和M103分別等于:Y5=X4+X6+M1M4=(Y5*x7+M2)*X10+M3上式的所有運算符只會連接兩個變量或者一個變量和一個表達式。由于掃描過程是順序執(zhí)行的,因此可以為上述計算過程建立計算堆棧。建立遞增的堆棧,則計算過程和堆棧中的數據變化如表1所列。232執(zhí)行模塊的實現本系統的執(zhí)行模塊是由RTLinux的實時線程模塊來實現的,它運行于內核態(tài)。系統開機立即加載執(zhí)行模塊,并將PLC的二進制代碼從文件中復制到共享內存中,執(zhí)行模塊解釋共享內存中的PLC指

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論