摘要:針對某水下成像過程中水下照明燈的控制問題,設計了可視化軟件控制平臺。該平臺基于VC環境下的串口編程技術,通過多串口卡與單片機之間數據包傳遞的方式,實現了PC機同MCS51單片機通訊,從而達到了對燈亮度自動調節的目的。實際應用表明,該軟件平臺工作穩定、可靠,可實時根據水下成像照度要求對水下照明燈進行智能控制。
關鍵詞:水下照明燈;智能控制平臺;串口編程;單片機
引言
在某水下工程應用中,需要一定的環境照度才能達到成像所需的最低光照條件,而自然光在海水中傳播時衰減很快,成指數衰減規律,在晴天陽光直射,水質較好的條件下,40米處的照度也只有10Lux左右,幾乎沒有太陽光到達[1]。為此,在一定水深下,水下成像需要適當強度的輔助照明光來增加目標照度,提高成像質量。本文采用在VC環境下串口編程技術進行智能控制軟件平臺設計,結合控制硬件設備,該控制平臺可以根據照度計測量的環境照度值,實現水下成像設備輔助照明光源的自動調節,以滿足水下成像的需要。
1 控制單片機功能設置
1.1 單片機實現的功能
控制單片機需要實現以下幾個功能:控制對象選擇;兩盞燈的遠程開關控制;遠程調光控制;接收反饋信息。控制實現的流程如圖1所示。
1.2單片機端口說明
單片機通過80C51的P0口輸出8位數字量,其中P0.0作為燈的開關控制量,P0.1-P0.6作為燈的數字化亮度,分32級在最大與最小亮度之間調節,P1.0-P1.3作為輸入量,在狀態查詢和自檢操作時通過讀取P1.0-P1.3的狀態來作出相應判斷,P2.0-P2.3用于選通對何盞燈執行操作[2][3]。
1.3 通訊數據格式說明
單片機接收包說明
單片機命令字中:各位為1時有效,7、6、5、4位為命令位、3、2位為選燈位,為1時說明命令對該燈有效;保留字中高7位保留,第0位為1,單片機進行自檢;狀態格式如表1,其中高3位保留, 4、3、2、1、0位為調節的亮度,只有調節亮度和開燈命令有效,狀態檢測時為0;校驗字是前五個字節加和,不考慮進位。單片機返回包命令字格式類似定義。
2 PC機與單片機通信協議設計
用戶使用PC機控制單片機,完成對燈的開關、亮度調節、燈狀態檢測。
2.1 通訊方式設置
PC機采用MOXA CI-134四串口卡同MCS51單片機通訊,選取COM3作為通信端口,采用雙工、點對點的通信方式,數據速率為9600bps,使用數據和對通訊數據進行校驗,數據流由1位起始位+8位數據位+1位校驗位+1位停止位(奇校驗)組成[4]。
2.2 數據格式設定
依據單片機接收包、發送包的格式,為PC機定義與單片機通信的數據結構,各保留位均為0。
2.2.1 調光命令包
typedef struct tagCMDLIGHTPACK
{
BYTE byHead; //包頭0X7E
BYTE byCommand;//命令字
BYTE byReserved; //保留字
BYTE bySatLump1; //燈1狀態字
BYTE bySatLump2; //燈2狀態字
BYTE byCRC;//校驗字
}
2.2.2 調光返回包
typedef struct tagRTNLIGHTPACK
{
BYTE byHead;//包頭0X7E
BYTE byCommand; //命令字
BYTE byReturn;//返回值
BYTE bySatLump; //狀態字
BYTE byCRC; //校驗字
}
3 控制平臺軟件設計
3.1 控制命令的實現
控制的實現主要通過PC機與控制單片機之間的命令傳遞來進行的,控制命令可以是用戶消息命令,也可以是由控制平臺自己產生控制命令,該控制平臺主要由對水下環境照度的監測值,通過數據分析,而自動產生燈的調節命令,由程序分析調節何盞燈,亮度值調為多少,給出形成命令包的初始條件,并產生消息,然后在消息響應函數利用事先定義的結構體變量及指針,實現對發送包、接收包的管理,完成相應操作內容。本文設計的控制軟件要完成以下操作命令:開/關燈命令;調光命令;狀態查詢命令;自檢命令。
3.2 控制功能的源代碼實現
VC開發的控制軟件通過向串口寫數據來實現對單片機的通信,在PC機中插入多串口卡,安裝驅動程序后,可以將多串口卡的庫文件加入工程,直接調用操作串口的WINAPI函數,實現串口的初始化和數據讀寫[5],主要函數有:
intWINAPI sio_write(int port, char *buf, int len);
intWINAPI sio_read(int port, char *buf, int len);
控制平臺主體程序流程如圖2所示。
結束語
本文針對單片機控制照明燈所要實現功能,進行了單片機數據格式和與PC機通訊協議設置,采用VC的串口編程技術,實現發送、接收數據包的設計,通過串口數據包的讀寫,實現對燈的開關以及亮度調節等功能,本文設計出來的控制平臺穩定可靠,采用的設計方法實用且容易實現,對其他遠距離智能控制系統的設計有一定的借鑒意義。
參考文獻
[1]侍茂崇,高郭平,鮑獻文.海洋調查方法[M].青島:青島海洋大學出版社,2000.
[2]賀廉云.用單片機實現交通燈的控制[J].電腦學習, 2008,(01):16~18.
[3]孫涵芳,徐愛卿.MCS-51系列單片機原理與應用[M].北京:北京航空航天大學出版社,1998.
[4]梁中華,王子威,祁春清,索跡.PC機與單片機串行通信的研究[J].沈陽工業大學學報,2005, (03):22~24.
[5]李現勇.Visual C++串口通信技術與工程實踐[M].北京:人民郵電出版社,2002.