Simscape自定义模块的生成与编辑

Simscape自定义模块的生成过程

首先,用 simscape language编写m文件,并在 package directory路径下建立以+号开头的文件夹(如+ myself),将编写好的m文件另存在该文件夹下,拓展名改为ssc。

Step1:编写m文件

Step2:另存为ssc后缀文件

然后选择 matlab路径到新建的文件夹( +myself)下,并在 matlab命令窗口中输入 ssc_build,即可建立 myself_lib.slx文件,创建成功。如未成功创建,可根据 matlab命令窗口的提示错误修改原文件,直到创建成功。Step3:新建文件夹
Step4:在新建的文件夹中进行操作
Step5:另存ssc文件,并生成slx文件

调用模块时,在命令窗口下输入你所建立的库的名字,如输入myself_lib,即可调岀你所创建的模块。使用时与 simulink其它模块相同。

自定义模块——Simscape Language的使用

1、 component declaration:

与domain declaration相区分,作为自定义模块生成的 组件声明:
component title_user_declare
例子: component planetary_mesh_1;

2、 nodes:

node声明与物理域ssc文件所在路径对应:即阐述了自定义模块中是与哪个物理域文件对应的。
Exp:定义S、C节点为机械旋转模块节点

注意:这里的S-sun-left;C-carrier arm-right:Left和Right指的是模块左右两侧的节点分布

3、 inputs:

输入模块的物理变量

模块左侧的输入:物理变量及其单位

4、 variables:

component自定义模块对应格式为

5、 parameters:

常数变量-参数

6、 outputs:

模块右侧的输出参量

7、 function setup

%这一部分是用作判断parameters的正确性的,非负为True

Simscape自定义模块的组成成分

注:这一部分因为未在官方help文件的Simscape自定义模块中列出,且参数parameters的大小由user自由控制,可以考虑删除这一部分。

8、 branches分支:

建立component variable(自定义变量)与domain(物理域)variable之间的连接。例如

branches
	a : node1.a -> node2.a;
end
Example:
A.
如果组件声明包括两个电力节点,p和n,和一个变量电流i
i = {0, ‘A’}; %current unit=’A’
可以在分支branches中建立如下关系
branches
	i : p.i -> n.i;
end
代表着,定义了电流i作为一个Through variable 从p节点流入n节点。
这里介绍一下通量Through variable 和跨量Across variable。

而branches就是描述通量的守恒方程。而跨量将在未来版本中删除,变为方程。
B.
接地的情况,即将指向的节点变为参考节点。
电力节点V,接地(参考节点)用“*”表示。

branches
	i : V.i -> *;
end

行星齿轮转矩的节点分支声明

表示对于Sun gear 的转矩ts作为通量,连接S节点至参考节点;Carrier arm 的转矩tc作为通量,连接C节点至参考节点。

9、 equations:动力学方程

动力学方程写法

微分关系:

was == S.w.der;
S.w == wts.der;

即代表,was是S.w的微分(一阶导数),S.w是wts的一阶导数。

xvs == xs.der;
xas == xvs.der;
yvs == ys.der;
yas == yvs.der;

两个自由度的一阶导数和二阶导数。

问题汇总

Q1:
S、C节点node是否与输入输出有关?
Answer:
以看出,节点nodes的左右两侧并无太大关联,只需要在特定Simulink系统中进行正确连线即可。

其他问题会根据博主遇见问题进行补充。

  • 9
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
Simscape中,可以通过定义Simscape函数来实现自定义模块对输入数据的运算。 具体步骤如下: 1. 定义Simscape函数 定义Simscape函数的格式为: ```matlab function y = my_func(u) % u为输入变量,y为输出变量 % 进行运算并将结果赋值给y end ``` 其中,输入变量u可以是标量、向量或矩阵,输出变量y也可以是标量、向量或矩阵。在函数中进行的运算可以是任何matlab支持的运算。 2. 在自定义模块中调用Simscape函数 在自定义模块中,可以通过调用Simscape函数来对输入数据进行运算。调用Simscape函数的格式为: ```matlab y = my_func(u) ``` 其中,my_func为定义的Simscape函数名,u为输入变量,y为输出变量,可以是标量、向量或矩阵。 3. 定义Simscape模块 将定义好的Simscape函数嵌入到自定义模块中,定义自定义模块的输入和输出端口,即可实现自定义模块对输入数据的运算。 下面是一个简单的示例代码,演示了如何在自定义模块中调用Simscape函数: ```matlab function my_module % 定义Simscape模块 % 定义输入端口u u = simscape.parameter('u'); % 定义输出端口y y = simscape.parameter('y'); % 调用Simscape函数对输入数据进行运算 y.Value = my_func(u.Value); % 定义Simscape函数 function y = my_func(u) % 进行运算并将结果赋值给y y = u^2; end end ``` 在上面的示例代码中,定义了一个名为`my_module`的Simscape模块,其中,输入端口为u,输出端口为y。通过调用Simscape函数`my_func`对输入数据进行运算,并将结果赋值给输出变量y。在Simscape仿真模型中,将该自定义模块与其他模块连接起来,即可实现自定义模块对输入数据的运算。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值