专栏目录
simucpp:C++搭建微分方程求解器框架(重写simulink) simucpp系列教程(一)安装教程 simucpp系列教程(二)例程解析(第一部分) simucpp系列教程(三)例程解析(第二部分) simucpp系列教程(四)程序说明 simucpp系列教程(五)各模块的简要介绍
所有模块分为单元模块和组合模块,组合模块由单元模块组成,用户可以自定义单元模块和组合模块(暂时不建议用户自定义单元模块),代码库里内置了若干组合模块。
单元模块
连接器 CONNECTOR
自定义单入单出模块 FCN
自定义多入单出模块 FCNMISO
放大器 GAIN
输入模块 INPUT
积分器 INTEGRATOR
噪声模块 NOISE
输出模块 OUTPUT
乘法器 PRODUCT
加法器 SUM
传输延迟模块 TRANSPORTDELAY
单位延迟模块 UNITDELAY
详见 单位延迟模块介绍与连续离散混合仿真
零阶保持器 ZOH
详见 单位延迟模块介绍与连续离散混合仿真
组合模块
传递函数
原型
TransferFcn(Simulator *sim,
const std::vector<double> numerator,
const std::vector<double> denominator,
std::string name="tf");
以下示例表示
G
(
s
)
=
0.1
s
+
1.5
10
s
2
+
s
+
1
G(s)=\frac{0.1s+1.5}{10s^2+s+1}
G(s)=10s2+s+10.1s+1.5?
TransferFcn* mdGs = new TransferFcn(&sim1, vector<double>{0.1, 1.5}, vector<double>{10, 2, 0});
离散传递函数
原型
DiscreteTransferFcn(Simulator *sim,
const std::vector<double> numerator,
const std::vector<double> denominator,
std::string name="dtf");
以下示例表示
D
(
z
)
=
6.64
?
6.008
z
?
1
1
?
0.3679
z
?
1
D(z)=\frac{6.64-6.008z^{-1}}{1-0.3679z^{-1}}
D(z)=1?0.3679z?16.64?6.008z?1?
DiscreteTransferFcn* mdDz = new DiscreteTransferFcn(&sim1, vector<double>{6.64, -6.008}, vector<double>{0.3679});
对于下面的一般形式
D
(
z
)
=
b
0
+
b
1
z
?
1
+
b
2
z
?
2
1
?
a
1
z
?
1
?
a
2
z
?
2
D(z)=\frac{b_0+b_1z^{-1}+b_2z^{-2}}{1-a_1z^{-1}-a_2z^{-2}}
D(z)=1?a1?z?1?a2?z?2b0?+b1?z?1+b2?z?2? 参数numerator 写作
vector<double>{b0, b1, b2};
参数denominator 写作
vector<double>{a1, a2};
由于离散传递函数的特殊结构,使用时要注意一下正负号。
求和器
|