acceleration_cmd_closeloop = speed_pid_controller_.Control(speed_controller_input_limited, ts); debug->set_pid_saturation_status( speed_pid_controller_.IntegratorSaturationStatus()); if (enable_leadlag) { acceleration_cmd_closeloop = speed_leadlag_controller_.Control(acceleration_cmd_closeloop, ts); debug->set_leadlag_saturation_status( speed_leadlag_controller_.InnerstateSaturationStatus()); }
时间: 2024-01-18 20:02:29 浏览: 67
pid控制器代码matlab-eBikeSpdController:eBike速度控制器设计和实现的源代码
这段代码对闭环加速度命令值进行控制计算。
首先,使用speed_pid_controller_.Control()函数计算出速度PID控制器的输出值,并将其赋值给acceleration_cmd_closeloop。该函数使用speed_controller_input_limited和时间间隔ts作为参数进行控制计算。
接下来,通过调用speed_pid_controller_.IntegratorSaturationStatus()获取速度PID控制器的积分饱和状态,并将其设置到debug变量的pid_saturation_status字段中,用于调试或记录。
然后,如果enable_leadlag为true,表示启用了Leadlag控制,将使用speed_leadlag_controller_.Control()函数对acceleration_cmd_closeloop进行进一步的控制计算。该函数使用acceleration_cmd_closeloop和时间间隔ts作为参数进行控制计算,并将结果重新赋值给acceleration_cmd_closeloop。
最后,通过调用speed_leadlag_controller_.InnerstateSaturationStatus()获取速度Leadlag控制器的内部状态饱和状态,并将其设置到debug变量的leadlag_saturation_status字段中,用于调试或记录。
阅读全文