国产亚洲精品91-国产亚洲精品aa在线观看-国产亚洲精品aa在线看-国产亚洲精品xxx-国产亚洲精品不卡在线

SCI期刊 | 網(wǎng)站地圖 周一至周日 8:00-22:30
你的位置:首頁(yè) >  通信技術(shù) ? 正文

基于狀態(tài)機(jī)的遠(yuǎn)程控制技術(shù)

2021-4-9 | 通信技術(shù)

 

0引言

 

遠(yuǎn)程通訊系統(tǒng)一般要求通信距離在30公里以上,所以通常情況下通信環(huán)境比較復(fù)雜,在較長(zhǎng)距離下的電磁干擾和信號(hào)衰弱對(duì)通訊系統(tǒng)的穩(wěn)定性都提出了較高的要求。串口是常用的計(jì)算機(jī)與外部設(shè)備之間的數(shù)據(jù)傳輸通道[1],由于使用其通信方便易行,且能實(shí)現(xiàn)數(shù)據(jù)的遠(yuǎn)距離傳輸,故可采用串口通信作為遠(yuǎn)程通信的渠道。同時(shí)要利用合理的通信幀定義模式進(jìn)而實(shí)現(xiàn)遠(yuǎn)程通信協(xié)議的同步性問(wèn)題,目前較為常用的方法有逐次比較法[2]、基于FIFO隊(duì)列同步法[3]、狀態(tài)機(jī)消息同步法[4]。實(shí)驗(yàn)表明狀態(tài)機(jī)消息同步法最大限度地減少了系統(tǒng)的冗余運(yùn)算和中斷后數(shù)據(jù)丟失的問(wèn)題,保證了控制站第一時(shí)間獲得被控設(shè)備是否接受指令開(kāi)始運(yùn)行的信息,實(shí)現(xiàn)了控制的可視性,進(jìn)而保證了系統(tǒng)的穩(wěn)定運(yùn)行。

 

1通訊設(shè)備配置

 

系統(tǒng)采用串口通訊的方式實(shí)現(xiàn)PC機(jī)與外部設(shè)備的連接,利用VC++編寫(xiě)的控制軟件和指令接收軟件實(shí)現(xiàn)系統(tǒng)指令的發(fā)送和執(zhí)行。外部設(shè)備采用PDL35數(shù)傳電臺(tái),這種電臺(tái)能夠?qū)崿F(xiàn)最大19200比特每秒的傳輸速度,并且具有低功耗和前向糾錯(cuò)的能力,提高了抗干擾性和覆蓋性。控制設(shè)備通過(guò)電臺(tái)向工作設(shè)備發(fā)送標(biāo)準(zhǔn)化指令,雙方基于特定頻率的無(wú)線電互相訪問(wèn)。連接成功后進(jìn)入設(shè)置主界面后可查看電臺(tái)類(lèi)型、頻率范圍、固定版號(hào)等信息。主要在”RadioLink”選項(xiàng)卡下設(shè)置通訊頻率、波特率與通信靈敏度。特別需要注意的是通信頻率和通信靈敏度需要基站和移動(dòng)站完全一致。

 

2通訊幀格式定義

 

對(duì)于遠(yuǎn)程通訊系統(tǒng),需要完成多個(gè)不同的工作,并且實(shí)時(shí)返回工作狀態(tài)以保證遠(yuǎn)程控制的可靠性。這就需要對(duì)通信協(xié)議進(jìn)行特殊的定義以進(jìn)行解析同步,進(jìn)而完成各項(xiàng)工作。本系統(tǒng)中定義通信協(xié)議幀結(jié)構(gòu)如圖2所示。幀頭用于同步[5],一般為一個(gè)或兩個(gè)ASCII字符,本系統(tǒng)中使用一個(gè)字節(jié)0xFF表示,系統(tǒng)接收此字符后開(kāi)始接收中斷。幀發(fā)送方用1字節(jié)表示,分別用0x01表示1號(hào)基站發(fā)送的命令,同時(shí)也意味著任何接收設(shè)備會(huì)向此基站反饋設(shè)備是否正常運(yùn)行。幀接收方表示方法與發(fā)送方相同,0x01表示命令是發(fā)送給1號(hào)設(shè)備的,其他設(shè)備在接受此命令時(shí)不工作。幀類(lèi)型定義了系統(tǒng)命令表征的不同功能,幀內(nèi)容主要包含了指導(dǎo)接收設(shè)備如何執(zhí)行功能的具體信息,而幀內(nèi)容長(zhǎng)度則作為幀內(nèi)容的校驗(yàn)信息指導(dǎo)接收設(shè)備提取接收信息。在本系統(tǒng)采用一個(gè)字節(jié)的0xFE作為結(jié)束碼,當(dāng)系統(tǒng)檢測(cè)到此數(shù)據(jù)段的時(shí)候跳出系統(tǒng)中斷。表1為通信協(xié)議中幀內(nèi)容的詳細(xì)格式。

 

3串口通信數(shù)據(jù)解析及處理

 

3.1逐次比較法

 

這是一種比較基本的方法,首先等待串口數(shù)據(jù),在串口接收中斷服務(wù)程序中每收到一個(gè)數(shù)據(jù)就與已知的命令數(shù)據(jù)串進(jìn)行比較[6],如果不一致則等待新數(shù)據(jù)直到接收的數(shù)據(jù)與包頭信息的第1個(gè)數(shù)據(jù)相同。第1個(gè)字節(jié)的數(shù)據(jù)比較正確后將收到的第2個(gè)字節(jié)與已知數(shù)據(jù)串信息的第2個(gè)字節(jié)進(jìn)行比較,如果不正確則退出此中斷。程序流程如圖3所示。此種方法代碼量小、編程簡(jiǎn)單,可用于在主程序中數(shù)據(jù)量較小并且格式相對(duì)固定的程序。但是這種方法浪費(fèi)了大量的中斷進(jìn)程,并且在每個(gè)中斷過(guò)程中執(zhí)行命令操作需要消耗較多的機(jī)器周期,無(wú)法滿足串口數(shù)據(jù)量較大且傳輸較快的情況。

 

3.2基于數(shù)組的FIFO隊(duì)列法

 

也有人提出對(duì)上述方法的改進(jìn),首先定義一個(gè)固定長(zhǎng)度的全局?jǐn)?shù)組,并將數(shù)組看做是一個(gè)先入先出的FIFO隊(duì)列[8]。在串口接收中斷中,每接收一個(gè)數(shù)據(jù)就保存在此數(shù)組中,將得到的數(shù)據(jù)與已知的命令格式串進(jìn)行比較,如果正確則將數(shù)組中的所有數(shù)據(jù)向前移動(dòng)一個(gè)字節(jié),串口接收到的新字節(jié)存入數(shù)組末字節(jié)中,將整個(gè)數(shù)組與協(xié)議中的包頭信息比較如果正確則置位已同步標(biāo)志位然后開(kāi)始接收存儲(chǔ)有用數(shù)據(jù)[8],否則繼續(xù)等待同步。其流程圖如圖4所示。此種方法與逐次比較的幀同步方法相比能夠比較快速正確地檢測(cè)出同步包頭,但是對(duì)數(shù)據(jù)格式要求相對(duì)固定,特別是幀內(nèi)容形式比較復(fù)雜的時(shí)候難以對(duì)數(shù)組的長(zhǎng)度進(jìn)行限制,在提取相關(guān)的信息的時(shí)候會(huì)浪費(fèi)大量的時(shí)間。

 

3.3基于字符串的狀態(tài)機(jī)消息相應(yīng)機(jī)制

 

鑒于以上兩種方法的缺點(diǎn),在本系統(tǒng)中采用基于字符串的狀態(tài)消息響應(yīng)機(jī)制,首先將命令轉(zhuǎn)化為字符串的格式,以十六機(jī)制代碼發(fā)送給電臺(tái)進(jìn)行傳輸。在接收方,首先檢測(cè)同步字符,當(dāng)檢測(cè)到同步字符時(shí),響應(yīng)狀態(tài)機(jī)消息機(jī)制,同時(shí)將此字符串依次存入緩存中。由于傳輸距離比較遠(yuǎn),一般存在字符串命令不能在一個(gè)機(jī)器周期內(nèi)到達(dá)的情況,則指定系統(tǒng)一直處于寫(xiě)緩存狀態(tài)中。當(dāng)?shù)谝粋€(gè)機(jī)器周期沒(méi)有檢測(cè)到結(jié)束碼,則將緩存內(nèi)容寫(xiě)給一個(gè)過(guò)渡變量,同時(shí)清空緩存以完成下一步寫(xiě)緩存操作。依次進(jìn)行以上操作,在每一次機(jī)器周期結(jié)束后將緩存中的數(shù)據(jù)累加到過(guò)渡變量中,直到系統(tǒng)檢測(cè)到接收數(shù)據(jù)的最后一個(gè)字節(jié)變量為結(jié)束碼,此時(shí)將緩存中的變量賦值給消息效應(yīng)命令,開(kāi)始狀態(tài)機(jī)響應(yīng)環(huán)節(jié)。狀態(tài)機(jī)狀態(tài)轉(zhuǎn)移圖如圖5所示。當(dāng)

 

數(shù)據(jù)完成初始檢測(cè)校驗(yàn),即檢測(cè)到結(jié)束碼0xFE之后,系統(tǒng)開(kāi)始狀態(tài)消息響應(yīng)循環(huán),否則超過(guò)一定時(shí)間沒(méi)有結(jié)束校驗(yàn),則默認(rèn)此次命令消息發(fā)送失敗,系統(tǒng)緩存清空,跳出串口中斷。在消息響應(yīng)循環(huán)中,系統(tǒng)會(huì)根據(jù)預(yù)先設(shè)定的字符串格式和所檢測(cè)到的字符串標(biāo)志位信息,對(duì)接收到的有效數(shù)據(jù)進(jìn)行提取,并賦值給相應(yīng)的變量做下一步的操作。指令操作結(jié)束后,工作設(shè)備將自動(dòng)返回“命令接受正確”指令,向基站確認(rèn)此次操作成功。否則任何一步出現(xiàn)錯(cuò)誤,系統(tǒng)將自動(dòng)跳出中斷,并返回“命令格式錯(cuò)誤”指令,提示基站重新發(fā)送命令。工作設(shè)備示例程序段如下:BYTEdata[1024];CStringstr;if(m_MSComm1.GetCommEvent()==2){m_input1=m_MSComm1.GetInput(;m_input2=m_input1;length=m_input2.GetOneDimSize();for(i=0;i<length;i++){m_input2.GetElement(&i,data+i);}m_receivedata.Empty();for(i=0;i<length;i++){chara=*(char*)(data+i);str.Format("%c",a);m_receivedata+=str;//串口消息獲得}guodu+=m_receivedata;guodujieshu=m_receivedata.Mid(length-2,2);if(guodujieshu=="FE"){receivefasongfang=m_receivedata.Mid(2,1);receivejieshu=guodu.Mid(guodu.GetLength()-2,2);}}////////////////////數(shù)據(jù)接收本系統(tǒng)的設(shè)計(jì)思路由于采用了基于字符串的狀態(tài)機(jī)消息響應(yīng)機(jī)制,快速有效地實(shí)現(xiàn)了串口通信的同步,而且程序結(jié)構(gòu)清晰、便于維護(hù)、也方便日后通訊系統(tǒng)功能升級(jí)。并且串口中斷服務(wù)子程序中將有效數(shù)據(jù)提取為不同的字符串變量,方便操作的同時(shí)也減少了完成消息響應(yīng)循環(huán)所需要的周期。

Top
主站蜘蛛池模板: 狠狠色噜噜狠狠狠狠2022 | 国产极品精频在线观看 | 欧美大片国产在线永久播放 | 黄色网页免费观看 | 久久99精品久久久久久三级 | 亚洲第一天堂网 | 欧美日韩中文字幕久久伊人 | 伊人成影院九九 | 亚洲加勒比久久88色综合一区 | 亚洲视频在线免费播放 | 久久久久久综合对白国产 | 亚洲欧美精品中字久久99 | 久热精品视频在线观看99小说 | 男女啪啪抽搐一进一出小 | 国产三级91 | 欧美黑人乱大交灬太大了视频 | 伊人啪啪网 | 成人理伦片 | 国产三级自拍 | 久久亚洲一级毛片 | 精品欧美一区二区三区四区 | 成人瑟瑟 | 国产精品第三页在线看 | 久久精品亚洲热综合一本奇米 | 清除唯美第一区二区三区 | 中文字幕日本亚洲欧美不卡 | 欧美午夜免费一级毛片 | 黄色美女毛片 | 九色国产在视频线精品视频 | 国产免费一区二区三区 | 欧美一a一片一级一片 | 国产裸舞福利资源在线视频 | 小明看看免费视频 | 最新亚洲 | 国产igao激情在线观看 | 国产精品久久久久影视不卡 | 黄色网址大全免费 | 国产三级网站 | 国产女在线 | 欧美久久一区二区 | 国产丝袜啪啪 |