matlab---s函数讲解之二连杆动力学仿真

MATLAB S函数与二连杆动力学仿真
本文深入探讨了MATLAB中S函数的使用,特别是在二连杆动力学仿真的应用。详细介绍了S函数中不同flag值的功能,如初始化、状态更新和输出。并展示了如何通过S函数实现控制器和被控对象的设计,包括状态方程的构建和动力学方程的求解。

matlab虽然后simulink,但是再复杂系统的仿真的时候简单的simulink中模块不能满足要求,因此需要自己建立s函数,作为仿真中的一个模块

在控制系统中分为控制器和被控对象。

零、原理

1、定点控制时,期望为常数,所以可以利用导数为0的特性构造误差动力学,然后构造李雅普诺夫函数,证明稳定性。
在这里插入图片描述

一、控制器

1、功能选择函数(flag)

function [sys,x0,str,ts] = spacemodel(t,x,u,flag)
    switch flag
        case 0
            [sys,x0,str,ts] = mdlInitializeSizes;
        case 3
            sys = mdlOutputs(t,x,u);
        case {
   
   2,4,9}
            sys = [];
        otherwise
            error(['Unhandlede flag = ',num2str(flag)]);
    end
end

在s函数中,这是必须的一个函数,s函数中的标志为flag有10个,据说目前支持的有0、1、2、3、4、9等几个数值。matlab中S函数的概念及使用

1)flag=0。进行系统的初始化过程,调用mdlInitializeSizes函数,对参数进行初始化设置,比如离散状态个数、连续状态个数、模块输入和输出的路数、模块的采样周期个数、状态变量初始数值等。2)flag=1。进行连续状态变量的更新,调用mdlDerivatives函数。3)flag=2。进行离散状态变量的更新,调用mdlUpdate函数。4)flag=3。求取系统的输出信号,调用mdlOutputs函数。5)flag=4。调用mdlGetTimeOfNextVarHit函数,计算下一仿真时刻,由sys返回。6)flag=9。终止仿真过程,调用mdlTerminate函数。

同时,需要注意对于离散状态更新,每个仿真步内必然调用该子函数,不论是否有意义。Matlab S-function 使用总结

2、初始化函数

function [sys,x0,str,ts] = mdlInitializeSizes
    sizes = simsizes;
    sizes.NumOutputs = 2;
    sizes.NumInputs = 6;
    sizes.DirFeedthrough = 1;
    sizes.NumSampleTimes = 1;
    sys = simsizes(sizes);
    x0 = [];
    str = [];
    ts = [0 0];
end

可以看到在控制器中一般没有状态变量,而状态变量一般都在被控对象中。这也就导致了没有连续状态变量的定义,也就没有了连续状态更新的函数定义(状态方程)。(ps:虽然离散状态更新每个仿真中都会调用,flag=2.)

所以x0不需要定义值,只需要定义空就可以。
ts的值表示每个连续的采样时间步都运行。
sizes.DirFeedthrough = 1:只要输出函数中有u就需要=1。

3、输出函数

function sys = mdlOutputs(t,x,u)
    R1 = u(1);dr1 = 0;
    R2 = u(2);dr2 = 0;

    x(1) = u(3);
    x(2) = u(4);
    x(3) = u(5);
    x(4) = u(6);

    e1 = R1 - x(1);
    e2 = R2 - x(3);
    e = [e1;e2];
    de1 = dr1 - x(2);
    de2 = dr2 - x(4);
    de = [de1;de2];

    Kp 
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值