增量式PID控制算法的C++代码实现

void prpvtest::PID_Init(){
    cout << "PID_Init begin!" << endl;
    pid.SetSpeed = 0;
    pid.ActualSpeed = 0;
    pid.Err = 0;
    pid.Err_last = 0;
    pid.Err_Next = 0;
    pid.Kp = _Kpid[0];
    pid.Ki = _Kpid[1];
    pid.Kd = _Kpid[2];
    cout << pid.Kp << pid.Ki << pid.Kd << endl;
    cout << "PID_Init end!" << endl;
}

double prpvtest::PID_Calc(float speed,float realv){
    double u;
    double incrementSpeed;
    pid.SetSpeed = speed;
    pid.ActualSpeed = realv;
    pid.Err = pid.SetSpeed - pid.ActualSpeed;  
    u = pid.Kp*pid.Err;
    incrementSpeed = pid.Kp*(pid.Err - pid.Err_Next) + pid.Ki*pid.Err
        +pid.Kd * (pid.Err - 2 * pid.Err_Next + pid.Err_last);
    pid.Err_last = pid.Err_Next;
    pid.Err_Next = pid.Err;
    
    return incrementSpeed;
}

以上用C++代码实现了增量式PID控制(控制对象是动态油缸)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值