我正在尝试进行Matlab ADAMS协同仿真,工作正常,但我也想要 添加另一部分到这个系统。这部分获取有关ADAMS中某些点的位置的信息。 我想用这些信息在FEMM中绘制磁性问题。我已经编写了一个Matlab脚本 FEMM中的所有绘图和计算。脚本本身工作正常。 现在因为ADAMS与Simulink合作,我将我的Matlab脚本更改为函数,在Simulink中将其作为Matlab函数块实现 并将其连接到其他部分。 但我不知道如何将我从ADAMS块中获取的Simulink信号传递给Simulink中的Matlab功能块,以便它可以被 Matlab函数(脚本调用)在FEMM中创建几何并计算一个新的Force,而不是传递给ADAMS块。
现在我有一些问题。 1.甚至可以运行这样的模拟吗? Simulink必须等到FEMM的计算结束,才能将我的函数的输出值传递给ADAMS。 2.如何从Simulink中的Matlab功能块中调出一些Matlab函数(我的脚本)。因为现在Simulink告诉我它不知道这个功能。 3.如何在Matlab功能块中定义变量,以便Simulink可以正确使用它们?
答案 0 :(得分:0)
将整个脚本放在外部函数中,然后使用extrinsic关键字从MATLAB Function块调用此函数。
function out = matlab_function_block(in)
coder.extrinsic('femm_fcn');
out = zeros(size(in)); % pre-initialize out to help coder propagate
out = femm_fcn(in);
这将使MATLAB功能块能够使用MATLAB调用femm_fcn。但是,这只支持仿真,不支持独立代码生成。