diff --git a/libraries/AP_Logger/AP_Logger.h b/libraries/AP_Logger/AP_Logger.h index 3ae239c2db..4fa6406fd5 100644 --- a/libraries/AP_Logger/AP_Logger.h +++ b/libraries/AP_Logger/AP_Logger.h @@ -309,6 +309,7 @@ public: float D; float FF; float Dmod; + bool limit; }; void Write_PID(uint8_t msg_type, const PID_Info &info); diff --git a/libraries/AP_Logger/LogFile.cpp b/libraries/AP_Logger/LogFile.cpp index e3769f6306..2c8d1684b8 100644 --- a/libraries/AP_Logger/LogFile.cpp +++ b/libraries/AP_Logger/LogFile.cpp @@ -785,7 +785,8 @@ void AP_Logger::Write_PID(uint8_t msg_type, const PID_Info &info) I : info.I, D : info.D, FF : info.FF, - Dmod : info.Dmod + Dmod : info.Dmod, + limit : info.limit }; WriteBlock(&pkt, sizeof(pkt)); } diff --git a/libraries/AP_Logger/LogStructure.h b/libraries/AP_Logger/LogStructure.h index 199c2a20da..293fb04be8 100644 --- a/libraries/AP_Logger/LogStructure.h +++ b/libraries/AP_Logger/LogStructure.h @@ -538,6 +538,7 @@ struct PACKED log_PID { float D; float FF; float Dmod; + uint8_t limit; }; struct PACKED log_Current { @@ -1069,10 +1070,10 @@ struct PACKED log_PSC { #define ISBD_UNITS "s--ooo" #define ISBD_MULTS "F--???" -#define PID_LABELS "TimeUS,Tar,Act,Err,P,I,D,FF,Dmod" -#define PID_FMT "Qffffffff" -#define PID_UNITS "s--------" -#define PID_MULTS "F--------" +#define PID_LABELS "TimeUS,Tar,Act,Err,P,I,D,FF,Dmod,Limit" +#define PID_FMT "QffffffffB" +#define PID_UNITS "s---------" +#define PID_MULTS "F---------" // @LoggerMessage: ACC // @Description: IMU accelerometer data @@ -1575,6 +1576,7 @@ struct PACKED log_PSC { // @Field: D: derivative part of PID // @Field: FF: controller feed-forward portion of response // @Field: Dmod: scaler applied to D gain to reduce limit cycling +// @Field: Limit: 1 if I term is limited due to output saturation // @LoggerMessage: PM // @Description: autopilot system performance and general data dumping ground