背景介绍
上一篇文章xPC信号采集和分析(1)里面,解决了自己在使用第二种方法:信号记录模式对xPC数据进行记录过程中的一些问题。
然而很多情况下,我们需要采用第三种信号跟踪模式对实时任务中的数据进行实时传输并可视化,如通过UDP通信或者串口通信进行实时传输。而且在使用虚拟机单机实现xPC实时仿真时,需要虚拟机(目标机)和宿主机通信,有时也需要虚拟机(目标机)能够和其他虚拟机通信,有时也需要虚拟机(目标机)能和其他物理计算机通信。
本文思路
信号跟踪模式可以看matlab帮助文档里面Signal Tracing的几个Demo,利用matlab命令行和GUI实现实时数据的可视化和参数调整。也可以在用代码生成方式编译simulink模型时,加入xPC Target提供的通信模块,如串口、UDP等,实现数据的接收和发送。在宿主机可以通过matlab进行数据接收和发送,也可以用C语言编写GUI界面和通信协议进行数据通信和可视化。
由于之前单机xPC实时仿真,虚拟机网络适配器选择的是仅主机模式(host-only),相当于在虚拟机(目标机)和电脑(宿主机)之间用网线直接连接,这样将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。网络适配器改变为桥接方式,即可实现想要的效果。
Vmvare Workstation虚拟网络介绍
在现实生活中的计算机,如果有网卡,可以连接到交换机或集线器中,如果现实生活中的计算机所处的环境,有多个交换机(或集线器),可以选择连接到那一个交换机或集线器。而在使用VMware Workstation创建虚拟机时,创建的虚拟机中可以包括网卡。你可以根据需要选择使用何种虚拟网卡,从而表明想要连接到那个虚拟交换机。在VMware Workstation中,默认有3个虚拟交换机,分别是VMnet0(使用桥接网络)、VMnet1(仅主机网络)和VMnet8(NAT网络),还可以根据需要添加VMnet2~VMnet7和VMnet9等7个虚拟机交换机。
桥接网络
使用(连接)VMnet0虚拟交换机,此时虚拟机相当于网络上的一台独立计算机,与主机一样,拥有一个独立的IP地址。
虚拟机A1、虚拟机A2是主机A中的虚拟机,虚拟机B1是主机B中的虚拟机。如果A1、A2与B都采用“桥接”模式,则A1、A2、B1与A、B、C任意两台或多台之间都可以互相访问(需要设置为同一网段),这时A1、A2、B1与主机A、B、C处于相同的身份,相当于插在交换机上的一台“联网”的计算机。NAT网络
使用(连接)VMnet8虚拟交换机,此时虚拟机可以通过主机单向访问网络上的其他工作站(包括Internet网络),其他工作站不能访问虚拟机。
虚拟机A1、虚拟机A2是主机A中的虚拟机,虚拟机B1是主机B中的虚拟机。其中的“NAT路由器”是只启用了NAT功能的路由器,用来把VMnet8交换机上联接的计算机通过NAT功能连接到VMnet0虚拟交换机。如果B1、A1、A2设置成NAT方式,则A1、A2可以单向访问主机B、C,B、C不能访问A1、A2;B1可以单向访问主机A、C,C、A不能访问B1;A1、A2与A,B1与B可以互访。主机网络
使用(连接)VMnet1虚拟交换机,此时虚拟机只能与虚拟机、主机互连,与网络上的其他工作站不能访问,虚拟机中没有网卡,相当于“单机”使用。
虚拟机A1、虚拟机A2是主机A中的虚拟机,虚拟机B1是主机B中的虚拟机。如果B1、A1、A2设置成host方式,则A1、A2只能与A互相访问,A1、A2不能访问主机B、C,也不能被这些主机访问;B1只能与B互相访问,B1不能访问主机A、C,也不能被这些主机访问。
简单示例
用simulink简单搭建示例模型
UDP Send Binary模块设置如下
虚拟机的网络适配器设为桥接模式,将电脑A和电脑B用网线直接相连,并且将电脑A、电脑B,虚拟机B,虚拟机A的IP地址都设为同一网段。
通信对象 | IP地址 |
---|---|
虚拟机A(xPC) | 192.168.137.3 |
虚拟机B | 192.168.137.5 |
电脑A | 192.168.137.10 |
电脑B | 192.168.137.18 |
实验结果
电脑A
电脑B
实际上电脑A、电脑B、虚拟机B都可以作为虚拟机A(目标机)的宿主机,并通过matlab与目标机进行交互。
参考文献
VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系