xPC信号采集和分析(2)

article/2025/9/23 10:29:18

背景介绍

上一篇文章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个虚拟机交换机。

  1. 桥接网络
    使用(连接)VMnet0虚拟交换机,此时虚拟机相当于网络上的一台独立计算机,与主机一样,拥有一个独立的IP地址。
    桥接方式网络关系图
    虚拟机A1、虚拟机A2是主机A中的虚拟机,虚拟机B1是主机B中的虚拟机。如果A1、A2与B都采用“桥接”模式,则A1、A2、B1与A、B、C任意两台或多台之间都可以互相访问(需要设置为同一网段),这时A1、A2、B1与主机A、B、C处于相同的身份,相当于插在交换机上的一台“联网”的计算机。

  2. NAT网络
    使用(连接)VMnet8虚拟交换机,此时虚拟机可以通过主机单向访问网络上的其他工作站(包括Internet网络),其他工作站不能访问虚拟机。
    NAT方式网络关系
    虚拟机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可以互访。

  3. 主机网络
    使用(连接)VMnet1虚拟交换机,此时虚拟机只能与虚拟机、主机互连,与网络上的其他工作站不能访问,虚拟机中没有网卡,相当于“单机”使用。
    host方式网络关系
    虚拟机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
虚拟机B192.168.137.5
电脑A192.168.137.10
电脑B192.168.137.18

实验结果

电脑A
这里写图片描述
电脑B
这里写图片描述
实际上电脑A、电脑B、虚拟机B都可以作为虚拟机A(目标机)的宿主机,并通过matlab与目标机进行交互。

参考文献

VMware Workstation下VMnet1等虚拟网卡与主机网卡之间的关系


http://chatgpt.dhexx.cn/article/cakqhEao.shtml

相关文章

matlab中xpcapi库的调用,关于MATLAB中xpc实时控制平台搭建的心得

Xpc target主机—目标机通讯平台的搭建 一、用u盘制作XPC的目标启动盘 U盘启动盘制作的关键是找对dos系统软件包和相应的读写软件,我也是找了很久而不得要领。开始时,我是下载了一个网上的dos系统软件包,然后用ultriso写入u盘中,然而并不成功,试了几次后,才找到合适的软件…

建模simulink - xpc自定义模块

概述 在实际项目设计中,使用simulink提供的基本模块很难实现的时候,此时就需要一种用户可以自定义的方式,定做自己的模块。 在这种情况下,Matlab的s函数应运而生,S-函数是系统函数(System Function)的简称,又称S-function,支持用户使用C语言、C++、Matlab等语言编写自己…

simulink模块,提供xpctarget下驱动源码

simulink模块,提供xpctarget下驱动源码 :77999632700099250风中的蜗牛

建模simulink - xpc自定义模块设置

概述 simulink建模不同于代码编程,整个项目以模块/模型为单元展开,在之前的文章中,小编已经介绍过如何自定义模块,以及设置参数等信息,不懂的小伙伴可以先移步看看以前的文章,正因为simulink的这种特性,所以此时模块/模型的展示信息就显得尤为重要。 注意 ★环境:matla…

建模simulink - xpc自定义模块库

概述 打开simulink Library Browser,可以看到,simulink官方只为我们提供一些基本模型库,而在实际开发过程中,这些模型库往往需要我们进行二次封装后才能在项目中使用。这时,我们可以创建专属自己的自定义库,把项目中写好的一些模型块放在库中进行统一管理。这样当遇到类似…

在 macOS 中如何使用 XPC 实现跨进程通讯?

以防丢失,转载自: http://davidleee.com/2020/07/20/ipc-for-macOS/ 如侵权,联系删除 最近需要在 Electron 项目上引入一个比较吃性能的大头功能,因为已经用 Objective-C 实现过一套稳定且性能也可接受的带 UI 方案了,…

matlab xpc 环境pci板卡驱动编写,XPC环境下PCI板卡驱动

当Simulink 与S-function 相互作用时,Simulink 所调用的第一个程序是mdlInitializeSizes,随后调用的是其它S-function 函数(所有的函数名均以mdl 开头)。 在仿真结束时,Simulink 调用mdlTerminate函数。 2.3.2预处理 该范例以以下的定义开头&…

进程间通信之XPC

From:https://blog.csdn.net/heikefangxian23/article/details/51071840 关于 XPC XPC 是 OS X 下的一种 IPC (进程间通信) 技术, 它实现了权限隔离, 使得 App Sandbox 更加完备. 首先,XPC 更多关注的是实现功能某种的方式,通常采用其他方…

MacOS XPC的使用入门

MacOS:10.14,Xcode:11.0 1、随意创建一个工程,可以是App project Xcode -> File -> New -> Project... -> macOS -> Application -> App -> click Next 填写Product Name(XPCDemo) -> 选择或者不选择Team…

关于 XPC

关于 XPC XPC 是 OS X 下的一种 IPC (进程间通信) 技术, 它实现了权限隔离, 使得 App Sandbox 更加完备. 首先,XPC 更多关注的是实现功能某种的方式,通常采用其他方式同样能够实现。并没有强调如果不使用 XPC,无法实现某些功能。 XPC 目的是提…

用虚拟机在一台电脑上实现xPC实时仿真

背景介绍 一般的xPC仿真需要2台电脑来分别实现目标机和宿主机,两者之间通过以太网或者串口实现通讯。Matlab的xPC Target提供了一个运行在目标机上的高度剪裁的实时操作内核,无需在目标机上面安装任何的操作系统,只需要包含实时内核的启动盘启…

使用XPC与X-Plane9进行通信

XPC(X-Plane Connect)是NASA开源的项目 XPC下载地址 XPC支持C,JAVA,PYTHON和MATLAB 博主使用的是XPC中matlab与X-Plane9进行通信,具体步骤如下 1.把 .XPlaneConnect-master/xpcPlugin 下的 XPlaneConnect 文件夹整体拷贝到游戏目录下 .X-Plane 9\Resources\plugi…

XPC论文总结

XPC: Architectural Support for Secure and Efficient Cross Process Call 论文总结 摘要 1.微内核有很多有趣的特性,例如安全性、容错、模块化、可定制性。 2.IPC是影响操作系统性能的主要因素。 3.IPC在例如Android Linux等单片内核中也发挥着重要作用&#xf…

ios进程间通信问题之二----XPC

原文地址:http://objccn.io/issue-14-4/ 关于 XPC XPC 是 OS X 下的一种 IPC (进程间通信) 技术, 它实现了权限隔离, 使得 App Sandbox 更加完备. 首先,XPC 更多关注的是实现功能某种的方式,通常采用其他方式同样能够实现。并没有强调如果不使…

c语言编程输出杨辉三角行

#include <stdio.h> #define N 7 //以7行7列为例 int main() { int a[N][N]; //N行N列的杨辉三角 int i,j;for(i0;i<N;i) //先赋值两边 { a[i][0]1; a[i][i]1; }for(i2;i<N;i) // 计算中间的数值 { for(j1;j<i;j) a[i][j]a[i-1][j-1]a[i-1][j]; }for(i0;i<…

C语言笔记--利用二维数组输出杨辉三角形

杨辉三角形又称帕斯卡三角形&#xff0c;其余的话就不多说&#xff0c;先看下面的三角形&#xff1a; 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 …

c语言——杨辉三角(输出任意行数的杨辉三角)

下面为大家介绍用二维数组来输出任意行的杨辉三角。有以下步骤&#xff1a; 1&#xff1a;利用一个全局变量来控制数组&#xff0c;从而控制杨辉三角大小。 2&#xff1a;分别用for循环进行对杨辉三角进行赋值。&#xff08;利用它每个数等于它上方两个数和的规律&#xff09; …

C语言打印输出杨辉三角案例讲解

我们先看什么是杨辉三角&#xff1a; 通过观察我们得出杨辉三角的特点&#xff1a; 1.杨辉三角的每行第一个数字都是1。 2.杨辉三角的每行最后一个数字都是1。 3.杨辉三角从第三行开始&#xff0c;每行除了第一个数字和最后一个数字都是1外&#xff1b; 其余的数字都是每个数字…

输入n,输出n行的杨辉三角.

杨辉三角&#xff1a;每个数等于它上方两数之和。 #include<stdio.h> int main() {int n;scanf("%d",&n);int a[100][100]{0};int i,j;for(i0;i<n;i){a[i][0]1;}for(i1;i<n;i){for(j1;j<i;j){a[i][j]a[i-1][j]a[i-1][j-1];}}for(i0;i<n;i){for…

C语言之输出杨辉三角的教程

题目&#xff1a;产生并输出杨辉三角的前七行 代码如下所示&#xff1a; #include <stdio.h>main(){int a[7][7];int i, j;for (i 0; i < 7; i){a[i][0] 1;a[i][i] 1;}for (i 2; i < 7; i)//关于行的循环{for (j 1; j <i; j)//关于列的循环&#xff0c;每…