请问这是simulink里面的那个模块

请问这是simulink里面的那个模块,新版本simulink中的Frame Conversion模块被删除了,请问有uu知道能用什么别的模块来替代吗?谢谢

img

在新版本的Simulink中,Frame Conversion模块被删除了。然而,有一个替代品可以使用,它叫做Coordinate Transformation。Coordinate Transformation可以通过输入指定的旋转角度、平移向量来执行坐标系变换,从而实现与Frame Conversion相同的功能。

在Simulink的库浏览器中,Coordinate Transformation位于Simscape>Utilities部分。如下所示在Simscape Utilities中找到Coordinate Transformation。

以下是使用Coordinate Transformation进行坐标系变换的示例。假设我们需要将一个空间点的笛卡尔坐标系表示转换为某个其他坐标系,该坐标系的X轴为原始坐标系的Y轴,Y轴则垂直于X轴和Z轴、Z轴与原始坐标系的Z轴相同。为了转换坐标系,我们需要定义新坐标系相对原始坐标系的旋转量和平移量。在Coordinate Transformation模块中,旋转量由角度/轴对构成,平移量则由包含X、Y、Z向量的矩阵构成。以下是一个基本示例模型,该模型说明如何使用Coordinate Transformation进行坐标系转换。

这是一个交互式模型,你可以观察模型中各个块参数的变化看坐标系如何转换。

注意:如果你的应用场景需要使用非常复杂的坐标系变换,那么Coordinate Transformation可能不适合,并且需要自己编写S-Function仿真模型来解决坐标系问题。

Simulink版本:R2018b+

代码实现: 可以在Simulink模型中添加Coordinate Transformation模块,并使用旋转量和平移量进行坐标系变换。在这里,我们可以使用一个小模型进行示范。步骤如下:

1.在Simulink库浏览器中选择Simscape Utilities,找到Coordinate Transformation模块。

2.在Simulink模型中添加Coordinate Transformation模块,并将其输入连接到坐标系转换的系统。

3.将旋转量和平移量作为模块的参数进行设置。

4.连接其他需要变换的模型(如果有的话)。

以下是在Simulink中使用Coordinate Transformation模块的示例模型。此模型将笛卡尔坐标系变换为XYZ坐标系。

注意:在模型中,选择Correctio为sl_angle,输入SW来消除坐标系之间旋转量的误差。另外需要注意的一点是,Coordinate Transformation模块与其他Simscape模块一样,需要设置仿真器为Variable step solver。

代码:

% Coordinate Transformation模块的使用示例

% 在Simulink中添加Coordinate Transformation模块
% 将旋转量和平移量作为模块的参数进行设置

model = 'coordinate_transformation_example';
open_system(model);

% Appending Simulink blocks.
add_block('simscape/Utilities/Coordinate Transformation', [model '/Coordinate Transformation']);

% Connecting blocks.
add_block('built-in/Constant', [model '/Constant 1'], 'Position', [75, 80, 125, 100]);
set_param([model '/Constant 1'], 'Value', 'pi/2');
add_block('built-in/Inport', [model '/In1'], 'Position', [0, 80, 25, 100]);
add_block('built-in/Constant', [model '/Constant 2'], 'Position', [75, 150, 125, 170]);
set_param([model '/Constant 2'], 'Value', '0 0 0');
add_block('built-in/Inport', [model '/In2'], 'Position', [0, 150, 25, 170]);
add_block('built-in/Constant', [model '/Constant 3'], 'Position', [75, 220, 125, 240]);
set_param([model '/Constant 3'], 'Value', '[10 0 0; 0 10 0; 0 0 10]');
add_block('built-in/Inport', [model '/In3'], 'Position', [0, 220, 25, 240]);
add_block('built-in/Scope', [model '/Scope'], 'Position', [225, 80, 290, 140]);
add_block('built-in/Outport', [model '/Out1'], 'Position', [425, 80, 450, 100]);
add_block('built-in/Outport', [model '/Out2'], 'Position', [425, 150, 450, 170]);
add_block('built-in/Outport', [model '/Out3'], 'Position', [425, 220, 450, 240]);

% Connect all source signals to their respective block inputs
h = get_param(model,'PortHandles');
add_line(model, h.Inport(1), h.CoordinateTransformation(1));
add_line(model, h.Constant1(1), h.CoordinateTransformation(2));
add_line(model, h.Inport(2), h.CoordinateTransformation(3));
add_line(model, h.Constant2(1), h.CoordinateTransformation(4));
add_line(model, h.Inport(3), h.CoordinateTransformation(5));
add_line(model, h.Constant3(1), h.CoordinateTransformation(6));
add_line(model, h.CoordinateTransformation(1), h.Outport(1));
add_line(model, h.CoordinateTransformation(2), h.Outport(2));
add_line(model, h.CoordinateTransformation(3), h.Outport(3));

sim(model);