编写PI和PD控制器
软件:MWORKS.Sysplorer 24
目的:设计简单的例子比较P、PI和PD的区别
实验条件:仿真30s,求解器为Euler。
今天从《Modelica多领域物理系统建模入门与提高》这本书里看到一个例子,介绍的是使用Dymola设计一个简单的控制器例子,但是Dymola收费,我感觉免费且好用的就是苏州同源软控的软件。
这里面主要有protected、extends、constrainedby、replaceable以及redeclare的用法。
protected:是定义局部变量的关键字。
extends Amodel:表示当前模型继承了A的组件和接口,然后就不用再定义了。
constrainedby:目前学到的和extends没啥区别,用法是replaceable B b constrainedby A,表示b可被A中的任意一个组件替换。
redeclare:重新声明模型定义,用于替换不同组件后对比,例如:
model CompareControllers
ControllerAndMotor pic;
ControllerAndMotor pc(redeclare PController con(Kp = 1.1));
ControllerAndMotor pdc(redeclare PDController con(Kp = 1.1, Kd = 0.2));
end CompareControllers;
通过redeclare可将ControllerAndMotor 中replaceable的对象重新声明而替换为redeclare的块或者其他的东西。
- 首先定义一个通用的控制器接口Controller:
partial block Controller "设置通用的控制器接口"
import Modelica.Blocks;
Blocks.Interfaces.RealInput command;
Blocks.Interfaces.RealInput sensor;
Blocks.Interfaces.RealOutput driver;
end Controller;
- 定义一个简单的比例控制器PController:
block PCont