亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式軟PLC編程系統(tǒng)的設(shè)計(jì)

        2010-09-22 06:55:28安靜
        電氣傳動(dòng)自動(dòng)化 2010年6期
        關(guān)鍵詞:鏈表梯形圖嵌入式

        安靜

        (廣東松山職業(yè)技術(shù)學(xué)院電氣工程系,廣東韶關(guān)512126)

        1 引言

        隨著控制技術(shù)向網(wǎng)絡(luò)化、智能化和開放式發(fā)展,傳統(tǒng)PLC逐漸暴露出其許多不足。主要表現(xiàn)為技術(shù)封閉,造成了各生產(chǎn)廠商的PLC產(chǎn)品互不兼容,且編程開發(fā)方法差別很大,技術(shù)專門性很強(qiáng),用戶必須經(jīng)過長(zhǎng)期培訓(xùn)才能掌握其中一種產(chǎn)品的開發(fā)方法,這些問題制約了傳統(tǒng)PLC的快速發(fā)展[1]。隨著計(jì)算機(jī)科學(xué)的發(fā)展和工業(yè)控制的IEC61131國(guó)際標(biāo)準(zhǔn)的制定,出現(xiàn)了用軟件方式實(shí)現(xiàn)傳統(tǒng)PLC控制功能的軟PLC技術(shù)。

        軟PLC具有符合現(xiàn)代工業(yè)控制技術(shù)的優(yōu)點(diǎn),體系結(jié)構(gòu)開放,支持多種硬件環(huán)境,解決了傳統(tǒng)硬PLC互不兼容的問題。軟PLC把控制運(yùn)算的功能封裝在軟件中,具有傳統(tǒng)PLC的功能,可在計(jì)算機(jī)操作系統(tǒng)中實(shí)現(xiàn)程序的編輯、運(yùn)算、編譯、存儲(chǔ)等功能,具有編程語言標(biāo)準(zhǔn)化、控制功能模塊化、硬件配置靈活等特點(diǎn)[2]。

        本文介紹的嵌入式軟PLC編程系統(tǒng)軟件在Windows環(huán)境下引入VC++開發(fā)工具,利用VC++強(qiáng)大的軟件功能,使人機(jī)交互界面更友好,由于VC++固有的面向?qū)ο髾C(jī)制,可方便地設(shè)計(jì)梯形圖數(shù)據(jù)結(jié)構(gòu),并結(jié)合相應(yīng)的算法,完成軟PLC編程系統(tǒng)設(shè)計(jì)。本文主要給出編輯、編譯和仿真模塊。

        2 嵌入式軟PLC系統(tǒng)的總體框架

        圖1 嵌入式軟PLC系統(tǒng)總體框圖

        嵌入式軟PLC主要由編程系統(tǒng)和運(yùn)行系統(tǒng)組成。編程系統(tǒng)進(jìn)行梯形圖的編輯、指令的解析以及生產(chǎn)目標(biāo)代碼;運(yùn)行系統(tǒng)執(zhí)行目標(biāo)代碼,實(shí)現(xiàn)控制目的[3]。其總體架構(gòu)如圖1所示。

        軟PLC編程系統(tǒng)的編程語言基于國(guó)際電工委員會(huì)發(fā)布的IEC61131-3國(guó)際標(biāo)準(zhǔn),是一個(gè)通用的開發(fā)環(huán)境,主要是由編輯、編譯、仿真和通信四大模塊組成[4]。其中編輯模塊提供用戶程序開發(fā)環(huán)境;編譯模塊實(shí)現(xiàn)對(duì)用戶程序的掃描和編譯;仿真模塊用以離線模擬、調(diào)試用戶程序;通信模塊負(fù)責(zé)把編譯后的用戶程序目標(biāo)代碼下載到運(yùn)行系統(tǒng)。

        3 軟PLC編程系統(tǒng)的界面設(shè)計(jì)

        IEC61131-3國(guó)際標(biāo)準(zhǔn)(International Electro technical Commission)定義了5種PLC編程語言的規(guī)范:梯形圖(LD)、順序功能圖(SFC)、功能模塊(FBD)、結(jié)構(gòu)化文本(ST)和指令表(IL)[3]。由于梯形圖簡(jiǎn)單、直觀,所以本編程系統(tǒng)主要采用梯形圖作為用戶程序的開發(fā)語言。

        本軟件采用VC++開發(fā)工具,并基于多文檔的Document/View結(jié)構(gòu)設(shè)計(jì),以支持梯形圖和指令表對(duì)應(yīng)的格式—*.lad和*.txt。其界面由梯形圖編輯區(qū)、指令表區(qū)和信息輸出區(qū)三部分組成,如圖2所示。

        圖2 軟PLC編程系統(tǒng)主界面

        1)梯形圖編輯區(qū)用于梯形圖駐留和相關(guān)參數(shù)的設(shè)置;

        2)指令表區(qū)用于顯示梯形圖對(duì)應(yīng)的邏輯指令;

        3)信息輸出區(qū)顯示梯形圖可能的語法錯(cuò)誤信息以及正確執(zhí)行后的輸出信息。

        4 梯形圖數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

        4.1 梯形圖元件類的繼承關(guān)系設(shè)計(jì)

        梯形圖元件包括常開觸點(diǎn)、常閉觸點(diǎn)和輸出線圈等簡(jiǎn)單元件和定時(shí)器、計(jì)數(shù)器、數(shù)據(jù)運(yùn)算(包括加減運(yùn)算、比較運(yùn)算等)等復(fù)雜元件。由面向?qū)ο蟮睦^承特性,可以抽象出一個(gè)類作為梯形圖元件的總體接口,再以這個(gè)類為基礎(chǔ),派生出具體的元件子類。梯形圖元件的抽象類定義如下:

        由此抽象類派生出簡(jiǎn)單元件類和復(fù)雜元件類,并擴(kuò)充相應(yīng)的屬性和方法操作;再由這兩類派生出具體元件類,如常開觸點(diǎn)或定時(shí)器等。如圖3所示為各元件類型的繼承樹示意圖。

        圖3 梯形圖元件類型的繼承關(guān)系

        4.2 梯形圖容器的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)

        整個(gè)存儲(chǔ)梯形圖的容器選擇用雙向鏈表結(jié)構(gòu)表示。其原因基于以下兩點(diǎn):①對(duì)梯形圖的添加、修改、刪除等操作,能夠方便地運(yùn)用鏈表的存儲(chǔ)結(jié)構(gòu)完成;②梯形圖的編輯過程是動(dòng)態(tài)的,梯形圖的行數(shù)、列數(shù)和元件類型都是未知的,這種動(dòng)態(tài)存儲(chǔ)過程,用鏈表結(jié)構(gòu)比其它的數(shù)據(jù)結(jié)構(gòu)表達(dá)得更為清楚、有效。

        存儲(chǔ)梯形圖的雙向鏈表在文檔類中定義為:CObList m_LADList,存儲(chǔ)梯形圖的容器。由此,添加梯形圖元件,實(shí)質(zhì)就是在內(nèi)存中建立相應(yīng)的對(duì)象,并調(diào)用鏈表的AddHead或AddTail函數(shù)加入該對(duì)象的指針;而刪除梯形圖元件,實(shí)質(zhì)就是調(diào)用鏈表的RemoteHead或RemoveTail函數(shù)移除鏈表中對(duì)應(yīng)對(duì)象的指針。下列代碼表示生成一個(gè)常開元件對(duì)象,并把該對(duì)象的指針加入到鏈表中:

        //通過簡(jiǎn)單工廠生成常開元件對(duì)象

        pLADEle=CPLCFactory::GetInstance(TYPE_POSITIVE);

        pLADEle->SetIsSelected(FALSE);

        //將常開元件對(duì)象的指針加到鏈表中

        //這里,plcList是指向 m_LADList的指針plcList->AddHead(pLADEle);

        4.3 用戶對(duì)梯形圖元件的控制

        用戶通過與編程界面的交互,達(dá)到對(duì)梯形圖元件的控制。為了縮小顯示、控制和梯形圖元件三者間的耦合性,可引入MVC(Model-View-Control)模式解決。其中,由VC++中的CView類充當(dāng)顯示部分,并設(shè)計(jì)CPLCEleController類用以控制梯形圖元件。CPLCEleController類依賴于工廠類CPLCEleFactory類,通過簡(jiǎn)單工廠模擬以創(chuàng)建梯形圖元件實(shí)體,并且針對(duì)編輯、編譯和仿真的操作封裝了相應(yīng)方法。其定義如下:

        5 梯形圖的編輯

        梯形圖的編輯部分封裝于視圖類,能實(shí)現(xiàn)存儲(chǔ)與顯示分離,以有效降低代碼的耦合性。

        梯形圖的編輯大體可分為以下步驟:①選擇所要加載的梯形圖元件類型;②用戶在編輯區(qū)單擊鼠標(biāo),掃描程序獲取單擊對(duì)應(yīng)位置的笛卡兒坐標(biāo)值;③添加該梯形圖元件到存儲(chǔ)鏈表中;④在窗口中顯示該梯形圖;⑤設(shè)置梯形圖元件的其它參數(shù)。

        5.1 梯形圖的繪制

        矢量圖是計(jì)算機(jī)通過數(shù)學(xué)表達(dá)式解析的圖形,具有內(nèi)存消耗小,操作靈活的特點(diǎn)。因此,本軟件按矢量繪制梯形圖。

        在VC++中,MFC類庫中的CDC類封裝了矢量圖的相關(guān)操作,由此,對(duì)梯形圖的繪制可以通過遍歷鏈表,并調(diào)用CDC類對(duì)象指針的函數(shù)來完成。并基于面向?qū)ο蟮亩鄳B(tài)性調(diào)用各元件實(shí)際的繪制操作:

        梯形圖被繪制后,其類型、行號(hào)、列號(hào)信息均被確定。而其它的參數(shù),如元件編號(hào)、定時(shí)器的時(shí)基,由用戶輸入確定,具體可以通過添加消息映射函數(shù),掃描鼠標(biāo)操作實(shí)現(xiàn)。當(dāng)用戶雙擊某梯形圖元件時(shí),彈出參數(shù)設(shè)置對(duì)話框,輸入數(shù)據(jù)后,相關(guān)的參數(shù)就被綁定在該元件對(duì)象中。下面的代碼片段表示對(duì)定時(shí)器設(shè)置參數(shù)。

        5.2 梯形圖的序列化

        要實(shí)現(xiàn)梯形圖的多次編輯,就要對(duì)梯形圖實(shí)現(xiàn)序列化,將其保存為文件;而當(dāng)再次調(diào)用時(shí),需要把程序加載到內(nèi)存。

        對(duì)于Document/View結(jié)構(gòu),數(shù)據(jù)都存放于CDocument類里,將其中的變量寫入文件,即實(shí)現(xiàn)了梯形圖的序列化;打開文件時(shí),通過動(dòng)態(tài)創(chuàng)建機(jī)制,把其中變量導(dǎo)入內(nèi)存,即實(shí)現(xiàn)了梯形圖的反序列化。

        由于梯形圖元件類繼承了CObject類,因此,運(yùn)行時(shí)其自身具有類型識(shí)別和動(dòng)態(tài)創(chuàng)建的功能,在CArchive類中調(diào)用重載的讀寫運(yùn)算符">>"和"<<",就能執(zhí)行相應(yīng)文件緩沖區(qū)建立和數(shù)據(jù)讀寫。

        6 梯形圖的編譯

        梯形圖的編譯是編程系統(tǒng)的關(guān)鍵部分,因?yàn)榫幾g的實(shí)質(zhì)是把用戶編輯的梯形圖程序,經(jīng)過語法分析和邏輯分析,循環(huán)掃描,最終生成運(yùn)行系統(tǒng)可識(shí)別的目標(biāo)程序。

        按照梯形圖編程語言規(guī)范,編譯程序掃描梯形圖,經(jīng)過語法分析和邏輯分析后,若發(fā)現(xiàn)梯形圖有錯(cuò)誤,便生產(chǎn)相應(yīng)的錯(cuò)誤提示信息,并復(fù)制到用戶界面。

        6.1 梯形圖的掃描

        梯形圖掃描和編譯以梯級(jí)為單位,且梯級(jí)是由相互影響的行組成的最小單元,圖4所示為一個(gè)梯級(jí)。對(duì)梯形圖的掃描采用深度掃描算法,即以豎線元素作為邏輯區(qū)分,對(duì)梯形圖網(wǎng)絡(luò)自左向右,從上到下,逐個(gè)元素進(jìn)行。

        圖4 梯形圖掃描過程圖

        以圖4為例,一個(gè)梯形圖梯級(jí)的深度掃描過程為:①首先讀取串聯(lián)關(guān)系的元件X1和X2;②遇到并聯(lián)接點(diǎn)A,從而轉(zhuǎn)至下一行掃描,讀取元件X4;③遇到并聯(lián)接點(diǎn)B,轉(zhuǎn)至下一行,讀取元件X6;④回到并聯(lián)接點(diǎn)B,讀取元件X5;⑤回到并聯(lián)接點(diǎn)A,讀取元件X3;⑥讀取輸出元件Y1,則完成該梯級(jí)的掃描和編譯。

        實(shí)踐證明,該掃描算法容易實(shí)現(xiàn),能深入解析梯形圖邏輯關(guān)系,占用存儲(chǔ)空間較少,掃描效率較高。

        6.2 梯形圖數(shù)據(jù)信息的記錄

        為了提高移植性,降低運(yùn)行系統(tǒng)程序與VC++程序的耦合度,本軟件引入了生成相應(yīng)配置文件技術(shù),以記錄梯形圖的數(shù)據(jù)信息,供仿真模塊或運(yùn)行系統(tǒng)讀取。

        梯形圖被掃描過程,程序自動(dòng)生成梯形圖相關(guān)的邏輯關(guān)系數(shù)據(jù)對(duì)應(yīng)的配置文件,用四組數(shù)字分別代表梯形圖的類型、連接關(guān)系,包括復(fù)雜元件中定時(shí)器的時(shí)基等數(shù)據(jù)信息,以備在運(yùn)行系統(tǒng)加載。其梯形圖數(shù)據(jù)信息存儲(chǔ)結(jié)構(gòu)示例如表1所示。

        表1存儲(chǔ)了一個(gè)梯形圖的梯級(jí)信息,一個(gè)梯形圖元件對(duì)應(yīng)表中的一格,表中"X-X-X-X"的格式為簡(jiǎn)單的元件信息,分別表示“元件類型-連接關(guān)系-存儲(chǔ)類型-對(duì)應(yīng)存儲(chǔ)類型數(shù)組的偏移量”。如表中第1行第1列的"1-0-0-25"數(shù)據(jù),代表梯級(jí)中位于第1行第1列,無并聯(lián)關(guān)系的常開觸點(diǎn),它在簡(jiǎn)單元件類型輸入數(shù)組中的存儲(chǔ)偏移量為25。

        表1 梯形圖數(shù)據(jù)信息存儲(chǔ)結(jié)構(gòu)示例

        7 梯形圖的仿真

        為了判定被編譯程序執(zhí)行的正確性,本編程系統(tǒng)設(shè)計(jì)了仿真模塊,以模擬現(xiàn)場(chǎng)梯圖程序運(yùn)行。仿真需要將梯形圖程序轉(zhuǎn)化為C程序,以實(shí)現(xiàn)邏輯控制。

        仿真模塊主要分為邏輯運(yùn)算模塊、算術(shù)運(yùn)算模塊和梯形圖更新顯示模塊。其中,邏輯運(yùn)算模塊是仿真模塊的核心,負(fù)責(zé)對(duì)梯形圖數(shù)據(jù)信息的識(shí)別,以及邏輯狀態(tài)的轉(zhuǎn)移。

        仿真程序通過讀取存儲(chǔ)梯形圖邏輯信息的配置文件,并還原對(duì)應(yīng)每個(gè)梯形圖元件及相應(yīng)的邏輯關(guān)系。以下的代碼片段通過運(yùn)行是類型識(shí)別,反映了當(dāng)前讀取的元件是常開/常閉觸點(diǎn)或輸出線圈時(shí)的邏輯運(yùn)算:

        //常閉觸點(diǎn),右連接:=左連接取反

        //常開觸點(diǎn),右連接:=左連接,不需改動(dòng)

        //輸出能流為左連接狀態(tài)和本元件狀態(tài)相與

        動(dòng)態(tài)仿真過程在梯形圖編輯區(qū)實(shí)時(shí)顯示方便用戶進(jìn)行錯(cuò)誤定位、追蹤。具體表現(xiàn)為梯形圖元件能流導(dǎo)通時(shí)的變色反顯,可通過重繪觸發(fā)的方式實(shí)現(xiàn)。

        8 結(jié)束語

        本嵌入式軟PLC編程系統(tǒng)實(shí)現(xiàn)了梯形圖的編輯、編譯和仿真功能。并基于VC++開發(fā)平臺(tái)面向?qū)ο蟮姆庋b、繼承和多態(tài)性,通過編輯過程引入存儲(chǔ)梯形圖信息的配置文件,實(shí)現(xiàn)了編譯與仿真的橋接,有效地降低了與VC++開發(fā)環(huán)境的耦合度,移植性強(qiáng)。

        [1] 高金剛,陳建春,劉雄偉.數(shù)控系統(tǒng)的軟PLC系統(tǒng)開發(fā)[J] .計(jì)算機(jī)測(cè)量與控制,2004,12(3):254-256.

        [2] 肖世廣,李 彥,吉 華.Linux環(huán)境下基于Qt庫的軟件PLC 編程系統(tǒng)[J] .計(jì)算機(jī)工程與設(shè)計(jì),2007(4):1663-1666.

        [3] 黃延延,林 躍,于海彬.軟PLC技術(shù)研究及實(shí)現(xiàn)[J] .計(jì)算機(jī)工程,2004,30(1):165-167.

        [4] 江連海.嵌入式控制系統(tǒng)開發(fā)平臺(tái)上軟PLC的實(shí)現(xiàn)[D] .華中科技學(xué),2005:14-17.

        猜你喜歡
        鏈表梯形圖嵌入式
        基于二進(jìn)制鏈表的粗糙集屬性約簡(jiǎn)
        跟麥咭學(xué)編程
        基于鏈表多分支路徑樹的云存儲(chǔ)數(shù)據(jù)完整性驗(yàn)證機(jī)制
        搭建基于Qt的嵌入式開發(fā)平臺(tái)
        基于VC的梯形圖編程軟件開發(fā)技術(shù)
        嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
        繼電器電路轉(zhuǎn)為梯形圖教學(xué)經(jīng)驗(yàn)淺談
        電子制作(2016年15期)2017-01-15 13:39:28
        一種可編程邏輯控制程序的競(jìng)態(tài)檢測(cè)方法
        PLC梯形圖程序設(shè)計(jì)技巧及應(yīng)用
        鏈表方式集中器抄表的設(shè)計(jì)
        久久九九有精品国产尤物 | 99无码精品二区在线视频 | 人妻少妇偷人精品免费看| 亚洲成av人片天堂网| 91免费永久国产在线观看| 亚洲青青草视频在线播放| 激情五月天在线观看视频| 人妻少妇乱子伦无码视频专区| 国产福利姬喷水福利在线观看| 亚洲无线码一区在线观看| av在线播放免费观看| 国产成人精品亚洲日本在线观看| 天堂一区人妻无码| 亚洲中文字幕巨乳人妻| av天堂中文亚洲官网| 国产a∨天天免费观看美女| 人人添人人澡人人澡人人人人| 91精品国产91热久久p| 日本二区三区在线免费| 国产又色又爽无遮挡免费软件| 精品欧美乱码久久久久久1区2区| 欧美h久免费女| 91精品国自产拍老熟女露脸| 北条麻妃国产九九九精品视频| 久久精品亚洲牛牛影视 | 亚洲国产精品无码久久98| 亚洲熟妇少妇任你躁在线观看| av网页在线免费观看| 青青草狠吊色在线视频| 午夜精品久久久久久| 国产精品视频免费的| 亚洲一区二区蜜桃视频| 丰满少妇人妻无码专区| 99爱这里只有精品| 蜜桃色av一区二区三区麻豆 | 亚洲春色在线视频| 国产无套视频在线观看香蕉| 香蕉蜜桃av一区二区三区| 久久99国产精品久久99| 亚洲av乱码中文一区二区三区| 午夜香蕉av一区二区三区|