}PID; PID算法实现(位置式PID) 代码语言:txt AI代码解释 float PID_realize(float actual_val) { /*计算目标值与实际值的误差*/ pid.err = pid.target_val - actual_val; /*积分项*/ pid.integral += pid.err; /*PID算法实现*/ pid.output_val = pid.Kp * pid.err + pid.Ki * pid.integral ...
pid->output=-pid->maxOutput;}PID mypid;//创建一个PID结构体变量intmain(){//...这里有些其他初始化代码PID_Init(&mypid,10,1,5,800,1000);//初始化PID参数while(1)//进入循环运行{floatfeedbackValue=...;//这里获取到被控对象的反馈值floattargetValue=...;//这里...
pid_location.output_val = 0.0; pid_location.err = 0.0; pid_location.err_last = 0.0; pid_location.integral = 0.0; pid_location.Kp = 0.05; pid_location.Ki = 0; pid_location.Kd = 0; /* 速度相关初始化参数 */ pid_speed.target_val=10.0; pid_speed.output_val=0.0; pid_speed.err=0.0...
return pid->output_val; } 串级控制代码 //周期定时器的回调函数 void AutoReloadCallback() { static uint32_t location_timer = 0; // 位置环周期 static __IO int encoderNow = 0; /*当前时刻总计数值*/ static __IO int encoderLast = 0; /*上一时刻总计数值*/ int encoderDelta = 0; /*当...
float output_val; //输出值 }PID; 1. 2. 3. 4. 5. 6. 7. 8. 9. PID算法实现(位置式PID) float PID_realize(float actual_val) { /*计算目标值与实际值的误差*/ pid.err = pid.target_val - actual_val; /*积分项*/ pid.integral += pid.err; ...
特别提示:由于本节讲解 PID 的实现,我们将以 PID 作为第一视角,如果提到 input ,指的是 PID 算法输入,相当于上节中的系统输出 output(t),即恒温水池的温度;如果提到 ouput,指的是 PID 算法输出,相当于上节中的系统输入 input(t),即加热功率。
} else if (val < out_min_) { printf("val: %f > out_min_: %f\n", val, out_min_); val = out_min_; } else { ; // Do nothing } } }; int main() {PIDController pid;pid.set_tunings(1, 0.5, 0.05);pid.set_sample_time(1000);pid.set_output_limits(0, 100); ...
pid_location.err_last=0.0;pid_location.integral=0.0;pid_location.Kp=0.05;pid_location.Ki=0;pid_location.Kd=0;/* 速度相关初始化参数 */pid_speed.target_val=10.0;pid_speed.output_val=0.0;pid_speed.err=0.0;pid_speed.err_last=0.0;pid_speed.integral=0.0;pid_speed.Kp=80.0;pid_speed.Ki=...
return pid->output_val;} 串级控制代码 //周期定时器的回调函数void AutoReloadCallback(){static uint32_t location_timer = 0; // 位置环周期static __IO int encoderNow = 0; /*当前时刻总计数值*/static __IO int encoderLast = 0; /*上一时刻总计数值*/int encoderDelta = 0; /*当前时刻与上...
elif output < self._min: output = self._min self._pre_error = error self.cur_val = outputreturnself.cur_val def fit_and_plot(self, count =200):""" 使用PID拟合setPoint """counts = np.arange(count) outputs = []fori in counts: ...