系列索引:VAPS XT入门教程索引
上一篇:VAPS XT入门教程16.01:与OpenDDS通信
本文介绍VAPS XT程序与Matlab simulink组件通信的方法。
本文使用的Matlab simulink模型是Matlab入门教程:Simulink通过UDP发送数据测试
VAPS XT通信使用UDP/共享内存
本文介绍VAPS XT程序与Matlab simulink组件通信的方法。
普通nCOM
经过测试,程序内的nCom好像无法使用。
UserIntegration
创建一个新工程,然后创建一个新数据结构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dataDescription>
<dataDescription name="SimuData">
<field> <name>c1</name> <type>string</type> <cardinality>1</cardinality> </field>
<field> <name>sin</name> <type>float64</type> <cardinality>1</cardinality> </field>
<field> <name>c2</name> <type>float64</type> <cardinality>1</cardinality> </field>
<field> <name>c3</name> <type>string</type> <cardinality>1</cardinality> </field>
</dataDescription>
|
换成C/C++
就是
1 2 3 4
| char c1; double sin; double c2; char c3;
|
然后根据此数据结构创建一个Data Sender/Receiver
创建一个测试Format,因为是测试,不需要太复杂的界面。

以下内容需要参考VAPS XT入门教程15.03:UserIntegration说明的工程的UserIntegration代码。
先创建一个数据结构
1 2 3 4 5 6
| typedef struct _Package{ char c1; double sin; double c2; char c3; }PackageData;
|
创建一个类用于循环获取UDP数据
在主文件中的main函数中创建数据线程
1
| CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)ThreadFunc,0,0,NULL);
|
实现数据获取函数,将数据线程获取的数据填充到本地。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| void ThreadFunc() { ConnectUdp m_ConnectUdp("192.168.50.20",25000);
printf("simdata size is: %d\n",sizeof(&pPKG));
while(1) { m_ConnectUdp.RecvPackage(&m_Rcv_Data); printf("data size is: %d\n",sizeof(m_Rcv_Data)); printf("rcv c1: %d\n",m_Rcv_Data.c1); printf("rcv sin: %f\n",m_Rcv_Data.sin); printf("rcv c2: %f\n",m_Rcv_Data.c2); printf("rcv c3: %d\n",m_Rcv_Data.c3); memcpy((void*)pPKG,(void*)&(m_Rcv_Data),sizeof(m_Rcv_Data)); } }
|
编译运行
1
| ./CApplication.exe -center -width 800 -center 600
|
结果为

模型的运行时间为2000ms,发送间隔为20ms,最后一组数据发送完成后未更新数据,所以保持显示最后一组数据。
总结
- VAPS XT通信只接收TCP/UDP/共享内存,也就是说不管你的模型有多复杂,最后都是靠网络方式传输。
- 与simulink通信只是简单的功能组合,唯一要注意的是数据结构的字节对齐,否则会出现显示异常。
- 可以查看论文
基于UDP通信的VPAS XT人机界面工具与Simulink仿真工具的数据交互 - 石磊 - 中航通飞研究院有限公司 - 2020
,可以看到开发思想是差不多的 - 官方还提供了指定版本的Matlab控件
下一篇:VAPSXT入门教程17:集成
技术交流群,欢迎加入讨论。这个圈子很小,大佬可能没兴趣加这些群聊社区之类的。所以只能带你入门,当然,欢迎大佬指导
