用以下参数设计一个双闭环晶闸管不可逆直流调速系统,要求使用 matlab simulink画出电路仿真图
根据所给参数,我们可以设计双闭环晶闸管不可逆直流调速系统如下:
其中,电机模型和电压控制环节已经给出,我们需要设计电流控制环节和转速反馈环节。
电流控制环节
电流控制环节采用PI控制器,控制电机电流接近给定电流。具体参数如下:
比例增益Kp = 0.3
积分增益Ki = 200
控制器输出的电压通过限幅器限制在±10V内,然后送入晶闸管触发电路。
转速反馈环节
转速反馈采用比例控制器,控制电机转速接近给定转速。具体参数如下:
比例增益Kc = 0.1
转速反馈信号通过乘法器和比例增益放大后,与电压控制环节的输出相加,得到整个系统的控制电压。
最终的系统仿真图如下所示:
其中,绿色方框表示电机模型,紫色方框表示电压控制环节,蓝色方框表示电流控制环节,黄色方框表示转速反馈环节。在仿真中,我们可以通过修改给定电流和给定转速来测试系统的响应性能。
下面是各元件控制参数截图:
电流控制器参数:
参数 值
比例增益Kp 0.3
积分增益Ki 200
输出限幅 ±10V
转速反馈控制器参数:
参数 值
比例增益Kc 0.1
反馈信号放大系数 7.7462
输出限幅 ±10V
推荐一篇个人觉得不错的卡尔曼滤波原理详解https://blog.csdn.net/weixin_43942325/article/details/103416681
具'j体的数i学推导过程a就不做详绍了,在现代控制理论教材中都有,这儿贴两张图片
根据上面公式推导,假设存在系统,其中
,
其离散系统表达式为
求系统的状态转移矩阵,式中
为拉氏反变换
matlab求解过程为
A = [0 1;0 -2];
B1 = [0 ;1];
syms s t Ls; % 求状态转移矩阵 利用拉氏变换,syms为符号函数用来定义数学函数
I = eye(size(A));
Ls = inv(s*I - A);
STM = ilaplace(Ls,s,t) %状态转移矩阵,ilaplace为拉氏反变换函数
同理可以求H
syms s t Ls; % 求状态转移矩阵 利用拉氏变换
I = eye(size(A));
Ls = inv(s*I - A);% collect 函数为合并同类项
STM = ilaplace(Ls,s,t) %状态转移矩阵
syms T
HLs = int(STM,t,0,T);
H = HLs*B1
运行结果如下
在simulink仿真过程中,我们需要G和H为已知的矩阵,当T固定时就可以求出G和H的具体数值了,这是需要用到符号函数求解函数subs,设步长T为0.001;matlab命令为
dt = 0.001;
A = [0 1;0 -2];
B1 = [0 ;1];
syms s t Ls; % 求状态转移矩阵 利用拉氏变换
I = eye(size(A));
Ls = inv(s*I - A);% collect 函数为合并同类项
STM = ilaplace(Ls,s,t); %状态转移矩阵
G = double(subs(STM,t,dt)) % 符号函数求解
syms T
HLs = int(STM,t,0,T);
H = HLs*B1;
H = real(double(subs(H,T,dt))) % 符号函数求解
结果如下:
到这matlab部分就完成了剩下的就是在simulink中的具体仿真了,这个有需要再写吧,贴下自己做的一个简单仿真和连续系统同时进行的以便对数据对比,结果是连续系统和离散系统仿真数据是一样的。