Simulink和MATLAB工作区的TCPIP通信

1. 说明

问题提出:simulink提供的与工作区数据的传输,仅限于仿真结束后,缺乏实时性

解决方案:使用simulink的TCP/IP Client Receive和TCP/IP Cilent Send,结合工作区的TCP/IP功能实现通信

2. 效果展示

我写的通信代码比较简单,主要是起个引入的作用,这里的实验数据为:
在这里插入图片描述
这是来自工作区的变量sendData,是1-10的共10个数据。

我要做的是先从工作区发送数据到simulink,simulink接收到之后,发送给工作区。

就是这么一个双向通信的过程,工作区的效果如下:
在这里插入图片描述
可以看到,我们完成了数据的写入和接收。

3. simulink端的结构和说明

simulink的入门这里就不介绍了,我也刚接触,结构如下,非常简单:
在这里插入图片描述
就是一个Receive来接收工作区发来的数据,然后传给Send,Send再发送给工作区。

设置的话,只需要设置IP和端口就行了,IP这里就是回环地址127.0.0.1,端口和工作区的对应就好。

4. 工作区文件说明

代码和注释如下:

%% 服务器代码,工作区这里必须要用两个服务器,因为simulink中的Receive和Send都是作为客户机存在的

%% 建立两个服务器,分别实现 ”向simulink中写入数据“ 和 ”从simulink中获取数据“
serverSend=tcpip('127.0.0.1',8080,'NetworkRole','server');
serverReceive=tcpip('127.0.0.1',8081,'NetworkRole','server');

%% 分别建立两个服务器与simulink的连接
fopen(serverSend);
disp("成功与Simulink中的Receive建立连接");
fopen(serverReceive);
disp("成功与Simulink中的Send建立连接");
disp(" ");

%% 发送和接收sendData,sendData为1-10共10个数字
sendData=linspace(1,10,10);
for i=1:length(sendData)
    % 向simulink中写入第i个数字
    fwrite(serverSend,sendData(i),'double');
    disp("向simulink中写入了数据: "+string(sendData(i)));
    % 从simulink中接收信息并显示,receiveData为接收到的信息
    while(1) 
        if serverReceive.BytesAvailable>0
            break;
        end
    end
    receiveData=fread(serverReceive,serverReceive.BytesAvailable/8,'double');
    disp("从simulink中获取了数据: "+string(receiveData));
end

%% 关闭服务器
fclose(serverSend);
fclose(serverReceive);
disp("关闭服务器");

这里的注释是比较清楚的,就不详细解释啦

5. 文件资源

simulink文件和代码文件都放到百度网盘了,大家自取:

链接:simulinkToWorkSpace.zip

提取码:6qo3

6. 运行方法

在同一台电脑上打开两个MATLAB,其中一个打开simulink文件,另一个打开.m文件。

首先运行.m文件,会等待连接:
在这里插入图片描述
之后运行simulink文件,这时就开始了数据传输,结果如下:
在这里插入图片描述
这样其实就完成了双向的数据传输。

7. 问题

由两个问题需要解决,但我没在搞这方面,就留待博友们解决了:

(1)一般来讲只能单个传输数据,虽然有多个数据传输的选项,但是总是出问题,选项在这里:
在这里插入图片描述
(2)当工作区的TCPIP关闭后,simulink的没有关闭,等待接收数据,直至产生超时报错,如下所示:
在这里插入图片描述

8 多多点赞交流!

  • 19
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
SimulinkMATLAB是两个密切相关的软件工具,由MathWorks公司开发。MATLAB是一种高级编程语言和数值计算环境,用于进行算法开发、数据可视化和数值计算等任务。而Simulink是一个基于块图的可视化仿真环境,用于建立、仿真和分析动态系统模型。 SimulinkMATLAB的关系可以被认为是一种"大前端-小后端"的关系。在MATLAB中,用户可以使用其强大的算法和数据处理功能进行数据分析和预处理。然后,通过Simulink,用户可以将这些算法和处理过程转化为一个实际的系统模型,并进行仿真和验证。 具体来说,用户可以在MATLAB的命令窗口或脚本中编写MATLAB代码,使用MATLAB提供的函数和工具箱进行数据处理、算法开发和数值计算。一旦算法被开发并测试通过,用户可以选择将算法转化为Simulink的块图形式。用户可以在Simulink的图形界面中通过拖拽和连接不同的块,建立一个系统模型,并对其进行参数设置和仿真配置。 Simulink提供了丰富的模型库和仿真工具,可以用于建立各种各样的系统模型,包括控制系统、信号处理系统、通信系统等等。通过Simulink,用户可以进行模型的仿真和验证,通过模型的输出结果来评估和优化算法的性能。 总结来说,SimulinkMATLAB的一个工具箱,提供了图形界面和模型建立的环境,使得用户可以更方便地使用MATLAB进行系统建模和仿真。SimulinkMATLAB之间的紧密集成,使得用户可以在MATLAB的数值计算能力和Simulink的仿真环境之间无缝切换,实现更高效、更准确的系统模型建立和仿真。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值