999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人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)總線(xiàn)及自動(dòng)化北京市重點(diǎn)實(shí)驗(yàn)室,北京 100144)

0 引言

軟邏輯控制是一種利用軟件實(shí)現(xiàn)標(biāo)準(zhǔn)硬件可編程控制器(PLC)基本功能的技術(shù)。傳統(tǒng)硬件可編程控制器受相應(yīng)硬件PLC制造商專(zhuān)利技術(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ā)了一款圖形化的編程軟件。用戶(hù)可以在PC機(jī)上通過(guò)功能塊編程方式編寫(xiě)軟邏輯控制程序,并編譯成二進(jìn)制代碼下載到控制器上直接運(yùn)行。此外,處理器基于Modbus/TCP協(xié)議實(shí)現(xiàn)了在線(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]。控制器底板具有8路數(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)。控制邏輯和算法由用戶(hù)通過(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]。

此外,為使用戶(hù)控制邏輯和算法中間代碼盡可能簡(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)輸出通道。這樣用戶(hù)控制程序只需直接從共享內(nèi)存區(qū)域讀取DI/AI量的值,并將計(jì)算得到的DO/AO量寫(xiě)到共享內(nèi)存即可,不需要再直接調(diào)用I/O驅(qū)動(dòng)程序。進(jìn)程Scanner和用戶(hù)控制程序之間通過(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é)議定義了一些公共功能碼,并允許用戶(hù)自行定義功能碼。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)存變量的類(lèi)型包括 bool、byte、short、unsigned short以及 float這幾種數(shù)據(jù)類(lèi)型。前面4種數(shù)據(jù)類(lèi)型在共享內(nèi)存中的存儲(chǔ)單元大小均為1個(gè)寄存器,但變量的取值范圍按變量類(lèi)型不同而各不相同;后一種數(shù)據(jù)類(lèi)型的存儲(chǔ)單元大小為2個(gè)寄存器。

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

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

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

4 圖形化編程軟件

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

本文所設(shè)計(jì)的圖形編程軟件旨在為用戶(hù)提供更直觀的功能塊圖編程方式。該軟件將用戶(hù)編寫(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ù)編譯模塊、編譯鏈接模塊、下載模塊、離線(xiàn)仿真模塊和在線(xiàn)調(diào)試模塊。

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

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

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

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

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

⑤控制程序預(yù)編譯模塊將用戶(hù)的控制工程和控制程序預(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)控制器。

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

⑨在線(xiàn)調(diào)試模塊與控制器之間建立基于Modbus/TCP協(xié)議的通信連接,使用戶(hù)能夠通過(guò)以太網(wǎng)在線(xiàn)調(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ì)用戶(hù)編輯的控制程序進(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ǔ)言中間代碼文件中。控制程序的預(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類(lèi)系統(tǒng)。Cygwin的主要目的是通過(guò)重新編譯,將POSIX系統(tǒng)上的軟件移植到Windows上。開(kāi)發(fā)人員可以通過(guò)在Cygwin平臺(tái)下構(gòu)建交叉編譯工具鏈,實(shí)現(xiàn)在Windows平臺(tái)下編譯生成能夠在不同類(lè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)軟邏輯控制器及其圖形化編程軟件。用戶(hù)可以在PC機(jī)上通過(guò)圖形化編程軟件以功能塊編程方式編寫(xiě)軟邏輯控制程序。圖形化編程軟件將功能塊圖程序預(yù)編譯為C語(yǔ)言形式的中間代碼,通過(guò)Cygwin下構(gòu)建的交叉編譯工具鏈編譯成二進(jìn)制代碼,并下載到控制器上直接運(yùn)行。此外,本系統(tǒng)還基于Modbus/TCP協(xié)議實(shí)現(xiàn)了控制程序在線(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總線(xiàn)接口模塊在數(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.

猜你喜歡
嵌入式功能
也談詩(shī)的“功能”
TS系列紅外傳感器在嵌入式控制系統(tǒng)中的應(yīng)用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統(tǒng)通信技術(shù)的應(yīng)用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開(kāi)發(fā)平臺(tái)
關(guān)于非首都功能疏解的幾點(diǎn)思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡(jiǎn)直”和“幾乎”的表達(dá)功能
嵌入式軟PLC在電鍍生產(chǎn)流程控制系統(tǒng)中的應(yīng)用
Altera加入嵌入式視覺(jué)聯(lián)盟
中西醫(yī)結(jié)合治療甲狀腺功能亢進(jìn)癥31例
主站蜘蛛池模板: 久久国产亚洲偷自| 久久香蕉国产线看观看精品蕉| 成人在线不卡| 亚洲日本中文字幕乱码中文| 欧美日韩午夜视频在线观看| 亚洲一区二区日韩欧美gif| 亚洲中文字幕久久无码精品A| 东京热av无码电影一区二区| 久久精品欧美一区二区| 国产主播一区二区三区| 亚洲天堂在线免费| 一本大道香蕉中文日本不卡高清二区| 亚洲国产在一区二区三区| 欧美午夜久久| 在线观看国产黄色| 五月天丁香婷婷综合久久| 亚洲国产天堂久久综合226114| 强乱中文字幕在线播放不卡| 中文字幕无线码一区| 国产丝袜第一页| 日韩一区二区在线电影| 一本二本三本不卡无码| 国产呦视频免费视频在线观看| 97国产精品视频人人做人人爱| 国产亚洲欧美日本一二三本道| 米奇精品一区二区三区| 五月婷婷丁香色| 成人韩免费网站| 久久亚洲精少妇毛片午夜无码| 国产欧美成人不卡视频| 国产91精选在线观看| 黑人巨大精品欧美一区二区区| 99热这里只有免费国产精品 | 欧美三级日韩三级| 久久永久免费人妻精品| 久久96热在精品国产高清| 国产1区2区在线观看| 日本欧美一二三区色视频| 无码AV高清毛片中国一级毛片 | 亚洲h视频在线| 中文字幕在线日韩91| 亚洲欧洲日产国产无码AV| 久久国产乱子| 最新亚洲av女人的天堂| 丰满人妻中出白浆| jijzzizz老师出水喷水喷出| 18黑白丝水手服自慰喷水网站| 精品1区2区3区| 综合色88| 99视频在线免费| 欧美午夜在线播放| 日本免费福利视频| 国产女人在线| 亚洲中文字幕无码爆乳| 国产微拍一区二区三区四区| 伊人久久大香线蕉aⅴ色| 2021国产精品自产拍在线| 性激烈欧美三级在线播放| 日韩黄色精品| 国产拍在线| 成人国产精品网站在线看| 欧美午夜小视频| 无码专区国产精品第一页| 五月激情婷婷综合| 97se亚洲综合| 日本黄网在线观看| 日本黄色不卡视频| 精品少妇人妻av无码久久| 中文字幕一区二区视频| 久久久精品久久久久三级| 亚洲国产综合精品一区| 久操线在视频在线观看| 中文字幕无码电影| 欧美特级AAAAAA视频免费观看| 青青操国产| 国产成人a毛片在线| 亚洲天堂啪啪| 中文字幕在线一区二区在线| 国产在线自揄拍揄视频网站| 国产探花在线视频| 好吊色妇女免费视频免费| 久久精品中文字幕少妇|