潘 廣, 黃國輝, 姜周曙
(杭州電子科技大學 能量利用系統與控制研究所, 浙江 杭州 310018)
近幾年,國內高校實驗室建設投入巨大,取得了豐碩的成果,但是在傳統實驗系統的實際應用中還存在一些問題,例如缺少對實驗室現場數據的監測和管理。因此,有必要設計一套應用于遠程實驗的多功能中繼器,將實驗室現場數據通過網絡傳輸到數據中心,便于實時了解實驗室情況,分析和評價實驗系統的效率和效益。
本文提出了一種以自主研發的三容水箱實驗臺為對象、內嵌uCos-ii實時操作系統的遠程實驗多功能中繼器。uCos-ii系統以線程為基本單位進行工作,很好地對系統資源和多線程進行管理,應用也更加靈活,能夠滿足開放性實驗對實時性與可靠性的要求。
多功能中繼器主控制模塊采用基于ARM內核的高性能處理器作為處理芯片,內嵌uCos-ii嵌入式實時操作系統和FatFs文件系統。如圖1所示,系統硬件電路分為中繼器和采集控制模塊兩部分。中繼器主要由電源模塊、單片機最小系統模塊、RS485通信模塊、網絡通信模塊、SD卡本地存儲模塊等構成[1]。三容水箱采集控制模塊的核心部分為A/D采樣電路,輔以外圍隔離、濾波與放大電路模塊。硬件電路采用模塊化設計思想,既能提高硬件電路的整體可靠性,也便于硬件電路的維護和升級。
穩定、可靠的電源模塊是多功能中繼器正常工作的必要前提。在進行電源模塊的設計時,需重點考慮電壓、功率和數模隔離。
電壓的穩定可靠是有源器件工作的必要條件。作為數模轉換的參考基準,電壓是否穩定將直接影響采集精度。采用24 V—5 V—3.3 V三級降壓模式,其中24 V—5 V采用LM2575集成穩壓電路,5V—3.3 V采用LM1117集成穩壓電路,最大限度地確保穩壓值偏差較小[2]。

圖1 系統總體硬件框圖
對于功率匹配的設計,首先需要分析所有有源器件的工作功率,按照瞬時最大工作電流求得有源器件瞬時最大工作功率,再給予部分冗余和考慮電源轉換效率等因素。
硬件電路中數字電路在電平轉折處近似于突變,造成電壓和電流變化速率快,易對模擬電路產生影響。因此,將隔離元件(磁珠、電容、電感、0 Ω電阻)單點接地,使模擬電路和數字電路相互隔離。
選用ARM Cortex-M3內核的stm32f103vet6系列處理器芯片作為主控制芯片。該芯片具有高主頻、低功耗、資源豐富等優點,并且具有多種外部設備接口,方便外圍硬件模塊的設計,也為嵌入uCos-ii實時操作系統與FatFs文件系統提供了硬件平臺。
最小系統主要由時鐘源電路、啟動模式選擇引腳、復位電路、下載仿真電路和RTC鐘源組成。其電原理圖如圖2所示。

圖2 單片機最小系統模塊電路圖
數據中繼器有2個RS485總線接口,通過接口與現場多臺數據采集器串行通信。本文選用隔離型RS485收發器ADM2483作為通信芯片,降低了硬件電路設計難度,提高了硬件電路的安全性。為達到最佳數據通信效果,在ADM2483的通信端口之間接入匹配電阻R,匹配電阻R主要用于匹配傳輸線的特性阻抗,阻止高速差分電信號在傳輸線中反射[3]。RS485普遍采用雙絞線進行數據傳輸,因此,選用120 Ω電阻作為RS485傳輸總線的終端并聯匹配電阻。通信模塊電路如圖3所示。

圖3 RS485通信模塊電路圖
網絡通信模塊集成無線GPRS網絡通信和有線以太網網絡通信兩種通信方式,適用于不同的應用場合。有線以太網網絡通信選用Boccn公司的W5100以太網接口芯片,芯片內部采用硬件邏輯電路實現TCP/IP協議棧,有效降低主控制芯片的處理負擔。片內集成100 Mbit/s以太網控制器,能降低實時通信網絡延時、提高數據傳輸穩定性,滿足遠程控制實驗的實時性要求[4]。
采集控制模塊是指底層數據采集板(又稱為下位機),以ADμC834單片機為核心控制器,其外圍電路的設計如圖4所示。采集控制模塊通過傳感器采集液位、溫度、壓力等模擬量并進行A/D轉換,最后把數字量按字節發送給中繼器。底層采集板通過RS485串口設備與中繼器通信,中繼器連接上位機,根據實驗類型選擇控制算法,將控制信號通過中繼器轉發至下位機并實時發送數據采集命令,實現運行狀態監控[5]。下位機在接收到中繼器的指令后進行分析并作出響應。
為滿足上位機與底層采集板間的高實時性數據傳輸的要求,中繼器不僅在硬件設計上使用高性能的ARM Cortex-M3內核芯片,而且在主控制芯片內移植嵌入uCos-ii系統來實現系統任務線程的管理與實時調度[6]。同時,系統還移植嵌入FatFs文件系統[7],方便在上位機和下位機之間進行數據交換與數據查看。

圖4 采集控制模塊電路圖
系統上電啟動后,其初始化工作是首要工作。初始化包括系統變量初始化,uCos-ii實時操作系統初始化,相關消息隊列、信號量集以及信號量初始化,MCU外設初始化和動態內存管理初始化。系統總體軟件流程圖如圖5所示。

圖5 系統總體軟件流程圖
數據傳輸是通過數據接收線程和數據發送線程來完成的。為保證數據的安全,中繼器的數據包均采用AES(advanced encryption standard)加密算法加密,再傳輸給數據中心服務器;而數據中心發送的數據包,中繼器通過解密、過濾,再將數據發送給采集控制板進行控制。在數據傳輸設計中,通信協議是準確進行數據傳輸的重要保障。該協議在遵循數據傳輸協議國家標準的前提下,結合本系統的需求進行設計。數據包由起始符、時間戳、包編號、包體長度、中繼器編號、數據類型、包體和校驗位組成。起始符為固定的“@@”,表示數據包的開始;包體長度為4字節,是除起始符和校驗位外的總長度[8]。請求數據包格式如表1所示。

表1 請求數據包格式
注:數據類型的具體定義如下:0—連接請求;1—身份驗證;2—驗證實驗臺開關;3—實驗數據;A—心跳包數據。
根據數據類型,上位機可以顯示實驗臺是空閑,還是進行實驗中。控制指令數據包的數據類型為固定值“K”,格式與請求數據包完全一樣,而包體內寫明具體的控制指令,如采集溫度、控制水箱液位等。
為了保證及時、有效地檢測到一方的非正常斷開,保證連接的資源被有效利用,保活機制就成為必要[9]。通常有兩種保活處理方式:(1)利用TCP協議層實現的Keepalive;(2)自己在應用層實現心跳包。由于應用層實現心跳包具有很好的靈活性,本系統選用該種方法來保證實驗的實時有效性。心跳包數據以固定時間間隔發送,判斷正確的回復,確定網絡連接是否正常。
實驗用戶進入登錄界面,發送建立連接的請求。上位機啟動后一直在等待接收中繼器的請求信號,建立會話連接。當連接成功后,中繼器將向多臺下位機發送驗證實驗臺開關數據,驗證成功后,開始進行遠程實驗。
實驗開始時,上位機把用戶設置的實驗參數及控制指令發送到中繼器,進行解析處理后發送到對應的實驗臺進行實驗;下位機則根據實驗類型進行相應的操作,通過串口與采集控制板進行通信。下位機會實時把液位、溫度、流量、壓力等信息通過串口發給服務器端,并把數據存入數據庫。在另外一個線程中,通過網絡發給客戶機并以flash的方式顯示給用戶,如圖6所示。

圖6 遠程實驗flash效果圖
通過中繼器能夠有效地利用計算機資源來進行更多的實驗,不僅節約成本,而且方便管理,使遠程實驗更加有序的進行[10]。
利用良好的硬件平臺和uCos-ii實時操作系統,將模糊自適應PID控制算法嵌入到中繼器中,不僅能夠避免每臺上位機都進行Matlab編程,而且使遠程實驗更加準確、有效地進行。中繼器接收到上位機的Kp、Ki、Kd值,對眾多實驗臺進行模糊自適應PID控制[11],將得到精準值再轉發給下位機,控制三容水箱實驗臺進行實驗,二階液位控制運行效果圖如圖7所示。

圖7 二階液位控制運行效果圖
部分程序如下:
/*******模糊規則表*********/
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}};
/****模糊推理規則的可信度*****/
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]