電氣測控系統(tǒng)的改進(jìn)——軟PLC
圖2 運(yùn)行系統(tǒng)的結(jié)構(gòu)組成
運(yùn)行系統(tǒng)可在多種支持平臺上運(yùn)行,它通過將數(shù)據(jù)區(qū)和代碼區(qū)分離,實(shí)現(xiàn)程序的動態(tài)更新和代碼的高效率動態(tài)下載。
(1)在μClinux平臺上實(shí)現(xiàn)軟PLC虛擬機(jī)實(shí)現(xiàn)步驟
將梯形圖的指令翻譯成宏匯編并建立一個(gè)宏庫;
把用戶編寫的梯形圖程序編譯成中間代碼形式的PLM文件;
將PLM文件轉(zhuǎn)變?yōu)閰R編程序;
用匯編器匯編變成功的匯編程序,將解釋執(zhí)行內(nèi)部指令(PLM文件)轉(zhuǎn)換為程序,匯編成機(jī)器碼執(zhí)行,實(shí)現(xiàn)PLC指令機(jī)器碼執(zhí)行方案,大大地提高了執(zhí)行速度控制工程網(wǎng)版權(quán)所有,同時(shí)大大節(jié)約了內(nèi)存空間;
將PLC指令對應(yīng)的機(jī)器碼移植到嵌入式操作系統(tǒng)中執(zhí)行。
(2)運(yùn)行系統(tǒng)的兩大模塊
運(yùn)行系統(tǒng)主要由兩大模塊組成:1)梯形圖到機(jī)器碼程序的轉(zhuǎn)換;2)執(zhí)行機(jī)器碼文件。每個(gè)模塊的功能如下:
1)梯形圖到機(jī)器碼程序的轉(zhuǎn)換。首先把用戶編寫的梯形圖程序編譯成中間代碼形式的PLM文件,然后將PLM文件轉(zhuǎn)變?yōu)閰R編程序,最后用匯編器匯編轉(zhuǎn)變成功的匯編程序CONTROL ENGINEERING China版權(quán)所有,產(chǎn)生機(jī)器碼從而生成可執(zhí)行的PLE文件。
2)執(zhí)行機(jī)器碼文件。將PLE文件嵌入配置好的執(zhí)行環(huán)境中并執(zhí)行,通過工控機(jī)的面版指示燈監(jiān)測程序的正確性。
(3)虛擬機(jī)總體設(shè)計(jì)
根據(jù)虛擬機(jī)的原理和執(zhí)行機(jī)制,對虛擬機(jī)的機(jī)器碼執(zhí)行方案進(jìn)行了總體設(shè)計(jì),如圖3所示。PLC文件是梯形圖程序的保存文件,通過對PLC文件進(jìn)行詞法分析、語法分析和語義分析編譯產(chǎn)生PLM文件,然后調(diào)用宏匯編庫,并進(jìn)行一系列的轉(zhuǎn)換生成機(jī)器碼,產(chǎn)生PLE文件;最后創(chuàng)建機(jī)器運(yùn)行環(huán)境來執(zhí)行機(jī)器碼,宏匯編庫中是每個(gè)梯形圖指令對應(yīng)的宏匯編段。
圖3 虛擬運(yùn)行總體設(shè)計(jì)框圖
(4)交叉開發(fā)調(diào)試算法研究
非嵌入式通常采用本機(jī)開發(fā)、本機(jī)調(diào)試、本機(jī)運(yùn)行的開發(fā)方式;而嵌入式開發(fā)需要交叉開發(fā),絕大多數(shù)采用宿主機(jī)開發(fā)、宿主機(jī)和目標(biāo)機(jī)之間交叉調(diào)試、目標(biāo)機(jī)運(yùn)行的方式開發(fā)。
交叉開發(fā)調(diào)試算法:
在宿主機(jī)平臺上編寫程序代碼;
固化監(jiān)控器至目標(biāo)機(jī)上;
連接宿主機(jī)和目標(biāo)機(jī);
編譯鏈接應(yīng)用程序,生成可執(zhí)行代碼;
將可執(zhí)行代碼下載到目標(biāo)機(jī);
使用交叉調(diào)試器進(jìn)行調(diào)試;
如果程序調(diào)試沒有發(fā)現(xiàn)異常CONTROL ENGINEERING China版權(quán)所有,轉(zhuǎn)至11);
調(diào)試程序時(shí)發(fā)生錯(cuò)誤,利用交叉調(diào)試器定位錯(cuò)誤;
修改錯(cuò)誤代碼;
重復(fù)4)-10);
將目標(biāo)機(jī)程序固化在目標(biāo)機(jī)上。
4 嵌入式軟PLC改造后的控制系統(tǒng)
以測試?yán)^電器TV5實(shí)驗(yàn)為例。其要求如下:每次測試5個(gè)繼電器,每個(gè)繼電器的動作頻率是5s開,5s關(guān)。根據(jù)要求,試驗(yàn)最好的結(jié)果是每個(gè)繼電器用6個(gè)TV負(fù)載,即每個(gè)TV負(fù)載是5s開,55s管。輸入點(diǎn)有:開關(guān),檢出,復(fù)位M個(gè),停止次數(shù)設(shè)定量N次,動作頻率設(shè)定L個(gè),常開/觸點(diǎn)轉(zhuǎn)換。其中,M=測試產(chǎn)品個(gè)數(shù),N、L個(gè)數(shù)由實(shí)際需要確定。其算法如下:
設(shè)定一個(gè)循環(huán)周期,使累積誤差最小;
在循環(huán)周期內(nèi)設(shè)計(jì)動作時(shí)間和動作頻率,以及動作次數(shù);
設(shè)計(jì)相關(guān)聯(lián)動、互鎖、緊急停車和復(fù)位等功能;
執(zhí)行動作與反饋根據(jù)產(chǎn)品相關(guān)標(biāo)準(zhǔn)進(jìn)行比較,判定結(jié)果和設(shè)定中斷程序。
采用模塊化程序設(shè)計(jì)編程,各模塊均由主程序調(diào)用,且為了程序不出誤動作,還要考慮電流諧波和沖擊對高電源的要求。用了算法優(yōu)化設(shè)計(jì),5個(gè)繼電器每隔2s一個(gè)動作,5個(gè)剛好10s。其中一個(gè)動作頻率程序如下:
與之對應(yīng)的動作如下:
評論