我是靠谱客的博主 刻苦朋友,最近开发中收集的这篇文章主要介绍超前滞后补偿器的C++实现超前滞后补偿器的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;
    

最后

以上就是刻苦朋友为你收集整理的超前滞后补偿器的C++实现超前滞后补偿器的C++实现的全部内容,希望文章能够帮你解决超前滞后补偿器的C++实现超前滞后补偿器的C++实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部