发送方首先进行握手信号发送,等待应答成功后,开始发送数据。仿真过程结束后发送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
评论
查看更多