999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

嵌入式Linux軟邏輯控制器及其圖形開發軟件設計

2012-09-19 13:24:22李月恒孫德輝李志軍
自動化儀表 2012年10期
關鍵詞:嵌入式功能

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

(北方工業大學現場總線及自動化北京市重點實驗室,北京 100144)

0 引言

軟邏輯控制是一種利用軟件實現標準硬件可編程控制器(PLC)基本功能的技術。傳統硬件可編程控制器受相應硬件PLC制造商專利技術的限制,具有各廠商產品互不兼容、通用性和可擴展性差等缺陷[1]。采用軟邏輯控制技術,可以提供硬件PLC的各種功能,同時具備PC領域的技術優勢和價格優勢。

目前,軟邏輯控制系統實現方案有很多種,如基于PC的實現方案、基于嵌入式控制器的實現方案等。在各種軟邏輯控制系統實現方案中,利用嵌入式控制器實現的軟邏輯控制以其體積小、功耗低、可靠性高、硬件資源和操作系統可裁剪的優勢,在近年來獲得日益廣泛的應用。

本文基于嵌入式Linux和ARM微處理器構建了一臺軟邏輯控制器,并開發了一款圖形化的編程軟件。用戶可以在PC機上通過功能塊編程方式編寫軟邏輯控制程序,并編譯成二進制代碼下載到控制器上直接運行。此外,處理器基于Modbus/TCP協議實現了在線調試以及與人機界面(human machine interface,HMI)交互的功能。

1 系統整體架構

系統整體結構由開發系統和運行系統兩個部分組成。開發系統完成軟邏輯編程和編譯調試的任務;運行系統完成輸入信號處理、控制程序執行及控制信號輸出等工作。系統整體架構如圖1所示。

圖1 系統整體架構Fig.1 Architecture of overall system

2 控制器硬件結構

控制器硬件采用核心板、底板結構,可通過I2C接口連接擴展板[2],其硬件結構如圖2所示。

圖2 控制器硬件結構Fig.2 Hardware structure of the controller

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

3 控制器軟件結構

控制器采用嵌入式Linux2.6.21,該內核支持周期為1 ms的搶先式調度策略。嵌入式Linux操作系統的移植,DI、DO、AI、AO驅動程序以及其他外設的驅動程序在本試驗之前的研究成果中已經實現[3],在此不再贅述。控制器端的軟件架構如圖3所示。

圖3 控制器軟件架構Fig.3 Software framework of the controller

目標代碼接收和啟動功能由進程NetDaemon實現,基于Modbus/TCP協議的遠程監控由進程TcpServd實現。控制邏輯和算法由用戶通過在PC機上的圖形化編程軟件以梯形圖的方式編輯完成,并編譯成可以直接在控制器操作系統下運行的二進制目標代碼。該目標代碼由 NetDaemon接收、保存,并啟動為進程CtrlProgram。

為實現各進程間的數據共享,利用Linux的POSIX共享的內存機制,分別建立DI量、DO量、AI量、AO量和全局內存變量共享的內存區域,并采用Linux的System V信號量來保證各進程對共享內存區域訪問的互斥性[4]。

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

進程TcpServd提供基于Modbus/TCP協議的遠程監控服務[6]。Modbus/TCP數據幀格式如圖4所示。

圖4 Modbus/TCP數據幀格式Fig.4 Format of Modbus/TCP data frame

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

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

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

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

當TcpServd接收到來自客戶端的請求時,應首先檢查功能號是否為能夠響應的功能號;然后根據請求的起始地址判斷是讀寫何種數據,并根據請求的寄存器數量判斷操作的對象寄存器是否超出該類型數據的范圍。如果上述檢查均通過,則返回相應的寄存器值或對相應寄存器進行寫操作。

4 圖形化編程軟件

傳統的嵌入式設備一般都需要用戶通過C語言等文字編程語言編寫程序,對于采用Linux系統的嵌入式設備,還需要在Linux操作系統下建立交叉編譯工具鏈,對程序代碼進行交叉編譯,從而得到能夠在目標設備上運行的二進制文件。該編程方法對一般用戶而言過于復雜,且容易出現各種錯誤。

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

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

圖形化編程軟件包括以下9個功能模塊:功能塊模板庫管理模塊、功能塊功能實現代碼編輯模塊、控制程序編輯模塊、項目管理模塊、控制程序預編譯模塊、編譯鏈接模塊、下載模塊、離線仿真模塊和在線調試模塊。

各功能模塊具體實現的功能如下。

①功能塊模板庫管理模塊為開發人員或用戶提供功能塊模板的添加、刪除和保存等管理功能。具體功能塊的實現代碼由開發人員通過功能實現代碼編輯模塊實現。

②功能塊功能實現代碼編輯模塊為具有一定C語言編程基礎的開發人員或用戶提供編輯功能塊功能實現代碼的平臺。

③控制程序編輯模塊為用戶提供功能塊程序編輯環境。

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

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

⑥編譯鏈接模塊負責將開發人員通過功能塊功能實現代碼編輯模塊編寫的功能塊功能實現代碼編譯成目標文件,并歸檔到功能塊功能函數庫中,或將預編譯模塊生成的C語言中間代碼編譯鏈接為能夠在目標控制器平臺下運行的二進制代碼。

⑦下載模塊通過以太網將程序下載到目標控制器。

⑧離線仿真模塊用于在PC機平臺下進行控制程序的仿真。

⑨在線調試模塊與控制器之間建立基于Modbus/TCP協議的通信連接,使用戶能夠通過以太網在線調節目標控制器的控制程序參數,以取得預期的控制效果。

各功能模塊之間的關聯關系如圖6所示。本軟件最重要的2個功能模塊是控制程序預編譯模塊和編譯鏈接模塊。

圖6 圖形編程軟件功能模塊關聯圖Fig.6 Conjunction of graphical programming software functional modules

4.2 預編譯模塊的功能實現

預編譯模塊首先對用戶編輯的控制程序進行錯誤檢查,錯誤檢查通過后,根據控制工程配置信息生成定義頭文件,并按照預先設定的控制程序模板生成控制程序主程序文件。控制程序主函數中調用的通用功能函數的目標文件預先歸檔在靜態庫comLib.a中,各控制程序函數主體定義在對應的控制程序預編譯生成的C語言中間代碼文件中。控制程序的預編譯流程如圖7所示。

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

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

4.3 編譯鏈接模塊的功能實現

預編譯模塊將控制程序預編譯成C語言形式的中間代碼后,編譯鏈接模塊通過Cygwin下構建的交叉工具鏈,將該中間代碼編譯為可在目標設備下運行的程序。

Cygwin是由Cygnus Solutions最初開發的許多自由軟件的集合,用于在各種版本的Windows操作系統下運行Unix類系統。Cygwin的主要目的是通過重新編譯,將POSIX系統上的軟件移植到Windows上。開發人員可以通過在Cygwin平臺下構建交叉編譯工具鏈,實現在Windows平臺下編譯生成能夠在不同類型Linux平臺下運行的應用程序。交叉編譯工具鏈可以通過下載源代碼程序直接在Cygwin平臺下編譯得到[8]。

本文針對采用的目標控制器Linux內核和glibc函數庫版本,在Cygwin下構建了ARM Linux gcc3.4.3版本的交叉編譯工具鏈。

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

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

完成上述操作后,編譯鏈接模塊啟動Cygwin,在后臺完成控制程序的編譯鏈接操作。

本圖形編程軟件采用Visual Studio 2008作為開發工具,開發語言采用Visual C++。

5 結束語

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

本文實現的軟邏輯控制器及其圖形化編程軟件具有一定的試驗應用價值。實際工業應用的控制器結構更加復雜,對編程軟件調試功能的要求也更高,要將目前實現的成果投入到實際應用,還需要進行較多后續工作。

[1]李堅強,裴海龍,廖俊.基于Linux系統的軟PLC設計[J].制造業自動化,2005,27(11):1 -4.

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

[3]霍朝賓.樓宇控制器驅動程序開發及組態設計[D].北京:北方工業大學,2010.

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

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

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

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

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

猜你喜歡
嵌入式功能
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
關于非首都功能疏解的幾點思考
懷孕了,凝血功能怎么變?
媽媽寶寶(2017年2期)2017-02-21 01:21:24
“簡直”和“幾乎”的表達功能
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
Altera加入嵌入式視覺聯盟
中西醫結合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 香蕉国产精品视频| 精品国产一区二区三区在线观看| 亚洲成人网在线播放| 亚洲欧美日韩另类在线一| 五月天综合网亚洲综合天堂网| 免费看久久精品99| 亚洲欧美日本国产综合在线| 午夜日本永久乱码免费播放片| 五月丁香在线视频| 国产欧美视频一区二区三区| 中文字幕亚洲乱码熟女1区2区| 免费国产高清精品一区在线| 1769国产精品免费视频| 国产成人乱码一区二区三区在线| 超碰精品无码一区二区| 亚洲综合精品香蕉久久网| 精品日韩亚洲欧美高清a| 日韩精品亚洲一区中文字幕| 看av免费毛片手机播放| 99这里精品| 波多野结衣久久高清免费| 福利一区三区| 欧美国产日本高清不卡| 2019国产在线| 亚洲男人的天堂久久香蕉| 永久免费精品视频| 伊人久久综在合线亚洲2019| 久久无码av一区二区三区| 国产成人综合日韩精品无码首页| 2021国产乱人伦在线播放| 91亚洲免费| 99re视频在线| 国产欧美日韩资源在线观看| 日韩精品一区二区三区大桥未久| 色呦呦手机在线精品| 欧美精品一区二区三区中文字幕| 亚洲经典在线中文字幕| 亚洲日产2021三区在线| 天堂成人在线| 亚洲 欧美 日韩综合一区| 午夜国产不卡在线观看视频| AV天堂资源福利在线观看| 欧美精品成人一区二区在线观看| 久久久久夜色精品波多野结衣| 中文字幕va| 国产在线精品美女观看| 国产草草影院18成年视频| 国产黑丝一区| 亚洲国产精品久久久久秋霞影院| 亚洲无线观看| 青青草原国产av福利网站| 精品久久久久久久久久久| 亚洲午夜福利精品无码| 无码一区中文字幕| 福利视频一区| 亚洲无码A视频在线| 九九久久精品免费观看| 精品伊人久久久久7777人| 国产一区二区人大臿蕉香蕉| 国产无码高清视频不卡| 一本大道在线一本久道| 国产区免费精品视频| 国产精品男人的天堂| 亚洲三级电影在线播放| 丁香婷婷综合激情| 久久综合激情网| 性欧美在线| 欧美在线中文字幕| 日本少妇又色又爽又高潮| 欧美日本在线| 精久久久久无码区中文字幕| 日韩在线影院| 中文字幕永久在线观看| 日韩久久精品无码aV| 国产精品白浆在线播放| 美女扒开下面流白浆在线试听| 亚洲日产2021三区在线| 国内精品久久久久久久久久影视| 国内丰满少妇猛烈精品播| 亚洲第一色视频| 亚洲成在线观看| 国产人妖视频一区在线观看|