diff options
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
5 files changed, 93 insertions, 38 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 05987ee7f..37d6b5ec1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -17,13 +17,13 @@ #include "drivers/Motors/Motor.h" #include "drivers/Heater/TemperatureSensor.h" #include "drivers/SSI_Comm/Dancer/Dancer.h" -#include <Drivers/SSI_Comm/SSI_Comm.h> #include "drivers/FPGA/FPGA_SPI_Comm.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/FPGA/FPGA.h" #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h" #include "drivers/I2C_Communication/DAC/Blower.h" +#include <Drivers/I2C_Communication/I2C_Task.h> #include "drivers/valves/valve.h" #include "modules/ids/ids_ex.h" @@ -265,6 +265,7 @@ double MotorValue[MAX_THREAD_MOTORS_NUM][DIAGNOSTICS_LIMIT+1]; uint8_t SpeedCounterIndex= 0; double SpeedValue[DIAGNOSTICS_DANCER_LIMIT+1]; double headblowervoltage1 = 0.0, headblowervoltage2 = 0.0; +double headblower1airflow = 0.0, headblower2airflow = 0.0; void DiagnosticLoadMotor(int MotorId, int frequency) { @@ -408,9 +409,6 @@ void DiagnosticLoadDancerError(int DancerId, double value) // DancerErrorCounterIndex[DancerId] = 0; } -#ifdef FOUR_WINDERS - double dancer2,dancer3,dancer4; -#endif void CopyTemperaturesToMonitor(void) { DiagnosticsMonitor.mixertemperature = @@ -500,33 +498,22 @@ void CopyTemperaturesToMonitor(void) HeaterCounterIndex[HEATER_TYPE__HeaterZone4]; DiagnosticsMonitor.n_headzone6temperature = HeaterCounterIndex[HEATER_TYPE__HeaterZone6]; + DiagnosticsMonitor.n_headblower1airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone5]; DiagnosticsMonitor.n_headblower2airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone7]; - DiagnosticsMonitor.headblower1airflow = HeaterTemperature[HEATER_TYPE__HeaterZone5]; - DiagnosticsMonitor.headblower2airflow = HeaterTemperature[HEATER_TYPE__HeaterZone7]; + headblower1airflow = PressureSensorGetPressure(HEAD_PT100_ZONE_5_0X84_0); + headblower2airflow = PressureSensorGetPressure(HEAD_PT100_ZONE_7_0X86_0); + DiagnosticsMonitor.headblower1airflow = &headblower1airflow; + DiagnosticsMonitor.headblower2airflow = &headblower2airflow; + + DiagnosticsMonitor.n_headblowervoltage1 = 1; + DiagnosticsMonitor.n_headblowervoltage2 = 1; + headblowervoltage1 = HeadBlowersGetRPM(HEAD_FAN_RIGHT); + headblowervoltage2 = HeadBlowersGetRPM(HEAD_FAN_LEFT); + DiagnosticsMonitor.headblowervoltage1 = &headblowervoltage1; + DiagnosticsMonitor.headblowervoltage2 = &headblowervoltage2; } - DiagnosticsMonitor.n_headblower1airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone5]; - DiagnosticsMonitor.n_headblower2airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone7]; - DiagnosticsMonitor.headblower1airflow = HeaterTemperature[HEATER_TYPE__HeaterZone5]; - DiagnosticsMonitor.headblower2airflow = HeaterTemperature[HEATER_TYPE__HeaterZone7]; - headblowervoltage1 =(double )Head_Fan_PWM_Command[HEAD_FAN_RIGHT]; - headblowervoltage2 =(double )Head_Fan_PWM_Command[HEAD_FAN_LEFT]; - DiagnosticsMonitor.headblowervoltage1 = &headblowervoltage1; - DiagnosticsMonitor.headblowervoltage2 = &headblowervoltage2; - DiagnosticsMonitor.n_headblowervoltage1 = 1; - DiagnosticsMonitor.n_headblowervoltage2 = 1; -#ifdef FOUR_WINDERS -// double dancer2,dancer3,dancer4; - dancer2 = Control_Read_Dancer_Position(HARDWARE_DANCER_2,0); - dancer3 = Control_Read_Dancer_Position(HARDWARE_DANCER_3,0); - dancer4 = Control_Read_Dancer_Position(HARDWARE_DANCER_4,0); - DiagnosticsMonitor.n_headblower1airflow = 1; - DiagnosticsMonitor.n_headblower2airflow = 1; - DiagnosticsMonitor.headblower1airflow = &dancer4; - DiagnosticsMonitor.headblower2airflow = &dancer3; - DiagnosticsMonitor.headblowervoltage1 = &dancer2; - DiagnosticsMonitor.n_headblowervoltage1 = 1; -#endif + DiagnosticsMonitor.dryerzone1temperature = HeaterTemperature[HEATER_TYPE__DryerAirHeater]; DiagnosticsMonitor.dryerzone2temperature = @@ -991,19 +978,11 @@ void Diagnostic100msecCollection(void) { //if (JobIsActive()) { -#ifdef FOUR_WINDERS - DiagnosticLoadMotor(FEEDER_MOTOR, ThreadGetMotorSpeed (WINDER_2_MOTOR)); - DiagnosticLoadMotor(DRYER_MOTOR, ThreadGetMotorSpeed (WINDER_3_MOTOR)); - DiagnosticLoadMotor(POOLER_MOTOR, ThreadGetMotorSpeed (WINDER_4_MOTOR)); - DiagnosticLoadMotor(WINDER_MOTOR, ThreadGetMotorSpeed (WINDER_MOTOR)); - DiagnosticLoadMotor(SCREW_MOTOR, ThreadGetMotorSpeed (SCREW_MOTOR)); -#else DiagnosticLoadMotor(FEEDER_MOTOR, ThreadGetMotorSpeed (FEEDER_MOTOR)); DiagnosticLoadMotor(DRYER_MOTOR, ThreadGetMotorSpeed (DRYER_MOTOR)); DiagnosticLoadMotor(POOLER_MOTOR, ThreadGetMotorSpeed (POOLER_MOTOR)); DiagnosticLoadMotor(WINDER_MOTOR, ThreadGetMotorSpeed (WINDER_MOTOR)); DiagnosticLoadMotor(SCREW_MOTOR, ThreadGetMotorSpeed (SCREW_MOTOR)); -#endif } for (i=0;i<MAX_SYSTEM_DISPENSERS;i++) { diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 019be5c31..011e25317 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -66,6 +66,7 @@ bool GeneralHwReady = false; bool PP_Machine = false; HardwareBlower BlowerCfg; +HardwareBlower HeadBlowerCfg[2]; char *SW_INFO_DIR = "0://SysInfo"; char HwConfigPath[50] = "0://SysInfo//GenHwCfg.cfg"; @@ -574,7 +575,18 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) { LargeFansCfg = request->blowers[Dispenser_i]->voltage; } - + if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__HeadBlower1)) + { + HeadBlowerCfg[0].enabled = true; + HeadBlowerCfg[0].voltage = request->blowers[Dispenser_i]->voltage; + HeadBlowerCfg[0].heatingvoltage = request->blowers[Dispenser_i]->heatingvoltage; + } + if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__HeadBlower2)) + { + HeadBlowerCfg[1].enabled = true; + HeadBlowerCfg[1].voltage = request->blowers[Dispenser_i]->voltage; + HeadBlowerCfg[1].heatingvoltage = request->blowers[Dispenser_i]->heatingvoltage; + } } } ControlStart(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h index 55490a140..e99931acc 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h @@ -20,6 +20,7 @@ uint32_t LoadConfigurationParamsFromFile(bool); void HWConfigurationLoadFile(void); extern HardwareBlower BlowerCfg; +extern HardwareBlower HeadBlowerCfg[2]; extern bool DataUpdated; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index 0220d1a6c..015c5ea83 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -41,3 +41,8 @@ uint32_t HeatersEnd(void); void HeatersControlStart(void); void HeatersControlStop(void); uint32_t Heaters_Init(void); +double PressureSensorGetPressure(uint8_t SensorId); +int HeadBlowersGetRPM(uint8_t fanId); +double PressureSensorInit(); +void HeadBlowersInit(); +void HeadBlowersCfg(); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index ce3ced6ef..8fe3de207 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -8,6 +8,7 @@ /////////////////////////////////////////////////////////////////////////////////////////// #include "include.h" #include <DataDef.h> +#include <math.h> #include "heaters.h" #include "Heaters_ex.h" @@ -38,6 +39,7 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h" #include "Drivers/I2C_Communication/I2C.h" +#include <Drivers/I2C_Communication/I2C_Task.h> #include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h> #include "StateMachines/Printing/PrintingSTM.h" @@ -91,11 +93,15 @@ uint32_t UnderHeatCounter [HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0, uint32_t MainDryerHeaterMaxTempControl = 0xFF; uint32_t SecondDryerHeaterMaxTempControl = 0xFF; uint32_t DisasterControlId = 0xFF; +double PressureSensorV0[2] = {0.0, 0.0}; + #define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1 #define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2 #define DRYER_SECONDARY_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP3 #define MINIMUM_HEATER_READ 9.0 #define MAXIMUM_HEATER_READ 283 +#define PRESSURE_SENSOR_CP 0.225 +extern uint16_t Head_Fan_Tach[2]; bool UseSecondaryDrierHeater = true; @@ -237,7 +243,6 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y); uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue); void HeatersStartControlTimer (void); - //********************************************************************** //******************** CODE *******************************************/ //********************************************************************** @@ -1843,3 +1848,56 @@ void HeatersControlTask(UArg arg0, UArg arg1) } } } + + +/******************************************************************************** + * Arc Head Pressure sensors + *******************************************************************************/ + +void HeadBlowersInit() +{ + Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, 0); + Trigger_Head_Fan_Control(HEAD_FAN_LEFT, 0); +} + +void HeadBlowersCfg() +{ + if (HeadBlowerCfg[0].enabled) { + Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, HeadBlowerCfg[0].voltage); + } + if (HeadBlowerCfg[1].enabled) { + Trigger_Head_Fan_Control(HEAD_FAN_LEFT, HeadBlowerCfg[1].voltage); + } +} + +double PressureSensorInit(int fanId) +{ + int sensorId; + sensorId = (fanId == HEAD_FAN_RIGHT)?(HEAD_PT100_ZONE_5_0X84_0):(HEAD_PT100_ZONE_7_0X86_0); + PressureSensorV0[fanId] = MillisecGetTemperatures(sensorId); + PressureSensorV0[fanId] *= 10; + return PressureSensorV0[fanId]; +} + +int HeadBlowersGetRPM(uint8_t fanId) +{ + Trigger_Head_Read_Tacho(fanId); + + if (Head_Fan_Tach[fanId] == 0x1FFE) { + return 0; + } else { + return 7864320/Head_Fan_Tach[fanId]; + } +} + +double PressureSensorGetPressure(uint8_t SensorId) +{ + double V0, Vm, Q, Cp; + + Cp = PRESSURE_SENSOR_CP; + V0 = (SensorId == HEAD_PT100_ZONE_5_0X84_0)?(PressureSensorV0[0]):(PressureSensorV0[1]); + Vm = MillisecGetTemperatures(SensorId); + Vm *= 10; + Q = sqrt(Vm - V0 + 22) * Cp; + return Q; +} |
