Mon, 18 May 2015 21:19:06 +0200
Version 0.3.3, still not for production. Fixed warnings when the simulator code is compiled. Slowed the simulator air temperature change 60 times. More realistic temperature changes for the heater and cooler elements. Improved logic in the simulator.
#ifndef PID_H #define PID_H #define PID_MODE_NONE 0 /* Process control off */ #define PID_MODE_AUTO 1 /* Process control auto */ #define PID_MODE_BOO 2 /* Process control Bang On/Off */ #define PID_TYPE_HEAT 0 /* PID is used for heating */ #define PID_TYPE_COOL 1 /* PID is used for cooling */ #define PID_TIMES 60 /* 60 calculations per minute */ #define PID_WINDUP_GUARD 10.0 /* Error windup guard */ typedef struct _pid_var { double iMax; /* Maximum allowable integrator state */ double iGain; /* Integral gain */ double pGain; /* Proportional gain */ double dGain; /* Derivative gain */ double idleRange; /* Idle range */ double Input; /* Input value */ double Err; /* Error, diff between input and set point */ double ErrLast; /* Error from last pass */ double iState; /* Error from next last pass */ double SetP; /* Set point */ double OutP; /* Output of PID algorithm */ int Mode; /* Value is 'PID_AUTO' if loop is automatic */ int Type; /* Value is 'HEAT' or 'COOL' */ } pid_var; void InitPID( pid_var *, int); void UpdatePID( pid_var *); #endif