傅宗寧+姜周曙+黃國輝
摘 ?要: 設計一種基于單片機的組態(tài)王KingView液位控制系統(tǒng);描述系統(tǒng)管路設計和底層硬件,著重對組態(tài)王和單片機之間的ASCII碼型通信協(xié)議,以及單片機在組態(tài)王中的通信格式設置進行說明。將其應用到設計的以ADμC834為主控芯片的三容水箱液位控制系統(tǒng)中,加入簡單PID控制算法,進行了實物驗證,使系統(tǒng)液位能快準穩(wěn)的穩(wěn)定在目標液位上,顯示該系統(tǒng)具有可靠性高、集成度高和成本低等優(yōu)點。
關鍵字: 組態(tài)王; 三容水箱液位控制; PID; ASCII碼
中圖分類號: TN919?34; TP24 ? ? ? ? ? ? ? ? ? 文獻標識碼: A ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2014)24?0101?04
Design and application of KingView communication system based on
single?chip microcomputer
FU Zong?ning, JIANG Zhou?shu, HUANG Guo?hui
(Automation College, Hangzhou Dianzi University, Hangzhou 310018, China)
Abstract: A sort of KingView liquid level control system based on single?chip microcomputer is designed in this paper. The pipeline design and underlying hardware of the system are described. ASCII code communication protocol between KingView and MCU, and MCU communication format in KingView are elaborated in detail. They are applied to the self?designed three?tank water level control system, in which ADμC834 is taken as its main control chip and a simple PID control algorithm is added. The physical verification result indicates that it can control the water level in the setting level quickly, accurately and steadily, which shows that the system has high reliability, high integration and low cost.
Keywords: KingView; three?tank liquid level control; PID; ASCII code
0 ?引 ?沿
隨著工業(yè)自動化要求的提高,以及控制設備和過程監(jiān)控裝置之間通信的需求,使用組態(tài)軟件設計的監(jiān)控系統(tǒng)在逐漸普及。組態(tài)軟件因其工作性能穩(wěn)定可靠、人機界面良好、硬件配置方便以及編程簡單等特點而得到了大量使用。常見的組態(tài)軟件有MCGS、King View、WinCC等。這些軟件都支持標準的控制設備,如PLC等。但在工業(yè)現(xiàn)場,使用PLC等模塊的系統(tǒng)成本較高,而且在具有大量模擬量檢測的工業(yè)現(xiàn)場,復雜的外圍電路也會影響系統(tǒng)的穩(wěn)定可靠性。單片機具有體積小、質(zhì)量輕、價格低、應用開發(fā)便利等優(yōu)點。接口功能豐富,可以與前端電路制作在一塊電路板上,提高系統(tǒng)的可靠性。將單片機運用到測控系統(tǒng)中,能將測量的靈活性和工控軟件的控制穩(wěn)定性有效的結合起來,從而優(yōu)化現(xiàn)場測控系統(tǒng)的總體性能和性價比[1]。
將單片機的應用開發(fā)便利、價格低、體積小和組態(tài)軟件的穩(wěn)定可靠等優(yōu)點相結合,必將成為工業(yè)生產(chǎn)的趨勢。其中,兩者間的數(shù)據(jù)交互是整個系統(tǒng)采集控制關鍵。
1 ?系統(tǒng)總體架構
為了實現(xiàn)組態(tài)軟件和單片機的通信,采用三容水箱實驗平臺作為物理平臺進行驗證,將通信程序運用到三容水箱的液位控制系統(tǒng)中。
三容水箱液位控制系統(tǒng)通過對各路水泵和閥門的控制,可以模擬現(xiàn)代工業(yè)生產(chǎn)過程中對液位、流量、壓力等參數(shù)的測量、控制,也可以觀察系統(tǒng)參數(shù)的變化特性,因此在工業(yè)應用中具有很強的代表性[2?3]。
本系統(tǒng)通體由透明有機玻璃制作而成,主要有2個小水箱、1個大水箱、不銹鋼臺面、電器盒、水槽4部分組成。并裝有6個進水手動閥,2個手動溢水閥,2個手動連通閥,3個電動閥作為出水閥;水槽中安裝2個潛水泵用于打水;一個潛水泵作循環(huán)泵。如圖1所示。
硬件系統(tǒng)采用美國AD公司推出的ADμC834單片機作為主控芯片,主要由處理器模塊、采集模塊、控制模塊和通信模塊組成,可以實現(xiàn)對3個水箱的液位、2路流量、1路溫度信號的采集;2路水泵、1路循環(huán)泵和3個電動球閥的控制;通過RS 232和RS 485通信模塊和上位機進行通信[4]。如圖2所示。
在實驗過程中,用戶通過改變水泵兩端電壓改變水泵打水功率,水泵從水槽中抽水,經(jīng)過進水手動閥使水流入設定的水箱。液位傳感器、壓力傳感器等將檢測到的數(shù)據(jù)傳輸?shù)娇刂破?,并由控制器根?jù)用戶設定電動閥的出水開口度,可由此控制液位高度。在驗證組態(tài)軟件和單片機通信實驗中,可以采用一階簡單一階液位控制,即通過設置電動閥1開口度和控制水泵1打水功率實現(xiàn)水箱1的液位平衡。
2 ?系統(tǒng)軟件設計
2.1 ?通信程序設計
作為工業(yè)采集現(xiàn)場常用的控制器,單片機和組態(tài)王的數(shù)據(jù)交換是整個系統(tǒng)采集和控制間聯(lián)系的關鍵。傳統(tǒng)單片機和組態(tài)王的通信方式主要有3種:
① 通過動態(tài)數(shù)據(jù)交換(DDE)進行通信,但這種方式操作復雜,對開發(fā)人員要求較高,也會帶來額外的開銷,如系統(tǒng)的實時性較差,增加系統(tǒng)的不可靠性等;
② 利用組態(tài)王的驅(qū)動程序開發(fā)包自己根據(jù)需求開發(fā)通信驅(qū)動程序,但這種方法對開發(fā)人員要求更高,有一定的技術難度,且增加開發(fā)周期和成本;
③ 利用組態(tài)王提供的單片機通用通信協(xié)議進行通信,該方法操作簡便且實時性好,適用于一般用戶[5]。
最新版本的組態(tài)王提供HEX型和ASCII型兩種單片機通用通信協(xié)議,可以通過串口直接和單片機進行通信。通信方式有RS 232,RS 422,RS 485三種,可進行奇偶檢驗,波特率最高可達256000bps。因為ASCII型通信協(xié)議具有設計簡單、程序易讀易寫等優(yōu)點,所以本液位控制系統(tǒng)采用ASCII型通信協(xié)議進行數(shù)據(jù)交互。
根據(jù)組態(tài)王提供的通用單片機ASCII型通信協(xié)議,組態(tài)王和單片機通信的命令格式主要分為讀/寫兩種格式[6],如下:
除字頭、字尾外所有字節(jié)均為ASCII碼。
字頭:1個字節(jié)1個ASCII碼,組態(tài)王中默認為40H。
設備地址:1個字節(jié)由2個ASCII碼表示,對應組態(tài)王軟件中設置的0~255(即0~0x0FFH)。
標志位:1個字節(jié)數(shù)據(jù)由2個ASCII碼(bit0~bit7)表示,其中低4位有效:
bit0=0:讀,bit0=1:寫;
bit1=0:不打包,bit1=1:打包;
bit3bit2=00:數(shù)據(jù)類型為字節(jié)(BYTE),
bit3bit2=01:數(shù)據(jù)類型為字(UINT),
bit3bit2=1x:數(shù)據(jù)類型為浮點數(shù)(FLOAT)。
數(shù)據(jù)地址:2個字節(jié)由4個ASCII碼表示,范圍為0x0000~0xFFFF:
當單片機中定義的數(shù)據(jù)類型為BYTE型變量時,在組態(tài)王中定義相應的變量的從寄存器X0,X1,X2,X3,…開始對應單片機中開始地址為0,1,2,3,…的占用一個字節(jié)的變量;
當單片機中定義的數(shù)據(jù)類型為UINT型變量時,在組態(tài)王中定義相應的變量的從寄存器X100,X102,X104,X106,…開始對應單片機中開始地址為100,102,104,106,…的占用2個字節(jié)的變量;
當單片機中定義的數(shù)據(jù)類型為FLOAT型變量時,在組態(tài)王中定義相應的變量的從寄存器X200,X204,X208,X212,…開始對應單片機中開始地址為200,204,208,212,…的占用4個字節(jié)的變量。
數(shù)據(jù)字節(jié)數(shù):1個字節(jié)由2個ASCII碼表示,范圍在1~100間;
數(shù)據(jù):實際傳送的數(shù)據(jù),由ASCII碼表示,個數(shù)為字節(jié)數(shù)的2倍;
異或:1個字節(jié)由2個ASCII碼表示,用于對傳輸數(shù)據(jù)的正確與否進行校驗,去除字頭從設備地址開始逐位進行異或校驗得到校驗碼;
CR:一個字節(jié)0x0d,表示一幀數(shù)據(jù)結束。
初始化設定波特率和上位機標準口中設置的一致時,上位機(組態(tài)王)發(fā)出命令幀,下位機(ADμC834單片機)接受到數(shù)據(jù)后,對數(shù)據(jù)進行解析:
在接收到幀頭(40H)后,對上位機下傳的設備地址和單片機程序中定義的設備號進行匹配,如果相同則進一步接收數(shù)據(jù)至該幀數(shù)據(jù)的結束碼(0x0d),否則退出接收。
上位機發(fā)送讀命令,主要用于單片機對數(shù)據(jù)的采集,格式為:
單片機應答,若異或校驗正確:
若錯誤:
在三容水箱液位控制系統(tǒng)中,上位機發(fā)送該命令向單片機請求讀取液位傳感器采集的液位值,單片機將采集到的AD值以ASCII碼格式發(fā)送到上位機。
根據(jù)組態(tài)王讀命令的格式要求,設備地址設置為01,標志位為04(數(shù)據(jù)類型為字,不打包,讀),數(shù)據(jù)地址為104(16進制為68,4個ASCII碼表示為30 30 36 38),數(shù)據(jù)長度2個字節(jié),因此上位機發(fā)送的一幀讀數(shù)據(jù)為:
40 30 31 30 34 30 30 36 38 30 32 30 39 0d
單片機響應幀為:
40 30 31 30 32 35 30 30 44 37 32 0D
其中“35 30 30 44”即為采集到液位的A/D值(ASCII碼表示,16進制為500D,即十進制20 493)。
以上過程可用串口調(diào)制工具實現(xiàn)。上位機發(fā)送寫命令,主要將控制命令發(fā)送給單片機,格式為:
單片機應答,若校驗正確:
若錯誤:
組態(tài)王通過寫命令將水泵和球閥的控制命令發(fā)送給單片機,再由單片機將數(shù)據(jù)進行解析后對水泵打水功率和球閥開口度進行控制,并向組態(tài)王反回應答響應幀。本系統(tǒng)采用控制開關電源調(diào)節(jié)24 V水泵的打水功率,開關電源輸出電壓由5 V信號16位PWM控制。16位PWM控制范圍在0~65 535,對應0~24 V水泵電壓成線性比例關系。假設水泵的打水電壓為15 V,根據(jù)對應的線性關系可以推算出單片機輸出的PWM值應為:15×(65 535/24)=40 959,換算成16進制為9FFF。對同一臺實驗臺采用設采集液位相同的設備地址(01),標志位05(數(shù)據(jù)類型為字,不打包,寫),數(shù)據(jù)地址為100(16進制為64,4個字節(jié)ASCII碼表示為30 30 36 34),數(shù)據(jù)長度2個字節(jié),數(shù)據(jù)為9FFF(ASCII碼39 46 46 46),因此上位機發(fā)送的一幀讀數(shù)據(jù)為:
40 30 31 30 35 30 30 36 34 30 32 39 46 46 46 37 42 0d
如校驗正確,單片機返回應答幀:
40 30 31 23 23 30 31 0D
其中,“23 23”為“##”的ASCII碼。
同理,球閥開口度可從0~100%間調(diào)節(jié),設備地址(01),標志位05(數(shù)據(jù)類型為字,不打包,寫),數(shù)據(jù)地址為102(16進制為66,4個字節(jié)ASCII碼表示為30 30 36 36),數(shù)據(jù)長度2個字節(jié),數(shù)據(jù)為001E(十進制為30,ASCII碼30 30 31 45),因此上位機發(fā)送的一幀讀數(shù)據(jù)為:
40 30 31 30 35 30 30 36 36 30 32 30 30 31 45 37 32 0d
若校驗錯誤,則返回應答幀:
40 30 31 2A 2A 30 31 0D
其中,“2A 2A”為“**”的ASCII碼。
2.2 ?組態(tài)王軟件和算法設計
根據(jù)單片機程序中對水泵(100)、球閥(102)和液位傳感器(104)設定的數(shù)據(jù)地址和數(shù)據(jù)類型,設置組態(tài)王中的數(shù)據(jù)詞典,并設定采集液位值的采集頻率(本系統(tǒng)中采用0.1 s發(fā)送一次讀指令)。制作組態(tài)王界面,對相關變量進行關聯(lián),其中有關I/O變量的數(shù)據(jù)詞典如表1所示。
表1 組態(tài)王數(shù)據(jù)詞典
在應用程序命令語言中寫入程序的運行流程,并設置每1.5 s運行一次[7]。在程序命令中,主要寫入命令為對水泵和球閥的控制,并在此加入PID控制算法,如圖3框圖所示,對液位平衡進行控制。
根據(jù)PID控制算法的原理,本系統(tǒng)采用水泵主控的方法進行控制[8]。
[u(k)=u(k-1)+Δu(k)=u(k-1)+KP[e(k)-e(k-1)]+ ? ? ? ? KIe(k)+KD[e(k)-2e(k-1)+e(k-2)]]
由上式可以得到第k時刻對水泵的控制量u(k),將該值賦給水泵即可實現(xiàn)對水泵的控制。
由圖4可以看到,通過調(diào)節(jié)PID參數(shù),液位能很快穩(wěn)定在150 mm的設定高度上[9]。
3 ?結 ?論
綜上所述,本系統(tǒng)很好地實現(xiàn)了ADμC834單片機和組態(tài)王基于ASCII碼的通信,并運用到三容水箱液位控制系統(tǒng)中,通過PID的參數(shù)整定快準穩(wěn)的將液位穩(wěn)定在目標液位上。成功將組態(tài)軟件具有的工作性能穩(wěn)定、人機界面良好、配置方便以及編程簡單和單片機體積小、價格低、應用開發(fā)便利等優(yōu)點相結合,為實際工業(yè)控制中運用組態(tài)王和單片機進行控制奠定良好的實際應用基礎。
參考文獻
[1] 趙學軍.單片機與組態(tài)王的通信程序設計[J].工業(yè)控制計算機,2006,19(9):35?37.
[2] SACO R, PIRES E, GODFRID C. Real time controlled laboratory plant for control education [J]. Frontiers in Education, 2002, 1: 102?112.
[3] Amira Gmbh. Handbook of laboratory equipment three tank system [M]. Germany: Amira Gmbh, 1998.
[4] 馮毅萍,樂嘉華.計算機液位控制系統(tǒng)實驗裝置的研制[J].實驗室研究與探索,2000(2):78?81.
[5] 蔚俊蘭,丁振榮.組態(tài)王6.5與單片機的通信方法[J].工業(yè)控制計算機,2004,17(10):58?59.
[6] 朱小超,徐雪春.單片機與組態(tài)王基于ASCII型通信程序設計[J].工業(yè)控制計算機,2010,23(12):34?36.
[7] 北京亞控科技發(fā)展有限公司.組態(tài)王King View Version 6.5使用手冊[M].北京:北京亞控科技有限公司,2003.
[8] 王曉靜.基于三容水箱系統(tǒng)的模糊PID控制算法研究及實驗教學系統(tǒng)開發(fā)[D].長沙:中南大學,2009.
[9] 劉士榮.計算機控制系統(tǒng)[M].北京:機械工業(yè)出版社,2008.