aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-07-27 12:57:06 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-07-27 12:57:06 +0300
commit6bb63a96166785b09ad2e65885133f32077dc6c8 (patch)
tree47da865bd395aebe45060d06b513f2b054d2c7b0 /Software/Embedded_SW/Embedded/Modules
parentc12f613bbcf149668cfd3e15cde46bc75c508893 (diff)
downloadTango-6bb63a96166785b09ad2e65885133f32077dc6c8.tar.gz
Tango-6bb63a96166785b09ad2e65885133f32077dc6c8.zip
initial blower value 2/3 of process value. build pressure in cleaner. stop job on waste overlow or cartridge inserted
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c41
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c10
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c6
5 files changed, 47 insertions, 20 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index a9899afd7..ec743ea4a 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -724,7 +724,7 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue)
{
if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
{
- WHS_Set_SetPoint_Q_value(headairflow/2);
+ WHS_Set_SetPoint_Q_value(headairflow*2/3);
}
else
{
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 5f1dfe138..a69b7fac5 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -45,6 +45,7 @@ HardwarePidControl DispensersCtrl[MAX_SYSTEM_DISPENSERS];
#define MAX_DYE_DISPENSERS 6
#define IDS_PRESEGMENT_TIME_STEP 50
+int32_t minimal_intersegment_length = 0;
int32_t DispenserSamples[MAX_SYSTEM_DISPENSERS][MAX_CONTROL_SAMPLES] = {0};
int DispenserSamplePointer[MAX_SYSTEM_DISPENSERS] = {0};
double DispenserNormalizedErrorCoEfficient[MAX_SYSTEM_DISPENSERS] = {0};
@@ -119,15 +120,15 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl
LeftRockerSpeed = ids_leftcleaningmotorspeed;
if ( ids_rightcleaningmotorspeed)
RightRockerSpeed = ids_rightcleaningmotorspeed;
+ minimal_intersegment_length = ids_cleaningstopbeforesegmenttime+ids_cleaningstartspraypresegmenttime+2000;
Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,__LINE__,RightRockerSpeed,RpWarning,(int)LeftRockerSpeed,0);
- Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,__LINE__,InterSegmentStartSprayCleaner,RpWarning,(int)InterSegmentCenterRockers,0);
+ Report("IDS_Dispenser_SetPreSegmentCleaningValues ",__FILE__,minimal_intersegment_length,InterSegmentStartSprayCleaner,RpWarning,(int)InterSegmentCenterRockers,0);
Report("IDS_Dispenser actuator times ",__FILE__,(int)LeftRockerSpeed/100*IDS_PRESEGMENT_TIME_STEP,(int)LeftRockerSpeed%100*IDS_PRESEGMENT_TIME_STEP,RpWarning,(int)RightRockerSpeed*IDS_PRESEGMENT_TIME_STEP,0);
-
}
uint32_t DispenserPreSegmentControlId = 0xFF;
uint32_t BrushStopControlId = 0xFF;
- uint32_t PreSegmentControlId = 0xFF;
+ //uint32_t PreSegmentControlId = 0xFF;
/*uint32_t IDS_DispenserControlInit()
{
@@ -576,6 +577,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
}
}
}
+ if (GetDispenserPressure(CLEANER_DISPENSER) > 0.02)
+ {
+ HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ CurrentDispenserSpeed[CLEANER_DISPENSER] = 0;
+ Report("IDS stop cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
+ }
if ((NumofReadyDispensers)&&(DispenserBuildTimeCounter%1000 == 0))
{
@@ -689,6 +697,13 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
//start new stage
if (endOfPrepareWCF == true)
{
+ if (CurrentDispenserSpeed[CLEANER_DISPENSER])
+ {
+ HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
+ MotorStop(HW_Motor_Id, Hard_Hiz);
+ CurrentDispenserSpeed[CLEANER_DISPENSER] = 0;
+ Report("IDS stop cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
+ }
SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback );
DispenserPrepareControlId = 0xFF;
Report("IDS_Prepare_Callback SafeRemoveControlCallback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
@@ -848,6 +863,12 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue)
}*/
}
}
+ TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[CLEANER_DISPENSER];
+ MotorSetSpeed((TimerMotors_t)HW_Motor_Id,400); //set the dispenser to the
+ CurrentDispenserSpeed[CLEANER_DISPENSER] = 400;
+ Report("IDS start cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0);
+
+
}
DispenserBuildTimeCounter = 0;
DispenserPrepareControlId = AddControlCallback(NULL, IDS_Prepare_Callback, PRESSURE_READ_TIME_GAP,TemplateDataReadCBFunction ,0, 0, 0 );
@@ -1259,15 +1280,19 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
if (SegmentId>0)
{
lInterSegmentLength = ((IntersegmentLength*100)*1000/dyeingspeed);
+
lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
- if (DispenserPreSegmentControlId == 0xFF)
+ if (minimal_intersegment_length<((IntersegmentLength*100)*1000/dyeingspeed))
{
- Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
- return ERROR;
+ DispenserPreSegmentControlId = AddControlCallback(NULL,IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
+ if (DispenserPreSegmentControlId == 0xFF)
+ {
+ Report("Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
+ return ERROR;
+ }
+ Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0);
}
- Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0);
/*if (EnableCleaning == true)
{
InterSegmentStartSprayCleaner = 500;
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index bfffb0d9b..1054da894 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -141,11 +141,8 @@ bool CartridgeInkFull()
CartridgeFinishedCount = 0;
Report("IFS_filling ", __FILE__,__LINE__,int_MidTank_Pressure_1000, RpMessage, int_MidTank_Pressure_1000, 0);
/**** detect if the MidTank_Pressure is the same, 5 times ****/
- if (DetectIfCartridgeFinished(int_MidTank_Pressure_1000)) {
- //currently sensor work properly only until 1.6 - 1.8 Liter (TBD)
- Report("DetectIfCartridgeFinished", __FILE__,__LINE__,int_MidTank_Pressure_1000, RpMessage, int_MidTank_Pressure_1000, 0);
- //return true;
- }
+ if (DetectIfCartridgeFinished(int_MidTank_Pressure_1000))
+ return true;
}
return false;
}
@@ -274,7 +271,8 @@ void midTankStateMachine(void)
Report("Power-down in process", __FILE__, __LINE__, 0, RpMessage, 0, 0);
break;
}
-
+ if (!RdInkCartridgeSensor())
+ break;
//check RFID? (TBD)
// send request for validation to ppc
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index f95420725..01c70d42f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -116,6 +116,7 @@
bool InitCalled = false;
uint32_t LoadArmRounds;
+ int CurrentlyLoaded = 0;
uint32_t ThreadLoadStateMachine( THREAD_LOAD_STAGES_ENUM LoadStages);
uint32_t ThreadLoadControlCBFunction(uint32_t index, uint32_t ReadValue);
uint32_t ThreadLoadLengthCBFunction(uint32_t IfIndex, uint32_t ReadValue);
@@ -210,7 +211,7 @@
{
if(Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)
{
- WHS_Set_SetPoint_Q_value(headairflow/2);
+ WHS_Set_SetPoint_Q_value(headairflow*2/3);
}
else
{
@@ -639,7 +640,7 @@
{
return OK;
}
- MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,numberOfCycles);
+ MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,numberOfCycles+CurrentlyLoaded);
if (numberOfCycles<LoadArmRounds)
{
MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].directionthreadwize,
@@ -656,7 +657,7 @@
TryAgain = true;
SecondTry = false;
Report("Store Number of cycles in drier - halted",__FILE__,__LINE__,numberOfCycles,RpMessage,LoadArmRounds,0);
- MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,numberOfCycles);
+ MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CYCLES,numberOfCycles+CurrentlyLoaded);
TimeoutsCounter = 0;
CallbackCounter = 0;
load.color = fastBILNK;
@@ -687,7 +688,6 @@
{
REPORT_MSG(LoadStages, "Thread Load State Machine step Thread_Load_Dryer_Loading");
- int CurrentlyLoaded = 0;
if (dryerbufferlength)
LoadArmRounds = (int)dryerbufferlength;
if (LoadArmRounds <= 2)
diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
index de95ddb03..f96de2dd0 100644
--- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c
@@ -466,7 +466,7 @@ void Waste_StateMachine(void)
// RFID change status - TBD
WasteTankState = WasteTankStateIdle;
RemoveControlCallback(Cartridge_Cover_Control, Waste_DoorOpenDuringEmptying);
- if (cartNotAllFull() == false)
+ //if (cartNotAllFull() == false)
AlarmHandlingSetAlarm( EVENT_TYPE__ALL_WASTE_CARTRIDGES_FULL, true);
Report("WasteTankStateEmptying done", __FILE__, __LINE__, 0, RpMessage, 0, 0);
timeout_counter = 0;
@@ -505,6 +505,8 @@ void Waste_Prepare(void)
if (wasteLevel > wasteLevelOverflow)
{
Report("cannot start a job with waste tank overflow", __FILE__, __LINE__, wasteLevel, RpMessage, wasteLevelOverflow, 0);
+ JobEndReason = JOB_SAFETY_CRITICAL_ALARM;
+ AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, true);
PrepareReady(Module_Waste,ModuleFail);
return;
}
@@ -515,6 +517,8 @@ void Waste_Prepare(void)
else
{
Report("cannot start a job with cartridges in the IFS", __FILE__, __LINE__, wasteLevel, RpMessage, wasteLevelOverflow, 0);
+ JobEndReason = JOB_OTHER_ALARM;
+ AlarmHandlingSetAlarm( EVENT_TYPE__ALL_WASTE_CARTRIDGES_FULL, true);
PrepareReady(Module_Waste,ModuleFail);
}
return;