李生明,黃寶玉
(1.清遠職業技術學院 機電與汽車工程學院,廣東 清遠 511510;2.長江工程職業技術學院 學生工作部,湖北 武漢 430212)
單片機以其實時監控性能優秀廣泛用于測控系統,通常采用數碼管、液晶、點陣等作為其顯示設備,自成體系。組態王是一種通用的工業監控軟件,可以制作出精美的組態畫面,設計簡單,在工業控制系統中廣泛使用。下面以單片機控制的電子鐘為例,設計一個單片機的電子鐘組態系統,完成時間和溫度的實時通訊。
組態王運行在上位PC機上,單片機作為下位機運行時鐘控制程序,時鐘數據要通過通訊線路傳送到PC機上,在組態王中顯示,通訊方式采用串行通信,如RS232、RS422、RS485,波特率可以選2400、4800、9600、19200bps。值得注意的是,它們之間的通訊均采用ASCII形式進行,因此單片機的數值在傳送前均要轉換成ASCII碼。
本系統中組態王要向單片機讀取“時、分、秒”時鐘和溫度數據,因此要向單片機發送讀命令,希望單片機能傳回相應數據。讀命令是組態王自動發出的,不需要在組態王中編程,只要在單片機程序中接收此命令,然后作相應處理。讀命令的通訊格式如下:
格式說明;
(1)字頭:@符號,即40H
(2)設備地址:1字節2個ASCII碼,0~255(即0~ffH)
(3)標志:1字節2個ASCII碼,具體各位的含義為:
bit0=0:讀,bit0=1:寫。
bit1=0:不打包。
bit3bit2=00,數據類型為字節。
bit3bit2=01,數據類型為字。
bit3bit2=1x,數據類型為浮點數。
(4)數據地址:2字節4個ASCII碼,0000H~ffffH
(5)數據字節數:1字節2個ASCII碼,1~100,實際讀寫的數據的字節數。
(6)異或:計算從設備地址到異或字節前的異或值,轉換成2個ASCII碼
(7)CR:回車符,0dH。
例如:本設計組態王要讀取單片機的“時、分、秒”和溫度信息,分別存放在組態王的X0、X1、X2、X3中予以顯示。表1是以讀取秒信息為例,取設備地址為6,組態王讀取X2(秒)時所發數據。
單片機運行時,采用中斷方式實時接收串口數據,當接收完一幀數據后,經過校驗,若正確,再判斷是不是“讀”命令,若是,就應向組態王發送數據[1],單片機向組態王發送數據時要進行ASCII格式轉換,轉換方法同上例,其通訊格式為:

表1 數據表

?
啟動組態王后,在組態王的左側導航樹中選擇“設備”,在右側雙擊“新建”進入新建設(如圖1)備向導,依次展開“設備驅動—智能模塊—單片機—通用單片機ASCII—串口”,選擇與單片機連接的COM口,在配置設備地址(如圖2)時填寫“6.0”,其中,6代表通訊協議中的設備地址,由用戶定義,范圍為0~255,即單片機地址號為6;0表示不打包。其他操作保持默認[2]。

圖1 新建設備

圖2 配置設備地址
建立三個組態變量:時、分、秒、溫度,均為IO整型變量,對應內部的寄存器X0、X1、X2和X3,用于與單片機交換數據。建立好的數據詞典如圖3所示。

圖3 數據詞典
如圖4所示,應用“文本”工具建立文本標簽和顯示文本,其中“:”為分隔,運用“模擬值顯示”動畫連接,表達式分別對應數據詞典中的時、分、秒、溫度變量,用于顯示“時:分:秒”和溫度數據。運行時的截圖如圖5所示。

圖4 組態畫面

圖5 組態王運行畫面
運行組態王的PC機通過串口與單片機相連,編寫單片機的監控程序與組態王通訊,程序由四個部分組成:主程序、時鐘和溫度采集程序、串行中斷子程序、公共發送子程序。
主程序由兩個部分組成:初始化部分和主循環部分。初始化部分完成定時器、串行口、中斷系統的初始化;主循環部分根據接收緩沖區數組的數據構造發送緩沖區數組,并通過串口發送給組態王,來響應組態王的命令。具體工作是,當組態王發送來的是“讀”命令時,構建組態王所要的數據,并將數值拆分轉換成ASCII碼,而且還要經過異或運算求校驗碼。關鍵程序如下(本程序忽略了校驗處理):

采用DS1302時鐘芯片采集實時時間,數據保存在X0、X1和X2變量中;采用DS18B20芯片采集當前溫度數據,存放在X3變量中。這樣只要在處理程序中將X0~X3數據通過串行口發送出去就可以完成通訊。這兩部分的程序比較經典,此處省略其程序。
這部分的主要工作是接收組態王發來的數據,并作必要的處理:更新發送緩沖區數組的部分數據、提取讀寫標記位。本部分的程序如下:


此子程序功能比較單一,就是構造一個靈活的發送程序,帶兩個形參,一個是發送緩沖區數組的指針,另一個是發送的數據個數[3]。具體程序如下:

綜上所述,單片機與組態王的結合,完美地實現了電子鐘的組態設計,為系統提供了優良的畫質效果,且編程工作量也不是太大,只要按規范的通訊協議編程即可完成。如果采用了無線模塊,更高級的應用就是實現無線數據傳輸。
參考文獻:
[1]劉守義.單片機應用技術[M].西安:西北電子科技大學出版社,2007.
[2]張永楓.單片機應用實訓教程[M].北京:清華大學出版社,2008.
[3]郭天祥.新概念51單片機C語言教程[M].北京:電子工業出版社,2009.