本文旨在搭建Bladed和Matlab数据交互的环境。从控制器端代码到Matlab端代码、以及用于Simulink的mdl文件,全面、完整地说明使用方法。
一、概述
通讯协议使用UDP协议进行通讯,选择理由是因为UDP实时性更高,相比TCP协议传输更快。
1、Bladed端代码
本案例使用仿真代码,即将通讯代码写在Discon中,使用C/C++编写。由于Bladed和Matlab软件都在本地,因此IP和端口设置一致即可。例如IP设置为127.0.0.1,端口设置为25000。
1) 定义两个数组,一个用于发送数据,另一个用于接收数据:
float BladedToSimulinkData[9] = {0.0f};
float SimulinkToBladedData[9] = {0.0f};
2) 将需要传输的变量进行赋值:仅以三个为例
BladedToSimulinkData[3] = CI_GetAlgRealPower(); //功率
BladedToSimulinkData[4] = CI_GetAlgGeneratorSpeed(); //转速
BladedToSimulinkData[5] = CI_GetAlgElectricalTorque(); //转矩
3)使用socket传输数据:
Simulink::GetSimulinkPtr()->UseSocket(pSimulink