在线观看国产区-在线观看国产欧美-在线观看国产免费高清不卡-在线观看国产久青草-久久国产精品久久久久久-久久国产精品久久久

美章網 資料文庫 遠程數據采集器研究及設計范文

遠程數據采集器研究及設計范文

本站小編為你精心準備了遠程數據采集器研究及設計參考范文,愿這些范文能點燃您思維的火花,激發您的寫作靈感。歡迎深入閱讀并收藏。

遠程數據采集器研究及設計

摘要:針對目前工業上數據采集系統搭建過程復雜、開發自由度較低的情況,提出了一種面向工業應用的通用遠程數據采集器設計方案。數據采集器采用基于i.MX6Q芯片設計的硬件電路,以嵌入式Linux操作系統為軟件基礎,針對工業上通用的Modbus、CAN等協議,實現了數據采集、儲存及遠程轉發等基本功能。考慮到多傳感器并發采集時對響應性能的影響,提出了基于多進程同步采集的機制以及使用了環形緩沖區數據結構。針對工業上對數據采集系統的擴展性及靈活性需求,引入了基于Web服務器及數據庫的實時配置功能。試驗測試驗證了該系統在采集多個Modbus傳感器時的正確性與可行性,為嵌入式Linux數據采集器的開發提供了思路。

關鍵詞:數據采集;嵌入式;Linux;工業總線;Web服務器;環形緩沖區;遠程監控;并發性

引言

隨著工業4.0、智能系統、物聯網[1]的發展,對于各類傳感器的采集、應用需求愈發增大。工業數據采集器的采集對象大多是RS-232/RS-485、CAN總線接口或以太網接口的傳感器。在目前的工程應用中,常用的智能采集系統架構有“傳感器-可編程邏輯控制器(programmablelogiccontroller,PLC)-計算機監控系統”和“傳感器-串口服務器-計算機解析”模式。前者價格高昂且依賴PLC開發;后者則只能適用于RS-232/RS-485接口,不易進行網絡擴展,且在軟件開發時需要進行Modbus等底層協議的解析。在嵌入式系統成本大大降低,應用范圍日漸廣泛的背景下,針對目前數據采集系統搭建、開發過程復雜的問題,本文設計了一種適用于工業通用采集接口、便于個性化配置、面向多傳感器并發讀寫的嵌入式遠程數據采集器。

1數據采集器總體設計

結合工業數據采集應用場合,數據采集應用系統框架如圖1所示。整個系統主要由數據采集器、多個傳感器以及遠程監控中心構成。數據采集器與數個傳感器直接相連,同時通過自身的3G/4G功能或以太網與遠程監控中心間接相連。數據采集器負責根據用戶配置分別采集各個傳感器數據,經處理后直接轉發至遠程監控中心。

2硬件系統設計

根據嵌入式系統的硬件設計原理及本數據采集器的需求,本數據采集器包括以下主要模塊:核心模塊、電源模塊、采集接口模塊、網絡功能模塊及基本外圍電路。數據采集器硬件框架如圖2所示。核心模塊采用Freescale公司生產的i.MX6Q核心平臺,其集成了Cortex-A9四核處理器,工作頻率可達1GHz,搭載了2GB的DDR3內存以及8GB的eMMCFlash;同時支持以太網、CAN總線、UART等接口驅動;支持Linux操作系統,滿足本數據采集器硬、軟件的開發需求。在電源模塊的設計上,數據采集器需要為自身處理器、各控制芯片供電。根據工業設備常用電源,最終選定采用24VDC電源輸入,穩壓輸出5V、3.3V電源。RS-232及CAN總線接口電路如圖3所示。本文的數據采集器面向工業通用接口,因此圖2中與各類傳感器連接的RS-232接口及CNA總線接口電路模塊主要包含RS-232模塊、CAN總線、以太網模塊。RS-232模塊主要依靠MAX232芯片進行晶體管-晶體管邏輯電平信號(transistor-transistorlogic,TTL)電平與RS-232電平之間的轉換,TTL電平與核心模塊串口輸入/輸出接口直接相連。對于CAN總線模塊,由于核心模塊具備了CAN總線控制器的功能,因此只需要增加CAN收發器即可。此處選用的是MCP2551芯片。

3軟件系統設計

3.1數據采集器功能架構

根據功能定義,數據采集器需要完成實時數據采集以及Web實時配置訪問兩大功能。數據采集器軟件功能構架如圖4所示。Web實時配置訪問功能是指將采集器作為服務器為用戶開放一個Web界面,用戶不需要修改采集器內部軟件,通過此界面便可增加、刪除傳感器,配置各傳感器的解析協議、地址等參數。同時可以觀察數據采集器內部數據庫的摘要內容,了解數據采集器的運行狀態。實時數據采集功能(dataacquisition,DAQ)是數據采集器的核心功能,主要包含本地自檢功能,面向多個通信的傳感器采集、處理功能以及遠程傳輸功能。

3.2嵌入式Linux運行環境搭建

Linux運行環境搭建是指在i.MX6Q核心板上移植Linux系統,主要步驟如下。①配置編譯環境。在計算機端的虛擬機中安裝ubuntu16.04系統,安裝gcc-5.3.1版本交叉編譯器,并配置相關環境變量。②獲取系統源碼。本系統使用的是由天嵌公司提供的TQIMX6_linux_v3.0源碼包(4.1內核)以及相應的u-boot源碼。③進行內核配置。在編譯源碼前,運行makemenuconfig配置系統功能,主要打開串口設備、CAN總線設備的相關配置。④編譯源碼。分別進入Linux源碼和u-boot源碼根目錄,運行編譯腳本,進行內核編譯和u-boot編譯。⑤燒錄系統。將編譯完成的zImage文件和dtb文件存入mfgtools工具中,通過USB連接線進行系統燒錄。

4實時配置訪問功能設計

實時配置訪問功能是指數據采集器為用戶開放Web頁面,用戶可以通過網絡靈活配置數據采集器的參數,同時獲知其中數據庫的存儲情況。以下將從XML配置文件設計、數據庫設計以及Web服務器的開發三方面介紹具體實現方法。

4.1XML配置文件設計

由于該數據采集器主要面向通用的工作環境,因此有必要設計合適的配置文件以描述系統的各項參數。配置文件的載體并不統一,常用的主要有INI配置文件、XML配置文件或系統注冊表等。本數據采集器選用帶有樹形層次結構、且方便擴展的XML文件[2]。XML配置文件樹型結構如圖5所示。SYS為根節點,第一層分為LOCAL、REMOTE、DAQ三部分,分別代表本地參數、遠程服務器參數及傳感器參數。第二層是第一層的子節點元素,描述了詳細的參數設定。其中DAQ下屬二級節點中,包含的是屬性值num唯一且互不相同的多個Sensor節點,Sensor節點下的三級節點描述了詳細的傳感器參數設置。

4.2數據庫設計

隨著嵌入式設備硬件的升級,目前嵌入式系統中可以支持加入輕量級或中低量級的數據庫。通過加入數據庫,可以有序地儲存采集到的數據,同時記錄系統的運行狀態。嵌入式Linux系統中常用的數據庫為SQlite或Mysql。SQlite的優點是功能簡約、小型化、上層應用可以直接訪問數據文件,缺點是沒有用戶管理并且不支持并行讀寫。Mysql數據庫優點是功能全面,有線程池機制,追求最大并發效率[3],缺點是占用空間較大。考慮到本系統中儲存空間充足,且Mysql需要并發操作,因此選用Mysql數據庫,且選用MyIASM傳統數據庫引擎[4]。根據功能需求,為數據采集器設計了兩個主要表,即daq_status_tb表和data_store_tb表,分別用于儲存DAQ軟件的運行狀態以及各傳感器的數據。data_store_tb表和設計如表1和表2所示。

4.3Web服務器搭建

數據采集器中的Web服務器主要提供了操作XML配置文件和讀取數據庫的接口。本數據采集器選用Apache服務器并配合LAMP(Linux、apache、Mysql、PHP)架構進行開發,同時使用javascript、Ajax等技術以增強頁面交互性。Web服務器的主要操作對象是數據采集器內的XML配置文件以及Mysql數據庫。LAMP架構訪問原理如圖6所示。用戶通過瀏覽器向服務器發送http請求,Apache服務器接受請求后,調用php處理模塊進行php腳本的處理,進行XML文件的讀寫或Mysql的讀寫。Apache服務器接收php腳本的返回信息,并將結果發送給瀏覽器。瀏覽器解析后將數據呈現至整個網頁。用戶可通過Web瀏覽器實現對數據采集器的配置和監控。

5實時數據采集功能設計與實現

實時數據采集功能主要在Linux平臺上使用C/C++語言進行開發,結合多進程、多線程、驅動開發等技術以保證整體軟件的穩定運行[5]。下面將介紹整體軟件流程以及基本功能的設計與實現。

5.1整體軟件流程

實時數據采集功能中包含的三個并發運行的功能(本地自檢、傳感器采集、遠程轉發),但又互相關聯的。本設計中提出使用Linux系統中的多進程技術來實現三個功能的同時協調運作[6]。多進程技術與多線程技術相比,優勢在于不同進程享有獨立的資源,相互影響較少。針對其中傳感器采集功能,有三個重要指標:高速性、連續性和并發性。采集過程中可能會對多種傳感器同時進行高頻率采集。本設計提出使用Linux系統中的多線程技術來實現多路傳感器的并發采集、轉發功能。整體系統程序流程如圖7所示。軟件系統通過三次fork()函數向Linux內核申請資源,獲得MONITOR、DAQ、REMOTE三個進程。MONITOR即監控進程,負責實時讀取XML配置文件內容、監控REMOTE、DAQ進程的狀況并向Mysql數據庫寫入數據采集器狀態。REMOTE即遠程連接進程,負責建立、維持與遠程服務器的連接,同時定時獲取并轉發共享數據緩沖區的內容。DAQ即數據采集進程,負責多路傳感器的數據采集和處理。DAQ進程會根據配置文件中的傳感器數量生成相同數量的采集線程,每個采集線程在初始化后,依序循環實現數據采集、預處理及轉發功能。多個采集線程會將采集結果轉發至系統的共享內存中,由REMOTE進程進行統一轉發。三個進程間互有關聯,都需要訪問配置屬性、數據緩沖區等參數。此部分主要通過共享內存與信號量以實現進程間的互斥通信。

5.2本地自檢功能設計

本地自檢功能主要由MONITOR進程實現。該進程會定時對比XML配置文件內容。當檢測到XML配置文件被改變時,會向REMOTE和DAQ進程發出kill信號,然后創建新的REMOTE進程和DAQ進程。如此便可在不重啟整個軟件的情況下改變系統的參數配置。MONITOR進程會定時檢測REMOTE、DAQ進程的存活情況,并在Mysql數據庫中寫入數據采集器的狀態。

5.3傳感器采集功能設計

單個傳感器的數據采集是由DAQ進程生成的采集線程來實現的。每個線程根據傳感器的不同種類調用不同的初始化函數,然后循環實現數據采集、處理及轉發功能,如圖7中DAQ多線程部分所示。

5.3.1采集接口初始化本數據采集器所面向的是工業中常用的RS-232/RS-485總線(如ModbusRTU協議)、以太網總線(如ModbusTCP協議)以及CAN總線。接口初始化與驅動層間關系如圖8所示。在進行傳感器初始化時,程序需要調用與硬件底層驅動相關的文件或函數,例如啟動RS-232/RS-485總線需要調用uart.c中的串口初始化函數,啟動以太網總線需要調用socket.c中的socket套接字函數。初始化后,通過對虛擬文件系統(virtualfilesystem,VFS)的讀寫訪問,即可實現對硬件設備的讀寫[7]。

5.3.2數據預處理數據預處理過程是對原始數據進行簡單解包、數據類型轉化并儲存的過程。定義每條數據的格式主要包含數據類型、傳感器序號、數據包序號、實際數量及采集時間。傳感器序號用一字節表示,數據包序號用兩字節(16進制)表示,格式之間用“,”逗號分隔。單個數據包格式如圖9所示。經預處理后的數據將會被儲存至Mysql數據庫作為備份,同時被轉存至轉發緩沖區中,等待REMOTE進程進行統一轉發。

5.3.3數據同步轉發及轉發緩沖區設計整個系統中,REMOTE進程和多個采集線程會頻繁地并發操作轉發緩沖區,因此需要避免對內存的誤讀寫操作,否則容易造成內存越界而導致軟件崩潰。針對并發讀寫的緩沖區,一種有效的方案是采用環形緩沖區結構[8]。環形緩沖區是一種先進先出模型,可為頻繁讀寫緩沖區的過程減少操作步驟。數據采集系統中的讀寫操作及環形緩沖區結構如圖10所示。系統中的環形緩沖區主要儲存字符數組的地址,本系統中定義每個字符數組空間為64字節,環形緩沖區總大小為64個元素(即k=64)。環形緩沖區內定義了head和tail兩個指針,分別用于讀、寫操作,tail和head之間的灰色區域表示緩沖區內已有數據。緩沖區的讀寫采用操作系統中經典的“生產者-消費者”模型[9]。REMOTE進程負責從緩沖區中取數據,主要操作head指針,各個采集線程負責往緩沖區內寫數據,操作tail指針。此處的操作是面向共享內存的操作,因此添加了信號量來實現多進程間的互斥訪問:semop(wait)代表取信號的函數。若緩沖區正在被其他函數操作,即會阻塞掛起,直至獲取信號;semop(release)代表釋放當前占用的信號[10]。該環形緩沖區有兩個特殊的設定:一是總是保持一個存儲單元為空,用于區分緩沖區內“滿”和“空”的情況;二是允許覆蓋緩沖區數據,即在進行寫操作過程中,若緩沖區已滿,則以新數據覆蓋舊數據。

5.4遠程轉發功能設計

遠程轉發功能由REMOTE進程實現,主要實現建立遠程服務器TCP連接、定時發送心跳包以及打包發送數據。其中,心跳包功能中會實時判斷網絡連通狀況。數據打包協議如圖11所示。在實際應用中,每個傳感器的采集頻率fn不盡相同,REMOTE進程向服務器發送數據的頻率也不易確定。本系統中,由用戶自行設置統一發送頻率F,REMOTE進程會根據統一頻率F定時獲取環形緩沖區內數據,進行統一打包、發送數據。這樣做的好處是可以靈活處理發送頻率:當數據實時性要求較高時,設置統一轉發頻率F高于傳感器的頻率fn,即可實時發送每個數據;當數據實時性要求不高時,可以設置統一轉發頻率F最低,同時打包多項數據,節約網絡資源。協議首部CMD代表操作請求號;daqSerial代表當前數據采集器的序列號,用于區分不同數據采集器;SensorNum代表當前在線的傳感器數量;dataNum代表正文中數據包數量;headLen代表首部長度。正文部分是各個數據包的內容,以換行符區分。

6結束語

本文主要介紹了基于i.MX6Q核心芯片及嵌入式Linux的工業通用數據采集器設計,完成了采集器硬件系統的設計、基于LAMP架構的Web服務器搭建,以及C/C++數據采集軟件的編寫與測試;實現了數據采集器實時配置、多路并發采集儲存數據、遠程轉發數據等功能。與傳統的數據采集器相比,本文設計不僅通用性更強,而且配置操作更加人性化、網絡化。系統著重關注多路數據采集的并發性設計以及實際應用的通用性,主要通過多進程、多線程的設計以保證系統各功能的穩定運行,同時通過環形緩沖區數據結構和信號量的操作以實現多路數據的并發讀寫。測試過程中,上位服務器可以穩定、準確地接收多個Modbus協議傳感器的數據。

參考文獻:

[1]繆學勤.工業4.0推動機電一體化走向智能技術系統[J].自動化儀表,2016,37(1):1-5.

[2]陳平平,張永超,李長森.基于XML配置管理方法的研究[J].計算機工程與設計,2005,26(8):2089-2091.

作者:趙炯 楊天豪 肖杰 熊肖磊 單位:同濟大學機械與能源工程學院

主站蜘蛛池模板: 国产精品久久久久影院免费 | 亚洲国产综合自在线另类 | 亚洲视频网站在线观看 | 日韩精品在线观看免费 | 国产精品午夜波多野结衣性色 | 自拍视频网站 | 欧美日韩不卡码一区二区三区 | 亚洲视频在线精品 | 亚洲福利一区福利三区 | 丝袜天堂 | 樱花aⅴ一区二区三区四区 亚洲天堂男人的天堂 | 九月婷婷丁香 | 手机免费在线视频 | 波多野结衣手机在线观看 | 国产在线精品成人一区二区三区 | 四虎影视精品 | 99热精品一区 | 偷拍电影网站 | 久久久久久亚洲精品不卡 | 在线看一区| 国产色网 | 最新国产在线观看福利 | 国产一区日韩二区欧美三 | 亚洲欧美在线综合一区二区三区 | 亚洲电影免费在线看精品国产 | 波多野结衣高清在线观看 | 羽田真理n1170在线播放 | 羞羞视频网站在线观看 | 一级片 在线播放 | 伊人网站在线观看 | 久久国产精品二国产精品 | 亚洲国产精品67194成人 | 伊人伊人网 | 日韩欧美不卡一区二区三区 | 国产精品1234区 | 亚洲福利一区二区精品秒拍 | 中文字幕国产亚洲 | 久热这里只精品热在线观看 | 午夜在线视频免费 | 婷婷四房综合激情五月性色 | 三级韩国一区久久二区综合 |