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

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

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

  • 超前-滞后补偿器传递函数的离散化表达
    \frac{T_1z + (T_s - T_1)}{T_2z + (T_s - T_2)}
    T_1是超前时间常数
    T_2是滞后时间常数
    T_s是采样时间

C++实现

  • 为了便于C++程序编写, 应将离散化后的传递函数转换成离散的状态空间表达式, 用前向欧拉法, 转换后的状态空间表达式如下:
    x(n+1) = (1 - \frac{T_s}{T_2})x(n) + (\frac{T_s}{T_2})u(n)
    y(n) = (1 - \frac{T_1}{T_2})x(n) + (\frac{T_1}{T_2})u(n)
    其中:
    u是补偿器输入(即系统输出与参考值的偏差)
    x是补偿器状态
    y是补偿器输出(即系统的输入)
    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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。