潘 廣, 黃國輝, 姜周曙
(杭州電子科技大學(xué) 能量利用系統(tǒng)與控制研究所, 浙江 杭州 310018)
近幾年,國內(nèi)高校實驗室建設(shè)投入巨大,取得了豐碩的成果,但是在傳統(tǒng)實驗系統(tǒng)的實際應(yīng)用中還存在一些問題,例如缺少對實驗室現(xiàn)場數(shù)據(jù)的監(jiān)測和管理。因此,有必要設(shè)計一套應(yīng)用于遠(yuǎn)程實驗的多功能中繼器,將實驗室現(xiàn)場數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)綌?shù)據(jù)中心,便于實時了解實驗室情況,分析和評價實驗系統(tǒng)的效率和效益。
本文提出了一種以自主研發(fā)的三容水箱實驗臺為對象、內(nèi)嵌uCos-ii實時操作系統(tǒng)的遠(yuǎn)程實驗多功能中繼器。uCos-ii系統(tǒng)以線程為基本單位進(jìn)行工作,很好地對系統(tǒng)資源和多線程進(jìn)行管理,應(yīng)用也更加靈活,能夠滿足開放性實驗對實時性與可靠性的要求。
多功能中繼器主控制模塊采用基于ARM內(nèi)核的高性能處理器作為處理芯片,內(nèi)嵌uCos-ii嵌入式實時操作系統(tǒng)和FatFs文件系統(tǒng)。如圖1所示,系統(tǒng)硬件電路分為中繼器和采集控制模塊兩部分。中繼器主要由電源模塊、單片機(jī)最小系統(tǒng)模塊、RS485通信模塊、網(wǎng)絡(luò)通信模塊、SD卡本地存儲模塊等構(gòu)成[1]。三容水箱采集控制模塊的核心部分為A/D采樣電路,輔以外圍隔離、濾波與放大電路模塊。硬件電路采用模塊化設(shè)計思想,既能提高硬件電路的整體可靠性,也便于硬件電路的維護(hù)和升級。
穩(wěn)定、可靠的電源模塊是多功能中繼器正常工作的必要前提。在進(jìn)行電源模塊的設(shè)計時,需重點考慮電壓、功率和數(shù)模隔離。
電壓的穩(wěn)定可靠是有源器件工作的必要條件。作為數(shù)模轉(zhuǎn)換的參考基準(zhǔn),電壓是否穩(wěn)定將直接影響采集精度。采用24 V—5 V—3.3 V三級降壓模式,其中24 V—5 V采用LM2575集成穩(wěn)壓電路,5V—3.3 V采用LM1117集成穩(wěn)壓電路,最大限度地確保穩(wěn)壓值偏差較小[2]。
圖1 系統(tǒng)總體硬件框圖
對于功率匹配的設(shè)計,首先需要分析所有有源器件的工作功率,按照瞬時最大工作電流求得有源器件瞬時最大工作功率,再給予部分冗余和考慮電源轉(zhuǎn)換效率等因素。
硬件電路中數(shù)字電路在電平轉(zhuǎn)折處近似于突變,造成電壓和電流變化速率快,易對模擬電路產(chǎn)生影響。因此,將隔離元件(磁珠、電容、電感、0 Ω電阻)單點接地,使模擬電路和數(shù)字電路相互隔離。
選用ARM Cortex-M3內(nèi)核的stm32f103vet6系列處理器芯片作為主控制芯片。該芯片具有高主頻、低功耗、資源豐富等優(yōu)點,并且具有多種外部設(shè)備接口,方便外圍硬件模塊的設(shè)計,也為嵌入uCos-ii實時操作系統(tǒng)與FatFs文件系統(tǒng)提供了硬件平臺。
最小系統(tǒng)主要由時鐘源電路、啟動模式選擇引腳、復(fù)位電路、下載仿真電路和RTC鐘源組成。其電原理圖如圖2所示。
圖2 單片機(jī)最小系統(tǒng)模塊電路圖
數(shù)據(jù)中繼器有2個RS485總線接口,通過接口與現(xiàn)場多臺數(shù)據(jù)采集器串行通信。本文選用隔離型RS485收發(fā)器ADM2483作為通信芯片,降低了硬件電路設(shè)計難度,提高了硬件電路的安全性。為達(dá)到最佳數(shù)據(jù)通信效果,在ADM2483的通信端口之間接入匹配電阻R,匹配電阻R主要用于匹配傳輸線的特性阻抗,阻止高速差分電信號在傳輸線中反射[3]。RS485普遍采用雙絞線進(jìn)行數(shù)據(jù)傳輸,因此,選用120 Ω電阻作為RS485傳輸總線的終端并聯(lián)匹配電阻。通信模塊電路如圖3所示。
圖3 RS485通信模塊電路圖
網(wǎng)絡(luò)通信模塊集成無線GPRS網(wǎng)絡(luò)通信和有線以太網(wǎng)網(wǎng)絡(luò)通信兩種通信方式,適用于不同的應(yīng)用場合。有線以太網(wǎng)網(wǎng)絡(luò)通信選用Boccn公司的W5100以太網(wǎng)接口芯片,芯片內(nèi)部采用硬件邏輯電路實現(xiàn)TCP/IP協(xié)議棧,有效降低主控制芯片的處理負(fù)擔(dān)。片內(nèi)集成100 Mbit/s以太網(wǎng)控制器,能降低實時通信網(wǎng)絡(luò)延時、提高數(shù)據(jù)傳輸穩(wěn)定性,滿足遠(yuǎn)程控制實驗的實時性要求[4]。
采集控制模塊是指底層數(shù)據(jù)采集板(又稱為下位機(jī)),以ADμC834單片機(jī)為核心控制器,其外圍電路的設(shè)計如圖4所示。采集控制模塊通過傳感器采集液位、溫度、壓力等模擬量并進(jìn)行A/D轉(zhuǎn)換,最后把數(shù)字量按字節(jié)發(fā)送給中繼器。底層采集板通過RS485串口設(shè)備與中繼器通信,中繼器連接上位機(jī),根據(jù)實驗類型選擇控制算法,將控制信號通過中繼器轉(zhuǎn)發(fā)至下位機(jī)并實時發(fā)送數(shù)據(jù)采集命令,實現(xiàn)運行狀態(tài)監(jiān)控[5]。下位機(jī)在接收到中繼器的指令后進(jìn)行分析并作出響應(yīng)。
為滿足上位機(jī)與底層采集板間的高實時性數(shù)據(jù)傳輸?shù)囊?中繼器不僅在硬件設(shè)計上使用高性能的ARM Cortex-M3內(nèi)核芯片,而且在主控制芯片內(nèi)移植嵌入uCos-ii系統(tǒng)來實現(xiàn)系統(tǒng)任務(wù)線程的管理與實時調(diào)度[6]。同時,系統(tǒng)還移植嵌入FatFs文件系統(tǒng)[7],方便在上位機(jī)和下位機(jī)之間進(jìn)行數(shù)據(jù)交換與數(shù)據(jù)查看。
圖4 采集控制模塊電路圖
系統(tǒng)上電啟動后,其初始化工作是首要工作。初始化包括系統(tǒng)變量初始化,uCos-ii實時操作系統(tǒng)初始化,相關(guān)消息隊列、信號量集以及信號量初始化,MCU外設(shè)初始化和動態(tài)內(nèi)存管理初始化。系統(tǒng)總體軟件流程圖如圖5所示。
圖5 系統(tǒng)總體軟件流程圖
數(shù)據(jù)傳輸是通過數(shù)據(jù)接收線程和數(shù)據(jù)發(fā)送線程來完成的。為保證數(shù)據(jù)的安全,中繼器的數(shù)據(jù)包均采用AES(advanced encryption standard)加密算法加密,再傳輸給數(shù)據(jù)中心服務(wù)器;而數(shù)據(jù)中心發(fā)送的數(shù)據(jù)包,中繼器通過解密、過濾,再將數(shù)據(jù)發(fā)送給采集控制板進(jìn)行控制。在數(shù)據(jù)傳輸設(shè)計中,通信協(xié)議是準(zhǔn)確進(jìn)行數(shù)據(jù)傳輸?shù)闹匾U稀T搮f(xié)議在遵循數(shù)據(jù)傳輸協(xié)議國家標(biāo)準(zhǔn)的前提下,結(jié)合本系統(tǒng)的需求進(jìn)行設(shè)計。數(shù)據(jù)包由起始符、時間戳、包編號、包體長度、中繼器編號、數(shù)據(jù)類型、包體和校驗位組成。起始符為固定的“@@”,表示數(shù)據(jù)包的開始;包體長度為4字節(jié),是除起始符和校驗位外的總長度[8]。請求數(shù)據(jù)包格式如表1所示。
表1 請求數(shù)據(jù)包格式
注:數(shù)據(jù)類型的具體定義如下:0—連接請求;1—身份驗證;2—驗證實驗臺開關(guān);3—實驗數(shù)據(jù);A—心跳包數(shù)據(jù)。
根據(jù)數(shù)據(jù)類型,上位機(jī)可以顯示實驗臺是空閑,還是進(jìn)行實驗中??刂浦噶顢?shù)據(jù)包的數(shù)據(jù)類型為固定值“K”,格式與請求數(shù)據(jù)包完全一樣,而包體內(nèi)寫明具體的控制指令,如采集溫度、控制水箱液位等。
為了保證及時、有效地檢測到一方的非正常斷開,保證連接的資源被有效利用,保活機(jī)制就成為必要[9]。通常有兩種保活處理方式:(1)利用TCP協(xié)議層實現(xiàn)的Keepalive;(2)自己在應(yīng)用層實現(xiàn)心跳包。由于應(yīng)用層實現(xiàn)心跳包具有很好的靈活性,本系統(tǒng)選用該種方法來保證實驗的實時有效性。心跳包數(shù)據(jù)以固定時間間隔發(fā)送,判斷正確的回復(fù),確定網(wǎng)絡(luò)連接是否正常。
實驗用戶進(jìn)入登錄界面,發(fā)送建立連接的請求。上位機(jī)啟動后一直在等待接收中繼器的請求信號,建立會話連接。當(dāng)連接成功后,中繼器將向多臺下位機(jī)發(fā)送驗證實驗臺開關(guān)數(shù)據(jù),驗證成功后,開始進(jìn)行遠(yuǎn)程實驗。
實驗開始時,上位機(jī)把用戶設(shè)置的實驗參數(shù)及控制指令發(fā)送到中繼器,進(jìn)行解析處理后發(fā)送到對應(yīng)的實驗臺進(jìn)行實驗;下位機(jī)則根據(jù)實驗類型進(jìn)行相應(yīng)的操作,通過串口與采集控制板進(jìn)行通信。下位機(jī)會實時把液位、溫度、流量、壓力等信息通過串口發(fā)給服務(wù)器端,并把數(shù)據(jù)存入數(shù)據(jù)庫。在另外一個線程中,通過網(wǎng)絡(luò)發(fā)給客戶機(jī)并以flash的方式顯示給用戶,如圖6所示。
圖6 遠(yuǎn)程實驗flash效果圖
通過中繼器能夠有效地利用計算機(jī)資源來進(jìn)行更多的實驗,不僅節(jié)約成本,而且方便管理,使遠(yuǎn)程實驗更加有序的進(jìn)行[10]。
利用良好的硬件平臺和uCos-ii實時操作系統(tǒng),將模糊自適應(yīng)PID控制算法嵌入到中繼器中,不僅能夠避免每臺上位機(jī)都進(jìn)行Matlab編程,而且使遠(yuǎn)程實驗更加準(zhǔn)確、有效地進(jìn)行。中繼器接收到上位機(jī)的Kp、Ki、Kd值,對眾多實驗臺進(jìn)行模糊自適應(yīng)PID控制[11],將得到精準(zhǔn)值再轉(zhuǎn)發(fā)給下位機(jī),控制三容水箱實驗臺進(jìn)行實驗,二階液位控制運行效果圖如圖7所示。
圖7 二階液位控制運行效果圖
部分程序如下:
/*******模糊規(guī)則表*********/
int kp[7][7]={{PB,PB,PM,PM,PS,ZO,ZO},
{PB,PB,PM,PS,PS,ZO,ZO},
{PM,PM,PM,PS,ZO,NS,NS},
{PM,PM,PS,ZO,NS,NM,NM},
{PS,PS,ZO,NS,NS,NM,NM},
{PS,ZO,NS,NM,NM,NM,NB},
{ZO,ZO,NM,NM,NM,NB,NB}};
/****模糊推理規(guī)則的可信度*****/
float form[7][7];
int i,j;
for(i=0;i<7;i++)
{
float w,h,r;
for(j=0;j<7;j++)
{ h=es[i];
r=ecs[j];
w=fand(h,r);
form[i][j]=w;
}
}
/**求得的最大值賦給form[a][b]**/
int a=0,b=0;
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
if(form[a][b]