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

        ?

        嵌入式Linux軟邏輯控制器及其圖形開(kāi)發(fā)軟件設(shè)計(jì)

        2012-09-19 13:24:22李月恒孫德輝李志軍
        自動(dòng)化儀表 2012年10期
        關(guān)鍵詞:功能塊控制程序圖形化

        李月恒 孫德輝 趙 愷 李志軍 李 超

        (北方工業(yè)大學(xué)現(xiàn)場(chǎng)總線及自動(dòng)化北京市重點(diǎn)實(shí)驗(yàn)室,北京 100144)

        0 引言

        軟邏輯控制是一種利用軟件實(shí)現(xiàn)標(biāo)準(zhǔn)硬件可編程控制器(PLC)基本功能的技術(shù)。傳統(tǒng)硬件可編程控制器受相應(yīng)硬件PLC制造商專利技術(shù)的限制,具有各廠商產(chǎn)品互不兼容、通用性和可擴(kuò)展性差等缺陷[1]。采用軟邏輯控制技術(shù),可以提供硬件PLC的各種功能,同時(shí)具備PC領(lǐng)域的技術(shù)優(yōu)勢(shì)和價(jià)格優(yōu)勢(shì)。

        目前,軟邏輯控制系統(tǒng)實(shí)現(xiàn)方案有很多種,如基于PC的實(shí)現(xiàn)方案、基于嵌入式控制器的實(shí)現(xiàn)方案等。在各種軟邏輯控制系統(tǒng)實(shí)現(xiàn)方案中,利用嵌入式控制器實(shí)現(xiàn)的軟邏輯控制以其體積小、功耗低、可靠性高、硬件資源和操作系統(tǒng)可裁剪的優(yōu)勢(shì),在近年來(lái)獲得日益廣泛的應(yīng)用。

        本文基于嵌入式Linux和ARM微處理器構(gòu)建了一臺(tái)軟邏輯控制器,并開(kāi)發(fā)了一款圖形化的編程軟件。用戶可以在PC機(jī)上通過(guò)功能塊編程方式編寫(xiě)軟邏輯控制程序,并編譯成二進(jìn)制代碼下載到控制器上直接運(yùn)行。此外,處理器基于Modbus/TCP協(xié)議實(shí)現(xiàn)了在線調(diào)試以及與人機(jī)界面(human machine interface,HMI)交互的功能。

        1 系統(tǒng)整體架構(gòu)

        系統(tǒng)整體結(jié)構(gòu)由開(kāi)發(fā)系統(tǒng)和運(yùn)行系統(tǒng)兩個(gè)部分組成。開(kāi)發(fā)系統(tǒng)完成軟邏輯編程和編譯調(diào)試的任務(wù);運(yùn)行系統(tǒng)完成輸入信號(hào)處理、控制程序執(zhí)行及控制信號(hào)輸出等工作。系統(tǒng)整體架構(gòu)如圖1所示。

        圖1 系統(tǒng)整體架構(gòu)Fig.1 Architecture of overall system

        2 控制器硬件結(jié)構(gòu)

        控制器硬件采用核心板、底板結(jié)構(gòu),可通過(guò)I2C接口連接擴(kuò)展板[2],其硬件結(jié)構(gòu)如圖2所示。

        圖2 控制器硬件結(jié)構(gòu)Fig.2 Hardware structure of the controller

        核心板處理器采用Atmel的ARM9芯片AT91RM9200。它是一款高性能的32位工業(yè)級(jí)ARM9處理器,片上集成了USB、以太網(wǎng)、EBI、MCI、SSC 和 SPI等多種通信接口,主頻為180 MHz,內(nèi)含電源管理控制器 (power management controller,PMC)。該處理器在工業(yè)控制及智能儀表等領(lǐng)域內(nèi)得到大量的應(yīng)用[3]??刂破鞯装寰哂?路數(shù)字量輸入通道(DI)、8路數(shù)字量輸出通道(DO)、8路模擬量輸入通道(AI)、4路模擬量輸出通道(AO)、I2C擴(kuò)展接口(可擴(kuò)展I/O模塊)、RS-485通信接口及其他功能模塊。

        3 控制器軟件結(jié)構(gòu)

        控制器采用嵌入式Linux2.6.21,該內(nèi)核支持周期為1 ms的搶先式調(diào)度策略。嵌入式Linux操作系統(tǒng)的移植,DI、DO、AI、AO驅(qū)動(dòng)程序以及其他外設(shè)的驅(qū)動(dòng)程序在本試驗(yàn)之前的研究成果中已經(jīng)實(shí)現(xiàn)[3],在此不再贅述。控制器端的軟件架構(gòu)如圖3所示。

        圖3 控制器軟件架構(gòu)Fig.3 Software framework of the controller

        目標(biāo)代碼接收和啟動(dòng)功能由進(jìn)程N(yùn)etDaemon實(shí)現(xiàn),基于Modbus/TCP協(xié)議的遠(yuǎn)程監(jiān)控由進(jìn)程TcpServd實(shí)現(xiàn)??刂七壿嫼退惴ㄓ捎脩敉ㄟ^(guò)在PC機(jī)上的圖形化編程軟件以梯形圖的方式編輯完成,并編譯成可以直接在控制器操作系統(tǒng)下運(yùn)行的二進(jìn)制目標(biāo)代碼。該目標(biāo)代碼由 NetDaemon接收、保存,并啟動(dòng)為進(jìn)程CtrlProgram。

        為實(shí)現(xiàn)各進(jìn)程間的數(shù)據(jù)共享,利用Linux的POSIX共享的內(nèi)存機(jī)制,分別建立DI量、DO量、AI量、AO量和全局內(nèi)存變量共享的內(nèi)存區(qū)域,并采用Linux的System V信號(hào)量來(lái)保證各進(jìn)程對(duì)共享內(nèi)存區(qū)域訪問(wèn)的互斥性[4]。

        此外,為使用戶控制邏輯和算法中間代碼盡可能簡(jiǎn)化,減少中間代碼發(fā)生錯(cuò)誤的可能性和圖形化編程軟件的復(fù)雜程度,在控制器端單獨(dú)增加一個(gè)輸入量掃描和輸出控制進(jìn)程Scanner。該進(jìn)程根據(jù)控制器I/O驅(qū)動(dòng)調(diào)用時(shí)間確定的固定周期完成DI量和AI量采集,將數(shù)據(jù)寫(xiě)入到共享內(nèi)存區(qū)域,并從共享內(nèi)存區(qū)域讀出DO量和AO量,控制相應(yīng)輸出通道。這樣用戶控制程序只需直接從共享內(nèi)存區(qū)域讀取DI/AI量的值,并將計(jì)算得到的DO/AO量寫(xiě)到共享內(nèi)存即可,不需要再直接調(diào)用I/O驅(qū)動(dòng)程序。進(jìn)程Scanner和用戶控制程序之間通過(guò)System V二值信號(hào)量進(jìn)行同步[5]。

        進(jìn)程TcpServd提供基于Modbus/TCP協(xié)議的遠(yuǎn)程監(jiān)控服務(wù)[6]。Modbus/TCP數(shù)據(jù)幀格式如圖4所示。

        圖4 Modbus/TCP數(shù)據(jù)幀格式Fig.4 Format of Modbus/TCP data frame

        Modbus協(xié)議定義了一些公共功能碼,并允許用戶自行定義功能碼。TcpServd能夠響應(yīng)的公共功能碼有:讀輸入寄存器功能碼0x04、讀保持寄存器功能碼0x03、寫(xiě)單個(gè)輸出寄存器功能碼0x06以及寫(xiě)多個(gè)輸出寄存器功能碼0x10。

        本設(shè)計(jì)中,DI/DO量在共享內(nèi)存中的存儲(chǔ)單元大小為2 B,占1個(gè)寄存器;AI/AO量在共享內(nèi)存中的存儲(chǔ)單元大小為4 B,占2個(gè)寄存器。全局內(nèi)存變量的類型包括 bool、byte、short、unsigned short以及 float這幾種數(shù)據(jù)類型。前面4種數(shù)據(jù)類型在共享內(nèi)存中的存儲(chǔ)單元大小均為1個(gè)寄存器,但變量的取值范圍按變量類型不同而各不相同;后一種數(shù)據(jù)類型的存儲(chǔ)單元大小為2個(gè)寄存器。

        在進(jìn)程TcpServd中,DI、AI量歸為輸入寄存器,DO、AO和內(nèi)存變量歸為保持(輸出)寄存器。各類型的寄存器地址分配示意圖如圖5所示。

        圖5 寄存器地址分配Fig.5 Register address allocation

        當(dāng)TcpServd接收到來(lái)自客戶端的請(qǐng)求時(shí),應(yīng)首先檢查功能號(hào)是否為能夠響應(yīng)的功能號(hào);然后根據(jù)請(qǐng)求的起始地址判斷是讀寫(xiě)何種數(shù)據(jù),并根據(jù)請(qǐng)求的寄存器數(shù)量判斷操作的對(duì)象寄存器是否超出該類型數(shù)據(jù)的范圍。如果上述檢查均通過(guò),則返回相應(yīng)的寄存器值或?qū)ο鄳?yīng)寄存器進(jìn)行寫(xiě)操作。

        4 圖形化編程軟件

        傳統(tǒng)的嵌入式設(shè)備一般都需要用戶通過(guò)C語(yǔ)言等文字編程語(yǔ)言編寫(xiě)程序,對(duì)于采用Linux系統(tǒng)的嵌入式設(shè)備,還需要在Linux操作系統(tǒng)下建立交叉編譯工具鏈,對(duì)程序代碼進(jìn)行交叉編譯,從而得到能夠在目標(biāo)設(shè)備上運(yùn)行的二進(jìn)制文件。該編程方法對(duì)一般用戶而言過(guò)于復(fù)雜,且容易出現(xiàn)各種錯(cuò)誤。

        本文所設(shè)計(jì)的圖形編程軟件旨在為用戶提供更直觀的功能塊圖編程方式。該軟件將用戶編寫(xiě)的功能塊形式的控制程序預(yù)編譯為C語(yǔ)言形式的中間代碼,最終編譯鏈接為嵌入式Linux控制器下能夠運(yùn)行的二進(jìn)制文件并下載到目標(biāo)控制器中運(yùn)行[7]。

        4.1 圖形化編程軟件的功能劃分

        圖形化編程軟件包括以下9個(gè)功能模塊:功能塊模板庫(kù)管理模塊、功能塊功能實(shí)現(xiàn)代碼編輯模塊、控制程序編輯模塊、項(xiàng)目管理模塊、控制程序預(yù)編譯模塊、編譯鏈接模塊、下載模塊、離線仿真模塊和在線調(diào)試模塊。

        各功能模塊具體實(shí)現(xiàn)的功能如下。

        ①功能塊模板庫(kù)管理模塊為開(kāi)發(fā)人員或用戶提供功能塊模板的添加、刪除和保存等管理功能。具體功能塊的實(shí)現(xiàn)代碼由開(kāi)發(fā)人員通過(guò)功能實(shí)現(xiàn)代碼編輯模塊實(shí)現(xiàn)。

        ②功能塊功能實(shí)現(xiàn)代碼編輯模塊為具有一定C語(yǔ)言編程基礎(chǔ)的開(kāi)發(fā)人員或用戶提供編輯功能塊功能實(shí)現(xiàn)代碼的平臺(tái)。

        ③控制程序編輯模塊為用戶提供功能塊程序編輯環(huán)境。

        ④項(xiàng)目管理模塊用于管理目標(biāo)控制器硬件配置,以及項(xiàng)目包含的控制程序、全局變量等信息。

        ⑤控制程序預(yù)編譯模塊將用戶的控制工程和控制程序預(yù)編譯成C語(yǔ)言形式的中間代碼。

        ⑥編譯鏈接模塊負(fù)責(zé)將開(kāi)發(fā)人員通過(guò)功能塊功能實(shí)現(xiàn)代碼編輯模塊編寫(xiě)的功能塊功能實(shí)現(xiàn)代碼編譯成目標(biāo)文件,并歸檔到功能塊功能函數(shù)庫(kù)中,或?qū)㈩A(yù)編譯模塊生成的C語(yǔ)言中間代碼編譯鏈接為能夠在目標(biāo)控制器平臺(tái)下運(yùn)行的二進(jìn)制代碼。

        ⑦下載模塊通過(guò)以太網(wǎng)將程序下載到目標(biāo)控制器。

        ⑧離線仿真模塊用于在PC機(jī)平臺(tái)下進(jìn)行控制程序的仿真。

        ⑨在線調(diào)試模塊與控制器之間建立基于Modbus/TCP協(xié)議的通信連接,使用戶能夠通過(guò)以太網(wǎng)在線調(diào)節(jié)目標(biāo)控制器的控制程序參數(shù),以取得預(yù)期的控制效果。

        各功能模塊之間的關(guān)聯(lián)關(guān)系如圖6所示。本軟件最重要的2個(gè)功能模塊是控制程序預(yù)編譯模塊和編譯鏈接模塊。

        圖6 圖形編程軟件功能模塊關(guān)聯(lián)圖Fig.6 Conjunction of graphical programming software functional modules

        4.2 預(yù)編譯模塊的功能實(shí)現(xiàn)

        預(yù)編譯模塊首先對(duì)用戶編輯的控制程序進(jìn)行錯(cuò)誤檢查,錯(cuò)誤檢查通過(guò)后,根據(jù)控制工程配置信息生成定義頭文件,并按照預(yù)先設(shè)定的控制程序模板生成控制程序主程序文件??刂瞥绦蛑骱瘮?shù)中調(diào)用的通用功能函數(shù)的目標(biāo)文件預(yù)先歸檔在靜態(tài)庫(kù)comLib.a中,各控制程序函數(shù)主體定義在對(duì)應(yīng)的控制程序預(yù)編譯生成的C語(yǔ)言中間代碼文件中??刂瞥绦虻念A(yù)編譯流程如圖7所示。

        圖7 控制程序預(yù)編譯流程圖Fig.7 Flowchart of pre-compiling of the control program

        預(yù)編譯模塊首先遍歷控制程序文件中的所有功能塊,將所有只有輸入接口沒(méi)有輸出接口的功能塊(如DO、AO模塊和作為輸出節(jié)點(diǎn)的內(nèi)存變量模塊等)組成一個(gè)輸出節(jié)點(diǎn)表,并根據(jù)輸出節(jié)點(diǎn)的位置(自上到下、從左到右)進(jìn)行排序;然后依次應(yīng)用遞歸的方法處理輸出節(jié)點(diǎn)表中的每個(gè)功能塊和由各級(jí)輸入節(jié)點(diǎn)組成的樹(shù)型結(jié)構(gòu);最終生成該控制程序文件的C語(yǔ)言中間代碼。

        4.3 編譯鏈接模塊的功能實(shí)現(xiàn)

        預(yù)編譯模塊將控制程序預(yù)編譯成C語(yǔ)言形式的中間代碼后,編譯鏈接模塊通過(guò)Cygwin下構(gòu)建的交叉工具鏈,將該中間代碼編譯為可在目標(biāo)設(shè)備下運(yùn)行的程序。

        Cygwin是由Cygnus Solutions最初開(kāi)發(fā)的許多自由軟件的集合,用于在各種版本的Windows操作系統(tǒng)下運(yùn)行Unix類系統(tǒng)。Cygwin的主要目的是通過(guò)重新編譯,將POSIX系統(tǒng)上的軟件移植到Windows上。開(kāi)發(fā)人員可以通過(guò)在Cygwin平臺(tái)下構(gòu)建交叉編譯工具鏈,實(shí)現(xiàn)在Windows平臺(tái)下編譯生成能夠在不同類型Linux平臺(tái)下運(yùn)行的應(yīng)用程序。交叉編譯工具鏈可以通過(guò)下載源代碼程序直接在Cygwin平臺(tái)下編譯得到[8]。

        本文針對(duì)采用的目標(biāo)控制器Linux內(nèi)核和glibc函數(shù)庫(kù)版本,在Cygwin下構(gòu)建了ARM Linux gcc3.4.3版本的交叉編譯工具鏈。

        編譯鏈接模塊首先根據(jù)工程路徑、工程配置信息以及工程包含的控制程序文件信息,在工程路徑下生成該工程中間代碼的Makefile。Makefile的格式如下。

        然后,生成腳本文件,以跳轉(zhuǎn)到工程路徑下執(zhí)行編譯鏈接操作。在Cygwin的啟動(dòng)腳本中添加該腳本文件的執(zhí)行操作,之后添加退出Cygwin操作的命令行。

        完成上述操作后,編譯鏈接模塊啟動(dòng)Cygwin,在后臺(tái)完成控制程序的編譯鏈接操作。

        本圖形編程軟件采用Visual Studio 2008作為開(kāi)發(fā)工具,開(kāi)發(fā)語(yǔ)言采用Visual C++。

        5 結(jié)束語(yǔ)

        基于嵌入式Linux和ARM微處理器,構(gòu)建了一臺(tái)軟邏輯控制器及其圖形化編程軟件。用戶可以在PC機(jī)上通過(guò)圖形化編程軟件以功能塊編程方式編寫(xiě)軟邏輯控制程序。圖形化編程軟件將功能塊圖程序預(yù)編譯為C語(yǔ)言形式的中間代碼,通過(guò)Cygwin下構(gòu)建的交叉編譯工具鏈編譯成二進(jìn)制代碼,并下載到控制器上直接運(yùn)行。此外,本系統(tǒng)還基于Modbus/TCP協(xié)議實(shí)現(xiàn)了控制程序在線調(diào)試以及控制器與人機(jī)界面(HMI)交互的功能。

        本文實(shí)現(xiàn)的軟邏輯控制器及其圖形化編程軟件具有一定的試驗(yàn)應(yīng)用價(jià)值。實(shí)際工業(yè)應(yīng)用的控制器結(jié)構(gòu)更加復(fù)雜,對(duì)編程軟件調(diào)試功能的要求也更高,要將目前實(shí)現(xiàn)的成果投入到實(shí)際應(yīng)用,還需要進(jìn)行較多后續(xù)工作。

        [1]李堅(jiān)強(qiáng),裴海龍,廖俊.基于Linux系統(tǒng)的軟PLC設(shè)計(jì)[J].制造業(yè)自動(dòng)化,2005,27(11):1 -4.

        [2]趙旭,杜紅彬,李奇,等.ARM I2C總線接口模塊在數(shù)據(jù)采集中的應(yīng)用[J].自動(dòng)化儀表,2006,27(10):23 -25.

        [3]霍朝賓.樓宇控制器驅(qū)動(dòng)程序開(kāi)發(fā)及組態(tài)設(shè)計(jì)[D].北京:北方工業(yè)大學(xué),2010.

        [4]Wall K,Warson M,Whitis M,et al.GNU/Linux編程指南[M].王勇,王一川,林花軍,等,譯.北京:清華大學(xué)出版社,2000.

        [5]Stevens W R,Rago S A.UNIX環(huán)境高級(jí)編程[M].2版.尤晉元,張亞英,戚正偉,譯.北京:人民郵電出版社,2006.

        [6]Open Modbus/TCP Specification[S].Andy Swales,Schneider Electric,1999.

        [7]李慧強(qiáng),程廣河,韓凌燕,等.兩種嵌入式PLC執(zhí)行機(jī)制的比較分析與驗(yàn)證[J].自動(dòng)化儀表,2010,31(1):17 -22.

        [8]王興順.Cygwin環(huán)境下構(gòu)建 arm-linux-gcc-4.5.0 工具鏈[J].可編程控制器與工廠自動(dòng)化(PLC FA),2011(3):84-88.

        猜你喜歡
        功能塊控制程序圖形化
        基于PLC的變電站備用電源自動(dòng)投入裝置控制程序的研究
        LKJ自動(dòng)化測(cè)試系統(tǒng)圖形化技術(shù)研究
        Ovation系統(tǒng)FIRSTOUT和FIFO跳閘首出比較
        運(yùn)用圖形化聽(tīng)寫(xiě)式復(fù)習(xí),構(gòu)建高效地理課堂
        自定義功能塊類型在電解槽聯(lián)鎖中的應(yīng)用
        圖形化地區(qū)電網(wǎng)無(wú)功優(yōu)化軟件開(kāi)發(fā)與應(yīng)用
        基于MACSV6.5.2的鍋爐燃盡風(fēng)開(kāi)關(guān)量調(diào)節(jié)門(mén)控制功能塊設(shè)計(jì)
        基于PLC數(shù)值處理模塊的PID控制程序研究
        PLCopen運(yùn)動(dòng)控制功能塊的研究與開(kāi)發(fā)
        紙機(jī)傳動(dòng)控制程序的復(fù)用性研究
        亚洲一区二区三区免费av在线| 全部孕妇毛片丰满孕妇孕交| 九九热在线视频观看这里只有精品| 国产精品亚洲ΑV天堂无码| 在线观看高清视频一区二区三区| 日韩人妻不卡一区二区三区| 中文字幕一区二区综合| 精品综合久久久久久888蜜芽| 久青草久青草视频在线观看| 久久久久亚洲av无码网站| 国产精品高潮无码毛片| 极品av在线播放| 日本一本二本三本道久久久| 人妖啪啪综合av一区| 国产情侣一区二区| 亚洲处破女av日韩精品 | 久久精品熟女不卡av高清| 午夜视频在线观看日本| 天天爽夜夜爽夜夜爽精品视频| 99精产国品一二三产品香蕉| 日本高清色惰www在线视频| 丝袜美腿诱惑区在线播放| 国产大片黄在线观看| 久久综合给合久久狠狠狠97色69| 国产精品99久久久精品免费观看| 亚洲av午夜福利一区二区国产| 香蕉久久一区二区不卡无毒影院 | 特黄特色的大片观看免费视频| 免费一区啪啪视频| 精品国产亚洲av久一区二区三区| 无码a级毛片免费视频内谢5j| 日本乱人伦在线观看| 亚州五十路伊人网| 在线国产激情视频观看| 中文字幕丰满伦子无码| Y111111国产精品久久久| 亚洲av成人波多野一区二区| 伊甸园亚洲av久久精品| 国产最新进精品视频| 亚洲成在人网av天堂| 久久久亚洲av成人乱码|