亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,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)成語法上的錯誤程序.

        接下來是語義分析,檢查源程序是否有語義等錯誤,將其保存在字符串?dāng)?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)用
        自拍偷拍另类三级三色四色| 亚洲av日韩av永久无码色欲| 91亚洲国产成人aⅴ毛片大全| 精品女同一区二区三区不卡| 日本黄色3级一区二区| 国产福利视频一区二区| 老熟女多次高潮露脸视频| 成人免费丝袜美腿视频| 日本高清视频在线观看一区二区 | 亚洲美国产亚洲av| 亚洲欧美国产成人综合不卡| av在线播放免费观看| 玩弄放荡人妇系列av在线网站| 婷婷综合缴情亚洲| 国产9 9在线 | 免费| 日本高级黄色一区二区三区| 色费女人18毛片a级毛片视频| 精品视频一区二区三三区四区| 亚洲一区二区三区中文视频| 日本一区二区三区视频免费在线 | 一区二区三区视频亚洲| 精品视频无码一区二区三区| 日韩精品中文字幕无码专区| 一本久久综合亚洲鲁鲁五月夫| 亚洲女人毛茸茸粉红大阴户传播| 日韩少妇内射免费播放| 精品国产亚欧无码久久久| 国产人妖av在线观看| 最新国产毛2卡3卡4卡| 99亚洲精品久久久99| 一区二区三区午夜视频在线观看| 中文字幕乱码熟女人妻在线| 男女裸交无遮挡啪啪激情试看 | 一区二区三区免费看日本| 日本牲交大片免费观看| 精品熟女少妇免费久久| 久久婷婷综合色一区二区| 亚洲av无码国产精品永久一区| 国产nv精品你懂得| 亚洲在中文字幕乱码熟女| 风韵丰满熟妇啪啪区老熟熟女|