• 
    

    
    

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

      通用嵌入式遠程數(shù)據(jù)采集器研究與設計

      2019-01-30 07:15:56楊天豪熊肖磊
      自動化儀表 2019年1期
      關鍵詞:配置文件采集器緩沖區(qū)

      趙 炯,楊天豪,肖 杰,熊肖磊

      (同濟大學機械與能源工程學院,上海 201804)

      0 引言

      隨著工業(yè)4.0、智能系統(tǒng)、物聯(lián)網(wǎng)[1]的發(fā)展,對于各類傳感器的采集、應用需求愈發(fā)增大。工業(yè)數(shù)據(jù)采集器的采集對象大多是RS-232/RS-485、CAN總線接口或以太網(wǎng)接口的傳感器。在目前的工程應用中,常用的智能采集系統(tǒng)架構有“傳感器-可編程邏輯控制器(programmable logic controller,PLC)-計算機監(jiān)控系統(tǒng)”和“傳感器-串口服務器-計算機解析”模式。前者價格高昂且依賴PLC開發(fā);后者則只能適用于RS-232/RS-485接口,不易進行網(wǎng)絡擴展,且在軟件開發(fā)時需要進行Modbus等底層協(xié)議的解析。

      在嵌入式系統(tǒng)成本大大降低,應用范圍日漸廣泛的背景下,針對目前數(shù)據(jù)采集系統(tǒng)搭建、開發(fā)過程復雜的問題,本文設計了一種適用于工業(yè)通用采集接口、便于個性化配置、面向多傳感器并發(fā)讀寫的嵌入式遠程數(shù)據(jù)采集器。

      1 數(shù)據(jù)采集器總體設計

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

      圖1 數(shù)據(jù)采集應用系統(tǒng)框架

      2 硬件系統(tǒng)設計

      根據(jù)嵌入式系統(tǒng)的硬件設計原理及本數(shù)據(jù)采集器的需求,本數(shù)據(jù)采集器包括以下主要模塊:核心模塊、電源模塊、采集接口模塊、網(wǎng)絡功能模塊及基本外圍電路。數(shù)據(jù)采集器硬件框架如圖2所示。

      圖2 數(shù)據(jù)采集器硬件框架圖

      核心模塊采用Freescale公司生產(chǎn)的i.MX6Q核心平臺,其集成了Cortex-A9四核處理器,工作頻率可達1 GHz,搭載了2 GB的DDR3內存以及8 GB的eMMC Flash;同時支持以太網(wǎng)、CAN總線、UART等接口驅動;支持Linux操作系統(tǒng),滿足本數(shù)據(jù)采集器硬、軟件的開發(fā)需求。

      在電源模塊的設計上,數(shù)據(jù)采集器需要為自身處理器、各控制芯片供電。根據(jù)工業(yè)設備常用電源,最終選定采用24 VDC電源輸入,穩(wěn)壓輸出5 V、3.3 V電源。RS-232及CAN總線接口電路如圖3所示。

      本文的數(shù)據(jù)采集器面向工業(yè)通用接口,因此圖2中與各類傳感器連接的RS-232接口及CNA總線接口電路模塊主要包含RS-232模塊、CAN總線、以太網(wǎng)模塊。

      圖3 RS-232及CAN總線接口電路

      RS-232模塊主要依靠MAX232芯片進行晶體管-晶體管邏輯電平信號(transistor-transistor logic,TTL)電平與RS-232電平之間的轉換,TTL電平與核心模塊串口輸入/輸出接口直接相連。對于CAN總線模塊,由于核心模塊具備了CAN總線控制器的功能,因此只需要增加CAN收發(fā)器即可。此處選用的是MCP2551芯片。

      3 軟件系統(tǒng)設計

      3.1 數(shù)據(jù)采集器功能架構

      根據(jù)功能定義,數(shù)據(jù)采集器需要完成實時數(shù)據(jù)采集以及Web實時配置訪問兩大功能。數(shù)據(jù)采集器軟件功能構架如圖4所示。

      圖4 數(shù)據(jù)采集器軟件功能構架圖

      Web實時配置訪問功能是指將采集器作為服務器為用戶開放一個Web界面,用戶不需要修改采集器內部軟件,通過此界面便可增加、刪除傳感器,配置各傳感器的解析協(xié)議、地址等參數(shù)。同時可以觀察數(shù)據(jù)采集器內部數(shù)據(jù)庫的摘要內容,了解數(shù)據(jù)采集器的運行狀態(tài)。

      實時數(shù)據(jù)采集功能(data acquisition,DAQ)是數(shù)據(jù)采集器的核心功能,主要包含本地自檢功能,面向多個通信的傳感器采集、處理功能以及遠程傳輸功能。

      3.2 嵌入式Linux運行環(huán)境搭建

      Linux運行環(huán)境搭建是指在i.MX6Q核心板上移植Linux系統(tǒng),主要步驟如下。

      ①配置編譯環(huán)境。在計算機端的虛擬機中安裝ubuntu 16.04系統(tǒng),安裝gcc-5.3.1 版本交叉編譯器,并配置相關環(huán)境變量。

      ②獲取系統(tǒng)源碼。本系統(tǒng)使用的是由天嵌公司提供的TQIMX6_linux_v3.0源碼包(4.1內核)以及相應的u-boot源碼。

      ③進行內核配置。在編譯源碼前,運行make menuconfig配置系統(tǒng)功能,主要打開串口設備、CAN總線設備的相關配置。

      ④編譯源碼。分別進入Linux源碼和u-boot源碼根目錄,運行編譯腳本,進行內核編譯和u-boot編譯。

      ⑤燒錄系統(tǒng)。將編譯完成的zImage文件和dtb文件存入mfgtools工具中,通過USB連接線進行系統(tǒng)燒錄。

      4 實時配置訪問功能設計

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

      4.1 XML配置文件設計

      由于該數(shù)據(jù)采集器主要面向通用的工作環(huán)境,因此有必要設計合適的配置文件以描述系統(tǒng)的各項參數(shù)。配置文件的載體并不統(tǒng)一,常用的主要有INI配置文件、XML配置文件或系統(tǒng)注冊表等。本數(shù)據(jù)采集器選用帶有樹形層次結構、且方便擴展的XML文件[2]。

      XML配置文件樹型結構如圖5所示。

      圖5 XML配置文件樹型結構圖

      SYS為根節(jié)點,第一層分為LOCAL、REMOTE、DAQ三部分,分別代表本地參數(shù)、遠程服務器參數(shù)及傳感器參數(shù)。第二層是第一層的子節(jié)點元素,描述了詳細的參數(shù)設定。其中DAQ下屬二級節(jié)點中,包含的是屬性值num唯一且互不相同的多個Sensor節(jié)點,Sensor節(jié)點下的三級節(jié)點描述了詳細的傳感器參數(shù)設置。

      4.2 數(shù)據(jù)庫設計

      隨著嵌入式設備硬件的升級,目前嵌入式系統(tǒng)中可以支持加入輕量級或中低量級的數(shù)據(jù)庫。通過加入數(shù)據(jù)庫,可以有序地儲存采集到的數(shù)據(jù),同時記錄系統(tǒng)的運行狀態(tài)。

      嵌入式Linux系統(tǒng)中常用的數(shù)據(jù)庫為SQlite或Mysql。SQlite的優(yōu)點是功能簡約、小型化、上層應用可以直接訪問數(shù)據(jù)文件,缺點是沒有用戶管理并且不支持并行讀寫。Mysql數(shù)據(jù)庫優(yōu)點是功能全面,有線程池機制,追求最大并發(fā)效率[3],缺點是占用空間較大??紤]到本系統(tǒng)中儲存空間充足,且Mysql需要并發(fā)操作,因此選用Mysql數(shù)據(jù)庫,且選用MyIASM傳統(tǒng)數(shù)據(jù)庫引擎[4]。

      根據(jù)功能需求,為數(shù)據(jù)采集器設計了兩個主要表,即daq_status_tb表和data_store_tb表,分別用于儲存DAQ軟件的運行狀態(tài)以及各傳感器的數(shù)據(jù)。data_store_tb表和設計如表1和表2所示。

      表1 data_store_tb表設計

      表2 daq_status_tb表設計

      4.3 Web服務器搭建

      數(shù)據(jù)采集器中的Web服務器主要提供了操作XML配置文件和讀取數(shù)據(jù)庫的接口。本數(shù)據(jù)采集器選用Apache服務器并配合LAMP(Linux、apache、Mysql、PHP)架構進行開發(fā),同時使用javascript、Ajax等技術以增強頁面交互性。

      Web服務器的主要操作對象是數(shù)據(jù)采集器內的XML配置文件以及Mysql數(shù)據(jù)庫。LAMP架構訪問原理如圖6所示。

      圖6 LAMP架構訪問原理圖

      用戶通過瀏覽器向服務器發(fā)送http請求,Apache服務器接受請求后,調用php處理模塊進行php腳本的處理,進行XML文件的讀寫或Mysql的讀寫。Apache服務器接收php腳本的返回信息,并將結果發(fā)送給瀏覽器。瀏覽器解析后將數(shù)據(jù)呈現(xiàn)至整個網(wǎng)頁。用戶可通過Web瀏覽器實現(xiàn)對數(shù)據(jù)采集器的配置和監(jiān)控。

      5 實時數(shù)據(jù)采集功能設計與實現(xiàn)

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

      5.1 整體軟件流程

      實時數(shù)據(jù)采集功能中包含的三個并發(fā)運行的功能(本地自檢、傳感器采集、遠程轉發(fā)),但又互相關聯(lián)的。本設計中提出使用Linux系統(tǒng)中的多進程技術來實現(xiàn)三個功能的同時協(xié)調運作[6]。多進程技術與多線程技術相比,優(yōu)勢在于不同進程享有獨立的資源,相互影響較少。

      針對其中傳感器采集功能,有三個重要指標:高速性、連續(xù)性和并發(fā)性。采集過程中可能會對多種傳感器同時進行高頻率采集。本設計提出使用Linux系統(tǒng)中的多線程技術來實現(xiàn)多路傳感器的并發(fā)采集、轉發(fā)功能。

      整體系統(tǒng)程序流程如圖7所示。軟件系統(tǒng)通過三次fork()函數(shù)向Linux內核申請資源,獲得MONITOR、DAQ、REMOTE三個進程。

      圖7 整體系統(tǒng)程序流程圖

      MONITOR即監(jiān)控進程,負責實時讀取XML配置文件內容、監(jiān)控REMOTE、DAQ進程的狀況并向Mysql數(shù)據(jù)庫寫入數(shù)據(jù)采集器狀態(tài)。

      REMOTE即遠程連接進程,負責建立、維持與遠程服務器的連接,同時定時獲取并轉發(fā)共享數(shù)據(jù)緩沖區(qū)的內容。

      DAQ即數(shù)據(jù)采集進程,負責多路傳感器的數(shù)據(jù)采集和處理。DAQ進程會根據(jù)配置文件中的傳感器數(shù)量生成相同數(shù)量的采集線程,每個采集線程在初始化后,依序循環(huán)實現(xiàn)數(shù)據(jù)采集、預處理及轉發(fā)功能。多個采集線程會將采集結果轉發(fā)至系統(tǒng)的共享內存中,由REMOTE進程進行統(tǒng)一轉發(fā)。

      三個進程間互有關聯(lián),都需要訪問配置屬性、數(shù)據(jù)緩沖區(qū)等參數(shù)。此部分主要通過共享內存與信號量以實現(xiàn)進程間的互斥通信。

      5.2 本地自檢功能設計

      本地自檢功能主要由MONITOR進程實現(xiàn)。該進程會定時對比XML配置文件內容。當檢測到XML配置文件被改變時,會向REMOTE和DAQ進程發(fā)出kill信號,然后創(chuàng)建新的REMOTE進程和DAQ進程。如此便可在不重啟整個軟件的情況下改變系統(tǒng)的參數(shù)配置。

      MONITOR進程會定時檢測REMOTE、DAQ進程的存活情況,并在Mysql數(shù)據(jù)庫中寫入數(shù)據(jù)采集器的狀態(tài)。

      5.3 傳感器采集功能設計

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

      5.3.1 采集接口初始化

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

      圖8 接口初始化與驅動層間關系圖

      5.3.2 數(shù)據(jù)預處理

      數(shù)據(jù)預處理過程是對原始數(shù)據(jù)進行簡單解包、數(shù)據(jù)類型轉化并儲存的過程。定義每條數(shù)據(jù)的格式主要包含數(shù)據(jù)類型、傳感器序號、數(shù)據(jù)包序號、實際數(shù)量及采集時間。傳感器序號用一字節(jié)表示,數(shù)據(jù)包序號用兩字節(jié)(16進制)表示,格式之間用“,”逗號分隔。單個數(shù)據(jù)包格式如圖9所示。

      圖9 單個數(shù)據(jù)包格式

      經(jīng)預處理后的數(shù)據(jù)將會被儲存至Mysql數(shù)據(jù)庫作為備份,同時被轉存至轉發(fā)緩沖區(qū)中,等待REMOTE進程進行統(tǒng)一轉發(fā)。

      5.3.3 數(shù)據(jù)同步轉發(fā)及轉發(fā)緩沖區(qū)設計

      整個系統(tǒng)中,REMOTE進程和多個采集線程會頻繁地并發(fā)操作轉發(fā)緩沖區(qū),因此需要避免對內存的誤讀寫操作,否則容易造成內存越界而導致軟件崩潰。針對并發(fā)讀寫的緩沖區(qū),一種有效的方案是采用環(huán)形緩沖區(qū)結構[8]。

      環(huán)形緩沖區(qū)是一種先進先出模型,可為頻繁讀寫緩沖區(qū)的過程減少操作步驟。數(shù)據(jù)采集系統(tǒng)中的讀寫操作及環(huán)形緩沖區(qū)結構如圖10所示。

      系統(tǒng)中的環(huán)形緩沖區(qū)主要儲存字符數(shù)組的地址,本系統(tǒng)中定義每個字符數(shù)組空間為64字節(jié),環(huán)形緩沖區(qū)總大小為64個元素(即k=64)。環(huán)形緩沖區(qū)內定義了head和tail兩個指針,分別用于讀、寫操作,tail和head之間的灰色區(qū)域表示緩沖區(qū)內已有數(shù)據(jù)。

      圖10 讀寫操作及環(huán)形緩沖區(qū)結構圖

      緩沖區(qū)的讀寫采用操作系統(tǒng)中經(jīng)典的“生產(chǎn)者-消費者”模型[9]。REMOTE進程負責從緩沖區(qū)中取數(shù)據(jù),主要操作head指針,各個采集線程負責往緩沖區(qū)內寫數(shù)據(jù),操作tail指針。此處的操作是面向共享內存的操作,因此添加了信號量來實現(xiàn)多進程間的互斥訪問:semop(wait)代表取信號的函數(shù)。若緩沖區(qū)正在被其他函數(shù)操作,即會阻塞掛起,直至獲取信號;semop(release)代表釋放當前占用的信號[10]。

      該環(huán)形緩沖區(qū)有兩個特殊的設定:一是總是保持一個存儲單元為空,用于區(qū)分緩沖區(qū)內“滿”和“空”的情況;二是允許覆蓋緩沖區(qū)數(shù)據(jù),即在進行寫操作過程中,若緩沖區(qū)已滿,則以新數(shù)據(jù)覆蓋舊數(shù)據(jù)。

      5.4 遠程轉發(fā)功能設計

      遠程轉發(fā)功能由REMOTE進程實現(xiàn),主要實現(xiàn)建立遠程服務器TCP連接、定時發(fā)送心跳包以及打包發(fā)送數(shù)據(jù)。其中,心跳包功能中會實時判斷網(wǎng)絡連通狀況。

      數(shù)據(jù)打包協(xié)議如圖11所示。

      圖11 數(shù)據(jù)打包協(xié)議圖

      在實際應用中,每個傳感器的采集頻率fn不盡相同,REMOTE進程向服務器發(fā)送數(shù)據(jù)的頻率也不易確定。本系統(tǒng)中,由用戶自行設置統(tǒng)一發(fā)送頻率F,REMOTE進程會根據(jù)統(tǒng)一頻率F定時獲取環(huán)形緩沖區(qū)內數(shù)據(jù),進行統(tǒng)一打包、發(fā)送數(shù)據(jù)。這樣做的好處是可以靈活處理發(fā)送頻率:當數(shù)據(jù)實時性要求較高時,設置統(tǒng)一轉發(fā)頻率F高于傳感器的頻率fn,即可實時發(fā)送每個數(shù)據(jù);當數(shù)據(jù)實時性要求不高時,可以設置統(tǒng)一轉發(fā)頻率F最低,同時打包多項數(shù)據(jù),節(jié)約網(wǎng)絡資源。

      協(xié)議首部CMD代表操作請求號;daqSerial代表當前數(shù)據(jù)采集器的序列號,用于區(qū)分不同數(shù)據(jù)采集器;SensorNum代表當前在線的傳感器數(shù)量;dataNum代表正文中數(shù)據(jù)包數(shù)量;headLen代表首部長度。正文部分是各個數(shù)據(jù)包的內容,以換行符區(qū)分。

      6 結束語

      本文主要介紹了基于i.MX6Q核心芯片及嵌入式Linux的工業(yè)通用數(shù)據(jù)采集器設計,完成了采集器硬件系統(tǒng)的設計、基于LAMP架構的Web服務器搭建,以及C/C++數(shù)據(jù)采集軟件的編寫與測試;實現(xiàn)了數(shù)據(jù)采集器實時配置、多路并發(fā)采集儲存數(shù)據(jù)、遠程轉發(fā)數(shù)據(jù)等功能。與傳統(tǒng)的數(shù)據(jù)采集器相比,本文設計不僅通用性更強,而且配置操作更加人性化、網(wǎng)絡化。

      系統(tǒng)著重關注多路數(shù)據(jù)采集的并發(fā)性設計以及實際應用的通用性,主要通過多進程、多線程的設計以保證系統(tǒng)各功能的穩(wěn)定運行,同時通過環(huán)形緩沖區(qū)數(shù)據(jù)結構和信號量的操作以實現(xiàn)多路數(shù)據(jù)的并發(fā)讀寫。測試過程中,上位服務器可以穩(wěn)定、準確地接收多個Modbus協(xié)議傳感器的數(shù)據(jù)。

      猜你喜歡
      配置文件采集器緩沖區(qū)
      嵌入式系統(tǒng)環(huán)形緩沖區(qū)快速讀寫方法的設計與實現(xiàn)
      提示用戶配置文件錯誤 這樣解決
      COVID-19大便標本采集器的設計及應用
      搭建簡單的Kubernetes集群
      互不干涉混用Chromium Edge
      忘記ESXi主機root密碼怎么辦
      基于ZigBee的大型公共建筑能耗采集器設計
      基于LabVIEW的多數(shù)據(jù)采集器自動監(jiān)控軟件設計與開發(fā)
      關鍵鏈技術緩沖區(qū)的確定方法研究
      多接口溫濕度數(shù)據(jù)采集器的設計
      元江| 黄大仙区| 滁州市| 西城区| 洛川县| 永顺县| 沐川县| 民和| 桃园市| 宣武区| 册亨县| 永仁县| 织金县| 勐海县| 潮安县| 偃师市| 沾益县| 自治县| 驻马店市| 龙海市| 保德县| 丁青县| 江永县| 岳西县| 偏关县| 旬邑县| 建始县| 江阴市| 大名县| 赫章县| 察哈| 鄄城县| 阿克| 铁力市| 临潭县| 全椒县| 竹山县| 玉门市| 山东省| 吉隆县| 东丽区|