双闭环晶闸管不可逆直流调速系统的 matlab simulink 仿真

用以下参数设计一个双闭环晶闸管不可逆直流调速系统,要求使用 matlab simulink画出电路仿真图

img


电流超调量小于 5%转速超调量小于 10%
需要电路仿真图以及各元件控制参数截图

根据所给参数,我们可以设计双闭环晶闸管不可逆直流调速系统如下:

其中,电机模型和电压控制环节已经给出,我们需要设计电流控制环节和转速反馈环节。

电流控制环节

电流控制环节采用PI控制器,控制电机电流接近给定电流。具体参数如下:

比例增益Kp = 0.3
积分增益Ki = 200
控制器输出的电压通过限幅器限制在±10V内,然后送入晶闸管触发电路。

转速反馈环节

转速反馈采用比例控制器,控制电机转速接近给定转速。具体参数如下:

比例增益Kc = 0.1
转速反馈信号通过乘法器和比例增益放大后,与电压控制环节的输出相加,得到整个系统的控制电压。

最终的系统仿真图如下所示:

其中,绿色方框表示电机模型,紫色方框表示电压控制环节,蓝色方框表示电流控制环节,黄色方框表示转速反馈环节。在仿真中,我们可以通过修改给定电流和给定转速来测试系统的响应性能。

下面是各元件控制参数截图:
电流控制器参数:

参数 值
比例增益Kp 0.3
积分增益Ki 200
输出限幅 ±10V
转速反馈控制器参数:

参数 值
比例增益Kc 0.1
反馈信号放大系数 7.7462
输出限幅 ±10V

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7481721
  • 这篇博客你也可以参考下:Matlab/Simulink电力系统——无穷大功率电源供电系统三相短路仿真
  • 除此之外, 这篇博客: matlab 连续系统状态空间表达式的离散化&状态转移矩阵求解中的 最近在学习卡尔曼滤波需要在matlab/simulink系统中将连续系统进行离散化 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 推荐一篇个人觉得不错的卡尔曼滤波原理详解https://blog.csdn.net/weixin_43942325/article/details/103416681

    • 数学过程推导

    具'j体的数i学推导过程a就不做详绍了,在现代控制理论教材中都有,这儿贴两张图片

    •  matlab 程序编写

    根据上面公式推导,假设存在系统\dot{x}=Ax+Bu,其中A = \begin{pmatrix} 0 & 1\\ 0&-2 \end{pmatrix},B=\begin{bmatrix} 0\\ -2 \end{bmatrix}

    其离散系统表达式为x\left ( k+1 \right )=Gx\left ( k \right )+Hu\left ( k \right )

    求系统的状态转移矩阵\Phi \left ( t \right ) =e^A^T=L^-^1\begin{bmatrix} S & -1\\ 0& s+1 \end{bmatrix}=\begin{bmatrix} 1 & 1/2\ \left ( 1-e^-^2^t \right )\\ 0& e^-^2^t \end{bmatrix},式中L^-^1为拉氏反变换

    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中的具体仿真了,这个有需要再写吧,贴下自己做的一个简单仿真和连续系统同时进行的以便对数据对比,结果是连续系统和离散系统仿真数据是一样的。