基于SOPC的定量稱重控制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
關(guān)鍵詞:SOPC;NiosII軟核處理器;FPGA;AD7730;動(dòng)態(tài)稱重
Abstract: For the needs of high accuracy, high reliability and multifunction of a weighting control system, the software and hardware design methods of a SOPC based on multiple Nios II Embedded softcore CPUs are given. Weighing senor,A/D converter AD7730, the mean filter algorithm which can remove extreme values and the predictive control algorithm are used to implement the high precision measurement and the automatic pack control of the pulverized material. The system has the advantages of low cost, high stability, short development period and good extensibility and so on. The field test result indicates that the weighting error of the system is less than 0.2%.
Key words: SOPC;Nios II softcore processor;FPGA;AD7730;dynamic weighing
1引 言
在化工、水泥、糧食、飼料等行業(yè)的生產(chǎn)過程中,需要對物料進(jìn)行定量稱重控制,完成自動(dòng)稱重包裝。物料可以劃分為顆粒、粉末、液體等類型。采用人工進(jìn)行的定量稱重包裝不但效率低,而且計(jì)量精度低。全自動(dòng)定量稱重控制系統(tǒng)不但滿足很高的計(jì)量精度,而且具有很強(qiáng)的穩(wěn)定性,且具有精度高、功能強(qiáng)大、操作簡便等特點(diǎn)。
隨著嵌入式系統(tǒng)和微電子技術(shù)的發(fā)展,全自動(dòng)定量稱重控制系統(tǒng)的實(shí)現(xiàn)技術(shù)也在不斷地發(fā)展。可編程片上系統(tǒng)(SOPC)是一種靈活高效的SOC設(shè)計(jì)方式,它根據(jù)系統(tǒng)設(shè)計(jì)的需要將CPU、存儲(chǔ)器、I/O等各種IP核集成到一個(gè)可編程邏輯芯片(FPGA)上,構(gòu)成一個(gè)可編程的片上系統(tǒng)。采用SOPC設(shè)計(jì)方式可以很容易對已有的設(shè)計(jì)進(jìn)行修改,靈活性高[1]。
本文設(shè)計(jì)的定量稱重控制系統(tǒng)采用Altera公司的SOPC解決方案,它基于嵌入式軟核Nios II多核結(jié)構(gòu), Nios II軟核是一個(gè)32位RISC嵌入式處理器,性能超過200MIP,在性能上Nios II可滿足當(dāng)前的大部分嵌入式產(chǎn)品的設(shè)計(jì)。Altera公司提供了完整的開發(fā)套件:Quartus II 、SOPC Builder、Nios II IDE和仿真工具等軟件,并將它們無縫地集成在一起,這為當(dāng)前嵌入式系統(tǒng)設(shè)計(jì)提供了新方法,并帶來了巨大的便利,可輕松實(shí)現(xiàn)從底層的硬件設(shè)計(jì)到上層的軟件開發(fā),縮短開發(fā)周期,降低開發(fā)的復(fù)雜性。
2 系統(tǒng)總體設(shè)計(jì)
本系統(tǒng)要求稱重測量誤差小于0.2%,且系統(tǒng)的功能比較復(fù)雜,既要實(shí)時(shí)處理采集過來的數(shù)據(jù),還要實(shí)現(xiàn)控制、顯示、存儲(chǔ)以及與上位機(jī)通訊等功能,同時(shí)還要實(shí)現(xiàn)復(fù)雜的稱重預(yù)測控制算法[2],一般在幾秒中之內(nèi)要完成物料的動(dòng)態(tài)稱重測量和包裝,特別地,系統(tǒng)若要控制多路稱重傳感器的測量和包裝,采用單CPU來控制的話,勢必會(huì)影響到系統(tǒng)的速度,很難實(shí)現(xiàn)高精度的稱重測量和控制需求。可以考慮采用多CPU系統(tǒng)來實(shí)現(xiàn)。傳統(tǒng)的SOC多處理器系統(tǒng)使系統(tǒng)結(jié)構(gòu)復(fù)雜,可靠性降低,且增加了系統(tǒng)的開發(fā)難度。
采用SOPC的實(shí)現(xiàn)方案,很好地解決了系統(tǒng)實(shí)現(xiàn)功能復(fù)雜性和系統(tǒng)設(shè)計(jì)復(fù)雜性的矛盾,Nios II 5.0及以上版本支持多處理器系統(tǒng)的創(chuàng)建和調(diào)試。多個(gè)Nios II處理器能夠有效地共享系統(tǒng)資源,由于SOPC Builder允許用戶輕松添加多個(gè)處理器到系統(tǒng)中,建立多處理器系統(tǒng)的難點(diǎn)已不再是硬件的排列和連接,而在于多個(gè)處理器的軟件的設(shè)計(jì),使它們正常操作,相互之間不產(chǎn)生沖突。
為防止多個(gè)處理器的相互干擾,在Nios II開發(fā)套件中包含一個(gè)硬件互斥核(mutex core)。這個(gè)硬件互斥核允許不同的處理器在某一時(shí)間段聲明對共享資源的所有權(quán)。一個(gè)處理器對資源的臨時(shí)所有權(quán)防止共享資源被其他處理器破壞。在Nios II IDE中,對多處理器系統(tǒng)的調(diào)試也比較容易[2]。
采用多處理器系統(tǒng)實(shí)現(xiàn)的全自動(dòng)稱重控制系統(tǒng),CPU功能劃分如下:CPU1完成鍵盤參數(shù)輸入、數(shù)據(jù)顯示、打印、與上位機(jī)通訊等功能,CPU2,CPU3,…,CPUn分別完成每路的物料的動(dòng)態(tài)稱重測量和控制,具體包括數(shù)據(jù)采集、數(shù)據(jù)濾波,稱重預(yù)測控制算法軟件或硬件實(shí)現(xiàn)以及自動(dòng)包裝控制等功能。圖1給出了包含2個(gè)Nios II CPU 的系統(tǒng)硬件結(jié)構(gòu)圖。CPU各自運(yùn)行獨(dú)立的軟件,之間通過片上存儲(chǔ)器實(shí)現(xiàn)數(shù)據(jù)的共享。
圖1 稱重控制系統(tǒng)結(jié)構(gòu)圖
3 系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn)
本設(shè)計(jì)采用Altera 公司的新一代低成本FPGA ―Cyclone II實(shí)現(xiàn)SOPC設(shè)計(jì),系統(tǒng)硬件主要包括FPGA上的Nios II處理器系統(tǒng)和FPGA外的接口和外設(shè)兩部分。Nios II處理器系統(tǒng)主要由基于Avalon Bus 的Nios II CPU1、串行接口、PIO、存儲(chǔ)器控制器;Nios II CPU2、定時(shí)器、PIO控制器以及片上RAM、互斥核等IP組成。與FPGA相連的外設(shè)包括串行配置器件、Flash、SDRAM、鍵盤、LCD顯示器、打印機(jī)、AD7330、料位、料門開關(guān)等,稱重傳感器與AD7330直接相連,通過定時(shí)器提供系統(tǒng)的定時(shí)時(shí)鐘和定時(shí)中斷請求信號;串口通過RS485總線與上位機(jī)通訊,實(shí)現(xiàn)多Nios II系統(tǒng)的上位機(jī)監(jiān)控。通過PIO可實(shí)現(xiàn)對AD7330、料門開關(guān)、鍵盤、LCD顯示器、打印機(jī)等外設(shè)的控制,存儲(chǔ)器控制器分別與片外SDRAM和Flash連接,實(shí)現(xiàn)對存儲(chǔ)器的訪問。
本控制系統(tǒng)硬件設(shè)計(jì)與實(shí)現(xiàn)的步驟如下:
首先在SOPC Builder中,使用Altera公司提供的IP Core,對Nios II CPU和各外設(shè)模塊的特性、參數(shù)大小及在系統(tǒng)中地址分配等進(jìn)行設(shè)定;然后啟動(dòng)SOPC Builder中的Generate,使之生成用于綜合和仿真的文件;最后,使用Quartus II軟件鎖定端口引腳,對生成的Nios II系統(tǒng)進(jìn)行仿真、綜合、適配、下載和FPGA 配置。這樣即實(shí)現(xiàn)了如圖1所示的SOPC硬件系統(tǒng)。
3.1 數(shù)據(jù)采集及其處理
數(shù)據(jù)采集及其處理由稱重傳感器、模數(shù)轉(zhuǎn)換AD7730和CPU2完成,AD7730的數(shù)據(jù)采集電路如圖2所示。圖中,由橋式壓力傳感器輸出電壓信號進(jìn)入到輸入通道AIN+和AIN-,經(jīng)過模數(shù)轉(zhuǎn)換,再經(jīng)過AD7730中的數(shù)字濾波器進(jìn)行濾波,濾波后的數(shù)據(jù)通過SCLK、DIN、DOUT等信號通過中斷的方式送給Nios II進(jìn)行相應(yīng)的處理,得到期望的精確數(shù)據(jù)。
圖2 AD7730數(shù)據(jù)采集電路圖
AD7730 是美國ADI 公司推出的一款高分辨率的A/D 轉(zhuǎn)換器, 采用雙通道全差分模擬輸入,可直接和傳感器輸入信號相連,并可自校準(zhǔn)和系統(tǒng)校準(zhǔn)[3]。AD7730 特別適合用于寬動(dòng)態(tài)范圍內(nèi)的低頻信號A/D 轉(zhuǎn)換, 具有優(yōu)良的抗噪聲性能。在稱重控制器中使用AD7730 分別與稱重傳感器和CPU2直接接口。為了能夠得到高精度的采集數(shù)據(jù),CPU2要有很高的工作頻率。CPU2的工作頻率設(shè)為50MHz,專門負(fù)責(zé)數(shù)據(jù)采集及算法的處理。每隔10ms,CPU2從AD7730中讀取A/D轉(zhuǎn)換值, 然后進(jìn)行數(shù)字濾波處理,得到期望的近似數(shù)據(jù)。
3.2 CPU功能的實(shí)現(xiàn)
CPU1主要完成顯示、存儲(chǔ)、打印和通訊等功能。這些功能由CPU1控制外圍I/O設(shè)備來實(shí)現(xiàn)。稱重開始前,先通過液晶顯示屏和鍵盤進(jìn)行人機(jī)界面交互,輸入控制參數(shù),系統(tǒng)稱重開始后,CPU1通過共享存儲(chǔ)器獲取并顯示CPU2檢測的稱重?cái)?shù)據(jù),CPU2把檢測值和標(biāo)定的參數(shù)值進(jìn)行比較,根據(jù)比較的結(jié)果進(jìn)行稱重預(yù)測控制算法[4]的計(jì)算,根據(jù)計(jì)算結(jié)果輸出控制信號進(jìn)行稱重控制。稱重結(jié)束后可以由CPU1把本次稱重以及累積稱重的結(jié)果打印出來,同時(shí)把結(jié)果記錄在Flash中。CPU1可同時(shí)控制幾臺(tái)甚至十幾臺(tái)稱重控制器,且通過RS485與上位機(jī)通訊,實(shí)現(xiàn)定量稱重控制系統(tǒng)的遠(yuǎn)程監(jiān)控。
3.3 多路控制的實(shí)現(xiàn)
要實(shí)現(xiàn)多路控制,只需在圖1的基礎(chǔ)上增加Nios II和相關(guān)IP核來實(shí)現(xiàn),這對于FPGA 來說是很方便的。例如要實(shí)現(xiàn)2路控制,只需增加一個(gè)Nios II軟核CPU3,添加和CPU2相同的定時(shí)器和PIO IP核,再增加相應(yīng)的數(shù)據(jù)采集和控制電路就可以實(shí)現(xiàn),注意多個(gè)處理器可共用片外的Flash和SDRAM,只要其容量足夠大,也即不需要重新制作FPGA 控制電路板。CPU3負(fù)責(zé)該路數(shù)據(jù)的采集、濾波和稱重控制算法的計(jì)算和控制量的輸出,以此類推,可以用同樣的方法設(shè)計(jì)3路、4路等等。這樣我們就可以用一臺(tái)控制系統(tǒng)去完成多路測量,實(shí)現(xiàn)一臺(tái)控制系統(tǒng)控制多個(gè)包裝系統(tǒng),從而在不影響稱重精度的基礎(chǔ)上大幅度降低成本。
4 軟件系統(tǒng)總體設(shè)計(jì)
4.1 軟件總體設(shè)計(jì)
軟件是基于Nios II 集成開發(fā)環(huán)境(IDE)[5] ,采用C語言開發(fā)完成的,CPU1主要是完成參數(shù)的輸入、打印、顯示和通信等功能,CPU1軟件主要包括鍵盤管理與參數(shù)輸入,狀態(tài)測試,稱量系統(tǒng)校正和與上位機(jī)通信等模塊。為了節(jié)約系統(tǒng)功耗,在設(shè)定完系統(tǒng)參數(shù)后,LCD顯示可關(guān)閉。在稱量參數(shù)設(shè)置完成后,就可以啟動(dòng)自動(dòng)稱量。在自動(dòng)稱量完成后,可以顯示靜重值和扣重值。CPU2主要是完成數(shù)據(jù)采集和預(yù)估控制算法的計(jì)算及稱重控制,數(shù)據(jù)采集采用中斷方式,中斷時(shí)間設(shè)置為10 ms。
4.2 去極值平均濾波算法
稱重測量的精度直接影響系統(tǒng)的定量包裝控制的準(zhǔn)確性,所以采集數(shù)據(jù)的精度對保證系統(tǒng)的精度至關(guān)重要。
工業(yè)現(xiàn)場環(huán)境惡劣,為了準(zhǔn)確地進(jìn)行稱重?cái)?shù)據(jù)的采集,必須對采集的數(shù)據(jù)進(jìn)行濾波處理,濾掉干擾信號。在實(shí)際應(yīng)用中采用了去極值平均濾波算法,既可以消除由系統(tǒng)外部環(huán)境偶然因素引起的突變性擾動(dòng)造成的尖脈沖干擾,又能夠使數(shù)據(jù)平滑。去極值平均濾波算法是一種比較典型的復(fù)合濾波算法,它是由中值濾波算法和滑動(dòng)平均濾波算法復(fù)合而來。由于它具有簡單實(shí)用的特點(diǎn),所以得到廣泛運(yùn)用。
去極值平均濾波算法的原理是:建立一個(gè)固定長度為N的隊(duì)列,對每一組新的采樣值,先用中值濾波算法濾除采樣值中的脈沖性干擾,即剔除M 個(gè)最大值和M個(gè)最小值(MN/2);然后求出余下的N-2M個(gè)采樣值的平均值,選取這個(gè)平均值為本次采樣值。顯然,這種方法既能抑制隨機(jī)干擾,又能濾除明顯的脈沖干擾。
5現(xiàn)場測試分析
通過現(xiàn)場測試,得到對設(shè)定值為25kg 的大米進(jìn)行稱重包裝的數(shù)據(jù)如表1所示。結(jié)果表明:系統(tǒng)誤差小于0.2%。
表1 比較實(shí)際誤差
第一袋 | 第二袋 | 第三袋 | 第四袋 | 第五袋 | 第六袋 | |
給定值/K | 25.000 | 25.000 | 25.000 | 25.000 | 25.000 | 25.000 |
測量值/K | 25.000 | 24.999 | 25.001 | 25.000 | 24.999 | 25.001 |
誤差/K | 0.000 | -0.001 | 0.001 | 0.000 | 0.000 | 0.001 |
6 結(jié) 論
現(xiàn)場測試結(jié)果表明,系統(tǒng)測量稱重誤差小于0.2%。
本文的創(chuàng)新點(diǎn)在于:基于SOPC的定量稱重控制系統(tǒng)具有開發(fā)周期短、成本低、可靠性高、易于擴(kuò)充等特點(diǎn),其SOPC實(shí)現(xiàn)技術(shù)可廣泛適用于各種測量與控制系統(tǒng)。
參考文獻(xiàn):
[1] Qingxu Deng , Hai Xu, Shuisheng Wei, An embedded SOPC system using automation design, Proceedings. 2005 International Conference on Parallel Processing Workshops, 2005, p 232-9
[2] 李蘭英. Nios II 嵌入式軟核 SOPC 設(shè)計(jì)原理及應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社, 2006.
[3] 劉書明. 高性能模數(shù)與數(shù)模轉(zhuǎn)換器件[M]. 西安:西安電子科技大學(xué)出版社, 2000.
[4] 陳寶遠(yuǎn),房國志,于曉陽.多級給料粉狀物料稱重系統(tǒng)的預(yù)測控制算法[J]. 電機(jī)與控制學(xué)報(bào),2005,9(3): 287-290.
[5] Altera Corp.QuartusII Version 6.0 Hardbook. Altera, 2006.
[6] 袁景超,宋廣為. 連續(xù)稱重給料系統(tǒng)稱重精度的穩(wěn)定提高[J].微計(jì)算機(jī)信息[J].2001,17(11),38-39
稱重傳感器相關(guān)文章:稱重傳感器原理
評論