blob: b1d870919301d8dc6b0f19545bf1903e7c95f779 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
#ifndef MODULES_HEATERS_HEATERS_H_
#define MODULES_HEATERS_HEATERS_H_
#include "PMR/Hardware/HardwarePidControl.pb-c.h"
#include "PMR/Hardware/HardwarePidControlType.pb-c.h"
#include "heaters_ex.h"
#include "Drivers/Heater/Heater.h"
/******************** DEFINITIONS ********************************************/
#define MAX_AC_HEATERS (HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary+1)
#define MAX_TIMESLICES 200
extern uint32_t OutputProportionalSingleStep; //A/C Heaters step size from one decision point to another - in cpu clocks. 120000 = 1 millisecod
extern uint32_t OutputProportionalCycleTime; //A/C Heaters Cycle time in milliseconds - one for all heaters
//extern uint32_t Heater_timerBase; //Timer handle
extern char TimeSliceAllocation[MAX_TIMESLICES];
extern int DCTimeSliceAllocation[HEATER_TYPE_MAX_HEATERS];
extern int NumberOFSlicesInUse;
extern uint32_t MillisecondsPerChange;
void initializeArrays(void);
typedef struct HeaterPIDControlConfigstruc
{
bool configured;
int id; //HardwarePidControlType
float outputproportionalpowerlimit;
float outputproportionalband;
//int32_t sensorcorrectionadjustment;
//int32_t sensortypeandsetpointlimits;
float IntegralErrorMultiplier; //setpointramprateorsoftstartramp
//int32_t setpointcontroloutputrate;
float ProportionalErrorMultiplier;//outputonoffhysteresisvalue;
//int32_t processvariablesamplingrate;
//int32_t pvinputfilterfactormode;
int32_t sensormaxvalue;
int32_t sensorminvalue;
double kp;
double ki;
double kd;
double epsilon;
double dt;
bool pidactive;
}HeaterPIDControlConfig;
typedef struct HeaterCommandstruc
{
int heaterid; //HardwarePidControlType
bool command;
uint32_t targettemperatue;
}HeaterCommand;
extern HeaterPIDControlConfig HeaterControl[HEATER_TYPE_MAX_HEATERS];
extern HeaterCommand HeaterCmd[HEATER_TYPE_MAX_HEATERS];
extern uint32_t Heater_timerBase;
uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_outputproportionalpowerlimit);
uint32_t HeaterRecalculateHeaterParams(uint32_t deviceId, uint32_t new_outputproportionalpowerlimit);
uint32_t HeatersSingleHeaterEnd(int HeaterId);
#endif
|