diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-11-03 11:05:41 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-11-03 11:05:41 +0200 |
| commit | 732d7aaededc72fd28eca57e5a5ffb89ab29a9ef (patch) | |
| tree | 13db6b044ccdae6a93d79d9ce59cee7f3f405928 /Software/Embedded_SW/Embedded/Modules | |
| parent | ef601f78d1e17cefc5bb4df82b4108d93cdea9dc (diff) | |
| download | Tango-732d7aaededc72fd28eca57e5a5ffb89ab29a9ef.tar.gz Tango-732d7aaededc72fd28eca57e5a5ffb89ab29a9ef.zip | |
add job end error codes. turn off safety alarms when cleared.improve idle/power on/off sequences
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
7 files changed, 53 insertions, 29 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 5b57b8870..6570ea8e0 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -558,7 +558,7 @@ JobEndReasonEnum getEndReason(uint32_t AlarmId) return JOB_TEMPERATURE_ALARM; case ALARM_SOURCE_TYPE__LimitSwitchAlarm: usnprintf(AlarmReasonStr, 100, "Dispenser %d empty",AlarmItem[AlarmId].DeviceId); - return JOB_LS_ALARM; + return JOB_OUT_OF_DYE; case ALARM_SOURCE_TYPE__PressureAlarm: usnprintf(AlarmReasonStr, 100, "Over pressure in dispenser %d",AlarmItem[AlarmId].DeviceId); return JOB_PRESSURE_ALARM; @@ -571,6 +571,21 @@ JobEndReasonEnum getEndReason(uint32_t AlarmId) case ALARM_SOURCE_TYPE__CoversAlarm: usnprintf(AlarmReasonStr, 100, "Machine door %d removed during a run",AlarmItem[AlarmId].DeviceId); return JOB_TAMPER_ALARM; + case ALARM_SOURCE_TYPE__HardLimitAlarm: + usnprintf(AlarmReasonStr, 100, "Dispenser %d hit the hard limit",AlarmItem[AlarmId].DeviceId); + return JOB_LS_ALARM; + break; + case ALARM_SOURCE_TYPE__DoNotPollAlarm: + if (AlarmItem[AlarmId].Severity == DEBUG_LOG_CATEGORY__Critical) + { + usnprintf(AlarmReasonStr, 100, "Safety Critical Alarm %d",AlarmItem[AlarmId].EventType); + return JOB_SAFETY_CRITICAL_ALARM; + } + else + { + usnprintf(AlarmReasonStr, 100, "Alarm %d caused a job stop",AlarmId); + return JOB_OTHER_ALARM; + } default: usnprintf(AlarmReasonStr, 100, "Alarm %d caused a job stop",AlarmId); return JOB_OTHER_ALARM; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index dcbd6b9b0..c833c8fe8 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -169,11 +169,11 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_underheatcountlimit = true; EmbeddedParameters->underheatcountlimit = 3; EmbeddedParameters->has_closevalvetimeout = true; - EmbeddedParameters->closevalvetimeout = 50; + EmbeddedParameters->closevalvetimeout = 52; EmbeddedParameters->has_openvalvetimeout = true; - EmbeddedParameters->openvalvetimeout = 50; + EmbeddedParameters->openvalvetimeout = 52; EmbeddedParameters->has_initialdispenserpressure = true; - EmbeddedParameters->initialdispenserpressure = 1.08; + EmbeddedParameters->initialdispenserpressure = 0.25; EmbeddedParameters->has_initialdispensertimeout = true; EmbeddedParameters->initialdispensertimeout = 60000; EmbeddedParameters->has_initialdispensertimelag = true; @@ -181,7 +181,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_dispenserbuildpressurespeed = true; EmbeddedParameters->dispenserbuildpressurespeed=500; EmbeddedParameters->has_dispenserbuildpressurelimit = true; - EmbeddedParameters->dispenserbuildpressurelimit=0.8 ; + EmbeddedParameters->dispenserbuildpressurelimit=1.0 ; EmbeddedParameters->has_dispenserbuildpressuretimeout = true; EmbeddedParameters->dispenserbuildpressuretimeout=60000; EmbeddedParameters->has_dispenserbuildpressurelag = true; @@ -210,11 +210,11 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->generalparameters[3] = 0.0; //CheckMotorAlarms EmbeddedParameters->generalparameters[4] = 800.0; //Winder homing time at end of job EmbeddedParameters->generalparameters[5] = 1000.0; //Dispenser initial pressure speed - EmbeddedParameters->generalparameters[6] = Diagnostic_Normal_Mode; //Diagnostic Mode SetDiagnosticMode - EmbeddedParameters->generalparameters[7] = AutoHoming_JobEnd_PowerOn_off; // + EmbeddedParameters->generalparameters[6] = Diagnostic_Extended_Mode; //Diagnostic Mode SetDiagnosticMode + EmbeddedParameters->generalparameters[7] = AutoHoming_PowerOn_off; // } EmbeddedParameters->has_currentalarmlowlimit = true; - EmbeddedParameters->currentalarmlowlimit = 0.77; + EmbeddedParameters->currentalarmlowlimit = 0.78; EmbeddedParameters->has_currentalarmhighlimit = true; EmbeddedParameters->currentalarmhighlimit= 1.07; EmbeddedParameters->has_ids_segmentrefilltimeout = true; @@ -222,15 +222,15 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_ids_presegmentbuilduptime = true; EmbeddedParameters->ids_presegmentbuilduptime = 5000; EmbeddedParameters->has_ids_cleaningspeed = true; - EmbeddedParameters->ids_cleaningspeed = 50; + EmbeddedParameters->ids_cleaningspeed = 800; EmbeddedParameters->has_ids_cleaningstopbeforesegmenttime = true; - EmbeddedParameters->ids_cleaningstopbeforesegmenttime = 3000; + EmbeddedParameters->ids_cleaningstopbeforesegmenttime = 10000; EmbeddedParameters->has_ids_cleaningstartspraypresegmenttime = true; - EmbeddedParameters->ids_cleaningstartspraypresegmenttime = 1000; + EmbeddedParameters->ids_cleaningstartspraypresegmenttime = 2000; EmbeddedParameters->has_ids_leftcleaningmotorspeed = true; - EmbeddedParameters->ids_leftcleaningmotorspeed = 30; + EmbeddedParameters->ids_leftcleaningmotorspeed = 52; EmbeddedParameters->has_ids_rightcleaningmotorspeed = true; - EmbeddedParameters->ids_rightcleaningmotorspeed = 23; + EmbeddedParameters->ids_rightcleaningmotorspeed = 52; EmbeddedParameters->has_switchtoidletimeinseconds = true; EmbeddedParameters->switchtoidletimeinseconds = 3600; EmbeddedParameters->has_idledriertemperature = true; @@ -242,7 +242,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters->has_powerofftemperaturelimit = true; EmbeddedParameters->powerofftemperaturelimit = 50; EmbeddedParameters->has_ids_presegment_wfcf_timebeforesegment = true; - EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 1500; + EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 20000; uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(EmbeddedParameters)); size_t response_size = 0; if (response_buffer) diff --git a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c index 4958139e6..2a4800b77 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c +++ b/Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c @@ -30,6 +30,8 @@ MachineState StoredMachineStatus = MACHINE_STATE__Ready; void SetMachineStatus (MachineState State) { + ReportWithPackageFilter(GeneralFilter,"SetMachineStatus",__FILE__,__LINE__,State,RpWarning,StoredMachineStatus, 0); + StoredMachineStatus = State; } char MachineUpdateToken[36+1] = {0}; diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c index 6a0b9a67b..ea2cc2e6b 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c +++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c @@ -42,10 +42,10 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) bool AllDispensersInSafety = true; bool AnyDispensersInSafety = false; bool DispenserBypass = false; - /*bool mDrierDoorAlarmState = false; + bool mDrierDoorAlarmState = false; bool mAirFlowAlarmState = false; bool mAirFilterAlarmState = false; - bool mWasteOverflowAlarmState = false;*/ + bool mWasteOverflowAlarmState = false; for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) { if (isMotorConfigured(Disp_i + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)==true) @@ -61,8 +61,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) { //report and handle dryer door open AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, true); - // mDrierDoorAlarmState = true; - // DrierDoorAlarmState = true; + mDrierDoorAlarmState = true; + DrierDoorAlarmState = true; } else { @@ -71,8 +71,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) //report and handle air flow failure //if blower if off handling is different AlarmHandlingSetAlarm(EVENT_TYPE__NO_AIR_PRESSURE, true); - // mAirFlowAlarmState = true; - // AirFlowAlarmState = true; + mAirFlowAlarmState = true; + AirFlowAlarmState = true; } else { @@ -80,8 +80,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) { //report and handle filter missing AlarmHandlingSetAlarm(EVENT_TYPE__AIR_FILTER_NOT_INSTALLED, true); - // mAirFilterAlarmState = true; - // AirFilterAlarmState = true; + mAirFilterAlarmState = true; + AirFilterAlarmState = true; } else { @@ -89,8 +89,8 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) { //report and handle waste overflow AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, true); - // mWasteOverflowAlarmState = true; - // WasteOverflowAlarmState = true; + mWasteOverflowAlarmState = true; + WasteOverflowAlarmState = true; } } } @@ -167,7 +167,7 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) } } } -/* if ((mDrierDoorAlarmState != DrierDoorAlarmState)|| (mDrierDoorAlarmState == false)) + if ((mDrierDoorAlarmState != DrierDoorAlarmState)|| (mDrierDoorAlarmState == false)) { //alarm went off AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, false); @@ -191,7 +191,7 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, false); WasteOverflowAlarmState = mWasteOverflowAlarmState; } -*/ + return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c index 0a5cfc2f3..1b3f16044 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c @@ -40,6 +40,7 @@ int PowerUp(); int thredJog(); #define BUTTONS_SAMPLE_TIME (eHundredMillisecond) +#define SECOND1 (1000/BUTTONS_SAMPLE_TIME) #define SECOND2 (2000/BUTTONS_SAMPLE_TIME) #define SECOND5 (5000/BUTTONS_SAMPLE_TIME) @@ -89,6 +90,8 @@ int PowerUp() { bool ret = OK; + PowerIdleOutOfIdleState(); + return ret; } @@ -308,7 +311,7 @@ uint32_t ShortLongOffPB(uint8_t OnOffPB, button *pBtn) case COUNTPB: // last OnOffPBstate was COUNTPB if (OnOffPB) { - if( pBtn->count > SECOND2 ) + if( pBtn->count > SECOND1 ) { pBtn->Action = SHORTPB ; ReportWithPackageFilter(GeneralFilter,"------------ 2 seconds count PB Power -----------------", __FILE__,__LINE__,0, RpMessage, 0, 0); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index a086fe898..b05f236c5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -223,7 +223,7 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu } readValue = MillisecGetTemperatures(InternalId2PT100Id[index]); - if((MINIMUM_HEATER_READ*100>=readValue)||(MAXIMUM_HEATER_READ*100 < readValue)) + if((MINIMUM_HEATER_READ*100>=readValue)||(270.00*100 < readValue)) { //ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0); return ERROR; @@ -558,6 +558,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) } DeActivateHeater(HeaterId); HeaterCmd[HeaterId].targettemperatue = 0; +#warning PT100 error is misidentified as overheat in alarms AlarmHandlingSetAlarm(HeaterEventType[HeaterId], true); return; @@ -879,7 +880,8 @@ uint32_t DcHeaterMaxTempCBFunction(uint32_t IfIndex, uint32_t readValue) HeaterMaxTempFlag[index] = true; //ReportWithPackageFilter(HeatersFilter,(MinreadValue/100), "Heater Over the max temperature, turned off"); ReportWithPackageFilter(HeatersFilter,"DC Heater Over the max temperature, turned off",__FILE__,index,HeaterPreviousRead[index],RpWarning, HeaterReady[index],0); - AlarmHandlingSetAlarm(HeaterEventType[index], true); + if (getIdleState() == false) + AlarmHandlingSetAlarm(HeaterEventType[index], true); return OK; } else if ((HeaterPreviousRead[index]) < (HeaterControl[index].sensorminvalue)) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 28ba11fcd..41d98e892 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -735,12 +735,14 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID]) != LIMIT) { ReportWithPackageFilter(ThreadFilter,"Dyeing head is open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DH_LID,RpFatalError,LIMIT,0); + JobEndReason = JOB_LIDS_OPEN; PrepareReady(Module_Thread,ModuleFail); return ERROR; } if (FPGA_Read_limit_Switches(Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID]) != LIMIT) { ReportWithPackageFilter(ThreadFilter,"Dryer lid is open!!!",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,RpFatalError,LIMIT,0); + JobEndReason = JOB_LIDS_OPEN; PrepareReady(Module_Thread,ModuleFail); return ERROR; } |
