您現(xiàn)在的位置:
中國(guó)傳動(dòng)網(wǎng)
>
技術(shù)頻道
>
應(yīng)用方案
>
無(wú)線數(shù)傳模塊在遠(yuǎn)程環(huán)境監(jiān)測(cè)系統(tǒng)中的應(yīng)用
時(shí)間:2008-11-25 11:51:00來(lái)源:ronggang
圖2無(wú)線數(shù)傳模塊結(jié)構(gòu)圖[/align]
圖2是無(wú)線數(shù)傳模塊結(jié)構(gòu)框圖。無(wú)線數(shù)傳模塊的工作方式有全雙工和半雙工兩種,為了能充分測(cè)試系統(tǒng)傳輸數(shù)據(jù)的可靠性,本系統(tǒng)采用全雙工模式。同時(shí)注意在設(shè)置通信時(shí),必須保證通過(guò)串行口將無(wú)線數(shù)傳模塊的收發(fā)頻率設(shè)置相同。
2.1模塊發(fā)送過(guò)程:
當(dāng)模塊收到PC機(jī)的串行口數(shù)據(jù)后,模塊先通過(guò)DTR線判斷收到的數(shù)據(jù)是命令還是發(fā)送數(shù)據(jù),若是命令則執(zhí)行相應(yīng)的命令,若是發(fā)送數(shù)據(jù)則先將要發(fā)送的數(shù)據(jù)送到發(fā)送緩沖區(qū)EERAM中,并同時(shí)將模塊的狀態(tài)由接收狀態(tài)轉(zhuǎn)換成發(fā)射狀態(tài),狀態(tài)轉(zhuǎn)換完成后啟動(dòng)發(fā)送打包程序,并將這個(gè)數(shù)據(jù)包的數(shù)據(jù)送到模塊中的數(shù)據(jù)調(diào)制口以FSK的方式調(diào)制成模擬信號(hào), 與鎖相環(huán)中的振蕩信號(hào)一起送混頻器,升頻后的射頻信號(hào)再經(jīng)發(fā)射放大器、功率放大器放大后通過(guò)天線發(fā)送出去。這里的數(shù)據(jù)打包要遵從事先定義好的傳輸協(xié)議,這樣才可以使接收雙方有規(guī)可循,而且避免其他信號(hào)干擾。具體設(shè)定下面詳細(xì)說(shuō)明。
2.2模塊的接收過(guò)程:
在接收狀態(tài)下,通過(guò)天線接收進(jìn)來(lái)的射頻信號(hào)經(jīng)射頻發(fā)大器后,與鎖相環(huán)中的振蕩信號(hào)一起送到混頻器,降頻后的中頻信號(hào),通過(guò)中頻濾波器、中頻放大器放大后送到調(diào)制解調(diào)器,以FSK解調(diào)后的數(shù)字信號(hào)按照協(xié)議將有效數(shù)據(jù)送到存儲(chǔ)器中,再經(jīng)串行口送到計(jì)算機(jī)。
二、設(shè)計(jì)系統(tǒng)時(shí)需要考慮的一些問(wèn)題
1、傳輸協(xié)議
因?yàn)闊o(wú)線通信模塊要對(duì)接收進(jìn)來(lái)的數(shù)據(jù)進(jìn)行處理,就必須能夠鑒別數(shù)據(jù)的真?zhèn)危砸髠鬏敂?shù)據(jù)的雙方建立一種有效協(xié)議使得能夠識(shí)別噪聲和有效數(shù)椐。因?yàn)樵肼暿且噪S機(jī)字節(jié)出現(xiàn)的,沒(méi)有明顯的結(jié)合方式,噪聲源可能產(chǎn)生任意字節(jié)的組合,所以研究在無(wú)線通信的過(guò)程中最好能通過(guò)一種協(xié)議能有效的抑制噪聲的產(chǎn)生。
經(jīng)過(guò)比較選擇,采用了以下的數(shù)據(jù)傳輸協(xié)議格式:

圖3 程序流程圖[/align]
在程序中利用類CserialPort實(shí)現(xiàn)負(fù)責(zé)串口的配置,數(shù)據(jù)傳輸?shù)难舆t處理以及讀寫。結(jié)構(gòu)如下:
class CSerialPort : public CWnd
{
public:
CSerialPort();//初始化
void ClosePort();
BOOL ReadByte(char* buff);//讀串口
BOOL WriteByte(BYTE bybyte[100],int length);
//寫串口
BOOL OpenPort(CString portname);
BOOL SetCommunicationTimeouts();
//設(shè)置通信延時(shí)
BOOL ConfigurePort(DWORD BaudRate,
BYTE ByteSize,DWORD fParity,
BYTE Parity, BYTE StopBits);
HANDLE hComm;// 用來(lái)標(biāo)識(shí)串行口句柄
DCB m_dcb;
COMMTIMEOUTS m_CommTimeouts;
BOOL m_bPortReady;// 串口是否準(zhǔn)備好
BOOL bWriteRC;
BOOL bReadRC;
DWORD iBytesWritten;
DWORD iBytesRead;
virtual ~CSerialPort();//釋放資源
BOOL OpenPort(CString portname);
BOOL ConfigurePort()
?。?
其中配置串行口采用DCB結(jié)構(gòu),BOOL ReadByte(char* buff) 和BOOL WriteByte(BYTE,int)函數(shù)為讀寫串行口,為了識(shí)別操作是否正確,利用BOOL bWriteRC, bReadRC設(shè)置成功標(biāo)志。同時(shí)設(shè)定DWORD iBytesWritten,iBytesRead確定字節(jié)的個(gè)數(shù)。在收發(fā)數(shù)據(jù)時(shí)需要監(jiān)測(cè)串行口是不是準(zhǔn)備好,這時(shí)就可以檢測(cè)m_bPortReady的狀態(tài)。
整個(gè)程序的編制也就相應(yīng)的分為以下幾個(gè)部分:
配置串口;配置數(shù)傳模塊;讀寫串行口;通信延時(shí)處理等。
四、總結(jié)
環(huán)境監(jiān)測(cè)系統(tǒng)具有采樣數(shù)據(jù)量大,傳輸距離遠(yuǎn),以及環(huán)境條件差別大的特點(diǎn),長(zhǎng)期以來(lái)數(shù)據(jù)傳輸部分一直是人們關(guān)注的焦點(diǎn)。以往系統(tǒng)主要采用MODEM和電話機(jī)實(shí)現(xiàn)遠(yuǎn)程通信,但由于電話線具有通信速度慢,質(zhì)量差的缺點(diǎn),已不能滿足現(xiàn)代環(huán)境監(jiān)測(cè)的要求。這里應(yīng)用無(wú)線數(shù)傳模塊完成遠(yuǎn)程數(shù)據(jù)通信,不僅克服了這些缺點(diǎn),而且大大改善了該系統(tǒng)的數(shù)據(jù)傳輸性能。經(jīng)最終測(cè)試該系統(tǒng)不僅可以在條件惡劣干擾大的環(huán)境下進(jìn)行遠(yuǎn)距離傳輸,而且數(shù)據(jù)準(zhǔn)確率高,傳輸速度快??筛鶕?jù)不同需要應(yīng)用于電力、水利、石油、林業(yè)、勘探等領(lǐng)域。
參考文獻(xiàn):
1、上海桑博電子科技有限公司技術(shù)文檔 2003
2、李現(xiàn)勇 Visual C++串口通信技術(shù)與工程實(shí)踐
人民郵店出版社 2002年5月
3、 王宏偉 吳建設(shè) 基于VC++6.0的串行通信設(shè)計(jì)與實(shí)現(xiàn) 黃石高等專科學(xué)校學(xué)報(bào) 2003(4)
標(biāo)簽:
傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來(lái)源:傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動(dòng)網(wǎng)(www.wangxinlc.cn)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來(lái)源“傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來(lái)源的稿件,均來(lái)自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來(lái)源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>2025-10-31
勇梅機(jī)械液壓閘門給煤機(jī)的優(yōu)點(diǎn)
2025-10-22
2025-10-17
2025-10-11
「一體機(jī)性價(jià)比王者」NK290M普及型數(shù)控...
2025-10-09
耐磨管道機(jī)器人檢測(cè)電纜CCTV,水下管道...
2025-09-23