超前滞后补偿器的C++实现

超前滞后补偿器的C++实现

超前滞后补偿器的传递函数

  • 超前-滞后补偿器的传递函数形式如下
    G ( s ) = T 1 s + 1 T 2 s + 1 G(s) = \frac{T_1s + 1}{T_2s + 1} G(s)=T2s+1T1s+1
    T 1 T_1 T1是超前时间常数
    T 2 T_2 T2是滞后时间常数

  • 超前-滞后补偿器传递函数的离散化表达
    T 1 z + ( T s − T 1 ) T 2 z + ( T s − T 2 ) \frac{T_1z + (T_s - T_1)}{T_2z + (T_s - T_2)} T2z+(TsT2)T1z+(TsT1)
    T 1 T_1 T1是超前时间常数
    T 2 T_2 T2是滞后时间常数
    T s T_s Ts是采样时间

C++实现

  • 为了便于C++程序编写, 应将离散化后的传递函数转换成离散的状态空间表达式, 用前向欧拉法, 转换后的状态空间表达式如下:
    x ( n + 1 ) = ( 1 − T s T 2 ) x ( n ) + ( T s T 2 ) u ( n ) x(n+1) = (1 - \frac{T_s}{T_2})x(n) + (\frac{T_s}{T_2})u(n) x(n+1)=(1T2Ts)x(n)+(T2Ts)u(n)
    y ( n ) = ( 1 − T 1 T 2 ) x ( n ) + ( T 1 T 2 ) u ( n ) y(n) = (1 - \frac{T_1}{T_2})x(n) + (\frac{T_1}{T_2})u(n) y(n)=(1T2T1)x(n)+(T2T1)u(n)
    其中:
    u u u是补偿器输入(即系统输出与参考值的偏差)
    x x x是补偿器状态
    y y y是补偿器输出(即系统的输入)
    n n n是步数

  • 具体C++代码实现大致如下

    double x; //补偿器状态量    
    double y; //补偿器输出量    
    double T1; // 超前时间常数    
    double T2; // 滞后时间常数    
    double delta_t; // 采样时间    
      
    x = (1 - delta_t / T2) * x + (delta_t / T2) * u; //u的值是其他环节给进来的    
    y = (1 - T1 / T2) * x + (T1 / T2) * u;
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值