Simscape自定义模块的生成与编辑(Simscape Language)
Simscape自定义模块的生成过程
首先,用 simscape language编写m文件,并在 package directory路径下建立以+号开头的文件夹(如+ myself),将编写好的m文件另存在该文件夹下,拓展名改为ssc。
然后选择 matlab路径到新建的文件夹( +myself)下,并在 matlab命令窗口中输入 ssc_build,即可建立 myself_lib.slx文件,创建成功。如未成功创建,可根据 matlab命令窗口的提示错误修改原文件,直到创建成功。
调用模块时,在命令窗口下输入你所建立的库的名字,如输入myself_lib,即可调岀你所创建的模块。使用时与 simulink其它模块相同。
自定义模块——Simscape Language的使用
1、 component declaration:
与domain declaration相区分,作为自定义模块生成的 组件声明:
component title_user_declare
例子: component planetary_mesh_1;
2、 nodes:
node声明与物理域ssc文件所在路径对应:即阐述了自定义模块中是与哪个物理域文件对应的。
Exp:
注意:这里的S-sun-left;C-carrier arm-right:Left和Right指的是模块左右两侧的节点分布
3、 inputs:
输入模块的物理变量
4、 variables:
component自定义模块对应格式为
5、 parameters:
常数变量-参数
6、 outputs:
7、 function setup
%这一部分是用作判断parameters的正确性的,非负为True
注:这一部分因为未在官方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系统中进行正确连线即可。
其他问题会根据博主遇见问题进行补充。