• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于嵌入式硬件平臺的軟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].

      隨著國際標(biāo)準(zhǔn)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標(biāo)準(zhǔn)規(guī)定的5種編程語言首先在開發(fā)系統(tǒng)的編輯平臺上完成程序編輯,然后在編譯器中經(jīng)過詞法分析、語法分析、語義分析,生成目標(biāo)代碼,同時仿真模塊為檢查程序的運行結(jié)果正確與否提供調(diào)試環(huán)境,接著通過開發(fā)系統(tǒng)和運行系統(tǒng)的通信接口,目標(biāo)代碼被下載到運行系統(tǒng).運行系統(tǒng)是整個設(shè)計的核心部分,它執(zhí)行目標(biāo)代碼,進行輸入信號的處理,然后其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國際標(biāo)準(zhǔn)規(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].由于篇幅有限,就不作詳細(xì)分析.

      圖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)生的目標(biāo)代碼一般有兩種存在形式,機器碼形式和內(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++目標(biāo)代碼.如圖7所示.

      圖7 生成目標(biāo)代碼順序圖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í)行目標(biāo)代碼,并將結(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)三坐標(biāo)軸的正反向運動和停止,能自行設(shè)定運動速度,多三軸進行限位控制,產(chǎn)生越位報警等控制功能.

      采用模塊化的程序設(shè)計方法,由主程序調(diào)用各個程序模塊,由于篇幅的限制,以下只給出了控制機床和主軸運動的目標(biā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);

      將整個目標(biāo)代碼傳給運行系統(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ù)值接近,證明生成的目標(biāo)代碼是正確的,驗證了該嵌入式軟PLC系統(tǒng)的可用性.

      5 結(jié)語

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

      本文將梯形圖轉(zhuǎn)換成指令表,對其進行各種分析后,采用中間代碼策略,在下位設(shè)備中用高級語言開發(fā)出中間碼解釋器,生成目標(biāo)代碼,實現(xiàn)了軟件的硬件設(shè)備無關(guān)性,提高了程序的可移植性,適用于各種機型的下位設(shè)備.實驗證明,目標(biāo)代碼經(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年高考英語“相似”考題例析
      鄂伦春自治旗| 承德县| 榆社县| 潞西市| 石城县| 河津市| 涟源市| 禹州市| 华亭县| 客服| 奉贤区| 益阳市| 工布江达县| 睢宁县| 桂阳县| 兰州市| 山东| 新河县| 桐乡市| 平果县| 巧家县| 龙里县| 丹凤县| 北海市| 桐梓县| 资中县| 资溪县| 温州市| 鄂托克旗| 绥中县| 卢龙县| 丹凤县| 樟树市| 阜平县| 金塔县| 合作市| 临高县| 新乡市| 邵东县| 利辛县| 昌江|