本站小編為你精心準(zhǔn)備了遠(yuǎn)程數(shù)據(jù)采集器研究及設(shè)計(jì)參考范文,愿這些范文能點(diǎn)燃您思維的火花,激發(fā)您的寫作靈感。歡迎深入閱讀并收藏。
摘要:針對(duì)目前工業(yè)上數(shù)據(jù)采集系統(tǒng)搭建過程復(fù)雜、開發(fā)自由度較低的情況,提出了一種面向工業(yè)應(yīng)用的通用遠(yuǎn)程數(shù)據(jù)采集器設(shè)計(jì)方案。數(shù)據(jù)采集器采用基于i.MX6Q芯片設(shè)計(jì)的硬件電路,以嵌入式Linux操作系統(tǒng)為軟件基礎(chǔ),針對(duì)工業(yè)上通用的Modbus、CAN等協(xié)議,實(shí)現(xiàn)了數(shù)據(jù)采集、儲(chǔ)存及遠(yuǎn)程轉(zhuǎn)發(fā)等基本功能。考慮到多傳感器并發(fā)采集時(shí)對(duì)響應(yīng)性能的影響,提出了基于多進(jìn)程同步采集的機(jī)制以及使用了環(huán)形緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)。針對(duì)工業(yè)上對(duì)數(shù)據(jù)采集系統(tǒng)的擴(kuò)展性及靈活性需求,引入了基于Web服務(wù)器及數(shù)據(jù)庫的實(shí)時(shí)配置功能。試驗(yàn)測(cè)試驗(yàn)證了該系統(tǒng)在采集多個(gè)Modbus傳感器時(shí)的正確性與可行性,為嵌入式Linux數(shù)據(jù)采集器的開發(fā)提供了思路。
關(guān)鍵詞:數(shù)據(jù)采集;嵌入式;Linux;工業(yè)總線;Web服務(wù)器;環(huán)形緩沖區(qū);遠(yuǎn)程監(jiān)控;并發(fā)性
引言
隨著工業(yè)4.0、智能系統(tǒng)、物聯(lián)網(wǎng)[1]的發(fā)展,對(duì)于各類傳感器的采集、應(yīng)用需求愈發(fā)增大。工業(yè)數(shù)據(jù)采集器的采集對(duì)象大多是RS-232/RS-485、CAN總線接口或以太網(wǎng)接口的傳感器。在目前的工程應(yīng)用中,常用的智能采集系統(tǒng)架構(gòu)有“傳感器-可編程邏輯控制器(programmablelogiccontroller,PLC)-計(jì)算機(jī)監(jiān)控系統(tǒng)”和“傳感器-串口服務(wù)器-計(jì)算機(jī)解析”模式。前者價(jià)格高昂且依賴PLC開發(fā);后者則只能適用于RS-232/RS-485接口,不易進(jìn)行網(wǎng)絡(luò)擴(kuò)展,且在軟件開發(fā)時(shí)需要進(jìn)行Modbus等底層協(xié)議的解析。在嵌入式系統(tǒng)成本大大降低,應(yīng)用范圍日漸廣泛的背景下,針對(duì)目前數(shù)據(jù)采集系統(tǒng)搭建、開發(fā)過程復(fù)雜的問題,本文設(shè)計(jì)了一種適用于工業(yè)通用采集接口、便于個(gè)性化配置、面向多傳感器并發(fā)讀寫的嵌入式遠(yuǎn)程數(shù)據(jù)采集器。
1數(shù)據(jù)采集器總體設(shè)計(jì)
結(jié)合工業(yè)數(shù)據(jù)采集應(yīng)用場(chǎng)合,數(shù)據(jù)采集應(yīng)用系統(tǒng)框架如圖1所示。整個(gè)系統(tǒng)主要由數(shù)據(jù)采集器、多個(gè)傳感器以及遠(yuǎn)程監(jiān)控中心構(gòu)成。數(shù)據(jù)采集器與數(shù)個(gè)傳感器直接相連,同時(shí)通過自身的3G/4G功能或以太網(wǎng)與遠(yuǎn)程監(jiān)控中心間接相連。數(shù)據(jù)采集器負(fù)責(zé)根據(jù)用戶配置分別采集各個(gè)傳感器數(shù)據(jù),經(jīng)處理后直接轉(zhuǎn)發(fā)至遠(yuǎn)程監(jiān)控中心。
2硬件系統(tǒng)設(shè)計(jì)
根據(jù)嵌入式系統(tǒng)的硬件設(shè)計(jì)原理及本數(shù)據(jù)采集器的需求,本數(shù)據(jù)采集器包括以下主要模塊:核心模塊、電源模塊、采集接口模塊、網(wǎng)絡(luò)功能模塊及基本外圍電路。數(shù)據(jù)采集器硬件框架如圖2所示。核心模塊采用Freescale公司生產(chǎn)的i.MX6Q核心平臺(tái),其集成了Cortex-A9四核處理器,工作頻率可達(dá)1GHz,搭載了2GB的DDR3內(nèi)存以及8GB的eMMCFlash;同時(shí)支持以太網(wǎng)、CAN總線、UART等接口驅(qū)動(dòng);支持Linux操作系統(tǒng),滿足本數(shù)據(jù)采集器硬、軟件的開發(fā)需求。在電源模塊的設(shè)計(jì)上,數(shù)據(jù)采集器需要為自身處理器、各控制芯片供電。根據(jù)工業(yè)設(shè)備常用電源,最終選定采用24VDC電源輸入,穩(wěn)壓輸出5V、3.3V電源。RS-232及CAN總線接口電路如圖3所示。本文的數(shù)據(jù)采集器面向工業(yè)通用接口,因此圖2中與各類傳感器連接的RS-232接口及CNA總線接口電路模塊主要包含RS-232模塊、CAN總線、以太網(wǎng)模塊。RS-232模塊主要依靠MAX232芯片進(jìn)行晶體管-晶體管邏輯電平信號(hào)(transistor-transistorlogic,TTL)電平與RS-232電平之間的轉(zhuǎn)換,TTL電平與核心模塊串口輸入/輸出接口直接相連。對(duì)于CAN總線模塊,由于核心模塊具備了CAN總線控制器的功能,因此只需要增加CAN收發(fā)器即可。此處選用的是MCP2551芯片。
3軟件系統(tǒng)設(shè)計(jì)
3.1數(shù)據(jù)采集器功能架構(gòu)
根據(jù)功能定義,數(shù)據(jù)采集器需要完成實(shí)時(shí)數(shù)據(jù)采集以及Web實(shí)時(shí)配置訪問兩大功能。數(shù)據(jù)采集器軟件功能構(gòu)架如圖4所示。Web實(shí)時(shí)配置訪問功能是指將采集器作為服務(wù)器為用戶開放一個(gè)Web界面,用戶不需要修改采集器內(nèi)部軟件,通過此界面便可增加、刪除傳感器,配置各傳感器的解析協(xié)議、地址等參數(shù)。同時(shí)可以觀察數(shù)據(jù)采集器內(nèi)部數(shù)據(jù)庫的摘要內(nèi)容,了解數(shù)據(jù)采集器的運(yùn)行狀態(tài)。實(shí)時(shí)數(shù)據(jù)采集功能(dataacquisition,DAQ)是數(shù)據(jù)采集器的核心功能,主要包含本地自檢功能,面向多個(gè)通信的傳感器采集、處理功能以及遠(yuǎn)程傳輸功能。
3.2嵌入式Linux運(yùn)行環(huán)境搭建
Linux運(yùn)行環(huán)境搭建是指在i.MX6Q核心板上移植Linux系統(tǒng),主要步驟如下。①配置編譯環(huán)境。在計(jì)算機(jī)端的虛擬機(jī)中安裝ubuntu16.04系統(tǒng),安裝gcc-5.3.1版本交叉編譯器,并配置相關(guān)環(huán)境變量。②獲取系統(tǒng)源碼。本系統(tǒng)使用的是由天嵌公司提供的TQIMX6_linux_v3.0源碼包(4.1內(nèi)核)以及相應(yīng)的u-boot源碼。③進(jìn)行內(nèi)核配置。在編譯源碼前,運(yùn)行makemenuconfig配置系統(tǒng)功能,主要打開串口設(shè)備、CAN總線設(shè)備的相關(guān)配置。④編譯源碼。分別進(jìn)入Linux源碼和u-boot源碼根目錄,運(yùn)行編譯腳本,進(jìn)行內(nèi)核編譯和u-boot編譯。⑤燒錄系統(tǒng)。將編譯完成的zImage文件和dtb文件存入mfgtools工具中,通過USB連接線進(jìn)行系統(tǒng)燒錄。
4實(shí)時(shí)配置訪問功能設(shè)計(jì)
實(shí)時(shí)配置訪問功能是指數(shù)據(jù)采集器為用戶開放Web頁面,用戶可以通過網(wǎng)絡(luò)靈活配置數(shù)據(jù)采集器的參數(shù),同時(shí)獲知其中數(shù)據(jù)庫的存儲(chǔ)情況。以下將從XML配置文件設(shè)計(jì)、數(shù)據(jù)庫設(shè)計(jì)以及Web服務(wù)器的開發(fā)三方面介紹具體實(shí)現(xiàn)方法。
4.1XML配置文件設(shè)計(jì)
由于該數(shù)據(jù)采集器主要面向通用的工作環(huán)境,因此有必要設(shè)計(jì)合適的配置文件以描述系統(tǒng)的各項(xiàng)參數(shù)。配置文件的載體并不統(tǒng)一,常用的主要有INI配置文件、XML配置文件或系統(tǒng)注冊(cè)表等。本數(shù)據(jù)采集器選用帶有樹形層次結(jié)構(gòu)、且方便擴(kuò)展的XML文件[2]。XML配置文件樹型結(jié)構(gòu)如圖5所示。SYS為根節(jié)點(diǎn),第一層分為LOCAL、REMOTE、DAQ三部分,分別代表本地參數(shù)、遠(yuǎn)程服務(wù)器參數(shù)及傳感器參數(shù)。第二層是第一層的子節(jié)點(diǎn)元素,描述了詳細(xì)的參數(shù)設(shè)定。其中DAQ下屬二級(jí)節(jié)點(diǎn)中,包含的是屬性值num唯一且互不相同的多個(gè)Sensor節(jié)點(diǎn),Sensor節(jié)點(diǎn)下的三級(jí)節(jié)點(diǎn)描述了詳細(xì)的傳感器參數(shù)設(shè)置。
4.2數(shù)據(jù)庫設(shè)計(jì)
隨著嵌入式設(shè)備硬件的升級(jí),目前嵌入式系統(tǒng)中可以支持加入輕量級(jí)或中低量級(jí)的數(shù)據(jù)庫。通過加入數(shù)據(jù)庫,可以有序地儲(chǔ)存采集到的數(shù)據(jù),同時(shí)記錄系統(tǒng)的運(yùn)行狀態(tài)。嵌入式Linux系統(tǒng)中常用的數(shù)據(jù)庫為SQlite或Mysql。SQlite的優(yōu)點(diǎn)是功能簡約、小型化、上層應(yīng)用可以直接訪問數(shù)據(jù)文件,缺點(diǎn)是沒有用戶管理并且不支持并行讀寫。Mysql數(shù)據(jù)庫優(yōu)點(diǎn)是功能全面,有線程池機(jī)制,追求最大并發(fā)效率[3],缺點(diǎn)是占用空間較大。考慮到本系統(tǒng)中儲(chǔ)存空間充足,且Mysql需要并發(fā)操作,因此選用Mysql數(shù)據(jù)庫,且選用MyIASM傳統(tǒng)數(shù)據(jù)庫引擎[4]。根據(jù)功能需求,為數(shù)據(jù)采集器設(shè)計(jì)了兩個(gè)主要表,即daq_status_tb表和data_store_tb表,分別用于儲(chǔ)存DAQ軟件的運(yùn)行狀態(tài)以及各傳感器的數(shù)據(jù)。data_store_tb表和設(shè)計(jì)如表1和表2所示。
4.3Web服務(wù)器搭建
數(shù)據(jù)采集器中的Web服務(wù)器主要提供了操作XML配置文件和讀取數(shù)據(jù)庫的接口。本數(shù)據(jù)采集器選用Apache服務(wù)器并配合LAMP(Linux、apache、Mysql、PHP)架構(gòu)進(jìn)行開發(fā),同時(shí)使用javascript、Ajax等技術(shù)以增強(qiáng)頁面交互性。Web服務(wù)器的主要操作對(duì)象是數(shù)據(jù)采集器內(nèi)的XML配置文件以及Mysql數(shù)據(jù)庫。LAMP架構(gòu)訪問原理如圖6所示。用戶通過瀏覽器向服務(wù)器發(fā)送http請(qǐng)求,Apache服務(wù)器接受請(qǐng)求后,調(diào)用php處理模塊進(jìn)行php腳本的處理,進(jìn)行XML文件的讀寫或Mysql的讀寫。Apache服務(wù)器接收php腳本的返回信息,并將結(jié)果發(fā)送給瀏覽器。瀏覽器解析后將數(shù)據(jù)呈現(xiàn)至整個(gè)網(wǎng)頁。用戶可通過Web瀏覽器實(shí)現(xiàn)對(duì)數(shù)據(jù)采集器的配置和監(jiān)控。
5實(shí)時(shí)數(shù)據(jù)采集功能設(shè)計(jì)與實(shí)現(xiàn)
實(shí)時(shí)數(shù)據(jù)采集功能主要在Linux平臺(tái)上使用C/C++語言進(jìn)行開發(fā),結(jié)合多進(jìn)程、多線程、驅(qū)動(dòng)開發(fā)等技術(shù)以保證整體軟件的穩(wěn)定運(yùn)行[5]。下面將介紹整體軟件流程以及基本功能的設(shè)計(jì)與實(shí)現(xiàn)。
5.1整體軟件流程
實(shí)時(shí)數(shù)據(jù)采集功能中包含的三個(gè)并發(fā)運(yùn)行的功能(本地自檢、傳感器采集、遠(yuǎn)程轉(zhuǎn)發(fā)),但又互相關(guān)聯(lián)的。本設(shè)計(jì)中提出使用Linux系統(tǒng)中的多進(jìn)程技術(shù)來實(shí)現(xiàn)三個(gè)功能的同時(shí)協(xié)調(diào)運(yùn)作[6]。多進(jìn)程技術(shù)與多線程技術(shù)相比,優(yōu)勢(shì)在于不同進(jìn)程享有獨(dú)立的資源,相互影響較少。針對(duì)其中傳感器采集功能,有三個(gè)重要指標(biāo):高速性、連續(xù)性和并發(fā)性。采集過程中可能會(huì)對(duì)多種傳感器同時(shí)進(jìn)行高頻率采集。本設(shè)計(jì)提出使用Linux系統(tǒng)中的多線程技術(shù)來實(shí)現(xiàn)多路傳感器的并發(fā)采集、轉(zhuǎn)發(fā)功能。整體系統(tǒng)程序流程如圖7所示。軟件系統(tǒng)通過三次fork()函數(shù)向Linux內(nèi)核申請(qǐng)資源,獲得MONITOR、DAQ、REMOTE三個(gè)進(jìn)程。MONITOR即監(jiān)控進(jìn)程,負(fù)責(zé)實(shí)時(shí)讀取XML配置文件內(nèi)容、監(jiān)控REMOTE、DAQ進(jìn)程的狀況并向Mysql數(shù)據(jù)庫寫入數(shù)據(jù)采集器狀態(tài)。REMOTE即遠(yuǎn)程連接進(jìn)程,負(fù)責(zé)建立、維持與遠(yuǎn)程服務(wù)器的連接,同時(shí)定時(shí)獲取并轉(zhuǎn)發(fā)共享數(shù)據(jù)緩沖區(qū)的內(nèi)容。DAQ即數(shù)據(jù)采集進(jìn)程,負(fù)責(zé)多路傳感器的數(shù)據(jù)采集和處理。DAQ進(jìn)程會(huì)根據(jù)配置文件中的傳感器數(shù)量生成相同數(shù)量的采集線程,每個(gè)采集線程在初始化后,依序循環(huán)實(shí)現(xiàn)數(shù)據(jù)采集、預(yù)處理及轉(zhuǎn)發(fā)功能。多個(gè)采集線程會(huì)將采集結(jié)果轉(zhuǎn)發(fā)至系統(tǒng)的共享內(nèi)存中,由REMOTE進(jìn)程進(jìn)行統(tǒng)一轉(zhuǎn)發(fā)。三個(gè)進(jìn)程間互有關(guān)聯(lián),都需要訪問配置屬性、數(shù)據(jù)緩沖區(qū)等參數(shù)。此部分主要通過共享內(nèi)存與信號(hào)量以實(shí)現(xiàn)進(jìn)程間的互斥通信。
5.2本地自檢功能設(shè)計(jì)
本地自檢功能主要由MONITOR進(jìn)程實(shí)現(xiàn)。該進(jìn)程會(huì)定時(shí)對(duì)比XML配置文件內(nèi)容。當(dāng)檢測(cè)到XML配置文件被改變時(shí),會(huì)向REMOTE和DAQ進(jìn)程發(fā)出kill信號(hào),然后創(chuàng)建新的REMOTE進(jìn)程和DAQ進(jìn)程。如此便可在不重啟整個(gè)軟件的情況下改變系統(tǒng)的參數(shù)配置。MONITOR進(jìn)程會(huì)定時(shí)檢測(cè)REMOTE、DAQ進(jìn)程的存活情況,并在Mysql數(shù)據(jù)庫中寫入數(shù)據(jù)采集器的狀態(tài)。
5.3傳感器采集功能設(shè)計(jì)
單個(gè)傳感器的數(shù)據(jù)采集是由DAQ進(jìn)程生成的采集線程來實(shí)現(xiàn)的。每個(gè)線程根據(jù)傳感器的不同種類調(diào)用不同的初始化函數(shù),然后循環(huán)實(shí)現(xiàn)數(shù)據(jù)采集、處理及轉(zhuǎn)發(fā)功能,如圖7中DAQ多線程部分所示。
5.3.1采集接口初始化本數(shù)據(jù)采集器所面向的是工業(yè)中常用的RS-232/RS-485總線(如ModbusRTU協(xié)議)、以太網(wǎng)總線(如ModbusTCP協(xié)議)以及CAN總線。接口初始化與驅(qū)動(dòng)層間關(guān)系如圖8所示。在進(jìn)行傳感器初始化時(shí),程序需要調(diào)用與硬件底層驅(qū)動(dòng)相關(guān)的文件或函數(shù),例如啟動(dòng)RS-232/RS-485總線需要調(diào)用uart.c中的串口初始化函數(shù),啟動(dòng)以太網(wǎng)總線需要調(diào)用socket.c中的socket套接字函數(shù)。初始化后,通過對(duì)虛擬文件系統(tǒng)(virtualfilesystem,VFS)的讀寫訪問,即可實(shí)現(xiàn)對(duì)硬件設(shè)備的讀寫[7]。
5.3.2數(shù)據(jù)預(yù)處理數(shù)據(jù)預(yù)處理過程是對(duì)原始數(shù)據(jù)進(jìn)行簡單解包、數(shù)據(jù)類型轉(zhuǎn)化并儲(chǔ)存的過程。定義每條數(shù)據(jù)的格式主要包含數(shù)據(jù)類型、傳感器序號(hào)、數(shù)據(jù)包序號(hào)、實(shí)際數(shù)量及采集時(shí)間。傳感器序號(hào)用一字節(jié)表示,數(shù)據(jù)包序號(hào)用兩字節(jié)(16進(jìn)制)表示,格式之間用“,”逗號(hào)分隔。單個(gè)數(shù)據(jù)包格式如圖9所示。經(jīng)預(yù)處理后的數(shù)據(jù)將會(huì)被儲(chǔ)存至Mysql數(shù)據(jù)庫作為備份,同時(shí)被轉(zhuǎn)存至轉(zhuǎn)發(fā)緩沖區(qū)中,等待REMOTE進(jìn)程進(jìn)行統(tǒng)一轉(zhuǎn)發(fā)。
5.3.3數(shù)據(jù)同步轉(zhuǎn)發(fā)及轉(zhuǎn)發(fā)緩沖區(qū)設(shè)計(jì)整個(gè)系統(tǒng)中,REMOTE進(jìn)程和多個(gè)采集線程會(huì)頻繁地并發(fā)操作轉(zhuǎn)發(fā)緩沖區(qū),因此需要避免對(duì)內(nèi)存的誤讀寫操作,否則容易造成內(nèi)存越界而導(dǎo)致軟件崩潰。針對(duì)并發(fā)讀寫的緩沖區(qū),一種有效的方案是采用環(huán)形緩沖區(qū)結(jié)構(gòu)[8]。環(huán)形緩沖區(qū)是一種先進(jìn)先出模型,可為頻繁讀寫緩沖區(qū)的過程減少操作步驟。數(shù)據(jù)采集系統(tǒng)中的讀寫操作及環(huán)形緩沖區(qū)結(jié)構(gòu)如圖10所示。系統(tǒng)中的環(huán)形緩沖區(qū)主要儲(chǔ)存字符數(shù)組的地址,本系統(tǒng)中定義每個(gè)字符數(shù)組空間為64字節(jié),環(huán)形緩沖區(qū)總大小為64個(gè)元素(即k=64)。環(huán)形緩沖區(qū)內(nèi)定義了head和tail兩個(gè)指針,分別用于讀、寫操作,tail和head之間的灰色區(qū)域表示緩沖區(qū)內(nèi)已有數(shù)據(jù)。緩沖區(qū)的讀寫采用操作系統(tǒng)中經(jīng)典的“生產(chǎn)者-消費(fèi)者”模型[9]。REMOTE進(jìn)程負(fù)責(zé)從緩沖區(qū)中取數(shù)據(jù),主要操作head指針,各個(gè)采集線程負(fù)責(zé)往緩沖區(qū)內(nèi)寫數(shù)據(jù),操作tail指針。此處的操作是面向共享內(nèi)存的操作,因此添加了信號(hào)量來實(shí)現(xiàn)多進(jìn)程間的互斥訪問:semop(wait)代表取信號(hào)的函數(shù)。若緩沖區(qū)正在被其他函數(shù)操作,即會(huì)阻塞掛起,直至獲取信號(hào);semop(release)代表釋放當(dāng)前占用的信號(hào)[10]。該環(huán)形緩沖區(qū)有兩個(gè)特殊的設(shè)定:一是總是保持一個(gè)存儲(chǔ)單元為空,用于區(qū)分緩沖區(qū)內(nèi)“滿”和“空”的情況;二是允許覆蓋緩沖區(qū)數(shù)據(jù),即在進(jìn)行寫操作過程中,若緩沖區(qū)已滿,則以新數(shù)據(jù)覆蓋舊數(shù)據(jù)。
5.4遠(yuǎn)程轉(zhuǎn)發(fā)功能設(shè)計(jì)
遠(yuǎn)程轉(zhuǎn)發(fā)功能由REMOTE進(jìn)程實(shí)現(xiàn),主要實(shí)現(xiàn)建立遠(yuǎn)程服務(wù)器TCP連接、定時(shí)發(fā)送心跳包以及打包發(fā)送數(shù)據(jù)。其中,心跳包功能中會(huì)實(shí)時(shí)判斷網(wǎng)絡(luò)連通狀況。數(shù)據(jù)打包協(xié)議如圖11所示。在實(shí)際應(yīng)用中,每個(gè)傳感器的采集頻率fn不盡相同,REMOTE進(jìn)程向服務(wù)器發(fā)送數(shù)據(jù)的頻率也不易確定。本系統(tǒng)中,由用戶自行設(shè)置統(tǒng)一發(fā)送頻率F,REMOTE進(jìn)程會(huì)根據(jù)統(tǒng)一頻率F定時(shí)獲取環(huán)形緩沖區(qū)內(nèi)數(shù)據(jù),進(jìn)行統(tǒng)一打包、發(fā)送數(shù)據(jù)。這樣做的好處是可以靈活處理發(fā)送頻率:當(dāng)數(shù)據(jù)實(shí)時(shí)性要求較高時(shí),設(shè)置統(tǒng)一轉(zhuǎn)發(fā)頻率F高于傳感器的頻率fn,即可實(shí)時(shí)發(fā)送每個(gè)數(shù)據(jù);當(dāng)數(shù)據(jù)實(shí)時(shí)性要求不高時(shí),可以設(shè)置統(tǒng)一轉(zhuǎn)發(fā)頻率F最低,同時(shí)打包多項(xiàng)數(shù)據(jù),節(jié)約網(wǎng)絡(luò)資源。協(xié)議首部CMD代表操作請(qǐng)求號(hào);daqSerial代表當(dāng)前數(shù)據(jù)采集器的序列號(hào),用于區(qū)分不同數(shù)據(jù)采集器;SensorNum代表當(dāng)前在線的傳感器數(shù)量;dataNum代表正文中數(shù)據(jù)包數(shù)量;headLen代表首部長度。正文部分是各個(gè)數(shù)據(jù)包的內(nèi)容,以換行符區(qū)分。
6結(jié)束語
本文主要介紹了基于i.MX6Q核心芯片及嵌入式Linux的工業(yè)通用數(shù)據(jù)采集器設(shè)計(jì),完成了采集器硬件系統(tǒng)的設(shè)計(jì)、基于LAMP架構(gòu)的Web服務(wù)器搭建,以及C/C++數(shù)據(jù)采集軟件的編寫與測(cè)試;實(shí)現(xiàn)了數(shù)據(jù)采集器實(shí)時(shí)配置、多路并發(fā)采集儲(chǔ)存數(shù)據(jù)、遠(yuǎn)程轉(zhuǎn)發(fā)數(shù)據(jù)等功能。與傳統(tǒng)的數(shù)據(jù)采集器相比,本文設(shè)計(jì)不僅通用性更強(qiáng),而且配置操作更加人性化、網(wǎng)絡(luò)化。系統(tǒng)著重關(guān)注多路數(shù)據(jù)采集的并發(fā)性設(shè)計(jì)以及實(shí)際應(yīng)用的通用性,主要通過多進(jìn)程、多線程的設(shè)計(jì)以保證系統(tǒng)各功能的穩(wěn)定運(yùn)行,同時(shí)通過環(huán)形緩沖區(qū)數(shù)據(jù)結(jié)構(gòu)和信號(hào)量的操作以實(shí)現(xiàn)多路數(shù)據(jù)的并發(fā)讀寫。測(cè)試過程中,上位服務(wù)器可以穩(wěn)定、準(zhǔn)確地接收多個(gè)Modbus協(xié)議傳感器的數(shù)據(jù)。
參考文獻(xiàn):
[1]繆學(xué)勤.工業(yè)4.0推動(dòng)機(jī)電一體化走向智能技術(shù)系統(tǒng)[J].自動(dòng)化儀表,2016,37(1):1-5.
[2]陳平平,張永超,李長森.基于XML配置管理方法的研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2005,26(8):2089-2091.
作者:趙炯 楊天豪 肖杰 熊肖磊 單位:同濟(jì)大學(xué)機(jī)械與能源工程學(xué)院