国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

分布式仿真系統(tǒng)中串口信息的處理方式

2015-07-12 12:30:00
電子測試 2015年13期
關(guān)鍵詞:正確性實物校驗

許 巧

(中國航天科工集團十院十部助理工程師,550000)

在研制一個新的設(shè)備的過程中,一般會有一些新的算法產(chǎn)生,為了驗證這些算法的有效性及可行性,需要進行必要的仿真。仿真一般包括數(shù)字仿真以及半實物仿真,半實物仿真是一種將真實設(shè)備加入仿真系統(tǒng)中與其他設(shè)備的仿真模型聯(lián)接在一起進行試驗的技術(shù)。相對于數(shù)字仿真,半實物仿真半實物仿真更接近于真實情況,得到的實驗結(jié)果更具備說服力。

在搭建仿真系統(tǒng)時,一些情況下需要按照各設(shè)備功能搭建為分布式仿真系統(tǒng),分布式仿真系統(tǒng)中由于設(shè)備多、結(jié)構(gòu)復(fù)雜,設(shè)備之間的通信相對復(fù)雜,仿真系統(tǒng)中通信數(shù)據(jù)傳輸?shù)目焖傩耘c正確性對仿真結(jié)果有著重要影響。本文的研究內(nèi)容就是針對這樣一個分布式的仿真系統(tǒng),設(shè)備之間的通信是通過串行接口來完成的,為了能夠提高通信數(shù)據(jù)的正確性,本文設(shè)計了一種處理串口信息的方法,采用該方法能夠更加真實地傳輸設(shè)備之間的通信數(shù)據(jù)。

1 銀河仿真系統(tǒng)

本文采用銀河仿真系統(tǒng)作為仿真平臺,該系統(tǒng)是一個功能強大的、適合于連續(xù)動力學(xué)系統(tǒng)全數(shù)字和半實物仿真的計算機系統(tǒng),具有可擴展性強、建模仿真效率高、運行穩(wěn)定可靠等特點,其運行結(jié)構(gòu)見圖1,圖中幀循環(huán)部分以frameTime為周期,不斷循環(huán)調(diào)用該部分代碼實現(xiàn)系統(tǒng)的連續(xù)性,每循環(huán)一次,運行幀數(shù)frameCount增加1拍。

2 串口通信的實現(xiàn)步驟

本文使用C語言來實現(xiàn)串口編程,串口通信程序一般包括以下四個步驟:

1)打開及配置串口:利用基于Windows API的CreatFile函數(shù)來對串口進行打開,同時需要對串口進行一些初始化配置工作,包含了諸如波特率、數(shù)據(jù)位數(shù)、奇偶校驗和停止位數(shù)等信息;

2)讀串口:通過函數(shù)ReadFile接收發(fā)送方傳輸過來的數(shù)據(jù),本文所設(shè)計的處理方法主要針對該步驟;

3)寫串口:按定時周期將需要發(fā)送的數(shù)據(jù)寫入串口緩沖區(qū)內(nèi),發(fā)送至通信另一端,函數(shù)WriteFile完成此工作;

4)關(guān)閉串口:串口使用完畢后需要釋放通信資源,避免其他應(yīng)用程序使用該串口造成錯誤。

上述四個步驟中讀串口與寫串口是根據(jù)系統(tǒng)的通信需要而定的,在某些程序中只有讀或?qū)懖僮?,本文所研究的仿真系統(tǒng)串口設(shè)置為波特率115200,1位起始位,1位數(shù)據(jù)位,8位數(shù)據(jù)位,采用偶校驗。為了提高數(shù)據(jù)傳輸?shù)恼_性,每一幀數(shù)據(jù)的第一個字節(jié)定義為幀頭并需要對幀頭進行判斷,幀校驗采用16位的CRC校驗。CRC校驗是數(shù)據(jù)通信領(lǐng)域中最常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定,是一種數(shù)據(jù)傳輸檢錯功能,對數(shù)據(jù)進行多項式計算,并將得到的結(jié)果附在幀的后面,接收設(shè)備也執(zhí)行類似的算法,以保證數(shù)據(jù)傳輸?shù)恼_性和完整性。

3 一種串口信息的接收方式

仿真過程中可發(fā)現(xiàn),若只是簡單的在每個周期節(jié)點上接收信息,所接到的信息存在失幀嚴(yán)重的情況,為了能夠最大程度地復(fù)現(xiàn)串口傳輸?shù)男畔?,在接收信息時需要進行一定的處理。本文采用一種通信周期內(nèi)多次接收的方式,即在硬件實時性可達的前提下將一個通信周期劃分為多個子周期,每個子周期均可接收信息,同時規(guī)定一個周期內(nèi)最大接收次數(shù),該數(shù)小于通信周期與子周期之比。

在以銀河仿真系統(tǒng)為平臺的通信程序中,硬件操作周期一般是幀周期frameTime的整數(shù)倍,若通信周期T=n*frameTime,設(shè)子周期為m*frameTime,滿足n>m為整數(shù),且n/m大于最大接收次數(shù),在硬件實時性可達的情況下m盡量取小。每一個幀周期內(nèi)調(diào)用以下代碼:

1)判斷若frameCount除以n取余等于0則recvCount=0,comRecvSuccess=0, recvState=0,Tcount=0,轉(zhuǎn) 2);

2)Tcount++,轉(zhuǎn) 3);

3)判斷若Tcount-1除以m取余等于0且recvState等于0則轉(zhuǎn) 4),否則轉(zhuǎn) 9);

4)recvCount ++,判斷若recvCount 小于最大接收次數(shù),是則轉(zhuǎn)5),若recvCount等于最大接收次數(shù)則轉(zhuǎn)6),否則recvState=1;

5)判斷comRecvSuccess是否等于0,若是則調(diào)用函數(shù)comRecv接收串口信息,函數(shù)返回值comRecvSuccess,1為成功,0為失敗,否則賦comRecvSuccess=2,轉(zhuǎn)6);

6)判斷comRecvSuccess是否等于2,若是則轉(zhuǎn)7),否則轉(zhuǎn)9);

7)調(diào)用信息處理函數(shù)comInfReform,返回值為comRecvSuccessState,1為成功,0為失敗,轉(zhuǎn)8);

8)根據(jù)通信協(xié)議,將處理后的串口信息按字節(jié)組合為仿真機能夠使用的十進制信息,recvState=1,轉(zhuǎn)9)。

9)幀循環(huán)內(nèi)其他功能代碼;

函數(shù)comInfReform采用一種雙幀組合方式將串口接收到前拍信息與當(dāng)拍信息進行組合,若單幀信息正確則采用單幀信息,否則將上一幀數(shù)據(jù)與當(dāng)前幀數(shù)據(jù)進行組合截取正確信息,該方式雖然較為復(fù)雜,但能夠更好的復(fù)現(xiàn)串口傳輸信息,處理過程如下:

1)判斷接收到的當(dāng)前信息中,第一個字節(jié)與所定義的幀頭是否相等,若是,則轉(zhuǎn)2),否則轉(zhuǎn)3);

2)根據(jù)通信雙方定義的校驗方式進行幀校驗,校驗正確則返回1,否則返回0,結(jié)束并返回1);

3)將接收到前拍與當(dāng)拍串口信息依次存儲于同一數(shù)組comRecvBytesRawCat內(nèi);定義comRecvBytesRawCat索引為0;

4)判斷數(shù)組comRecvBytesRawCat當(dāng)前索引對應(yīng)的數(shù)值與所定義的幀頭是否相等,若是轉(zhuǎn)5),否則轉(zhuǎn)6);

5)按所定義的信息長度截取完整幀,根據(jù)通信雙方定義的校驗方式進行幀校驗,若校驗正確結(jié)束并返回1),否則轉(zhuǎn)6);

6)comRecvBytesRawCat索引加1,并判斷是否超出comRecvBytesRawCat范圍,若是則結(jié)束且返回0,否則轉(zhuǎn)4);

4 結(jié)論

為了驗證上述方法的有效性,本文將其應(yīng)用于某設(shè)備控制器設(shè)計的半實物仿真試驗中,以27.3毫秒為通信周期,按一般接收方式接收10000幀數(shù)據(jù)時丟幀100幀以上,使用本文所設(shè)計的方法丟幀可達10幀以下。根據(jù)以上分析可知,將本文所設(shè)計的方法應(yīng)用在分布式仿真系統(tǒng)中是可行的,提高了設(shè)備之間數(shù)據(jù)傳輸?shù)恼_性,為仿真系統(tǒng)的搭建提供了技術(shù)基礎(chǔ)。

圖1 YHSim程序的塊執(zhí)行順序示意圖

[1]單家元.孟秀云.丁艷 半實物仿真[M].北京:國防工業(yè)出版社,2008

[2]王恒林.曹建國.仿真系統(tǒng)的設(shè)計與應(yīng)用[M].北京:科學(xué)出版社,2003

[3]金士堯.黨崗.銀河高性能分布仿真系統(tǒng)的設(shè)計和實現(xiàn)[J]北京:計算機研究與發(fā)展,2001

[4]連依萍.基于VC++的串口通信編程方法的研究[J]北京:硅谷,2013

[5]周祖榮.張鵬遠.對幀校驗序列的研究[N]青島:青島科技大學(xué)學(xué)報,2003

猜你喜歡
正確性實物校驗
帶你學(xué)習(xí)實物電路圖的連接
一種基于系統(tǒng)穩(wěn)定性和正確性的定位導(dǎo)航方法研究
當(dāng)手繪遇上實物
基于Arduino控制的半實物模擬駕駛系統(tǒng)
電子制作(2018年1期)2018-04-04 01:48:26
爐溫均勻性校驗在鑄鍛企業(yè)的應(yīng)用
淺談如何提高水質(zhì)檢測結(jié)果準(zhǔn)確性
實物與宣傳不符,賣方擔(dān)責(zé)嗎?
大型電動機高阻抗差動保護穩(wěn)定校驗研究
電測與儀表(2015年1期)2015-04-09 12:03:02
基于加窗插值FFT的PMU校驗方法
鍋爐安全閥在線校驗不確定度評定
新河县| 新兴县| 克山县| 潜江市| 建瓯市| 彰化市| 琼结县| 抚顺县| 开阳县| 且末县| 洛浦县| 鱼台县| 通州区| 沈阳市| 永济市| 石楼县| 前郭尔| 朝阳县| 高淳县| 浦城县| 宁安市| 托里县| 西宁市| 沧源| 延安市| 双江| 平阴县| 呼和浩特市| 漾濞| 个旧市| 溧阳市| 江北区| 杭锦旗| 扎囊县| 怀宁县| 宝坻区| 同江市| 大渡口区| 新源县| 扎囊县| 太康县|