李展鵬,鄒孝付+,蘇雍賀,張長(zhǎng)志,陶 飛
(1.北京航空航天大學(xué) 自動(dòng)化科學(xué)與電氣工程學(xué)院,北京 100191;2.國(guó)網(wǎng)天津市電力公司 電力科學(xué)研究院,天津 300384)
隨著云計(jì)算、大數(shù)據(jù)、物聯(lián)網(wǎng)等新一代信息技術(shù)的發(fā)展以及信息化與工業(yè)化的“深度融合”,傳統(tǒng)制造企業(yè)不斷向智能制造的方向轉(zhuǎn)型升級(jí)[1]。數(shù)據(jù)是智能制造的關(guān)鍵要素[2],只有在制造工廠底層實(shí)現(xiàn)對(duì)生產(chǎn)數(shù)據(jù)的有效感知,才能有效地完成工廠資源管理、車間計(jì)劃與排產(chǎn)、生產(chǎn)過程監(jiān)控等重要工作[3]。制造業(yè)分為流程制造業(yè)和離散制造業(yè)[4],在流程制造業(yè)中數(shù)據(jù)采集方案相似,主要采集生產(chǎn)過程中的模擬量和數(shù)字量;然而在離散制造業(yè)中,不同類型制造車間數(shù)據(jù)采集需求差異較大,個(gè)性化需求強(qiáng)[5],不僅需要采集生產(chǎn)過程中的生產(chǎn)設(shè)備狀態(tài)信息[6],還需要對(duì)現(xiàn)場(chǎng)工況,如生產(chǎn)人員、物料信息、生產(chǎn)環(huán)境等信息進(jìn)行監(jiān)測(cè)[7]。
離散制造車間一般從5M1E(man, machine, material, method, measurement and environment)[8]的角度分析生產(chǎn)過程,即人、機(jī)、料、法、測(cè)、環(huán)。因此,需在制造車間底層收集這6個(gè)方面的生產(chǎn)數(shù)據(jù),提供給MES層以實(shí)現(xiàn)對(duì)車間的管控。對(duì)于工作人員,需感知其姓名、職級(jí)、權(quán)限和上下班時(shí)間等信息,可以使用指紋傳感器或RFID刷卡器[9]采集信息,通過串口或USB等接口上傳數(shù)據(jù);機(jī)器信息包括機(jī)床運(yùn)行狀態(tài)、運(yùn)行時(shí)間和運(yùn)行參數(shù)等,可以使用Modbus TCP[10]或EtherCAT[11]協(xié)議通過以太網(wǎng)接口上傳,可編程邏輯控制器(Programmable Logic Controller, PLC)設(shè)備可以使用Profibus DP[12]協(xié)議通過RS485接口上傳數(shù)據(jù);對(duì)于物料信息,可以掃描二維碼標(biāo)簽感知物料編號(hào)、批次和生產(chǎn)日期等信息,通過Modbus RTU協(xié)議上傳至RS485[13]總線,利用光電感應(yīng)設(shè)備發(fā)送NPN(negative positive negative)開關(guān)量記錄物料數(shù)量;環(huán)境信息主要包括特定氣體濃度信息、溫濕度信息、空氣質(zhì)量、大氣壓力等,環(huán)境傳感器可以通過RS485/RS422/CAN等現(xiàn)場(chǎng)總線上傳數(shù)據(jù),也存在小型傳感器使用SPI/IIC等協(xié)議上傳數(shù)據(jù)。測(cè)量數(shù)據(jù)與方法數(shù)據(jù)一般無法通過實(shí)體傳感器感知,可以從車間數(shù)據(jù)庫(kù)中調(diào)用相關(guān)信息。
綜上可知,離散制造工廠數(shù)據(jù)存在多源異構(gòu)的特點(diǎn),即數(shù)據(jù)來源不同、傳輸接口不同、傳輸協(xié)議不同,這要求工廠數(shù)據(jù)采集設(shè)備能夠兼容多類型接口協(xié)議并實(shí)時(shí)地感知多源異構(gòu)數(shù)據(jù)。隨著智能制造的發(fā)展,數(shù)據(jù)采集情景愈發(fā)復(fù)雜。制造車間不斷淘汰舊設(shè)備并引入新設(shè)備,使得待采集設(shè)備的數(shù)據(jù)傳輸接口與協(xié)議類型不斷變化[14],這就要求數(shù)據(jù)采集設(shè)備能夠根據(jù)采集需求的變化,快速更新采集功能。因此,當(dāng)前離散制造工廠數(shù)據(jù)采集設(shè)備面臨如下挑戰(zhàn):
(1)多源異構(gòu)數(shù)據(jù)難以并行采集 傳統(tǒng)數(shù)據(jù)采集設(shè)備主要使用輪詢或多線程的方式采集多源異構(gòu)數(shù)據(jù),導(dǎo)致響應(yīng)時(shí)間隨著待采集設(shè)備的增多而增長(zhǎng),難以滿足制造工廠對(duì)數(shù)據(jù)采集實(shí)時(shí)性的要求。傳統(tǒng)數(shù)據(jù)采集設(shè)備大多針對(duì)特定設(shè)備組進(jìn)行設(shè)計(jì)[15],與待采集設(shè)備組存在一對(duì)一的對(duì)應(yīng)關(guān)系,需多個(gè)數(shù)據(jù)采集核心協(xié)同完成多源異構(gòu)數(shù)據(jù)采集工作,導(dǎo)致采集成本與布局布線復(fù)雜度增加,違背了數(shù)據(jù)采集設(shè)備向高集成和小型化發(fā)展的趨勢(shì)。
(2)數(shù)據(jù)采集設(shè)備難以實(shí)時(shí)配置 傳統(tǒng)數(shù)據(jù)采集設(shè)備無法根據(jù)采集需求的變化實(shí)時(shí)動(dòng)態(tài)配置采集功能,當(dāng)待采集設(shè)備的數(shù)據(jù)接口或傳輸協(xié)議發(fā)生變化時(shí),待采集設(shè)備與原有數(shù)據(jù)采集設(shè)備不兼容,需重新設(shè)計(jì)數(shù)據(jù)采集設(shè)備的結(jié)構(gòu)和功能。這導(dǎo)致原有數(shù)據(jù)采集設(shè)備難以繼續(xù)使用,中斷采集過程進(jìn)而影響生產(chǎn)。
針對(duì)上述問題,本文提出一種基于現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array, FPGA)的多源異構(gòu)數(shù)據(jù)并行可配置采集方法。首先,利用FPGA的硬件并行采集多源異構(gòu)數(shù)據(jù)并提升采集響應(yīng)速度;其次,基于FPGA的動(dòng)態(tài)重構(gòu)實(shí)現(xiàn)數(shù)據(jù)采集設(shè)備實(shí)時(shí)可配置;最后,基于該方法研制了多源異構(gòu)數(shù)據(jù)采集設(shè)備并設(shè)計(jì)應(yīng)用驗(yàn)證方案。
目前在離散制造企業(yè)中,應(yīng)用較為廣泛的數(shù)據(jù)采集系統(tǒng)是數(shù)據(jù)采集與監(jiān)視系統(tǒng)(Supervisory Control and Data Acquisition, SCADA)[16]。傳統(tǒng)的SCADA系統(tǒng)主要使用PLC和DCS采集車間設(shè)備運(yùn)行信息,包括車間設(shè)備的運(yùn)行狀態(tài)、加工參數(shù)、運(yùn)行時(shí)間等信息,PLC或分散控制系統(tǒng)(Distributed Control System, DCS)能夠采集RS485、CAN等工業(yè)現(xiàn)場(chǎng)總線數(shù)據(jù)[17],該類型設(shè)備也帶有以太網(wǎng)接口,支持工業(yè)以太網(wǎng)通信協(xié)議包括Ethernet/IP、Modbus TCP等。龔濤等[18]在SCADA平臺(tái)中,使用PLC和DCS等采集設(shè)備完成底層異構(gòu)設(shè)備的數(shù)據(jù)采集工作,并采用OPC UA統(tǒng)一架構(gòu)進(jìn)行信息建模,服務(wù)封裝和對(duì)象交互?,F(xiàn)場(chǎng)工況信息常常使用嵌入式處理器進(jìn)行采集,Mohamad等[19]應(yīng)用物聯(lián)網(wǎng)技術(shù),采集生產(chǎn)環(huán)境信息,包括溫度傳感器、水位傳感器和煙霧傳感器等;張美萍[20]利用STM32系統(tǒng)設(shè)計(jì)了基于ZigBee技術(shù)的物聯(lián)網(wǎng)數(shù)據(jù)采集系統(tǒng),實(shí)現(xiàn)了對(duì)環(huán)境數(shù)據(jù)的監(jiān)測(cè)和采集;閆曉風(fēng)等[21]以ARM處理器為核心,構(gòu)建了異構(gòu)數(shù)據(jù)交換平臺(tái),在嵌入式系統(tǒng)中實(shí)現(xiàn)了異構(gòu)數(shù)據(jù)感知與集成。
在離散制造企業(yè)中,SCADA系統(tǒng)能在一定程度上解決離散制造車間數(shù)據(jù)采集問題。但該系統(tǒng)存在兩個(gè)問題:①傳統(tǒng)數(shù)據(jù)采集設(shè)備出廠時(shí)就已經(jīng)固定了能夠采集數(shù)據(jù)的種類與數(shù)量,當(dāng)待采集數(shù)據(jù)中存在數(shù)據(jù)采集設(shè)備不支持的接口或協(xié)議時(shí),需要引入更多不同類型的采集裝置,增加采集成本與布局布線的復(fù)雜度,降低了采集效率和安全系數(shù);②傳統(tǒng)數(shù)據(jù)采集設(shè)備多使用輪詢或多線程的方式采集多源異構(gòu)數(shù)據(jù),其中輪詢式數(shù)據(jù)采集方法的響應(yīng)時(shí)間會(huì)隨著待采集設(shè)備的增多而線性增長(zhǎng);多線程數(shù)據(jù)采集方式則是利用操作系統(tǒng)提升處理器的資源使用效率,實(shí)現(xiàn)偽并行的數(shù)據(jù)采集,但是受到處理器性能限制,隨著待采集設(shè)備的增多處理器的并發(fā)性下降,采集響應(yīng)時(shí)間增長(zhǎng)。
隨著集成電路技術(shù)的發(fā)展,基于FPGA的數(shù)據(jù)采集設(shè)備在離散制造企業(yè)中的應(yīng)用越來越廣泛,Khedkar等[22]利用FPGA采集多通道模擬量數(shù)據(jù),并在ARM中設(shè)計(jì)FPGA設(shè)備的驅(qū)動(dòng)程序以及上位機(jī)應(yīng)用程序,實(shí)現(xiàn)數(shù)據(jù)高速采集與可視化展示;Kavianipour等[23]在Xilinx VC707 Virtex-7上設(shè)計(jì)并實(shí)現(xiàn)了基于PCIe接口的數(shù)據(jù)通信功能,讀寫速度超過700 Mbps。但此類基于FPGA的數(shù)據(jù)采集設(shè)備主要用于提升單一類型數(shù)據(jù)的采集速度,針對(duì)FPGA并行采集多源異構(gòu)數(shù)據(jù)方面的研究較少。FPGA具有硬件并行性[24]與可自由編程性[25],利用該特點(diǎn)可以有效地解決多源異構(gòu)數(shù)據(jù)并行采集問題。
FPGA具有動(dòng)態(tài)重構(gòu)功能[26],能夠在不影響其他區(qū)域功能的前提下,改變FPGA部分區(qū)域的功能[27],因此FPGA的動(dòng)態(tài)重構(gòu)能夠有效地解決數(shù)據(jù)采集實(shí)時(shí)配置問題。針對(duì)機(jī)載電機(jī)系統(tǒng)數(shù)據(jù)采集與控制接口不靈活的問題,劉玉嬌等[28]采用“FPGA+開關(guān)矩陣+微處理器”的架構(gòu),利用FPGA動(dòng)態(tài)重構(gòu)功能,實(shí)現(xiàn)了機(jī)載系統(tǒng)的功能分配以及機(jī)載信號(hào)到調(diào)理電路的切換。針對(duì)聚乙烯自動(dòng)化生產(chǎn)系統(tǒng)中傳感器接口/協(xié)議不斷改變的問題,Bao等[29]使用XILINX公司VIRTEX-4系列FPGA、MT8816開關(guān)矩陣以及ADS7870芯片,利用FPGA的靜態(tài)重構(gòu)實(shí)現(xiàn)了多通道信號(hào)的數(shù)據(jù)采集工作,利用局部動(dòng)態(tài)重構(gòu)改變傳感器驅(qū)動(dòng),使用同一接口采集了不同傳感器的傳輸數(shù)據(jù)。針對(duì)裝置通信方式不靈活的問題,徐建等[30]在ZYNQ-7000系列FPGA的底層設(shè)計(jì)了9個(gè)接口,通過TCP/IP網(wǎng)絡(luò)數(shù)據(jù)包發(fā)送總線接口配置指令,在FPGA動(dòng)態(tài)切換對(duì)應(yīng)的局部bit文件,使得FPGA能夠按需選取不同的接口,實(shí)現(xiàn)裝置靈活通信;楊會(huì)偉等[31]在FPGA中設(shè)計(jì)了RS232、RS485和SPI等幾類常用接口的收發(fā)函數(shù),根據(jù)指令實(shí)現(xiàn)多接口/協(xié)議切換,實(shí)現(xiàn)數(shù)據(jù)采集設(shè)備的可配置。
上述基于FPGA的數(shù)據(jù)采集可配置研究中存在兩個(gè)問題:①部分研究使用“FPGA+開關(guān)矩陣”架構(gòu),由于開關(guān)矩陣只能采集不同通道的模擬或數(shù)字信號(hào),無法改變采集接口類型,不能實(shí)現(xiàn)數(shù)據(jù)采集接口可配置;②在能夠?qū)崿F(xiàn)多接口、協(xié)議動(dòng)態(tài)切換的研究中,需實(shí)現(xiàn)全部數(shù)據(jù)采集功能,根據(jù)指令選取不同的接口、解析不同的協(xié)議,其余功能閑置。雖然實(shí)現(xiàn)數(shù)據(jù)采集實(shí)時(shí)可配置,但占用過多的采集資源。
本文針對(duì)制造工廠在轉(zhuǎn)型升級(jí)中,數(shù)據(jù)采集設(shè)備難以并行采集多源異構(gòu)數(shù)據(jù)和數(shù)據(jù)采集配置難的問題,提出一種基于FPGA的多源異構(gòu)數(shù)據(jù)并行可配置采集方法,方法的總體框架如圖1所示??傮w框架自下而上分為并行采集層、可配置采集層和應(yīng)用驗(yàn)證層三層。
(1)并行采集層 本文從5M1E角度出發(fā),選取了異構(gòu)傳感器采集相應(yīng)數(shù)據(jù),實(shí)現(xiàn)制造工廠生產(chǎn)數(shù)據(jù)的感知與互聯(lián)。選取傳感器的分類、接口、協(xié)議和用途如表1所示,針對(duì)異構(gòu)傳感器設(shè)計(jì)異構(gòu)設(shè)備接入方案,基于FPGA設(shè)計(jì)了多源異構(gòu)數(shù)據(jù)并行采集方法。
表1 多源異構(gòu)數(shù)據(jù)
(2)可配置采集層 本文將FPGA分為動(dòng)態(tài)域與靜態(tài)域,在靜態(tài)域中實(shí)現(xiàn)基本的數(shù)據(jù)采集功能;在動(dòng)態(tài)域中,利用FPGA的動(dòng)態(tài)可重構(gòu)功能,設(shè)計(jì)數(shù)據(jù)采集可配置方法,實(shí)現(xiàn)數(shù)據(jù)采集接口與幀格式的實(shí)時(shí)可配置。
(3)應(yīng)用驗(yàn)證層 本文應(yīng)用層的主要功能是監(jiān)控?cái)?shù)據(jù)采集過程和下發(fā)數(shù)據(jù)采集指令。數(shù)據(jù)采集過程的監(jiān)控用于實(shí)時(shí)顯示當(dāng)前制造工廠生產(chǎn)狀態(tài),若某些數(shù)據(jù)達(dá)到報(bào)警閾值,則會(huì)發(fā)出警報(bào)信息,提醒工作人員查看。配置指令會(huì)根據(jù)制造工廠對(duì)當(dāng)前生產(chǎn)環(huán)境的采集需求,下發(fā)配置信息如數(shù)據(jù)采集接口/幀格式配置、報(bào)警閾值設(shè)置、傳輸方案選擇等,實(shí)現(xiàn)數(shù)據(jù)采集設(shè)備的整體可控。
針對(duì)傳統(tǒng)數(shù)據(jù)采集設(shè)備存在的多源異構(gòu)并行采集難問題,本文提出一種基于FPGA的車間多源異構(gòu)數(shù)據(jù)并行采集方法,能夠?qū)崿F(xiàn)異構(gòu)數(shù)據(jù)并行采集與協(xié)議解析功能,將多協(xié)議數(shù)據(jù)集成為一種統(tǒng)一的格式上傳,具體方法如圖2所示,主要通過5個(gè)步驟實(shí)現(xiàn)。
(1)異構(gòu)設(shè)備并行采集 根據(jù)異構(gòu)設(shè)備傳輸接口,本文將FPGA的可編程邏輯資源設(shè)計(jì)為能夠采集不同接口的邏輯電路,并約束FPGA接口引腳的輸入輸出方向,完成對(duì)接口的驅(qū)動(dòng)設(shè)計(jì)。以傾角傳感器為例,數(shù)據(jù)采集方案設(shè)計(jì)如圖3所示。其中CAN總線接口為差分電壓,無法直接接入FPGA的IO接口,需要使用MCP2515芯片協(xié)助FPGA完成數(shù)據(jù)采集工作。MCP2515芯片的主要功能是將CAN接口轉(zhuǎn)換為能直接接入FPGA的SPI接口。在FPGA端設(shè)計(jì)SPI Master驅(qū)動(dòng),實(shí)現(xiàn)對(duì)傾角傳感器的數(shù)據(jù)采集。
(2)異構(gòu)數(shù)據(jù)協(xié)議解析 FPGA采集到異構(gòu)設(shè)備的上傳數(shù)據(jù)后,需要針對(duì)不同的通信協(xié)議與數(shù)據(jù)格式,設(shè)計(jì)協(xié)議解析方法。以傾角傳感器為例,本文在FPGA中設(shè)計(jì)的數(shù)據(jù)協(xié)議解析狀態(tài)機(jī)如圖4所示。首先對(duì)MCP2515芯片進(jìn)行初始化配置,如配置CAN總線的波特率、數(shù)據(jù)幀格式以及設(shè)置濾波器參數(shù)。接下來進(jìn)入空閑狀態(tài),等待指令發(fā)送,若為設(shè)置指令,需要設(shè)置傳感器數(shù)據(jù)上傳方式,設(shè)置完成后返回空閑狀態(tài);若為采集指令,F(xiàn)PGA發(fā)送ID為0x0605的詢問幀,傳感器返回ID為0x0585的應(yīng)答幀,應(yīng)答幀的數(shù)據(jù)段包含測(cè)量數(shù)據(jù);若為采集結(jié)束指令,則退出狀態(tài)機(jī),結(jié)束數(shù)據(jù)采集工作。
(3)時(shí)鐘同步 針對(duì)異構(gòu)設(shè)備采集的設(shè)計(jì)為異步設(shè)計(jì),即主控時(shí)鐘不同,須將異步時(shí)鐘同步化才方便進(jìn)一步處理,否則會(huì)導(dǎo)致亞穩(wěn)態(tài)等現(xiàn)象。本文采用異步FIFO(first in first out)有效地解決了該問題,即為每一個(gè)異構(gòu)設(shè)備添加一個(gè)異步FIFO,在采集端使用該設(shè)備的主控時(shí)鐘將采集到的數(shù)據(jù)存儲(chǔ)到異步FIFO中,在另一端以統(tǒng)一的時(shí)鐘將數(shù)據(jù)讀出,實(shí)現(xiàn)時(shí)鐘同步。之后通過輪詢的方式實(shí)現(xiàn)并串轉(zhuǎn)換,將所有異步FIFO中的有效數(shù)據(jù)存入不同地址的隨機(jī)存取存儲(chǔ)器(Random Access Memory, RAM)緩存。
(4)流水設(shè)計(jì) 針對(duì)后續(xù)讀取RAM數(shù)據(jù)和循環(huán)冗余校驗(yàn)(Cyclic Redundancy Check, CRC)工作,采用流水線的設(shè)計(jì)方式,在第一個(gè)時(shí)鐘周期,讀取第一個(gè)數(shù)據(jù);在第二個(gè)時(shí)鐘,讀取第二個(gè)數(shù)據(jù)并將第一個(gè)數(shù)據(jù)輸入CRC校驗(yàn)?zāi)K進(jìn)行校驗(yàn)工作,以此類推。相比于先完成數(shù)據(jù)讀取,再進(jìn)行數(shù)據(jù)校驗(yàn)的方案,該方法提升了系統(tǒng)的工作效率與吞吐率。
(5)數(shù)據(jù)封裝 FPGA與上位機(jī)之間定義數(shù)據(jù)/命令傳輸協(xié)議,由FPGA發(fā)送至上位機(jī)的上行數(shù)據(jù)幀格式(如表2),一幀上行數(shù)據(jù)有效數(shù)據(jù)長(zhǎng)度約為500 bytes,若接收到上位機(jī)指令,F(xiàn)PGA執(zhí)行完成指令后在上行數(shù)據(jù)幀中置位命令完成標(biāo)志。上位機(jī)下行命令幀格式如表3所示,在下行命令中,F(xiàn)PGA識(shí)別功能碼執(zhí)行上位機(jī)命令,例如:①功能碼為0x01,F(xiàn)PGA執(zhí)行動(dòng)態(tài)重構(gòu)功能,忽略字段1內(nèi)容,根據(jù)字段2中數(shù)據(jù)讀取相應(yīng)Flash地址完成數(shù)據(jù)采集可配置;②功能碼為0x02,F(xiàn)PGA執(zhí)行采集速率調(diào)整功能,根據(jù)字段1確定接口,根據(jù)字段2內(nèi)容確定采集速率。
表2 上行數(shù)據(jù)幀格式 bytes
表3 下行命令幀格式 bytes
(6)高速通信 FPGA與上位機(jī)使用以太網(wǎng)實(shí)現(xiàn)數(shù)據(jù)高速通信,如圖5所示。在FPGA片外連接以太網(wǎng)PHY芯片,該芯片實(shí)現(xiàn)了OSI 7層網(wǎng)絡(luò)模型中的物理層,F(xiàn)PGA通過RTL編程實(shí)現(xiàn)數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層和傳輸層,二者通過千兆媒體獨(dú)立接口(Gigabit Medium Independent Interface, GMII)連接。至此,完成車間多源異構(gòu)數(shù)據(jù)并行采集工作。
該方法針對(duì)制造車間中需要采集的共性信息,設(shè)計(jì)了車間多源異構(gòu)數(shù)據(jù)采集方法。通過并行采集與協(xié)議解析提取出異構(gòu)數(shù)據(jù)的有效信息,實(shí)現(xiàn)了車間多源異構(gòu)設(shè)備的感知,利用FPGA的時(shí)鐘同步、并串轉(zhuǎn)換、流水設(shè)計(jì)等設(shè)計(jì)方法,將異構(gòu)數(shù)據(jù)封裝為統(tǒng)一的數(shù)據(jù)格式,在硬件底層實(shí)現(xiàn)了車間多源異構(gòu)數(shù)據(jù)并行采集。
針對(duì)車間數(shù)據(jù)采集設(shè)備難以實(shí)時(shí)配置的問題,本文提出了一種基于FPGA動(dòng)態(tài)重構(gòu)的數(shù)據(jù)采集可配置方法,通過配置數(shù)據(jù)采集接口和數(shù)據(jù)幀格式,實(shí)現(xiàn)數(shù)據(jù)采集系統(tǒng)的復(fù)用。本文設(shè)計(jì)的基于FPGA的動(dòng)態(tài)重構(gòu)方法如圖6所示。
該方法將FPGA的芯片資源分為靜態(tài)域和動(dòng)態(tài)域。靜態(tài)域功能維持不變,實(shí)現(xiàn)的功能包括FPGA數(shù)據(jù)采集與協(xié)議解析功能、數(shù)據(jù)封裝上傳功能、重構(gòu)狀態(tài)機(jī)以及ICAP控制器的實(shí)現(xiàn),其中重構(gòu)狀態(tài)機(jī)能夠讀取存儲(chǔ)在片外Flash中不同偏移地址的bit文件,ICAP控制器能夠?qū)⑵浼虞d到動(dòng)態(tài)重構(gòu)區(qū)域;動(dòng)態(tài)重構(gòu)區(qū)域能夠加載不同的bit文件,在該區(qū)域?qū)崿F(xiàn)不同的邏輯功能。
基于FPGA動(dòng)態(tài)重構(gòu)的數(shù)據(jù)采集可配置方法如圖7所示。數(shù)據(jù)采集可配置方法需編寫不同接口的驅(qū)動(dòng)電路bit文件,并將其保存在片外Flash存儲(chǔ)器中。在FPGA的動(dòng)態(tài)區(qū)域?yàn)樵摴δ軇澐忠徊糠诌壿嬞Y源和IO引腳資源,約束引腳的數(shù)據(jù)輸入輸出方向。在某時(shí)刻使用串口的設(shè)備接入數(shù)據(jù)采集裝置,其中串口需要RX_In和TX_Out兩根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)采集功能。分別將其接入FPGA的In引腳和Out引腳,在物理層實(shí)現(xiàn)連接,剩余Out引腳置高電平,InOut引腳置為高阻態(tài)。應(yīng)用層發(fā)送配置指令至重構(gòu)狀態(tài)機(jī),重構(gòu)狀態(tài)機(jī)控制ICAP接口,讀取Flash中存放的串口驅(qū)動(dòng)bit文件燒寫到FPGA動(dòng)態(tài)域,完成動(dòng)態(tài)重構(gòu)功能。
上述過程的具體流程如下:
步驟1FPGA等待重構(gòu)指令,若接收到重構(gòu)指令,則重構(gòu)狀態(tài)機(jī)根據(jù)指令讀取存儲(chǔ)于Flash特定地址的bit文件,將該文件以4 bytes對(duì)齊,作為ICAP接口的輸入,將完成重構(gòu)標(biāo)志flag設(shè)為′00′。
步驟2設(shè)置ICAP接口輸入位寬為32 bits,CE(ICAP接口片選信號(hào))為邏輯′1′、WRITE(ICAP接口寫使能信號(hào))為邏輯′1′、I(ICAP接口輸入)為0x00000000。
步驟3設(shè)置ICAP接口的CE為邏輯′1′、WRITE為邏輯′0′、ICAP接口的輸入I為步驟1中讀取到的數(shù)據(jù)。
步驟4設(shè)置ICAP接口的CE為邏輯′0′、WRITE為邏輯′0′、輸入I為步驟1中讀取到的數(shù)據(jù)。
步驟5設(shè)置ICAP接口的CE為邏輯′1′、WRITE為邏輯′1′、輸入I為0xaaaaaaaa。
步驟6對(duì)從Flash中讀取到數(shù)據(jù)進(jìn)行判定,若讀取到的數(shù)據(jù)是0x000000b0,則2 bits完成標(biāo)志flag設(shè)為′01′,轉(zhuǎn)步驟2;若讀取到的數(shù)據(jù)是0x04000000,且2 bits完成標(biāo)志flag是′01′(即上次讀取到的數(shù)據(jù)是0x000000b0)則完成本次重構(gòu)過程,轉(zhuǎn)步驟1,完成標(biāo)志設(shè)為′11′。
基于FPGA動(dòng)態(tài)重構(gòu)的車間數(shù)據(jù)采集可配置方法,能夠在不影響其他車間設(shè)備正常運(yùn)行的情況下,根據(jù)車間數(shù)據(jù)采集需求的變化,靈活地配置數(shù)據(jù)采集設(shè)備,實(shí)現(xiàn)車間數(shù)據(jù)采集接口與幀格式可配置功能,并且時(shí)分復(fù)用數(shù)據(jù)采集設(shè)備資源,利用有限的芯片資源實(shí)現(xiàn)更多的功能。
4.1.1 多源異構(gòu)數(shù)據(jù)并行采集方法驗(yàn)證
基于上述研究,本文設(shè)計(jì)了多源異構(gòu)數(shù)據(jù)并行采集驗(yàn)證方案,如圖8所示。多源異構(gòu)數(shù)據(jù)等效器集成了制造工廠生產(chǎn)過程中具有代表性的多源異構(gòu)數(shù)據(jù),能夠?qū)⑸a(chǎn)信息通過異構(gòu)接口上傳。多源異構(gòu)數(shù)據(jù)感知與互聯(lián)裝置能夠感知多源異構(gòu)數(shù)據(jù),實(shí)現(xiàn)多源異構(gòu)數(shù)據(jù)的并行采集與協(xié)議解析、數(shù)據(jù)采集可配置以及遠(yuǎn)程傳輸功能。在上位機(jī)中設(shè)計(jì)了多源異構(gòu)數(shù)據(jù)感知與互聯(lián)系統(tǒng),實(shí)現(xiàn)了數(shù)據(jù)的可視化展示以及配置命令的下發(fā)。將設(shè)備連接與上電后,可以觀察到系統(tǒng)各層級(jí)運(yùn)行狀態(tài)良好,在軟件中可以監(jiān)測(cè)到數(shù)據(jù)的實(shí)時(shí)變換以及歷史曲線。本文設(shè)計(jì)的方法實(shí)現(xiàn)了對(duì)18種多源異構(gòu)數(shù)據(jù)、10種異構(gòu)接口的并行采集,驗(yàn)證了本文方法的有效性。
在多源異構(gòu)數(shù)據(jù)并行采集方法驗(yàn)證中,數(shù)據(jù)采集設(shè)備每50 ms上傳一次封裝數(shù)據(jù)幀,一幀數(shù)據(jù)包大小約為500 bytes,因此并行采集數(shù)據(jù)需要通信接口以80 Mbps的通信速率上傳。本文所采用的以太網(wǎng)接口在125 Mhz頻率的時(shí)鐘控制下,每個(gè)時(shí)鐘周期可傳輸1 byte數(shù)據(jù),最高通信速率可達(dá)1 000 Mbps,滿足本文數(shù)據(jù)通信需求。
4.1.2 多源異構(gòu)數(shù)據(jù)采集設(shè)備響應(yīng)時(shí)間分析
通常制造工廠數(shù)據(jù)采集要求響應(yīng)時(shí)間小于0.5 s[29],傳統(tǒng)的數(shù)據(jù)采集系統(tǒng)使用輪詢或多線程的方式采集數(shù)據(jù),響應(yīng)時(shí)間與傳感器的數(shù)量有關(guān)。本文方法實(shí)現(xiàn)了多傳感器的并行采集,使得響應(yīng)時(shí)間只取決于響應(yīng)最慢的傳感器。本文選取大氣壓力、運(yùn)動(dòng)跟蹤和溫濕度3類傳感器為一組進(jìn)行試驗(yàn)驗(yàn)證。
大氣壓力傳感器完成一次數(shù)據(jù)采集工作需要通過RS485接口以9600 bps的速率傳輸32 bytes數(shù)據(jù);運(yùn)動(dòng)跟蹤傳感器完成一次數(shù)據(jù)采集工作需使用SPI接口以500 KHz的時(shí)鐘頻率采集30 bytes數(shù)據(jù);溫濕度傳感器完成一次數(shù)據(jù)采集工作需使用IIC接口以100 KHz的時(shí)鐘頻率采集97 bits數(shù)據(jù)。但由于應(yīng)答幀和問詢幀之間、問詢幀/應(yīng)答幀的每字節(jié)數(shù)據(jù)之間存在間隔,最終測(cè)得完成數(shù)據(jù)采集時(shí)間分別約為45.1 ms、5.2 ms和4.4 ms,以3種設(shè)備為一組,使用不同方法進(jìn)行數(shù)據(jù)采集響應(yīng)時(shí)間測(cè)試,測(cè)試結(jié)果如圖9所示。
可以發(fā)現(xiàn),本文方法設(shè)計(jì)的數(shù)據(jù)采集設(shè)備響應(yīng)時(shí)間隨著傳感器組數(shù)的增多略微增長(zhǎng)。本文的數(shù)據(jù)采集方式為FPGA并行采集,其原理是為某一特定傳感器劃分FPGA部分硬件資源,利用這部分資源設(shè)計(jì)硬件電路采集該傳感器數(shù)據(jù),F(xiàn)PGA內(nèi)部各功能模塊相互獨(dú)立互不影響。因此,數(shù)據(jù)采集時(shí)間僅與數(shù)據(jù)采集速度最慢的傳感器有關(guān),隨著傳感器數(shù)量的增多,僅增加FPGA硬件資源消耗而不增加采集響應(yīng)時(shí)間。圖9中時(shí)間略微增長(zhǎng)是由于隨著傳感器設(shè)備的增多,F(xiàn)PGA實(shí)現(xiàn)數(shù)據(jù)協(xié)議轉(zhuǎn)換與數(shù)據(jù)處理的時(shí)間增長(zhǎng),但相比于采集耗時(shí)較小,因此出現(xiàn)整體時(shí)間略微增長(zhǎng)的情況。
基于STM32裸機(jī)的數(shù)據(jù)采集方法使用了串行方式完成數(shù)據(jù)采集工作,該方法會(huì)隨著接入傳感設(shè)備的增多,響應(yīng)時(shí)間線性增長(zhǎng),即系統(tǒng)采集響應(yīng)時(shí)間為每個(gè)傳感器采集響應(yīng)時(shí)間的直接累加,當(dāng)傳感器組數(shù)超過8組后,該方法的響應(yīng)時(shí)間不符合制造工廠要求。在STM32單片機(jī)中嵌入μC/OS-Ⅱ操作系統(tǒng)后,可以使用多線程的方式,實(shí)現(xiàn)偽并行的數(shù)據(jù)采集。STM32的CPU在采集單一傳感器數(shù)據(jù)時(shí),由于傳感器時(shí)鐘頻率較低,CPU存在空閑狀態(tài),多線程采集方法將不同任務(wù)拆分成更細(xì)小的時(shí)間片填充到CPU的空閑狀態(tài)中,提高了CPU的利用率。當(dāng)傳感器數(shù)量較少時(shí),可以基本實(shí)現(xiàn)并行采集,但隨著傳感器數(shù)量的增長(zhǎng),并發(fā)線程之間的調(diào)度明顯增多,需要占用更多的CPU資源。當(dāng)CPU資源利用率較高時(shí),系統(tǒng)并行性下降,消耗時(shí)間明顯增多。
4.2.1 多源異構(gòu)數(shù)據(jù)采集可配置方法驗(yàn)證
針對(duì)本文提出的基于FPGA動(dòng)態(tài)重構(gòu)的數(shù)據(jù)采集可配置方法,設(shè)計(jì)了數(shù)據(jù)采集接口可配置與數(shù)據(jù)采集幀格式可配置驗(yàn)證方案,如圖10所示。本文設(shè)計(jì)的驗(yàn)證方案在不同時(shí)刻接入大氣壓力、智能電表、陀螺儀和溫濕度4種傳感器的數(shù)據(jù),其中大氣壓力傳感器和智能電表使用RS485接口,分別使用Modbus RTU和Dl645-2007格式的數(shù)據(jù)幀,用于驗(yàn)證數(shù)據(jù)采集幀格式可配置。陀螺儀和溫濕度傳感器分別使用SPI接口和IIC接口,使用不同接口的任意兩種傳感設(shè)備可以用于驗(yàn)證數(shù)據(jù)采集接口可配置功能。
時(shí)刻1接入大氣壓力傳感器,在上位機(jī)軟件采集設(shè)置部分,配置采集幀格式選項(xiàng)為Modbus RTU,采集接口配置為RS485,點(diǎn)擊發(fā)送配置信息。FPGA中重構(gòu)狀態(tài)機(jī)收到重構(gòu)命令,設(shè)置從Flash讀取數(shù)據(jù)的基地址為0x200000,重構(gòu)狀態(tài)機(jī)控制ICAP接口配置動(dòng)態(tài)域,使其能夠解析Modbus RTU協(xié)議,實(shí)現(xiàn)對(duì)大氣壓力傳感器的數(shù)據(jù)采集工作,生成重構(gòu)完成標(biāo)志并在應(yīng)用層軟件中實(shí)現(xiàn)數(shù)據(jù)的可視化展示。
時(shí)刻2接入智能電表,上位機(jī)軟件修改幀格式配置選項(xiàng),接口選項(xiàng)不變,使得數(shù)據(jù)采集設(shè)備夠采集智能電表數(shù)據(jù)。FPGA中重構(gòu)狀態(tài)機(jī)收到重構(gòu)命令,設(shè)置從Flash讀取數(shù)據(jù)的基地址為0x400000,待FPGA完成動(dòng)態(tài)重構(gòu)后,在應(yīng)用層軟件實(shí)現(xiàn)智能電表數(shù)據(jù)的可視化展示。
時(shí)刻3接入陀螺儀,陀螺儀使用串行外設(shè)接口(Serial Peripheral Interface, SPI),在上位機(jī)軟件配置接口選項(xiàng)為SPI。發(fā)送配置信息后,F(xiàn)PGA中重構(gòu)狀態(tài)機(jī)收到重構(gòu)命令,設(shè)置從Flash讀取數(shù)據(jù)的基地址為0x600000,F(xiàn)PGA完成動(dòng)態(tài)重構(gòu)后該區(qū)域能夠采集SPI接口數(shù)據(jù)并上傳至應(yīng)用層。
4.2.2 多源異構(gòu)數(shù)據(jù)采集可配置方法資源消耗分析
傳統(tǒng)的數(shù)據(jù)采集可配置方法是將所有需要使用的功能在數(shù)據(jù)采集設(shè)備中實(shí)現(xiàn),之后根據(jù)指令選擇性的使用某塊功能,其余功能閑置。本文提出的方法將暫時(shí)不用的功能存入片外Flash,節(jié)省芯片資源,在需要時(shí)使用FPGA的動(dòng)態(tài)重構(gòu)功能,在FPGA的動(dòng)態(tài)域?qū)崿F(xiàn)該采集功能。傳統(tǒng)采集配置方法與動(dòng)態(tài)重構(gòu)配置方法的資源消耗如圖11所示。
按本文驗(yàn)證要求,傳統(tǒng)的數(shù)據(jù)采集設(shè)備需要將大氣壓力傳感器、智能電表、陀螺儀以及溫濕度傳感器的采集接口和協(xié)議解析功能全部寫入采集芯片,消耗FPGA的Slice Register和LUT資源分別是906和2 984。本文提出的基于FPGA動(dòng)態(tài)重構(gòu)的數(shù)據(jù)采集可配置方法,只需根據(jù)各類功能所消耗資源的最大值,劃分動(dòng)態(tài)域,保證動(dòng)態(tài)域有足夠的資源實(shí)現(xiàn)該功能即可。本文為FPGA動(dòng)態(tài)域劃分的Slice Register和LUT資源分別是500和1 400。相比傳統(tǒng)方式,本文設(shè)計(jì)的方法能夠節(jié)省40%以上的FPGA資源。
4.2.3 多源異構(gòu)數(shù)據(jù)采集可配置方法耗時(shí)分析
對(duì)于本文提出的數(shù)據(jù)采集可配置方法,需測(cè)量其重構(gòu)耗時(shí)與采傳耗時(shí),并驗(yàn)證響應(yīng)時(shí)間是否滿足制造工廠要求,其中重構(gòu)時(shí)間是指將Flash存儲(chǔ)的bit流文件通過ICAP接口寫到FPGA重構(gòu)域的耗時(shí)。重構(gòu)耗時(shí)計(jì)算方法如圖12所示(以4字節(jié)bit流數(shù)據(jù)為例),重構(gòu)耗時(shí)計(jì)算方法為ICAP接口將4字節(jié)bit流數(shù)據(jù)寫入重構(gòu)域的時(shí)間T1,以及從Flash中讀取4字節(jié)bit流數(shù)據(jù)的時(shí)間T2,T1需要消耗4個(gè)時(shí)鐘周期,T2需要消耗32個(gè)時(shí)鐘周期,本文時(shí)鐘頻率為50 MHz,因此根據(jù)bit流文件的大小即可分析出重構(gòu)耗時(shí)。
本文對(duì)大氣壓力傳感器、智能電表、陀螺儀以及溫濕度傳感器4種設(shè)備分別作可配置驗(yàn)證,得到如表4所示數(shù)據(jù)。表4中的bit流文件為實(shí)現(xiàn)各傳感器采集功能的重構(gòu)文件,其大小與采集各傳感器程序的功能復(fù)雜度成正相關(guān)。本文采用的重構(gòu)狀態(tài)機(jī)從Flash中讀取4字節(jié)bit流文件需要0.64 ms,將其寫入ICAP接口需要0.08 ms(如圖12)。以大氣壓力傳感器為例,實(shí)現(xiàn)該傳感器數(shù)據(jù)采集功能的bit流文件大小為126 kB,重構(gòu)耗時(shí)為22.68 ms。在測(cè)量重構(gòu)耗時(shí)的同時(shí),還需測(cè)量異構(gòu)數(shù)據(jù)從采集到上傳到上位機(jī)的時(shí)間,即采傳耗時(shí),兩者之和為該方法的響應(yīng)時(shí)間。由表4可知,配置后的采集設(shè)備響應(yīng)時(shí)間均滿足響應(yīng)時(shí)間要求。
表4 采集可配置耗時(shí)
本文提出一種基于FPGA的多源異構(gòu)數(shù)據(jù)并行可配置采集方法。首先,使用FPGA作為數(shù)據(jù)采集前端,充分利用FPGA硬件并行的優(yōu)勢(shì),實(shí)現(xiàn)了18種多源異構(gòu)數(shù)據(jù)的并行采集與協(xié)議解析,并設(shè)計(jì)了異步域數(shù)據(jù)的時(shí)鐘同步方案,將異構(gòu)數(shù)據(jù)封裝為統(tǒng)一數(shù)據(jù)協(xié)議上傳,實(shí)現(xiàn)了多源異構(gòu)數(shù)據(jù)的統(tǒng)一處理,并降低數(shù)據(jù)采集響應(yīng)時(shí)間;其次,深入研究了FPGA動(dòng)態(tài)重構(gòu)原理與方法,設(shè)計(jì)了FPGA動(dòng)態(tài)重構(gòu)狀態(tài)機(jī),在不影響采集其他傳感器數(shù)據(jù)采集的情況下,實(shí)現(xiàn)了數(shù)據(jù)采集部分接口和協(xié)議可動(dòng)態(tài)配置,利用FPGA的可重構(gòu)性實(shí)現(xiàn)數(shù)據(jù)采集設(shè)備的靈活可配置并降低數(shù)據(jù)采集設(shè)備資源的消耗。本文方法為數(shù)據(jù)采集設(shè)備向著高集成、小型化和可配置的方向發(fā)展提供了一定的應(yīng)用指導(dǎo)。
本文研究了基于FPGA的多源異構(gòu)數(shù)據(jù)并行可配置采集方法,但FPGA缺乏良好的系統(tǒng)級(jí)處理與控制能力,未來將進(jìn)一步研究基于FPGA和ARM(advanced RISC machine)處理器協(xié)同的片上系統(tǒng)(System on Chip,SoC)以及高級(jí)可擴(kuò)展接口(Advanced eXtensible Interface, AXI)等片上高速總線通信方法,在一定程度上實(shí)現(xiàn)多源異構(gòu)數(shù)據(jù)的軟硬協(xié)同采集、處理并進(jìn)一步提升數(shù)據(jù)通信速率。另外,本文方法未考慮無線數(shù)據(jù)采集,未來擬在系統(tǒng)中集成ZigBee、BlueTooth等無線傳輸模塊,提高本文方法應(yīng)用廣度。