發送方首先進行握手信號發送,等待應答成功后,開始發送數據。仿真過程結束后發送TX=2,通知接收方通訊完成,待到對方應答后,關閉反射內存,實時通訊結束。
以發送名為ff數據至0X500為例,整個通訊過程參考代碼如下:
……
RFM2gClear(&rh);
TX=1;
retstatus=RFM2gWrite(rh,0x500, (void *)TX,sizeof(float)*9);//發送TX
retstatus=RFM2gSendEvent(rh,32,
RFM2GEVENT_INTR1,0x0);//發送消息事件;
while(1){
retstatus=RFM2gRead(rh,0x51, (void *)RX,sizeof(float)*9);
if(fabs(RX-1)<0.000001 )
break;
printf("wait RX…%lf\n",fabs(RX-1));
}
printf("RX Readly...\n");//握手成功
retstatus=RFM2gWrite(rh,0x500,(void *)ff,sizeof(float)*9);//發送ff
retstatus=RFM2gSendEvent(rh,32,RFM2GEVENT_INTR1,0x0);//發送消息
……
If(stop=start)//仿真完成
{
TX=2;
retstatus=RFM2gWrite(rh,0x500,(void *)TX,sizeof(float)*9);//發送TX
retstatus=RFM2gSendEvent(rh,32,RFM2GEVENT_INTR1,0x0);//發送消息事件;
while(1){? ? retstatus=RFM2gRead(rh,0x510,(void *)RX,sizeof(float)*9);
if(fabs(RX-2)<0.000001 )
break;
printf("wait RX…%lf\n",fabs(RX-1));
}
printf("Retaime TR over...\n");
retstatus=RFM2gDisableEvent(rh,
RFM2GEVENT_INTR1);//關閉使能反射內存;
RFM2gClose(&rh);//關閉反射內存;
}//仿真過程結束,關閉反射內存
……
3.2.2 接受操作接受操作類似于發送操作,只需要在初始化完成后,有一個等待事件觸發的命令即可。當收到事件觸發后,即從0X500處讀入數據并判斷數據,當收到的數據同預設一致時,發送應答信號至0X510,并準備接受數據。當接受到數據為Tx=2時,即返回RX=2并停止使能反射內存卡,關閉反射內存卡,通訊結束。等待觸發的代碼如下,其他類似于發送方。
……
RFM2gClear(&rh);
retstatus=RFM2gWaitForEvent(rh,&info);
……
retstatus=RFM2gDisableEvent(rh,RFM2GEVENT_INTR1);//關閉使能反射內存;
RFM2gClose(&rh);//關閉反射內存;
}//仿真過程結束,關閉反射內存
……
利用上述方法即可實現實時通訊過程。
4 在Windows下實現實時通訊由于Windows是多任務操作系統,因此常見的實時系統常采用DOS等單任務系統,或者是購買RTW模塊并實現Windows下的實時性設計。但是,在實時性要求不是很高的情況下(仿真步長>0.5ms)時,可以通過提高進程優先級并強制關閉其他進程的方法來實現強實時計算。同時,可以通過獲取計算機機器時間并以此來進行仿真步長的準確定時。采用此方法,可有效地實現各個節點的時間統一管理,可有效地提高系統的實時性。在實際使用過程中,仿真步長可根據整個系統的單步計算、控制的耗時情況以及仿真對象的實際情況進行選擇,并選擇合適的方式(中斷、查詢)來實現仿真周期的準確定時。
筆者完成的實時系統設計中,通過查詢方式并采用死循環的形式,實現了仿真周期為0.5毫秒的半實物仿真。實際測試(測試環境:CPUP4 2.8GHZ 512M)統計結果表明,在采用實時處理以后,完成一步計算幀周期定時誤差最大為1.2毫秒,采用實時處理以后,平均幀誤差在30微妙,最大為130微妙。采用實時處理后的反射內存網兩個節點之間的數據傳輸時間誤差均值小于80微妙,最大值小于200微妙。經過任務優先級調整后的仿真進程受操作系統影響較小,在所得到的測試結果中,99%在40-50微妙以內,最大值不超過130微妙,實時網數據延時最大值不超過150微妙,完全滿足仿真步長在0.5毫秒以上的系統仿真任務。
5 小結本文主要介紹了基于反射內存卡的實時網絡系統設計方法,并給出了具體的通訊協議及注意事項,同時,就如何在Windows系統下實現實時通訊進行了簡要介紹。利用該方法設計的實時系統已在某半實物仿真實驗室中應用,經驗證,該系統具有通信實時性好,數據傳輸速度快,傳輸可靠性高的特點,滿足實時仿真需要,取得了良好的效果,被實踐證明是一種成熟、有效的方法。
參考文獻:
[1]??胡小江, 錢志博.基于LabVIEW的實時網絡接口開發[J].電子技術應用,2005(3):28~29.
[2]??楊滌,楊旭,系統實時仿真開發環境與應用[M].北京:請華大學出版社,2002,5~8.
[3] VMICPCI-5565 REFLECTIVE MEMORY BOARD PRODUCT MANUAL, VME Microsystems International Corporation.
[4 David .J.Kruglinski, Scot Wingo,George Shepherd著,希望圖書創作室 譯. Visual C++6.0技術內幕(第五版)[M].北京:北京希望電子出版社,2000,395~402
評論
查看更多