孟 飛,單建華,丁 晨,齊立華
(1.常州工學(xué)院光電工程學(xué)院,江蘇常州 213002;2.常州市光電子材料與器件重點(diǎn)實(shí)驗(yàn)室,江蘇常州 213002)
數(shù)據(jù)采集是測控系統(tǒng)的基本需求。目前,對于分布式測控系統(tǒng)其現(xiàn)場數(shù)據(jù)采集或控制節(jié)點(diǎn)往往由PLC加模擬量模塊的方式來實(shí)現(xiàn),而對于現(xiàn)場采集通道較多、數(shù)據(jù)量較大的則采用專門的現(xiàn)場主機(jī)擴(kuò)展數(shù)據(jù)采集卡的方式來完成數(shù)據(jù)采集功能[1-2]。這些方案的優(yōu)點(diǎn)是較為成熟,但相對復(fù)雜的設(shè)計和較高的費(fèi)用對于一些成本較為敏感的測控系統(tǒng)而言是無法承受的。該設(shè)計采用現(xiàn)場可編程門陣列(FPGA)為控制核心,擴(kuò)展模數(shù)轉(zhuǎn)換器(ADC)等器件設(shè)計數(shù)據(jù)采集裝置;選擇工業(yè)控制領(lǐng)域使用較多的Modbus協(xié)議,不僅能組網(wǎng)實(shí)現(xiàn)分布式數(shù)據(jù)采集,也能很好地與既有系統(tǒng)中的工控機(jī)、PLC和觸摸屏等進(jìn)行數(shù)據(jù)交換,在使用上較靈活方便。
數(shù)據(jù)采集裝置硬件上由FPGA、ADC、通信接口轉(zhuǎn)換器件和隔離電路等組成。FPGA是數(shù)據(jù)采集裝置的控制核心,負(fù)責(zé)控制ADC轉(zhuǎn)換和Modbus協(xié)議的解碼和編碼等。設(shè)計中Modbus協(xié)議的硬件介質(zhì)基于RS485,具有較好的抗干擾性和較長的通信距離。ADC轉(zhuǎn)換器件在FPGA的控制下將現(xiàn)場傳感器等模擬信號轉(zhuǎn)換成數(shù)字量按Modbus格式要求轉(zhuǎn)換后通過RS485傳送給上位計算機(jī)、PLC等。數(shù)據(jù)采集裝置的硬件組成如圖1所示。
圖1 數(shù)據(jù)采集裝置的硬件構(gòu)成
采用本數(shù)據(jù)采集裝置構(gòu)建數(shù)據(jù)采集系統(tǒng)時,可選用支持Modbus協(xié)議的觸摸屏或安裝有支持Modbus協(xié)議的組態(tài)軟件的工控機(jī)等作為上位機(jī),進(jìn)行必要的組態(tài)開發(fā)設(shè)計上位機(jī)監(jiān)控軟件以實(shí)現(xiàn)數(shù)據(jù)的存儲、趨勢曲線顯示等功能,數(shù)據(jù)采集系統(tǒng)的配置結(jié)構(gòu)見圖2。
圖2 數(shù)據(jù)采集系統(tǒng)的配置方案
該數(shù)據(jù)采集裝置中FPGA主要承擔(dān)ADC的時序邏輯控制以及Modbus協(xié)議的編碼和解碼運(yùn)算,其對內(nèi)部資源及速度等方面的要求主流的FPGA芯片一般都可滿足,因此重點(diǎn)考慮的是功耗、穩(wěn)定性和價格之間的平衡。Cyclone IV系列產(chǎn)品其內(nèi)部集成高達(dá)15萬個邏輯單元,采用經(jīng)過優(yōu)化的60 nm低功耗工藝,與上代產(chǎn)品相比,總功耗降低了25%[3-4]。根據(jù)該設(shè)計中對邏輯資源的消耗評估選擇了其中的EP4CE6E22C8,其具有6 K的邏輯單元和91根I/O引腳,能夠滿足設(shè)計中對內(nèi)部邏輯單元和外接ADC以及數(shù)字I/O的擴(kuò)展。采用EPCS16作為FPGA的配置芯片。
一般的工業(yè)場合對現(xiàn)場模擬量的分辨率要求并不會特別高,以10位、12位甚至8位等為主流,單純追求過高的分辨率由于現(xiàn)場各種噪聲干擾往往只會成為“理想”的指標(biāo),而不會對提高系統(tǒng)的實(shí)際精度有明顯作用,因此將分辨率選擇為12位。此外,工業(yè)現(xiàn)場的各類傳感器、變送器基本都已經(jīng)標(biāo)準(zhǔn)化、系列化,以4~20 mA或0~5 V(1~5 V)為主,因此對ADC輸入范圍限定為0~5 V為宜。
AD7891是一種8通道、12位的模擬到數(shù)字量的轉(zhuǎn)換器。根據(jù)輸入電壓的范圍細(xì)分為多個型號,最大采樣速率達(dá)到454 KSPS,接口方式串行或并行可選,而FPGA的I/O數(shù)量較多,為簡化控制程序設(shè)計采用并行方式。該設(shè)計選用AD7891ASZ-1,通過選擇輸入引腳將其輸入電壓范圍限定為± 5 V,滿足了輸入電壓范圍的要求以及一些需要雙極性輸入的場合。AD7891已經(jīng)內(nèi)置了多路輸入選擇開關(guān)、采樣保持器和基準(zhǔn)電壓源等,采用+5 V單電源供電,因此其所需外圍器件較少,接口方便。因FPGA I/O引腳的可配置性,AD7891的控制信號和數(shù)據(jù)端等引腳與FPGA的連接比較自由,只需考慮布線的方便即可。需要注意的是AD7891和FPGA的電平范圍不一樣,盡管兩者的電平閥值是兼容的,但AD7891的輸出電平較高,超出了FPGA I/O引腳的建議電壓范圍,為避免輸入電壓過高導(dǎo)致FPGA芯片損壞的可能,應(yīng)在兩者之間接入電平轉(zhuǎn)換芯片或接入分壓電阻。
由于Modbus協(xié)議的硬件傳輸介質(zhì)采用RS485,因此需要在FPGA和通信網(wǎng)絡(luò)之間添加轉(zhuǎn)換芯片,設(shè)計中選用MAX3491,采用3.3 V電源供電,可直接與FPGA連接。其理論傳輸速度最大10 Mbit/s,主要是為某些特殊場合下僅配置單個數(shù)據(jù)采集裝置而期望較高速度時不至于在通信硬件上產(chǎn)生瓶頸。
為提高系統(tǒng)的穩(wěn)定性和提高模擬量采集精度,采取電源隔離和光電隔離以及在輸入端口接入瞬態(tài)抑制二極管TVS等措施來保證。開關(guān)量輸入輸出和ADC的控制、數(shù)據(jù)信號等與FPGA之間采用光電隔離。外部開關(guān)電源的輸入經(jīng)DC-DC隔離電源模塊變換后供給FPGA一側(cè),而ADC的供電采用了開關(guān)電源后加線性穩(wěn)壓芯片的方式以提高ADC模擬電路的電源質(zhì)量。
與硬件模塊相對應(yīng),ADC的控制程序以及Modbus的編碼和解碼是數(shù)據(jù)采集裝置的主要程序模塊。軟件以QUARTUS II集成開發(fā)環(huán)境為開發(fā)平臺,采用Verilog HDL硬件描述語言進(jìn)行軟件開發(fā)。相比采用單片機(jī)等方案不同,F(xiàn)PGA的并行化執(zhí)行特征,使得不同功能模塊之間的時間分配、數(shù)據(jù)交換等變得簡單而清晰,不同模塊間相對獨(dú)立且并行運(yùn)行,通過定義和設(shè)置寄存器的方式完成不同程序模塊之間的數(shù)據(jù)交換以及控制數(shù)據(jù)采集裝置的運(yùn)行狀態(tài)。
AD7891工作在并行模式時,其時序邏輯如圖3所示。開始轉(zhuǎn)換前片選CS、寫信號WR等引腳按圖示時序要求作電平變化,在相應(yīng)引腳拉高前后將控制寄存器的數(shù)據(jù)發(fā)送到數(shù)據(jù)總線上,短時間拉低轉(zhuǎn)換啟動CONVST引腳開始轉(zhuǎn)換,其后監(jiān)測EOC轉(zhuǎn)換結(jié)束信號是否有效,有效后延遲適當(dāng)時間讀取A/D轉(zhuǎn)換器的轉(zhuǎn)換結(jié)果,具體時間和控制寄存器定義在參考文獻(xiàn)[5] 中作了詳細(xì)的規(guī)定。
圖3 AD7891并行模式時序邏輯
Modbus協(xié)議是主從站通信協(xié)議,除主站外最多可接247臺從站,但受線路負(fù)載能力和通信時效等限制,實(shí)際的基于Modbus的分布式測控系統(tǒng)一般不超過32臺從站,所有主從站的波特率、校驗(yàn)規(guī)則等參數(shù)應(yīng)嚴(yán)格一致。Modbus協(xié)議可使用ASCII、RTU兩種模式,該設(shè)計中采用RTU模式[2,6]。Modbus作為一個工業(yè)通信協(xié)議,其定義了較為豐富的功能碼,該設(shè)計中主要涉及模擬量的讀取以及數(shù)字量的讀取和輸出,因此只需使用其功能碼中的少數(shù)幾個,是簡化的Modbus協(xié)議。Modbus的收發(fā)過程是主機(jī)發(fā)出命令幀(由從站地址、功能碼、數(shù)據(jù)起始地址和數(shù)據(jù)數(shù)量以及CRC校驗(yàn)碼等幾部分組成),處于監(jiān)聽狀態(tài)的從機(jī)當(dāng)監(jiān)測到命令幀中的地址與自己地址相同時,開始接受其后的功能碼等信息,根據(jù)功能碼及相應(yīng)的數(shù)據(jù)讀取或設(shè)置從站內(nèi)的相應(yīng)寄存器、數(shù)字量I/O口等操作。從站根據(jù)執(zhí)行的情況向主站反饋應(yīng)答信息,即回復(fù)包含從站地址、功能碼、數(shù)據(jù)長度、具體數(shù)據(jù)和CRC校驗(yàn)碼等信息的應(yīng)答幀。
根據(jù)Modbus協(xié)議的基本要求,將Modbus協(xié)議的實(shí)現(xiàn)分解為波特率時鐘信號發(fā)生單元、讀寫數(shù)據(jù)單元、功能碼解析和執(zhí)行、CRC校驗(yàn)碼生成和比對、寄存器組以及相應(yīng)的控制邏輯等若干模塊組成,F(xiàn)PGA的內(nèi)部各功能程序單元之間的關(guān)系和結(jié)構(gòu)如圖4所示。
波特率信號發(fā)生器由FPGA外接的通信參數(shù)設(shè)置開關(guān)來設(shè)定波特率參數(shù),是串行數(shù)據(jù)讀寫節(jié)拍的基準(zhǔn),應(yīng)與主站保持一致。讀數(shù)據(jù)邏輯根據(jù)總線上過來的信號,首先讀取到從站地址放到相應(yīng)的寄存器中,地址比對邏輯將其與從站地址設(shè)置開關(guān)的二進(jìn)制代碼進(jìn)行比對,如不一致則丟棄后面的數(shù)據(jù),繼續(xù)等待和監(jiān)測下一幀數(shù)據(jù),否則按順序?qū)⒐δ艽a等讀至相應(yīng)的寄存器以進(jìn)行CRC校驗(yàn)和執(zhí)行相應(yīng)的功能。而應(yīng)答數(shù)據(jù)序列生成單元則根據(jù)執(zhí)行的結(jié)果及當(dāng)前的功能碼等生成應(yīng)答數(shù)據(jù)發(fā)給CRC校驗(yàn)單元生成校驗(yàn)數(shù)據(jù),構(gòu)成完整的應(yīng)答數(shù)據(jù)幀經(jīng)寫數(shù)據(jù)模塊發(fā)送給主機(jī)。設(shè)計中CRC校驗(yàn)碼的生成采用查表法來完成,相比計算法邏輯上簡單明了,縮短了程序調(diào)試周期。
圖4 FPGA程序結(jié)構(gòu)
該數(shù)據(jù)采集裝置已應(yīng)用于SF6斷路器微水含量實(shí)時監(jiān)測系統(tǒng)中,系統(tǒng)根據(jù)圖2示意的配置方案進(jìn)行布線和連接,利用數(shù)據(jù)采集裝置中的模擬量輸入通道對微水含量傳感器的模擬量輸出信號進(jìn)行轉(zhuǎn)換。而上位機(jī)則采用VB自行開發(fā)了監(jiān)控軟件,能夠?qū)崟r顯示各斷路器內(nèi)SF6氣體的微水含量值和趨勢曲線。經(jīng)過兩個月的實(shí)際應(yīng)用,對回傳數(shù)據(jù)進(jìn)行分析未出現(xiàn)明顯的數(shù)據(jù)丟失或大的采集偏差,這表明該數(shù)據(jù)采集裝置以及所構(gòu)成的系統(tǒng)運(yùn)行穩(wěn)定,可靠性好。
文中介紹了一種以FPGA為控制核心,采用Modbus協(xié)議的數(shù)據(jù)采集裝置能實(shí)現(xiàn)多通道的模擬量輸入和數(shù)字量的輸入輸出等功能,數(shù)據(jù)采集裝置能方便地配置,具有結(jié)構(gòu)簡單、組網(wǎng)方便和易擴(kuò)展等特點(diǎn)。因此,在對速度和數(shù)據(jù)吞吐量要求不高的應(yīng)用領(lǐng)域具有很好的推廣使用價值。
參考文獻(xiàn):
[1] 王振力.工業(yè)控制網(wǎng)絡(luò).北京:人民郵電出版社,2012.
[2] 陳在平,岳有軍.工業(yè)控制網(wǎng)絡(luò)與現(xiàn)場總線技術(shù).北京:機(jī)械工業(yè)出版社,2007.
[3] 吳繼華.Altera FPGA/CPLD設(shè)計.北京:人民郵電出版社,2011.
[4] 曹建鋒,陳星,王明智.一種基于FPGA的Modbus通信協(xié)議的接口設(shè)計與應(yīng)用.儀表技術(shù)與傳感器,2013(3):79-84.
[5] LC2MOS 8-Channel 12-Bit High Speed Data Acquisition System AD7891. Analog Devices Inc.,2004.
[6] 安子良,肖立中,孔令超.基于Modbus RTU通信協(xié)議的石油井架應(yīng)力監(jiān)測系統(tǒng).中國測試,2011,37(6):72-75.