diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-08-02 08:26:40 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-08-02 08:26:40 +0300 |
| commit | d113295a432e33e6b7ccbcc948342d7f570d461c (patch) | |
| tree | 86620e9c44c80a162052636da65a7f105d182daf /Software/Embedded_SW/Embedded/Modules | |
| parent | bf989bcfa848e20f8bd27aa71acc2fbdee38f57b (diff) | |
| download | Tango-d113295a432e33e6b7ccbcc948342d7f570d461c.tar.gz Tango-d113295a432e33e6b7ccbcc948342d7f570d461c.zip | |
Version 1.4.6.36 and procedures
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
10 files changed, 47 insertions, 22 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index cc8ae5be8..07df07309 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -967,6 +967,10 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) } } } + if (Configured[Module_Waste]) + { + FoundReason = Waste_Prepare(); + } if ((AlarmState[Alarm_i].Status == true)&&(FoundReason == JOB_OK)) { if(AlarmItem[Alarm_i].Severity>=DEBUG_LOG_CATEGORY__Error) diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 1f5093601..0e91f4211 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -147,6 +147,7 @@ double dispenser8motorfrequency[DIAGNOSTICS_LIMIT+1]; Task_Handle Diagnostics_Task_Handle; Mailbox_Handle DiagnosticsMsgQ = NULL; +extern uint8_t Head_Fan_PWM_Command[2] ; bool blowervolatgedisplay = false; bool midtankDisplay = false; double diagvoltage = 0; @@ -262,6 +263,7 @@ uint8_t MotorCounterIndex[MAX_THREAD_MOTORS_NUM]= {0,0,0}; 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; void DiagnosticLoadMotor(int MotorId, int frequency) { @@ -499,6 +501,16 @@ void CopyTemperaturesToMonitor(void) DiagnosticsMonitor.headblower1airflow = HeaterTemperature[HEATER_TYPE__HeaterZone5]; DiagnosticsMonitor.headblower2airflow = HeaterTemperature[HEATER_TYPE__HeaterZone7]; } + 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; DiagnosticsMonitor.dryerzone1temperature = HeaterTemperature[HEATER_TYPE__DryerAirHeater]; DiagnosticsMonitor.dryerzone2temperature = diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h index 647797b69..a48e0df0c 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS.h @@ -49,8 +49,8 @@ void IDS_Dispenser_RefillEnded (char DispenserId,char MicroSteps); //uint32_t IDS_Dispenser_Build_Pressure(int DispenserId, callback_fptr callback); uint32_t IDS_Cleaning_Move_Actuators(void); -uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed); -uint32_t IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback); +//uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed); +//uint32_t IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback); uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr callback); uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c index c9e9afdde..c6be46bca 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_Cleaning.c @@ -83,7 +83,7 @@ uint32_t IDS_Cleaning_Move_Actuators() return OK; } -uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed) +/*uint32_t IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed) { uint32_t status = OK; SaveLeftRockerSpeed = LeftRockerSpeed; @@ -109,7 +109,7 @@ uint32_t IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callbac Report("IDS_Cleaning_Center_And_Stop_Rockers actuator down", __FILE__, __LINE__, timeout, RpWarning, 123456, 0); return status; -} +}*/ uint32_t IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr callback) { uint32_t status = OK; @@ -128,11 +128,10 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback) uint32_t status = OK; status = IDS_Dispenser_Close_Valve_And_Stop_Motor(CLEANER_DISPENSER,callback); Report("IDS_Cleaning_Stop_Cleaning_Solution", __FILE__, __LINE__, CLEANER_DISPENSER, RpWarning, status, 0); - if(Head_Type == HEAD_TYPE_SYLKO) - { - Trigger_Head_Actuators_Control(ACTIN, LOW,false); - Report("IDS_Cleaning_MoveDown cleaning stop", __FILE__, __LINE__, Tdelay1, RpWarning, CleaningStageCounter, 0); - } + HeadCard_Actuators_Relocate(); + CleaningStageCounter = 0; + CleaningStage = CleaningStageIdle; + Report("IDS_Cleaning_Stop_Cleaning_Solution actuator relocate", __FILE__, __LINE__, CleaningStage, RpWarning, CleaningStageCounter, 0); return status; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 311f16a19..c8e3d267e 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -583,7 +583,7 @@ uint32_t InactiveDispenserHome(uint32_t DispenserId, uint32_t ReadValue) 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); + //Report("IDS stop cleaner",__FILE__,CLEANER_DISPENSER,(int)(GetDispenserPressure(CLEANER_DISPENSER)*100),RpWarning,(int)CurrentDispenserSpeed[CLEANER_DISPENSER] ,0); } if ((NumofReadyDispensers)&&(DispenserBuildTimeCounter%1000 == 0)) @@ -1605,7 +1605,8 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) #else Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Head); #endif - IDS_Cleaning_Stop_Cleaning_Solution(NULL); + if (CurrentDispenserSpeed[CLEANER_DISPENSER]>0) + IDS_Cleaning_Stop_Cleaning_Solution(NULL); SegmentNumOfBrushStops = Segment->n_brushstops; BrushStopTime = Segment->length*1000/(double)SegmentNumOfBrushStops; //brushstop in meters //brushstop in millisecond BrushStopTime = ((BrushStopTime*100)/dyeingspeed);//brushstop in seconds @@ -1632,7 +1633,6 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) if (DispenserPreSegmentControlId != 0xFF) { Report("IDS presegment not yet ended!!",__FILE__,DispenserPreSegmentControlId,(int)InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0); - //IDS_Cleaning_Stop_Cleaning_Solution (NULL); RemoveControlCallback(DispenserPreSegmentControlId, IDSPreSegmentStateCallbackRunner ); DispenserPreSegmentControlId = 0xFF; } @@ -1751,8 +1751,8 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) { Report("IDS_Valve_EndValveReady start homing",__FILE__,deviceID,(int)AutoHoming_Config,RpWarning,(int)AutoHoming_JobEnd_PowerOn_off,0); - //if (deviceID!=LUBRICANT_DISPENSER) - IDS_HomeDispenser (deviceID, 1000 , NULL); + if (deviceID!=LUBRICANT_DISPENSER) + IDS_HomeDispenser (deviceID, 1000 , NULL); } return OK; } @@ -1826,6 +1826,7 @@ uint32_t IDS_StopLubrication(void) Lubricant_2Way_Valve (STOP); IDS_Dispenser_Close_Valve_And_Stop_Motor(LUBRICANT_DISPENSER,IDS_Valve_EndValveReady); CurrentDispenserSpeed[LUBRICANT_DISPENSER] = 0; - REPORT_MSG (lubricant_speed, "IDS_StopLubrication"); + IDS_HomeDispenser (LUBRICANT_DISPENSER, 1000 , NULL); + REPORT_MSG (lubricant_speed, "IDS_StopLubrication and home dispenser"); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h index 55d712412..1edc03264 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h @@ -12,7 +12,7 @@ #define MODULES_IFS_IFS_H_ #define CARTRIDGE_INK_TIMEOUT 420 -#define MidTank_Pressure_EMPTY 0.5 +#define MidTank_Pressure_EMPTY 0.3 #define CARTRIDGE_CAPATICY 1500 typedef enum{ diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index 39ff91558..bbb3e4040 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -146,6 +146,10 @@ uint32_t MotorPidRequestMessage(HardwarePidControl* request) // uint32_t MotorSamples[MAX_THREAD_MOTORS_NUM][MAX_CONTROL_SAMPLES]; temp = 1<<(DancersCfg[ThreadMotorIdToDancerId[Motor_i]].resolutionbits); temp = (temp*DancersCfg[ThreadMotorIdToDancerId[Motor_i]].maximalmovementmm);//*3/2); + if (Motor_i == WINDER_MOTOR) + { + temp = temp*3/2; + } DancerStopActivityLimit[Motor_i] = temp/(2*PI*DancersCfg[ThreadMotorIdToDancerId[Motor_i]].armlength); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index c67619e20..f403eeeab 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -723,7 +723,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { if (calculated_speed>(CurrentControlledSpeed[index]+100)) { - ReportWithPackageFilter(ThreadFilter,"limit acceleration",__FILE__,calculated_speed,CurrentControlledSpeed[index],RpError,CurrentControlledSpeed[index]+100,0); + ReportWithPackageFilter(ThreadFilter,"limit acceleration",__FILE__,calculated_speed,CurrentControlledSpeed[index],RpError,index,0); calculated_speed=CurrentControlledSpeed[index]+100; } CurrentControlledSpeed[index] = calculated_speed; diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h index af4bd5e08..ee9f668db 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_ex.h @@ -44,6 +44,7 @@ bool WHS_IsContainerFull(); bool WHS_WasteCartridgeLowerPresent(); bool WHS_WasteCartridgeMiddlePresent(); bool WHS_IsEmptying(); +uint32_t Waste_Prepare(void); #endif diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c index d87ebd1a2..c0e51a143 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_maint.c @@ -500,27 +500,31 @@ void Waste_StateMachine(void) break; } } -void Waste_Prepare(void) +uint32_t Waste_Prepare(void) { //check if the waste is ready to run - waste level not above overflow level and no cartridge in the slots if (wasteLevel > wasteLevelOverflow) { Report("cannot start a job with waste tank overflow", __FILE__, __LINE__, wasteLevel, RpMessage, wasteLevelOverflow, 0); JobEndReason = JOB_SAFETY_CRITICAL_ALARM; + usnprintf(AlarmReasonStr, 100, "cannot start a job with waste tank overflow"); AlarmHandlingSetAlarm( EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, true); - PrepareReady(Module_Waste,ModuleFail); - return; + //PrepareReady(Module_Waste,ModuleFail); + return JOB_SAFETY_CRITICAL_ALARM; } if ((WHS_IsEmptying())||(NoCartAvailable())) { - PrepareReady(Module_Waste,ModuleDone); + //PrepareReady(Module_Waste,ModuleDone); + return JOB_OK; } 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); + usnprintf(AlarmReasonStr, 100, "cannot start a job with cartridges in the IFS"); + //PrepareReady(Module_Waste,ModuleFail); + return JOB_OTHER_ALARM; } return; |
