aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-11-03 11:05:41 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-11-03 11:05:41 +0200
commit732d7aaededc72fd28eca57e5a5ffb89ab29a9ef (patch)
tree13db6b044ccdae6a93d79d9ce59cee7f3f405928 /Software/Embedded_SW
parentef601f78d1e17cefc5bb4df82b4108d93cdea9dc (diff)
downloadTango-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')
-rw-r--r--Software/Embedded_SW/Embedded/Common/report/distributor.c2
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c16
-rw-r--r--Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h5
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c17
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c26
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/MachineStatus.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/Safety.c24
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/buttons.c5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c2
-rw-r--r--Software/Embedded_SW/Embedded/Software Release Notes.txt18
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c4
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c32
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c5
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c3
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h3
17 files changed, 118 insertions, 56 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/report/distributor.c b/Software/Embedded_SW/Embedded/Common/report/distributor.c
index d485abb70..71d30f998 100644
--- a/Software/Embedded_SW/Embedded/Common/report/distributor.c
+++ b/Software/Embedded_SW/Embedded/Common/report/distributor.c
@@ -240,7 +240,7 @@ Void reportService(UArg arg0, UArg arg1)
int DistTableEntry;//,msgLen, errCode, par1, par2;
ReportInitParams InitParams;
- InitParams.DistributorQueueMaxMsgs = 30;
+ InitParams.DistributorQueueMaxMsgs = 60;
InitParams.DistributorTaskPriority = 6;
InitParams.MaxNumOfFilterNames = 30;
InitParams.MaxNumberOfPrivateDistributors = 2;
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c
index e0a1c841c..bf21067e2 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.c
@@ -7,7 +7,7 @@
#endif
#include "ErrorCode.pb-c.h"
-static const ProtobufCEnumValue error_code__enum_values_by_number[44] =
+static const ProtobufCEnumValue error_code__enum_values_by_number[47] =
{
{ "NONE", "ERROR_CODE__NONE", 0 },
{ "GENERAL_ERROR", "ERROR_CODE__GENERAL_ERROR", 1 },
@@ -53,11 +53,14 @@ static const ProtobufCEnumValue error_code__enum_values_by_number[44] =
{ "JOB_PRESSURE_ALARM", "ERROR_CODE__JOB_PRESSURE_ALARM", 2010 },
{ "JOB_CURRENT_ALARM", "ERROR_CODE__JOB_CURRENT_ALARM", 2011 },
{ "JOB_MOTOR_ALARM", "ERROR_CODE__JOB_MOTOR_ALARM", 2012 },
+ { "JOB_LIDS_OPEN", "ERROR_CODE__JOB_LIDS_OPEN", 2013 },
+ { "JOB_ABORTED_BY_USER", "ERROR_CODE__JOB_ABORTED_BY_USER", 2014 },
+ { "JOB_SAFETY_ALARM", "ERROR_CODE__JOB_SAFETY_ALARM", 2015 },
};
static const ProtobufCIntRange error_code__value_ranges[] = {
-{0, 0},{1000, 8},{2000, 31},{0, 44}
+{0, 0},{1000, 8},{2000, 31},{0, 47}
};
-static const ProtobufCEnumValueIndex error_code__enum_values_by_name[44] =
+static const ProtobufCEnumValueIndex error_code__enum_values_by_name[47] =
{
{ "BAD_CRC", 2 },
{ "CONTINUOUS_RESPONSE_ABORTED", 5 },
@@ -87,15 +90,18 @@ static const ProtobufCEnumValueIndex error_code__enum_values_by_name[44] =
{ "INVALID_PARAMETER", 7 },
{ "INVALID_PROCESS_ID", 10 },
{ "INVALID_UPLOAD_ID", 8 },
+ { "JOB_ABORTED_BY_USER", 45 },
{ "JOB_CURRENT_ALARM", 42 },
{ "JOB_FAILED", 6 },
{ "JOB_FEEDER_DANCER_FAIL", 35 },
+ { "JOB_LIDS_OPEN", 44 },
{ "JOB_LS_ALARM", 40 },
{ "JOB_MOTOR_ALARM", 43 },
{ "JOB_OTHER_ALARM", 37 },
{ "JOB_OUT_OF_DYE", 36 },
{ "JOB_POOLER_DANCER_FAIL", 34 },
{ "JOB_PRESSURE_ALARM", 41 },
+ { "JOB_SAFETY_ALARM", 46 },
{ "JOB_TEMPERATURE_ALARM", 39 },
{ "JOB_THREAD_BREAK", 32 },
{ "JOB_UNSPECIFIED_ERROR", 31 },
@@ -111,9 +117,9 @@ const ProtobufCEnumDescriptor error_code__descriptor =
"ErrorCode",
"ErrorCode",
"",
- 44,
+ 47,
error_code__enum_values_by_number,
- 44,
+ 47,
error_code__enum_values_by_name,
3,
error_code__value_ranges,
diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h
index 74c9e2a31..30979b52a 100644
--- a/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h
+++ b/Software/Embedded_SW/Embedded/Communication/PMR/Common/ErrorCode.pb-c.h
@@ -63,7 +63,10 @@ typedef enum _ErrorCode {
ERROR_CODE__JOB_LS_ALARM = 2009,
ERROR_CODE__JOB_PRESSURE_ALARM = 2010,
ERROR_CODE__JOB_CURRENT_ALARM = 2011,
- ERROR_CODE__JOB_MOTOR_ALARM = 2012
+ ERROR_CODE__JOB_MOTOR_ALARM = 2012,
+ ERROR_CODE__JOB_LIDS_OPEN = 2013,
+ ERROR_CODE__JOB_ABORTED_BY_USER = 2014,
+ ERROR_CODE__JOB_SAFETY_ALARM = 2015
PROTOBUF_C__FORCE_ENUM_TO_BE_INT_SIZE(ERROR_CODE)
} ErrorCode;
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 1f871a4cc..636848c91 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
@@ -549,7 +549,7 @@ bool Is_FPGA_WD_Occurred()
FPGA_WD_Occurred = true;
//To recover:
- //1. Disable all FPGA's WD:
+/* //1. Disable all FPGA's WD:
Control_WD(DISABLE,0);
//2. Enqable all FPGA's WD:
Control_WD(ENABLE,250);
@@ -558,7 +558,7 @@ bool Is_FPGA_WD_Occurred()
//4. Init Motor's Drivers:
//Init_Motors_Drivers_After_FPGA_WD();
Motor_ReconfigAllMotors();
-/*
+
//OR
//Reset MCU (will reset also the FPGA):
//Power_Reset();
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;
}
diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt
index e366ef378..a652e9035 100644
--- a/Software/Embedded_SW/Embedded/Software Release Notes.txt
+++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt
@@ -1,4 +1,4 @@
-Embedded SW Release note - Version 1.4.5.9 (alpha 3)
+Embedded SW Release note - Version 1.4.6.0
=============================================================
I2C reading task for better handling of slow I2C interactions (head etc)
textual names for control calls to help debuggng
@@ -13,9 +13,7 @@ Thread: *real dryer rampup. dancers from EEPROM only. *insure rockers motors vol
print: *prevent job on open covers (dryer, head)
-Embedded SW Release note - Version 1.4.5.95 (alpha 2)
-=============================================================
-Embedded SW Release note - Version 1.4.5.9 (alpha 1)
+Embedded SW Release note - Version 1.4.5.96 (alpha 1 +)
=============================================================
common:
log filtering by severity and modules
@@ -26,15 +24,17 @@ drivers:
valves: bug fixed.
modules:
alarm handling: current alarms, fans alarms, bugs fixes.
- control: current reading disabled, machine status, led on FPGA reset.
+ control: current reading disabled, machine status every 1 sec, led on FPGA reset.
general: buttons fixed. handling of config failures, dryer buffer length: number of dryer cycles *76 cm + 90 cm (dryer to winder), safety alarms.
- heaters: machine internal alrms, bugs fixed.
- IDS: dispenser data store in FFS, homing - consider safety bypass, midtank content, active homing. use RML's feeder_tension as pressure buildup limit.
- thread: load fixed. hold dryer arm.
+ heaters: machine internal alrams, bugs fixed.
+ IDS: dispenser data store in FFS, stub fixed, homing - consider safety bypass, midtank content, active homing. use RML's feeder_tension as pressure buildup limit.
+ use puller tension as cleaner speed for RML, trial - better stop of homing on job start
+ thread: load fixed. hold dryer arm, dryer ramp up!!!
waste, IFS: tested and fixed
state machines
Init: open and cloase dispensers valve, fix problems,
- power off sequence and clean job fixed.
+ power off: sequence and clean job fixed.
+ idle: out of idlw - push power button for 1 sec
print: job length fixed.
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
index fe6f12053..a6e0f7d12 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
@@ -265,7 +265,6 @@ uint32_t InitSequenceStartHeatingCallBackFunction(uint32_t IfIndex, uint32_t Bus
if (HeaterCheckReady()==true)
{
MachineStateDetail = MACHINE_STATE_MACHINE_READY_TO_DYE;
- SetMachineStatus(MACHINE_STATE__Ready);
if (SafeRemoveControlCallback(HWControlId, InitSequenceStartHeatingCallBackFunction )==OK)
HWControlId = 0xFF;
else
@@ -294,12 +293,15 @@ uint32_t InitSequenceStartHeating(void)
else
{
MachineStateDetail = MACHINE_STATE_NO_PROCESS_PARAMS;
+ SetMachineStatus(MACHINE_STATE__Ready);
+ REPORT_MSG(MachineStateDetail,"InitSequenceStateMachine no processparameters file");
}
}
else
{
REPORT_MSG(InitialHeating,"InitSequenceStateMachine InitialHeating is OFF");
MachineStateDetail = MACHINE_STATE_MACHINE_READY_TO_DYE;
+ InitStages++;
}
if (AutoHoming_Config >= AutoHoming_PowerOn_off )
{
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
index df2f3705c..9fb7e097d 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c
@@ -37,7 +37,8 @@ uint32_t IdleMixerTemperature = 0;
bool powerIdleState = false;
bool machineActive = false;
uint32_t IdleControlId = 0xFF;
-ProcessParameters ActiveProcessParameters;
+uint32_t IdleHeatingControlId = 0xFF;
+ProcessParameters ActiveProcessParameters,ProcessParametersClear;
void PowerIdleSetIdle(void)
{
memcpy (&ActiveProcessParameters,&ProcessParametersKeep,sizeof(ProcessParameters));
@@ -103,9 +104,10 @@ void PowerIdleInit(void)
void PowerIdleSetParameters(uint32_t switchtoidletimeinseconds,uint32_t idledriertemperature,uint32_t idleheadtemperature,uint32_t idlemixertemperature)
{
powerIdleSecondsLimit = switchtoidletimeinseconds;
- IdleDrierTemperature = idledriertemperature*100;
- IdleHeadTemperature = idleheadtemperature*100;
- IdleMixerTemperature = idlemixertemperature*100;
+ IdleDrierTemperature = idledriertemperature;
+ IdleHeadTemperature = idleheadtemperature;
+ IdleMixerTemperature = idlemixertemperature;
+ Report("Power Idle Set Parameters",__FILE__,powerIdleSecondsLimit,(int)idledriertemperature,RpWarning,(int)idleheadtemperature,0);
}
int getIdleCounter (void) {return powerIdleSecondsCounter;}
@@ -114,6 +116,22 @@ void setmachineActive(bool Active){machineActive = Active;}
void resetIdleCounter (void) {powerIdleSecondsCounter = 0;}
bool getIdleState (void) {return powerIdleState;}
+uint32_t PowerIdleStartHeatingCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
+{
+ if (HeaterCheckReady()==true)
+ {
+ //MachineStateDetail = MACHINE_STATE_MACHINE_READY_TO_DYE;
+ if (SafeRemoveControlCallback(IdleHeatingControlId, PowerIdleStartHeatingCallBackFunction )==OK)
+ IdleHeatingControlId = 0xFF;
+ else
+ Report("Remove control callback failed",__FILE__,__LINE__,(int)IdleHeatingControlId,RpWarning,(int)PowerIdleStartHeatingCallBackFunction,0);
+ //InitSequenceStateMachine(InitStages);
+ SetMachineStatus(MACHINE_STATE__Ready);
+ }
+
+ return OK;
+}
+
void PowerIdleOutOfIdleState(void)
{
Report("PowerIdle Out of Idle ",__FILE__,__LINE__,(int)powerIdleSecondsLimit,RpWarning,(int)powerIdleSecondsCounter,0);
@@ -128,10 +146,12 @@ void PowerIdleOutOfIdleState(void)
return ;
}
if (IdleControlId == 0xFF)
- IdleControlId = AddControlCallback("IdleCounter", PowerIdleCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+ IdleControlId = AddControlCallback( "NULL",PowerIdleCallBackFunction, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
if (IdleControlId == 0xFF)
Report("AddControlCallback failed",__FILE__,__LINE__,(int)IdleControlId,RpWarning,(int)0,0);
- SetMachineStatus(MACHINE_STATE__Ready);
+ SetMachineStatus(MACHINE_STATE__Initializing);
+ IdleHeatingControlId = AddControlCallback("Heating Out of Idle", PowerIdleStartHeatingCallBackFunction, 2*eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
+
}
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
index 67e86397c..285c6ee74 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c
@@ -89,6 +89,7 @@ uint32_t PowerOffInit(void)
PowerOffMachineState++;
StopInitSequence();
setmachineActive(true);
+ PowerIdleOutOfIdleState();
PowerOffInProcess = true;
PowerOffControlId = AddControlCallback("PowerOff", PowerOffScheduler, eOneSecond, TemplateDataReadCBFunction,0,0, 0 );
SetMachineStatus(MACHINE_STATE__PowerOff);
@@ -114,7 +115,7 @@ uint32_t PowerOffHeadCleanCallback(uint32_t DispenserId, uint32_t ReadValue)
SafeRemoveControlCallback(PowerOffHeadCleanControlId, PowerOffHeadCleanCallback );
PowerOffHeadCleanControlId = 0xFF;
PowerOffMachineState++;
-
+ SetMachineStatus(MACHINE_STATE__PowerOff);
}
return OK;
}
@@ -139,6 +140,7 @@ uint32_t PowerOffHeadClean(void)
{
LOG_ERROR(0,"Clean job failed");
PowerOffMachineState++;
+ SetMachineStatus(MACHINE_STATE__PowerOff);
}
// if ( PowerOffHeadCleanControlId == 0xFF)
// return ERROR;
@@ -311,6 +313,7 @@ uint32_t PowerOffStopRunningJob(void)
if (JobIsActive())
{
REPORT_MSG (PowerOffMachineState, "Stop running job");
+ JobEndReason = JOB_ABORTED_BY_USER;
AbortJob("Power off pressed");
}
PowerOffMachineState++;
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
index 1f6ff685e..58d82e428 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c
@@ -82,7 +82,7 @@ JobEndReasonEnum JobEndReason = JOB_OK;
ErrorCode JobError_to_ErrorCode[JOB_ERRORS_MAX+1] = {ERROR_CODE__NONE,ERROR_CODE__JOB_UNSPECIFIED_ERROR,ERROR_CODE__JOB_THREAD_BREAK,ERROR_CODE__JOB_WINDER_DANCER_FAIL,
ERROR_CODE__JOB_POOLER_DANCER_FAIL,ERROR_CODE__JOB_FEEDER_DANCER_FAIL,ERROR_CODE__JOB_OUT_OF_DYE,ERROR_CODE__JOB_OTHER_ALARM,
ERROR_CODE__JOB_TEMPERATURE_ALARM,ERROR_CODE__JOB_LS_ALARM,ERROR_CODE__JOB_PRESSURE_ALARM,ERROR_CODE__JOB_CURRENT_ALARM,
- ERROR_CODE__JOB_MOTOR_ALARM,ERROR_CODE__JOB_OTHER_ALARM};
+ ERROR_CODE__JOB_MOTOR_ALARM,ERROR_CODE__JOB_LIDS_OPEN,ERROR_CODE__JOB_ABORTED_BY_USER,ERROR_CODE__JOB_SAFETY_ALARM,ERROR_CODE__JOB_OTHER_ALARM};
JobTicket *CurrentJob = NULL;
JobRequest *CurrentRequest = NULL;
@@ -353,6 +353,7 @@ void JobAbortFunc(MessageContainer* requestContainer)
my_free(responseContainer.data.data);
SendChars((char*)container_buffer, container_size);
abort_job_request__free_unpacked(request,NULL);
+ JobEndReason = JOB_ABORTED_BY_USER;
JobAbortedByUser = true;
AbortJob("Job Aborted by user");
//We keep the job request until it is done
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
index 85f5a61c7..bd9998a31 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.h
@@ -97,6 +97,9 @@ typedef enum
JOB_CURRENT_ALARM,
JOB_MOTOR_ALARM,
JOB_TAMPER_ALARM,
+ JOB_LIDS_OPEN,
+ JOB_ABORTED_BY_USER,
+ JOB_SAFETY_CRITICAL_ALARM,
JOB_ERRORS_MAX
}JobEndReasonEnum;
extern JobEndReasonEnum JobEndReason;