thermferm/pid.h

Thu, 02 May 2024 15:49:16 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Thu, 02 May 2024 15:49:16 +0200
changeset 716
5c30c8ef83a8
parent 495
712984fdd26b
permissions
-rw-r--r--

Version 0.9.19b3. The simulator thread can be paused to be able to add and delete simulators. Added simulated door and PSU status. Devices can now fully use multiple simulators. Better rounding of simulated temperature values. The server SIMULATOR DEL and ADD commands pause the simulator when the linked list is manipulated. Fixed SIGSEGV when a simulator is added. Added socket SO_REUSEADDR again to the server socket.

#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			*/



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		InputLast;	/* Input 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

mercurial