国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于嵌入式硬件平臺的軟PLC設(shè)計與研究

2012-10-16 10:36:54鄒莉
關(guān)鍵詞:詞法梯形圖代碼

鄒莉

(安徽國防科技職業(yè)學(xué)院,安徽六安237011)

隨著計算機技術(shù)、微處理器技術(shù)、控制技術(shù)、通信技術(shù)的飛速發(fā)展,傳統(tǒng)PLC的弊端日益凸顯出來,由于各PLC生產(chǎn)廠家所采用的軟硬件各不相同,組態(tài)、編程開發(fā)方法、尋址方式等都千差萬別,導(dǎo)致其技術(shù)專有性很強,使用者要經(jīng)過很長的時間才能熟練掌握一種PLC的開發(fā)方法,這給使用PLC的人帶來了困難[1].

隨著國際標準IEC61131的制定,出現(xiàn)了軟PLC,解決了傳統(tǒng)PLC兼容性差的問題.所謂軟PLC,就是在PC機上用軟件來實現(xiàn)傳統(tǒng)硬件PLC的控制、存儲、計算等功能,即將PLC的功能封裝在軟件內(nèi)運行于硬件平臺上.它具有良好的人機界面,能高速處理數(shù)據(jù),具有強大的網(wǎng)絡(luò)通信能力,有效利用了PC的各種技術(shù),硬件配置靈活.如果將軟PLC運行于嵌入式硬件平臺就形成了嵌入式軟PLC.

本文所設(shè)計的嵌入式軟PLC采用ARM嵌入式處理器,具體選用Samsung公司ARM7TDMI內(nèi)核的S3C4510芯片,采用16 MB的SDRAM,2 MB的Flash存儲器,配有通信串口和以太網(wǎng)接口;選用UCLinux作為操作系統(tǒng),為了增強其實時性,增加一個實時內(nèi)核模塊RTAI,在需要處理實時任務(wù)時,將其加載進來,形成RTAI和UCLinux雙內(nèi)核方案;采用基于ModBus/TCP協(xié)議的工業(yè)以太網(wǎng)通信.該軟硬件平臺能很好地滿足嵌入式軟PLC設(shè)計的需要.

1 嵌入式軟PLC體系結(jié)構(gòu)設(shè)計

基于嵌入式硬件平臺的軟PLC系統(tǒng)一般包括開發(fā)系統(tǒng)和運行系統(tǒng)兩部分[2].IEC61131標準規(guī)定的5種編程語言首先在開發(fā)系統(tǒng)的編輯平臺上完成程序編輯,然后在編譯器中經(jīng)過詞法分析、語法分析、語義分析,生成目標代碼,同時仿真模塊為檢查程序的運行結(jié)果正確與否提供調(diào)試環(huán)境,接著通過開發(fā)系統(tǒng)和運行系統(tǒng)的通信接口,目標代碼被下載到運行系統(tǒng).運行系統(tǒng)是整個設(shè)計的核心部分,它執(zhí)行目標代碼,進行輸入信號的處理,然后其I/O接口與外圍設(shè)備層的I/O子系統(tǒng)進行通信,將控制信號輸出,實現(xiàn)控制目的.系統(tǒng)的體系結(jié)構(gòu)框圖如圖1所示.

圖1 系統(tǒng)體系結(jié)構(gòu)Fig.1 System structure diagram

2 嵌入式軟PLC開發(fā)系統(tǒng)設(shè)計

2.1 編輯模塊設(shè)計

2.1.1 編輯界面 IEC61131國際標準規(guī)范了5種編程語言:梯形圖(LD)、順序功能圖(SFC)、功能塊圖(FBD)、指令表(IL)、結(jié)構(gòu)文本(ST)[3].其中梯形圖語言接近于電氣控制電路圖,直觀、簡單、易懂,所以,本文采用梯形圖作為用戶開發(fā)語言.

Qt/Embedded是圖形化界面開發(fā)工具Qt的嵌入式版本,其運行效率較高,采用面向?qū)ο缶幊?具有良好的體系結(jié)構(gòu)和編程模式.本文采用Qt編寫界面,圖2為梯形圖編輯器界面.

圖2 梯形圖編輯器Fig.2 Ladder diagram editor

2.1.2 類及繼承關(guān)系設(shè)計 采用面向?qū)ο蟮脑O(shè)計思想,將梯形圖中的對象安裝其性質(zhì)和功能分為梯形圖類(LadLadder)、程序段類(LadProgram)、梯級類(LadRung)和基類(LadElement)[4].基類是一個抽象類,為梯形圖語言各種元素的總體接口,其元素包含單個圖元和邏輯塊,通過對梯形圖圖元和邏輯塊的分析,發(fā)現(xiàn)它們各自有一些共同屬性,將其歸為圖元類的基類(LadderCell)、邏輯塊的基類(LadderBlock),再以圖元類的基類為基礎(chǔ),派生出簡單圖元類(如常開觸點、常閉觸點、輸出線圈)和復(fù)雜圖元類(如定時器、計數(shù)器),具體的圖元對象作為它們的繼承子類.類結(jié)構(gòu)如圖3所示.

圖3 類結(jié)構(gòu)Fig.3 Class diagram

2.1.3 數(shù)據(jù)結(jié)構(gòu)設(shè)計 梯形圖的整個編輯過程是一個動態(tài)的過程,行數(shù)、列數(shù)、每行的圖元數(shù)、圖元類型都是未知的,而雙向鏈表是一種動態(tài)的數(shù)據(jù)結(jié)構(gòu),所以,用雙向鏈表形式的數(shù)據(jù)結(jié)構(gòu)最適合存儲梯形圖.

對梯形圖的編輯、數(shù)據(jù)加載、數(shù)據(jù)處理等都是通過遍歷或改變數(shù)據(jù)結(jié)構(gòu)等操作來實現(xiàn)的.比如,添加一個梯形圖圖元時,只需要在內(nèi)存中建立相應(yīng)的對象,并調(diào)用鏈表的AddHead或AddTail函數(shù)加入該對象的指針;刪除一個梯形圖圖元時,就調(diào)用RemoveHead或RemoveTail函數(shù)移除該對象的指針[5].

2.2 編譯模塊設(shè)計

2.2.1 LD向IL的轉(zhuǎn)換 梯形圖編輯起來非常直觀,但編譯起來難度較大,而指令表語言近似于匯編語言,容易實現(xiàn)編譯,所以,一般先將梯形圖轉(zhuǎn)換成指令表.將LD的元件映射成AOV有向圖的頂點,元件間的前驅(qū)后繼關(guān)系即連線,映射成AOV有向圖的弧.

首先,將母線映射成頂點x0,然后對除母線以外的部分從左至右、從上至下進行掃描,映射出相應(yīng)的頂點和弧,其映射的關(guān)鍵是找到每個節(jié)點的后繼節(jié)點并生成弧.如圖4的梯形圖可映射成圖5所示的AOV有向圖.

圖4 梯形圖Fig.4 Ladder diagram

圖5 AOV有向圖Fig.5 AOV diagram

AOV有向圖只能反映各元件的前驅(qū)后繼關(guān)系,而不能反映出串并聯(lián)關(guān)系,因此需要對AOV圖再次進行掃描.每次掃描可以確定一個元件的串并聯(lián)關(guān)系,并更新AOV圖,下次掃描又在新AOV圖的基礎(chǔ)上進行,周而復(fù)始,直至所有元件的串并聯(lián)關(guān)系確定完成,掃描結(jié)束,自底向上建立起一棵邏輯樹,該邏輯樹可以清晰反映各元件的邏輯關(guān)系[6].由于篇幅有限,就不作詳細分析.

圖6為圖5對應(yīng)的邏輯樹,該圖還可進行化簡.

圖6 邏輯樹Fig.6 Logic tree

對化簡后的邏輯樹進行遍歷就能快速生成指令表了.

2.2.2 分析過程 編譯器的分析部分包括詞法分析、語法分析和語義分析.本文采用Windows操作系統(tǒng)下的自動生成軟件Flex和Bison相結(jié)合的方法,來實現(xiàn)詞法分析和語法分析.

Flex生成詞法分析程序,它的文件中包含正則表達式和每個表達式被匹配時所表現(xiàn)出的動作.它接受指令表源程序,根據(jù)詞法規(guī)則逐一對各個字符進行掃描,生成單詞存放在yytext[]字符數(shù)組中,隨后將其傳遞給語法分析程序.

Bison生成語法分析程序,根據(jù)指令表語法規(guī)則識別出語法單位,并判斷輸入的單詞序列是否構(gòu)成語法上的錯誤程序.

接下來是語義分析,檢查源程序是否有語義等錯誤,將其保存在字符串數(shù)組err[]中,并收集類型信息供后面生成代碼使用.

2.2.3 生成中間代碼策略 經(jīng)編譯后產(chǎn)生的目標代碼一般有兩種存在形式,機器碼形式和內(nèi)存形式的數(shù)據(jù)碼形式.機器碼的硬件相關(guān)性太強,而內(nèi)存形式的數(shù)據(jù)碼不能復(fù)用,各有缺點,因此,設(shè)計出一種中間碼方案.該中間碼具有指定的格式,并以文件的形式存在,可以復(fù)用,要想使中間碼能在多種機型的下位設(shè)備中使用,就必須在下位設(shè)備中嵌入中間碼解釋器.這種解釋器是根據(jù)下位設(shè)備的硬件環(huán)境,使用相關(guān)的高級語言設(shè)計開發(fā)出來的,它的機器碼是硬件相關(guān)的,而中間碼與CPU的類型無關(guān).這樣,源碼無需任何改動,只需編譯成中間代碼,下載到各種類型的下位設(shè)備中,經(jīng)該機型的中間碼解釋器解釋,即可生成所需的C/C++目標代碼.如圖7所示.

圖7 生成目標代碼順序圖Fig.7 Generating object code sequence diagram

3 嵌入式軟PLC運行系統(tǒng)設(shè)計

運行系統(tǒng)是嵌入式軟PLC的核心部分,它完成輸入讀取、程序執(zhí)行、輸出處理等工作.首先通過I/O口和現(xiàn)場總線讀取現(xiàn)場采集信號,將其寫入輸入映像區(qū),再根據(jù)輸入映像區(qū)信號,執(zhí)行目標代碼,并將結(jié)果寫入到輸出映像區(qū),最后將輸出映像區(qū)的數(shù)據(jù)通過I/O口和現(xiàn)場總線輸出,完成控制功能[7].

3.1 運行系統(tǒng)的結(jié)構(gòu)

嵌入式軟PLC的運行系統(tǒng)采用模塊化的設(shè)計結(jié)構(gòu),主要包含通信模塊、虛擬機模塊和I/O驅(qū)動模塊三部分[8].所謂虛擬機就是一整套規(guī)則定義的軟件程序,能模擬實際計算機進行工作,取出并執(zhí)行指令,完成計算、數(shù)據(jù)處理等任務(wù).虛擬機的使用可提高操作系統(tǒng)的安全性,也可增強基于虛擬機之上的應(yīng)用程序的安全性,同時,實現(xiàn)了計算機程序的跨平臺使用.通信模塊完成運行系統(tǒng)與開發(fā)系統(tǒng)的數(shù)據(jù)交換.

3.2 虛擬機的實現(xiàn)

虛擬機的實現(xiàn)主要有以下幾個步驟:

(1)開發(fā)系統(tǒng)將運行系統(tǒng)激活;

(2)在開發(fā)系統(tǒng)中編輯梯形圖程序,經(jīng)過詞法分析、語法分析、語義分析編譯產(chǎn)生中間代碼形式的PLM文件;

(3)翻譯梯形圖指令,建立宏匯編庫;

(4)利用匿名管道機制,運行系統(tǒng)接收并打開PLM文件;

(5)調(diào)用宏匯編庫,運行內(nèi)核解釋執(zhí)行PLM文件,經(jīng)過一系列轉(zhuǎn)換生成機器碼,從而產(chǎn)生可執(zhí)行的C文件;

(6)創(chuàng)建機器碼運行環(huán)境,將C文件放入嵌入式操作系統(tǒng)中執(zhí)行.

4 運行實例

現(xiàn)要在一臺數(shù)控車床上手動和自動實現(xiàn)三坐標軸的正反向運動和停止,能自行設(shè)定運動速度,多三軸進行限位控制,產(chǎn)生越位報警等控制功能.

采用模塊化的程序設(shè)計方法,由主程序調(diào)用各個程序模塊,由于篇幅的限制,以下只給出了控制機床和主軸運動的目標代碼.

//==net 1

strcpy(m_statement.m_basicorder.address[0],"LI0.7");

m_statement.m_basicorder.funcname=INSTRUCTION_InBit;

p_execute->pstru_funclist->insertAtBack(m_statement);

strcpy(m_statement.m_basicorder.address[0],"PI2.7");

m_statement.m_basicorder.funcname=INSTRUCTION_AndInNOBit;

p_execute->pstru_funclist->insertAtBack(m_statement);

……

//==net 40

m_statement.m_basicorder.funcname=INSTRUCTION_MainProEnd;

p_execute->pstru_funclist->insertAtBack(m_statement);

將整個目標代碼傳給運行系統(tǒng),數(shù)控車床能按要求正常工作.圖8為數(shù)控車床的電機在運行中的波形圖.

圖8 電機參數(shù)波形Fig.8 Motor parameters of waveform graph

可以看出,啟動時的最大電流為55 A,調(diào)整時間為54 ms,穩(wěn)定值為8 A,測試數(shù)值與要求的數(shù)值接近,證明生成的目標代碼是正確的,驗證了該嵌入式軟PLC系統(tǒng)的可用性.

5 結(jié)語

該嵌入式軟PLC具有友好的人機界面,采用梯形圖語言作為開發(fā)語言,實現(xiàn)了傳統(tǒng)PLC的功能,開發(fā)周期短,成本低,具有很好的網(wǎng)絡(luò)通信能力和數(shù)據(jù)處理能力.

本文將梯形圖轉(zhuǎn)換成指令表,對其進行各種分析后,采用中間代碼策略,在下位設(shè)備中用高級語言開發(fā)出中間碼解釋器,生成目標代碼,實現(xiàn)了軟件的硬件設(shè)備無關(guān)性,提高了程序的可移植性,適用于各種機型的下位設(shè)備.實驗證明,目標代碼經(jīng)運行系統(tǒng)調(diào)用,能滿足控制要求.

[1]張濤,李迅波.軟PLC的轉(zhuǎn)換中間語言模型的建立于研究[J].微計算機信息,2007,23(12):4-6.

[2]姜娟,馮萍,康繼昌.嵌入式軟PLC開發(fā)系統(tǒng)研究[J].科學(xué)技術(shù)與工程,2011,11(3):494-498.

[3]畢輝,程良鴻.關(guān)于軟PLC梯形圖向語句表轉(zhuǎn)換方法的研究[J].微計算機信息,2007,23(9):63-65.

[4]陳雪,劉蔭忠,楊東升.Linux環(huán)境下軟PLC開發(fā)系統(tǒng)的設(shè)計與實現(xiàn)[J].組合機床與自動化加工技術(shù),2010(11):40-43.

[5]安靜.嵌入式軟PLC編程系統(tǒng)的設(shè)計[J].電氣傳動自動化,2010,36(6):33-37.

[6]石銳,周雷,楊正益.軟PLC梯形圖到語句表轉(zhuǎn)換新策略的研究[J].計算機工程與應(yīng)用,2010,46(18):244-248.

[7]趙瑞霞,周世鵬.基于ARM的軟PLC實現(xiàn)方案[J].可編程控制器與工廠自動化,2010(4):34-38.

[8]陳佳,劉林林,熊偉,等.基于工業(yè)PC的軟PLC的設(shè)計與實現(xiàn)[J].工業(yè)控制計算機,2009,22(1):5-6.

猜你喜歡
詞法梯形圖代碼
創(chuàng)世代碼
動漫星空(2018年11期)2018-10-26 02:24:02
創(chuàng)世代碼
動漫星空(2018年2期)2018-10-26 02:11:00
創(chuàng)世代碼
動漫星空(2018年9期)2018-10-26 01:16:48
創(chuàng)世代碼
動漫星空(2018年5期)2018-10-26 01:15:02
應(yīng)用于詞法分析器的算法分析優(yōu)化
基于VC的梯形圖編程軟件開發(fā)技術(shù)
談對外漢語“詞法詞”教學(xué)
繼電器電路轉(zhuǎn)為梯形圖教學(xué)經(jīng)驗淺談
電子制作(2016年15期)2017-01-15 13:39:28
PLC梯形圖程序設(shè)計技巧及應(yīng)用
2010年高考英語“相似”考題例析
闵行区| 梁山县| 揭西县| 平邑县| 阿克陶县| 华宁县| 进贤县| 旺苍县| 永宁县| 乌鲁木齐市| 万年县| 九龙县| 祁连县| 安国市| 浙江省| 尤溪县| 郎溪县| 平山县| 镇沅| 阜城县| 沧州市| 韶关市| 上高县| 凌源市| 雷波县| 固安县| 鹿邑县| 洛浦县| 临海市| 德江县| 逊克县| 荆门市| 香格里拉县| 涿州市| 蓝山县| 六枝特区| 沅江市| 枝江市| 安阳县| 铁力市| 青浦区|