From eea8c70b9c076f4ff70283c0ce21908d18d46244 Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Tue, 26 Feb 2019 17:33:40 +0200 Subject: Reverse the logic of LS_DH_CLEAN + Add RFID buff --- Software/Embedded_SW/Embedded/DataDef.h | 3 ++ .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 5 ++- .../I2C_Communication/RFID_NFC/RFIDTagInfo.h | 49 ++++++++++++++++++++++ 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 2c78e1b1c..ec2def5a7 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -126,6 +126,9 @@ enum #define DOUBLE_BUFFER 2 +#define No_Safety_Event 1 +#define Safety_Event_Occurred 0 + #define CurrentMotDriver 0x08 #define VoltageMotDriver 0x00 #define CurrentCombinedMotDriver 0x0108 // 01 Combined Driver, 08 Current diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index 401e59de0..c042d9211 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -406,10 +406,10 @@ bool FPGA_Read_limit_Switches(FPGA_GPI_ENUM Limit_Switch) LM_Status = Ls_Dryer_Dh.bits.F1_LS_DH_CLEAN_UP; break; case GPI_LS_DH_CLEAN_RIGHT: - LM_Status = Ls_Dryer_Dh.bits.F1_LS_DH_CLEAN_RIGHT; + LM_Status = !(Ls_Dryer_Dh.bits.F1_LS_DH_CLEAN_RIGHT); break; case GPI_LS_DH_CLEAN_LEFT: - LM_Status = Ls_Dryer_Dh.bits.F1_LS_DH_CLEAN_LEFT; + LM_Status = !(Ls_Dryer_Dh.bits.F1_LS_DH_CLEAN_LEFT); break; case GPI_LS_DH_CLEAN_DOWN: LM_Status = Ls_Dryer_Dh.bits.F1_LS_DH_CLEAN_DOWN; @@ -561,6 +561,7 @@ bool WHS_GPI_CHILLER_FAULT() bool WHS_GPI_WASTE_OVERFULL()//waste tank overflow { +#warning NA need to check the DISP_SAFETY_STOP_IND of all the connected dispensers return F2_GPI_Reg.bits.F2_WASTE_OVERFULL_NO; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h new file mode 100644 index 000000000..9136e4007 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/RFID_NFC/RFIDTagInfo.h @@ -0,0 +1,49 @@ +/* + * RFIDTagInfo.h + * + * Created on: Feb 26, 2019 + * Author: avi + */ + +#ifndef DRIVERS_I2C_COMMUNICATION_RFID_NFC_RFIDTAGINFO_H_ +#define DRIVERS_I2C_COMMUNICATION_RFID_NFC_RFIDTAGINFO_H_ + +typedef struct +{ + uint8_t TagUniqueID[7]; //RFID Tag unique ID + uint8_t CartSN[16]; //Cartridge serial number + uint32_t InkFactoryID:24; //Ink factory ID + uint32_t FillSysID:16; //Filling system ID number + uint32_t ColorID; //Color description / ID + uint32_t InkCategory:16; //Ink category (TBD) + uint32_t Type_Rev:16; //TBD – can be formulation # + uint32_t CartridgeSize; //Size in cc + uint32_t FiledInkVol; //Size in cc + uint32_t InkBatchNo:16; //MFG batch No’ + uint8_t InkMFGDate[6]; //Date Ink was manufactured (20L container bar-code) + uint8_t InkEOLDate[6]; //Ink end of life date + uint8_t CartFillDate[6]; //Date cartridge was filled with ink (CFS) + uint8_t WasteFillDate[6]; //Date cartridge was filled with waste (Machine) + uint32_t Misc; + uint32_t PluginCounter:16; //Number of times cartridge was plugged in INK Slot + uint8_t InkFillStatus; //State indicator - successful state change when starting to fill mid. tank + uint8_t InkUsedStatus; + uint8_t InkEmptyStatus; + uint8_t WasteEmptyStatus; + uint8_t WasteFillStatus; + uint8_t WasteFullStatus; + uint8_t Blocked; + uint8_t Fail; + uint32_t WasteCounter:16; + uint8_t MachineIdINL[16]; + uint8_t MachineIdWST[16]; + uint8_t Spare[4]; +}NFCTag_t; + +typedef union +{ + NFCTag_t Struct; + uint8_t Buf[sizeof(NFCTag)]; +}NFC_Tag; + +#endif /* DRIVERS_I2C_COMMUNICATION_RFID_NFC_RFIDTAGINFO_H_ */ -- cgit v1.3.1 From 3871e96b254db8ce93e294d4eb74f54d51552e2a Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 26 Feb 2019 19:37:56 +0200 Subject: Version 1.3.7.6: safety alarms, current alarms --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 22 ++-- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h | 2 +- .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 5 + .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h | 7 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 45 ++++++-- .../Embedded/Modules/Diagnostics/Diagnostics.c | 1 - .../Embedded_SW/Embedded/Modules/General/Safety.c | 114 +++++++++++++++++++++ .../Embedded_SW/Embedded/Modules/General/Safety.h | 15 +++ .../Embedded/Modules/Heaters/Heaters_print.c | 20 ++++ .../StateMachines/Initialization/InitSequence.c | 2 + 11 files changed, 211 insertions(+), 24 deletions(-) create mode 100644 Software/Embedded_SW/Embedded/Modules/General/Safety.c create mode 100644 Software/Embedded_SW/Embedded/Modules/General/Safety.h (limited to 'Software/Embedded_SW') diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index 2531a3e79..5bfd47b44 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,3,7,5}; +TangoVersion_t _gTangoVersion = {1,3,7,6}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index c042d9211..08e86d0a0 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -148,43 +148,43 @@ void FPGA_Read_LS_Safty_Ind_Reg() } -bool Check_Disp_Sfaty_Stop_Indication(uint8_t Dispenser_ID)//0..7 +bool Check_Disp_Safety_Stop_Indication(uint8_t Dispenser_ID)//0..7 { - bool Sfaty_Indication = OK; + bool Safety_Indication = OK; assert(Dispenser_ID < MAX_DISPENSER_NUM); switch(Dispenser_ID) { case 0: - Sfaty_Indication = LS_Dispenser_1_2.bits.F2_DISP_SAFETY_STOP_IND_1; + Safety_Indication = LS_Dispenser_1_2.bits.F2_DISP_SAFETY_STOP_IND_1; break; case 1: - Sfaty_Indication = LS_Dispenser_1_2.bits.F2_DISP_SAFETY_STOP_IND_2; + Safety_Indication = LS_Dispenser_1_2.bits.F2_DISP_SAFETY_STOP_IND_2; break; case 2: - Sfaty_Indication = LS_Dispenser_3_4.bits.F2_DISP_SAFETY_STOP_IND_3; + Safety_Indication = LS_Dispenser_3_4.bits.F2_DISP_SAFETY_STOP_IND_3; break; case 3: - Sfaty_Indication = LS_Dispenser_3_4.bits.F2_DISP_SAFETY_STOP_IND_4; + Safety_Indication = LS_Dispenser_3_4.bits.F2_DISP_SAFETY_STOP_IND_4; break; case 4: - Sfaty_Indication = LS_Dispenser_5_6.bits.F2_DISP_SAFETY_STOP_IND_5; + Safety_Indication = LS_Dispenser_5_6.bits.F2_DISP_SAFETY_STOP_IND_5; break; case 5: - Sfaty_Indication = LS_Dispenser_5_6.bits.F2_DISP_SAFETY_STOP_IND_6; + Safety_Indication = LS_Dispenser_5_6.bits.F2_DISP_SAFETY_STOP_IND_6; break; case 6: - Sfaty_Indication = LS_Dispenser_7_8.bits.F2_DISP_SAFETY_STOP_IND_7; + Safety_Indication = LS_Dispenser_7_8.bits.F2_DISP_SAFETY_STOP_IND_7; break; case 7: - Sfaty_Indication = LS_Dispenser_7_8.bits.F2_DISP_SAFETY_STOP_IND_8; + Safety_Indication = LS_Dispenser_7_8.bits.F2_DISP_SAFETY_STOP_IND_8; break; default: break; } - return Sfaty_Indication; + return Safety_Indication; } bool FPGA_Read_limit_Switches(FPGA_GPI_ENUM Limit_Switch) diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h index c83e939fd..c98ba5941 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h @@ -234,7 +234,7 @@ typedef enum void Pumps_Control(PUMPS_ENUM Pump_Id, bool Direction); uint32_t Control_Dryer_Fan(bool StartStop, uint8_t PWM_Command_Precent); -bool Check_Disp_Sfaty_Stop_Indication(uint8_t Dispenser_ID); +bool Check_Disp_Safety_Stop_Indication(uint8_t Dispenser_ID); bool Emergency_Push_Button_Report(); //bool Dryer_Door_Switch(); uint8_t Pannel_Leds(PANEL_BUTTON_OR_CRAT_ID Pannel_Led_Id, OPERATION_MODE LED_Mode); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c index 4f78927d8..96e42fc36 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c @@ -355,3 +355,8 @@ double Get_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-8 assert (Heater_ID= AlarmItem[Alarm_i].AlarmValue) + { + Status = true; + } + } + else + { + if (value <= AlarmItem[Alarm_i].AlarmValue) + { + Status = true; + } + } break; case MotorAlarm: if (isMotorConfigured((TimerMotors_t)AlarmItem[Alarm_i].DeviceId) == false) diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index b696532ec..72dd92d54 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -239,7 +239,6 @@ void DiagnosticsLoadDigitalValues(void) DigitalOutputState[10].interfaceio = INTERFACE_IOS__GPO_SPARE_SSR13_CTRL; DigitalOutputState[10].value = ReadHeadMagnetBit(); -#warning get the magnet state DigitalOutputState[11].interfaceio = INTERFACE_IOS__GPO_LED4; DigitalOutputState[11].value = DataUpdated; diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c new file mode 100644 index 000000000..840898db7 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c @@ -0,0 +1,114 @@ +/* + * Safety.c + * + * Created on: Feb 26, 2019 + * Author: shlomo + * This file includes the safety indication handling functions: + * Dispensers safety,Dryer door, Air suction, Air filter presence, Waste overflow + */ + +#include "drivers/Motors/Motor.h" +#include "drivers/Heater/TemperatureSensor.h" +#include "drivers/FPGA/FPGA_SPI_Comm.h" +#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" +#include "drivers/FPGA/FPGA.h" + +#include + +#include "Modules/General/GeneralHardware.h" +#include "modules/control/control.h" +#include "modules/AlarmHandling/AlarmHandling.h" +#include "modules/thread/thread_ex.h" +#include "modules/heaters/heaters_ex.h" +#include "modules/ids/ids_ex.h" + +uint32_t SafetyControlId; +bool DispenserOverPressure[MAX_SYSTEM_DISPENSERS] = {false,false,false,false,false,false,false,false}; +uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag); + +void Safety_Init(void) +{ + SafetyControlId = AddControlCallback( Safety_Main_State, eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); + //return; +} +uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) +{ + int Disp_i; + bool AllDispensersInSafety = true; + bool AnyDispensersInSafety = false; + for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) + { + if (isMotorConfigured(Disp_i + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)==true) + { + AllDispensersInSafety &= Check_Disp_Safety_Stop_Indication(Disp_i); + AnyDispensersInSafety |= Check_Disp_Safety_Stop_Indication(Disp_i); + } + } + + if (AllDispensersInSafety) + { + if (Get_COVER_1_State(DryerDoor)) + { + //report and handle dryer door open + AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, true); + } + else + { + if (WHS_GPI_WASTE_FLOW_SWITCH()) + { + //report and handle air flow failure + //if blower if off handling is different + AlarmHandlingSetAlarm(EVENT_TYPE__NO_AIR_PRESSURE, true); + } + else + { + if (WHS_GPI_SW_FILTER_PRES()) + { + //report and handle filter missing + AlarmHandlingSetAlarm(EVENT_TYPE__AIR_FILTER_NOT_INSTALLED, true); + } + else + { + //if (WHS_GPI_WASTE_OVERFULL()) - cannot read this switch + { + //report and handle waste overflow + AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, true); + } + } + } + } + } + else if (AnyDispensersInSafety) + { + for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) + { + if (isMotorConfigured(Disp_i + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)==true) + { + if (Check_Disp_Safety_Stop_Indication(Disp_i) == true) + { + //report dispenser over pressure + AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i, true); + DispenserOverPressure[Disp_i] = true; + } + } + } + } + for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) + { + if (DispenserOverPressure[Disp_i] == true) + { + if (isMotorConfigured(Disp_i + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)==true) + { + if (Check_Disp_Safety_Stop_Indication(Disp_i) == false) + { + //report dispenser over pressure + AlarmHandlingSetAlarm(EVENT_TYPE__DISPENSER_1_OVERPRESSURE+Disp_i, false); + DispenserOverPressure[Disp_i] = false; + } + } + } + } + + return OK; +} + diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.h b/Software/Embedded_SW/Embedded/Modules/General/Safety.h new file mode 100644 index 000000000..266da1c56 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.h @@ -0,0 +1,15 @@ +/* + * Safety.h + * + * Created on: Feb 26, 2019 + * Author: shlomo + */ + +#ifndef MODULES_GENERAL_SAFETY_H_ +#define MODULES_GENERAL_SAFETY_H_ + + +void Safety_Init(void); + + +#endif /* MODULES_GENERAL_SAFETY_H_ */ diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 2647970c9..52be7f8f1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -31,6 +31,8 @@ #include "Drivers/Heater/TemperatureSensor.h" #include "Drivers/I2C_Communication/DAC/blower.h" #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" +#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" + #include "StateMachines/Printing/PrintingSTM.h" @@ -82,9 +84,12 @@ uint32_t SecondDryerHeaterMaxTempControl = 0xFF; #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 8.5 +#define MAXIMUM_HEATER_READ 283 //old uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,TEMP_SENSE_AN_ENCLOSURETEMP3}; uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,HEAD6_PT100,MIXER_PT100}; +HEATERS_CURRENT HeaterId2CurrentId[MAX_HEATERS_NUM] = {NUM_OF_HEATERS,DRYER_CURRENT_1,DRYER_CURRENT_2,HEAD_ZONE_1_6,HEAD_ZONE_2,HEAD_ZONE_3,HEAD_ZONE_4,HEAD_ZONE_5,HEAD_ZONE_1_6,MIXCHIP}; uint32_t DryerInternalPT100Id = DRYER_AIR_PT100; bool HeatersRestart = false; @@ -436,7 +441,15 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) //HeaterPIDConfig[HeaterId].m_params.dt *=10; //DCInitialHeating[HeaterId] = true; HeaterReady[HeaterId] = false; + + Enable_Reading_Heaters_Current(HeaterId2CurrentId[HeaterId]); + HeaterPreviousRead[HeaterId] = TemperatureSensorRead(HeaterId2PT100Id[HeaterId]); + if((abs(HeaterPreviousRead[HeaterId]-MINIMUM_HEATER_READ)<1)||(abs(MAXIMUM_HEATER_READ-HeaterPreviousRead[HeaterId])<10)) + { + LOG_ERROR (HeaterId,"PT100 not working properly"); + return ERROR; + } Report("PrepareHeater Read", __FILE__,__LINE__,HeaterId, SetTemperatue, HeaterPreviousRead[HeaterId], 0); if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); @@ -455,6 +468,9 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) if (ControlIdtoMaxHeaterId [HeaterId] == 0xFF) ControlIdtoMaxHeaterId [HeaterId] = AddControlCallback( DcHeaterMaxTempCBFunction, eOneSecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); + Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]); + Enable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]); + if (MainDryerHeaterMaxTempControl == 0xFF) MainDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain],0); if (SecondDryerHeaterMaxTempControl == 0xFF) @@ -723,6 +739,9 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) HeatersControlStart(); //////////////////////// HeaterReady[index] = true; + Disable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain]); + Disable_Reading_Heaters_Current(HeaterId2CurrentId[HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary]); + AlarmHandlingSetAlarm(HeaterUnderEventType[index], false); HeaterPrepareReady(); if (BlowerCfg.enabled == true) @@ -839,6 +858,7 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) //DCInitialHeating[index] = false; HeatersControlStart(); HeaterReady[index] = true; + Disable_Reading_Heaters_Current(HeaterId2CurrentId[index]); HeaterPrepareReady(); } return OK; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index f6c904cdc..977030563 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -10,6 +10,7 @@ #include "modules/General/GeneralHardware.h" +#include "modules/General/Safety.h" #include "modules/thread/thread.h" #include "modules/ids/ids.h" #include "modules/control/control.h" @@ -133,6 +134,7 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) Report("Remove control callback failed",__FILE__,__LINE__,(int)HWControlId,RpWarning,(int)InitSequenceBlowerCallBackFunction,0); if (BlowerCfg.voltage) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); + Safety_Init(); InitStages++; InitSequenceStateMachine(InitStages); return OK; -- cgit v1.3.1