周 銳, 周 健
(1. 中北大學 信息與通信工程學院, 太原 030051; 2.國營781廠, 蘭州 730000)
在我國部隊中,戰(zhàn)士在進行射擊打靶訓練時,現(xiàn)在一般仍采取傳統(tǒng)的實彈射擊訓練方法,激光模擬訓練器材還沒有裝備使用,實彈射擊訓練不僅浪費彈藥,而且危險性高,組織實施比較困難。用激光射擊系統(tǒng)模擬實彈射擊,節(jié)省了彈藥的同時又能提高訓練的安全性并獲得實彈射擊同樣的效果,大大提高戰(zhàn)士們的實際水平。利用含有激光技術、單片機技術、傳感器和微電子技術的模擬射擊訓練系統(tǒng)設計和實現(xiàn),對國防建設現(xiàn)代化,軍事訓練智能化、提高部隊整體素質,以及節(jié)約國防開支都具有重要意義。
為了提高系統(tǒng)在通信過程中的性能,本系統(tǒng)在設計時采用RS485總線進行串行數(shù)據(jù)的通信。系統(tǒng)中計算機通過調用串口控件與外部的RS232C進行通信,RS232C與RS485總線標準間的轉換通過RS232/RS485轉換器來實現(xiàn)。各單片機與RS485總線的連接通過SN75176芯片來實現(xiàn)。
本系統(tǒng)的設計容量為12個終端和一臺控制器(計算機),2者都與RS485總線進行連接通信,根據(jù)系統(tǒng)設計的具體要求,其總體設計框圖如圖1所示。
圖1 多路數(shù)據(jù)通信系統(tǒng)總體結構設計
RS485是一種多發(fā)送器的電路標準,電路結構是在平衡連接電纜兩端由終端電阻,在平衡電纜上掛發(fā)送器、接收器、組合收發(fā)器。在一般的RS485總線多機串行通信系統(tǒng)設計中,均采用主從式結構。圖2所示為采用SN75176芯片和RS485總線構成的單片機間多機通信的原理圖。
圖2 采用RS485構成的多單片機通信原理圖
如圖2所示,在總線末端需要接一個匹配電阻,來吸收總線上的反射信號,保證正常傳輸信號干凈、無毛刺。匹配電阻的取值應該與總線的特性阻抗相當。
要保證通信的可靠性,必須有嚴格的通信協(xié)議。下面是本設計中涉及到的最基本的幾條協(xié)議:
(1)系統(tǒng)中從機容量最多可為255臺,分別設置其地址為00H~FEH;
(2)地址FFH是對所有從機都起作用的一條控制命令,命令各個從機可以恢復SM2=1時的狀態(tài);
(3)數(shù)據(jù)塊的長度設為16個字節(jié);
(4)主從機間的聯(lián)絡過程為:主機首先發(fā)送地址,被尋址從機返回本機地址給主機,如果判斷其地址相符后,主機給其發(fā)送控制命令,該從機根據(jù)主機的命令回送主機本機的狀態(tài),如果主機判斷狀態(tài)正常,則開始發(fā)送或接收數(shù)據(jù),其第一個字節(jié)是數(shù)據(jù)塊的長度;
(5)設定主機發(fā)送的控制命令代碼為:
00:要求從機接收數(shù)據(jù)塊;
01:要求從機發(fā)送數(shù)據(jù)塊;
(6)從機狀態(tài)字的基本格式為:
D7 D6 D5 D4 D3 D2 D1 D0 ERR 0 0 0 0 0 TRDY RRDY
ERR=1,從機接收到非法命令;
TRDY=1,從機發(fā)送準備就緒;
RRDY=1,從機接收準備就緒。
本系統(tǒng)采用的標準是異步串行通信模式,傳輸?shù)臄?shù)據(jù)格式設置為11位,即:1位起始位、8位數(shù)據(jù)位、1位校驗位、1位停止位。
通信協(xié)議包括3種幀格式:呼叫幀、應答幀和數(shù)據(jù)幀。
呼叫幀是由上位機發(fā)出的,它的格式為起始字符、下位機地址和異或校驗位。依據(jù)其功能細分為呼叫幀1和呼叫幀2,呼叫幀1用來輪詢各臺下位機的狀態(tài);呼叫幀2則用來關閉輪詢,而只與一臺下位機進行通信,接下來上位機開始與某一臺下位機通過數(shù)據(jù)幀進行一對一的大量數(shù)據(jù)通信。
應答幀只能由下位機發(fā)出。當下位機收到呼叫幀后,把本機地址和當前狀態(tài)回發(fā)給上位機。
上下位機都能發(fā)出數(shù)據(jù)幀,這是上下位機間進行大量數(shù)據(jù)傳輸?shù)幕靖袷健T诎l(fā)數(shù)據(jù)幀前,上位機通過呼叫幀2與某一臺下位機形成一對一的連接。
控制AT89S52單片機串行口的控制寄存器共有2個:特殊功能寄存器SCON和PCON,分別用于設定4種不同的通信方式及定義波特率。它的串行口工作方式3是可變波特率的9位數(shù)據(jù)異步通信方式,發(fā)送或接收一幀數(shù)據(jù)為11位:1位起始位(0)、8位數(shù)據(jù)位、l位附加的校驗位和1位停止位(1)。其中附加的第9位數(shù)據(jù)是可編程的,利用這一可控的第9位數(shù)據(jù),同時設置好傳輸波特率和數(shù)據(jù)傳輸格式就可以實現(xiàn)多機通信。主機與從機的通信程序流程框圖如圖3所示。其中:左圖為發(fā)送流程圖;右圖為接收流程圖。
圖3 通信程序設計流程圖
本系統(tǒng)使用Visual C++中的MScomm控件實現(xiàn)串口通信功能。MScomm是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發(fā)數(shù)據(jù)的簡便方法。
(1)在建立的Project中添加了類CMSComm,打開“Project->Add to Project ->Components->and Controls-> Registered ActiveX Controls”菜單選擇Components: Microsoft Communi -cations Control version 6.0;(2)在對話框上添加MSComm控件及其ID的控制變量;(3)對串口進行初始化,設置MSComm控件的屬性;(4)添加串口事件的消息處理函數(shù)OnComm()函數(shù),在函數(shù)中編寫數(shù)據(jù)處理代碼;(5)編寫串口發(fā)送等其它代碼;(6)關閉串口。
圖4是用Microsoft Visual Studio 2008編寫測測試程序,從圖中可以看出,系統(tǒng)達到了設計目標,基本實現(xiàn)了激光打靶數(shù)據(jù)通信的功能。后續(xù)的工作還要完善計算機上位機程序,完成激光打靶數(shù)據(jù)處理系統(tǒng)和數(shù)據(jù)庫的建立。
圖4 測試程序顯示結果
本文所述的激光打靶多路數(shù)據(jù)通信系統(tǒng)滿足了我軍部隊射擊模擬訓練的需要。體積小,經(jīng)濟實用,完全擺脫了其他電子訓練設備臃腫的外貌。操作方便,維護簡單,提高了部隊進行群體射擊訓練的效率。解決了激光打靶系統(tǒng)的連網(wǎng)問題,滿足了部隊群體訓練的需要。
[1]馬明建,周長城.數(shù)據(jù)采集與處理技術[M].西安:西安交通大學出版社,1999.
[2]Intel Corporation.MCS51 Microcontroller Family Programmer’s Guide and Instruction Set[R].Intel Corporation ,1997.
[3]蔡美琴.MCS-51系列單片機系統(tǒng)及其應用[M].北京:高等教育出版社,1992.
[4]毛謙敏.單片機原理及應用教程[M].北京:國防工業(yè)出版社,2005.
[5]周志光,劉定良.單片機技術與應用[M].長沙:中南大學出版社,2005.
[6]M Asim Khan.PC RS422 INTERFACE,2002[EB/OL].http://wenku.baidu.com/view/0b790dd6 360cba1aa811da09.html.
[7]東方人華,李秀敏,凌宇欣.Visual C++ 6.0范例入門與提高[M].北京:清華大學出版社,2003.
[8]劉曉華.精通MFC[M].北京:電子工業(yè)出版社,2003.