周 銳, 周 健
(1. 中北大學 信息與通信工程學院, 太原 030051; 2.國營781廠, 蘭州 730000)
在我國部隊中,戰士在進行射擊打靶訓練時,現在一般仍采取傳統的實彈射擊訓練方法,激光模擬訓練器材還沒有裝備使用,實彈射擊訓練不僅浪費彈藥,而且危險性高,組織實施比較困難。用激光射擊系統模擬實彈射擊,節省了彈藥的同時又能提高訓練的安全性并獲得實彈射擊同樣的效果,大大提高戰士們的實際水平。利用含有激光技術、單片機技術、傳感器和微電子技術的模擬射擊訓練系統設計和實現,對國防建設現代化,軍事訓練智能化、提高部隊整體素質,以及節約國防開支都具有重要意義。
為了提高系統在通信過程中的性能,本系統在設計時采用RS485總線進行串行數據的通信。系統中計算機通過調用串口控件與外部的RS232C進行通信,RS232C與RS485總線標準間的轉換通過RS232/RS485轉換器來實現。各單片機與RS485總線的連接通過SN75176芯片來實現。
本系統的設計容量為12個終端和一臺控制器(計算機),2者都與RS485總線進行連接通信,根據系統設計的具體要求,其總體設計框圖如圖1所示。

圖1 多路數據通信系統總體結構設計
RS485是一種多發送器的電路標準,電路結構是在平衡連接電纜兩端由終端電阻,在平衡電纜上掛發送器、接收器、組合收發器。在一般的RS485總線多機串行通信系統設計中,均采用主從式結構。圖2所示為采用SN75176芯片和RS485總線構成的單片機間多機通信的原理圖。

圖2 采用RS485構成的多單片機通信原理圖
如圖2所示,在總線末端需要接一個匹配電阻,來吸收總線上的反射信號,保證正常傳輸信號干凈、無毛刺。匹配電阻的取值應該與總線的特性阻抗相當。
要保證通信的可靠性,必須有嚴格的通信協議。下面是本設計中涉及到的最基本的幾條協議:
(1)系統中從機容量最多可為255臺,分別設置其地址為00H~FEH;
(2)地址FFH是對所有從機都起作用的一條控制命令,命令各個從機可以恢復SM2=1時的狀態;
(3)數據塊的長度設為16個字節;
(4)主從機間的聯絡過程為:主機首先發送地址,被尋址從機返回本機地址給主機,如果判斷其地址相符后,主機給其發送控制命令,該從機根據主機的命令回送主機本機的狀態,如果主機判斷狀態正常,則開始發送或接收數據,其第一個字節是數據塊的長度;
(5)設定主機發送的控制命令代碼為:
00:要求從機接收數據塊;
01:要求從機發送數據塊;
(6)從機狀態字的基本格式為:

D7 D6 D5 D4 D3 D2 D1 D0 ERR 0 0 0 0 0 TRDY RRDY
ERR=1,從機接收到非法命令;
TRDY=1,從機發送準備就緒;
RRDY=1,從機接收準備就緒。
本系統采用的標準是異步串行通信模式,傳輸的數據格式設置為11位,即:1位起始位、8位數據位、1位校驗位、1位停止位。
通信協議包括3種幀格式:呼叫幀、應答幀和數據幀。
呼叫幀是由上位機發出的,它的格式為起始字符、下位機地址和異或校驗位。依據其功能細分為呼叫幀1和呼叫幀2,呼叫幀1用來輪詢各臺下位機的狀態;呼叫幀2則用來關閉輪詢,而只與一臺下位機進行通信,接下來上位機開始與某一臺下位機通過數據幀進行一對一的大量數據通信。
應答幀只能由下位機發出。當下位機收到呼叫幀后,把本機地址和當前狀態回發給上位機。
上下位機都能發出數據幀,這是上下位機間進行大量數據傳輸的基本格式。在發數據幀前,上位機通過呼叫幀2與某一臺下位機形成一對一的連接。
控制AT89S52單片機串行口的控制寄存器共有2個:特殊功能寄存器SCON和PCON,分別用于設定4種不同的通信方式及定義波特率。它的串行口工作方式3是可變波特率的9位數據異步通信方式,發送或接收一幀數據為11位:1位起始位(0)、8位數據位、l位附加的校驗位和1位停止位(1)。其中附加的第9位數據是可編程的,利用這一可控的第9位數據,同時設置好傳輸波特率和數據傳輸格式就可以實現多機通信。主機與從機的通信程序流程框圖如圖3所示。其中:左圖為發送流程圖;右圖為接收流程圖。

圖3 通信程序設計流程圖
本系統使用Visual C++中的MScomm控件實現串口通信功能。MScomm是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發數據的簡便方法。
(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)添加串口事件的消息處理函數OnComm()函數,在函數中編寫數據處理代碼;(5)編寫串口發送等其它代碼;(6)關閉串口。


圖4是用Microsoft Visual Studio 2008編寫測測試程序,從圖中可以看出,系統達到了設計目標,基本實現了激光打靶數據通信的功能。后續的工作還要完善計算機上位機程序,完成激光打靶數據處理系統和數據庫的建立。

圖4 測試程序顯示結果
本文所述的激光打靶多路數據通信系統滿足了我軍部隊射擊模擬訓練的需要。體積小,經濟實用,完全擺脫了其他電子訓練設備臃腫的外貌。操作方便,維護簡單,提高了部隊進行群體射擊訓練的效率。解決了激光打靶系統的連網問題,滿足了部隊群體訓練的需要。
[1]馬明建,周長城.數據采集與處理技術[M].西安:西安交通大學出版社,1999.
[2]Intel Corporation.MCS51 Microcontroller Family Programmer’s Guide and Instruction Set[R].Intel Corporation ,1997.
[3]蔡美琴.MCS-51系列單片機系統及其應用[M].北京:高等教育出版社,1992.
[4]毛謙敏.單片機原理及應用教程[M].北京:國防工業出版社,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].北京:電子工業出版社,2003.