diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-10-22 18:13:16 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-10-22 18:13:16 +0300 |
| commit | 04d8dbfb86408a23fa441128de7d6c9056a665c3 (patch) | |
| tree | 0d6f5037cb0e6d09548897ec954fc8d0277783ee /Software/Embedded_SW/Embedded/Modules | |
| parent | e03f11335ea109488f506acc71d3c172a5b7ac2c (diff) | |
| parent | ffbbc56bd5935cc4cb65e635c7360735578952fe (diff) | |
| download | Tango-04d8dbfb86408a23fa441128de7d6c9056a665c3.tar.gz Tango-04d8dbfb86408a23fa441128de7d6c9056a665c3.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
10 files changed, 66 insertions, 32 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index ce388015a..c7a3a5e22 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -1122,7 +1122,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) valueN = value & MASKSYSTEMnotUSED; - if (valueR) + /*if (valueR) ReportWithPackageFilter(AlarmFilter,"----------- Right FAN System is not connected----------------", __FILE__,__LINE__,valueR, RpMessage, value, 0); else ReportWithPackageFilter(AlarmFilter,"----------- Right FAN System is connected----------------", __FILE__,__LINE__,valueR, RpMessage, value, 0); @@ -1134,7 +1134,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) ReportWithPackageFilter(AlarmFilter,"----------- middle FAN System is not connected----------------", __FILE__,__LINE__,valueN, RpMessage, value, 0); else ReportWithPackageFilter(AlarmFilter,"----------- middle FAN System is connected----------------", __FILE__,__LINE__,valueN, RpMessage, value, 0); - +*/ if ((value & MASKSYSTEMMIDDLE) > MACHINE_FANS_STOP) { Status = true; @@ -1150,7 +1150,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) drawer_small1 = value & MASKDRYERSMALL1; drawer_small2 = value & MASKDRYERSMALL2; drawer_small3 = value & MASKDRYERSMALL3; - +/* if (drawer_big) ReportWithPackageFilter(AlarmFilter,"----------- drawer_big FAN is not connected----------------", __FILE__,__LINE__,drawer_big, RpMessage, value, 0); else @@ -1172,7 +1172,8 @@ uint32_t AlarmHandlingLoop(uint32_t tick) ReportWithPackageFilter(AlarmFilter,"----------- drawer_small3 is not connected----------------", __FILE__,__LINE__,drawer_small3, RpMessage, value, 0); else ReportWithPackageFilter(AlarmFilter,"----------- drawer_small3 is connected----------------", __FILE__,__LINE__,drawer_small3, RpMessage, value, 0); - //if (AlarmItem[Alarm_i].AlarmDirection == UNDER_VALUE) + */ + if (AlarmItem[Alarm_i].AlarmDirection == UNDER_VALUE) { if (value > 0) { @@ -1182,7 +1183,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) } else if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Warning ) { - ReportWithPackageFilter(AlarmFilter,"----------- need to add read RPM from fan----------------", __FILE__,__LINE__,drawer_big, RpMessage, value, 0); + // ReportWithPackageFilter(AlarmFilter,"----------- need to add read RPM from fan----------------", __FILE__,__LINE__,drawer_big, RpMessage, value, 0); } break; case DRYER_FAN : @@ -1191,20 +1192,20 @@ uint32_t AlarmHandlingLoop(uint32_t tick) if ((AlarmItem[Alarm_i].AlarmDirection == UNDER_VALUE) && (value == DRYER_FAN_STOP)) { Status = true; - ReportWithPackageFilter(AlarmFilter,"----------- DRYER FAN RPM Error----------------", __FILE__,__LINE__,0, RpMessage, value, 0); + //ReportWithPackageFilter(AlarmFilter,"----------- DRYER FAN RPM Error----------------", __FILE__,__LINE__,0, RpMessage, value, 0); } else if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Warning) { if ((AlarmItem[Alarm_i].AlarmDirection == UNDER_VALUE) && (value < DRYER_FAN_MIN_RPM)) { Status = true; - ReportWithPackageFilter(AlarmFilter,"----------- DRYER FAN RPM Error----------------", __FILE__,__LINE__,0, RpMessage, value, 0); + //ReportWithPackageFilter(AlarmFilter,"----------- DRYER FAN RPM Error----------------", __FILE__,__LINE__,0, RpMessage, value, 0); } } break; } - ReportWithPackageFilter(AlarmFilter,"------------FANS_RPM[Alarm_i]----------------", __FILE__,__LINE__,Alarm_i, RpMessage, value, 0); + //ReportWithPackageFilter(AlarmFilter,"------------FANS_RPM[Alarm_i]----------------", __FILE__,__LINE__,Alarm_i, RpMessage, value, 0); if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Critical ) { diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 5b4074a52..58d1e1c37 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -91,7 +91,7 @@ uint32_t HWConfigurationInit(void) uint32_t Bytes = 0; GeneralHwReady = false; - Control_WD(ENABLE,250); + //Control_WD(ENABLE,250); memcpy(&Bytes,(void *)GENHWCFG_MAP_IN_FLASH,sizeof(Bytes)); @@ -145,6 +145,7 @@ uint32_t HWConfigurationInit(void) IDS_Dispenser_Content_Init(); //ProcessParamsInit(); Buttons_Init(); + WHS_init(); ADC_MUX_Init(); GeneralHwReady = true; diff --git a/Software/Embedded_SW/Embedded/Modules/General/buttons.c b/Software/Embedded_SW/Embedded/Modules/General/buttons.c index c979d3c1d..cd7873b18 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/buttons.c +++ b/Software/Embedded_SW/Embedded/Modules/General/buttons.c @@ -29,7 +29,9 @@ int PowerDown(); int PowerUp(); int thredJog(); - +#define BUTTONS_SAMPLE_TIME (eHundredMillisecond) +#define SECOND2 (2000/BUTTONS_SAMPLE_TIME) +#define SECOND5 (5000/BUTTONS_SAMPLE_TIME) //enum PBstat OnOffPBstate = OFFPB; //enum PBstat ret @@ -149,7 +151,6 @@ uint32_t ButtonLoadCallBackFunction(uint32_t IfIndex, uint32_t ReadValue) //uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlFrequency, DataReadCBFunction DriverfPtr, uint16_t IfIndex, uint32_t Parameter1, uint32_t Parameter2 ); //Power_Reset()// Resets the MCU -#define BUTTONS_SAMPLE_TIME (eTenMillisecond*50) uint32_t Buttons_Init(void) { @@ -275,7 +276,7 @@ uint32_t ShortLongOffPB(uint8_t OnOffPB, button *pBtn) case COUNTPB: // last OnOffPBstate was COUNTPB if (OnOffPB) { - if( pBtn->count > 5 ) //5*50ms=250ms + if( pBtn->count > SECOND2 ) { pBtn->Action = SHORTPB ; REPORT_MSG(parameter," ------------ Start count PB Power ----------------- "); @@ -290,7 +291,7 @@ uint32_t ShortLongOffPB(uint8_t OnOffPB, button *pBtn) case SHORTPB: // last OnOffPBstate was SHORTPB if (OnOffPB) { - if (pBtn->count > 100) //5000ms + if (pBtn->count > SECOND5) { pBtn->Action = LONGPB ; REPORT_MSG(parameter," ------------ Long PB Power ----------------- "); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 574cc2573..71e6cc5de 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -714,6 +714,7 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) } if (HeaterId >= MAX_AC_HEATERS) //DC Heaters { + ReportWithPackageFilter(HeatersFilter,"call PrepareDCHeater",__FILE__,HeaterId,Frequency,RpWarning,HeaterPIDConfig[HeaterId].m_params.dt, 0); if (PrepareDCHeater(HeaterId,Frequency,SetTemperatue)!=OK) return ERROR; } diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 3d89308f1..1302d262a 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -205,6 +205,7 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr //if (DispensersAlarmState[DispenserId] == true) // return ERROR; + double midTankContent = 0.0; if (FPGA_Read_limit_Switches(Dispenser_Id_to_LS_Id[DispenserId]) == LIMIT) { Report("IDS_HomeDispenser - Disp is full",__FILE__,Dispenser_Id_to_LS_Id[DispenserId],(int)DispenserId,RpWarning,LIMIT,0); @@ -248,7 +249,17 @@ uint32_t IDS_HomeDispenser (uint32_t DispenserId, uint32_t speed , callback_fptr //open dry air valve in the dispenser Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_ON); Enable_MidTank_Pressure_Reading(DispenserId); - Read_MidTank_Pressure_Sensor(DispenserId); + SysCtlDelay(1200000); + midTankContent = Read_MidTank_Pressure_Sensor(DispenserId); + if (midTankContent < 0.2) //midtank is empty - abort!!!! + { + Report("IDS_HomeDispenser - Mid Tank Empty!!! ",__FILE__,__LINE__,(int)(midTankContent * 1000),RpWarning,DispenserId,0); + Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF); + STATUS_GREEN_LED_OFF; + STATUS_RED_LED_ON; + + return ERROR; + } IDS_Dispenser_RefillStarted(DispenserId,1); MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed, Dispenser_Id_to_LS_Id[DispenserId], IDS_HomeDispenserCallback,0); @@ -292,7 +303,7 @@ uint32_t IDS_StopHomeDispenser (uint32_t DispenserId) if ((HomingActive[DispenserId] == false)&&( PrimingActive[DispenserId] == false)) { LOG_ERROR (DispenserId,"Homing not active"); - return ERROR; + return OK; } TimerMotors_t MotorId = (DispenserId)+HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 455b017de..0368f12b9 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -1465,7 +1465,7 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) { int i; DispenserDistanceToSpoolReady[deviceID] = true; - for (i=0;i<MAX_SYSTEM_DISPENSERS;i++) + for (i=0;i<MAX_DYE_DISPENSERS;i++) { if (DispenserDistanceToSpoolReady[i] == false) { @@ -1483,8 +1483,9 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId) REPORT_MSG(100,"Dispenser DTS"); Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); //#bug 323 - for (Dispenser_i = 0;Dispenser_i < MAX_SYSTEM_DISPENSERS;Dispenser_i++) + for (Dispenser_i = 0;Dispenser_i < MAX_DYE_DISPENSERS;Dispenser_i++) { + DispenserDistanceToSpoolReady[Dispenser_i] = true; if (DispenserUsedInJob[Dispenser_i]==false)//unconfigured dispenser continue; DispenserDistanceToSpoolReady[Dispenser_i] = false; diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h index f00ba7849..941220425 100644 --- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h +++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.h @@ -16,13 +16,14 @@ //void IFS_Init(void) #define SECONDS_5 5 /**< 5seconds */ #define SECONDS_300 300 /**< 300 seconds = 5 minutes */ +#define SECONDS_420 (7*60) /**< 420 seconds = 7 minutes */ #define SECONDS_600 600 /**< 600 seconds = 10 minutes */ #define SECONDS_2_DLY 0 /**< dly 0 seconds */ -#define CARTRIDGE_INK_TIMEOUT (SECONDS_300 / SECONDS_5) /**< TimeOut (5 minutes) for finishing transfer the Ink from Ink cartridge to MidTank */ -#define CARTRIDGE_INK_TIMEOUTx2 (SECONDS_600 / SECONDS_5) /**< TimeOut (5 minutes) for second try finishing transfer the Ink from Ink cartridge to MidTank */ +#define CARTRIDGE_INK_TIMEOUT (SECONDS_420 / SECONDS_5) /**< TimeOut (7 minutes) for finishing transfer the Ink from Ink cartridge to MidTank */ +#define CARTRIDGE_INK_TIMEOUTx2 (CARTRIDGE_INK_TIMEOUT * 2) /**< TimeOut (7 minutes) for second try finishing transfer the Ink from Ink cartridge to MidTank */ #define CartridgeInkTimeOutCallBackTime (eOneSecond * SECONDS_5) #define CartridgeInkCallBackTime eOneSecond -#define MidTank_Pressure_EMPTY 0.4 //todo get from Moti the correct number +#define MidTank_Pressure_EMPTY 0.3 //todo get from Moti the correct number (Oleg -> 300cc) #define CARTRIDGE_CAPATICY 1500 //todo get from Moti the correct number #define FULL 1000 //todo get from Moti the correct number diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index bf0f361fd..9d57cd29f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -47,6 +47,7 @@ uint32_t CalculationDirectionChangeCounter = 1; //holds the current number of ru double WinderMotorSpeed[MAX_WINDER_SPEED_CALCULATION]; uint16_t WinderMotorSpeedCounter = 0; bool WinderMotorSpeedRollOver = false; +int StartWinderCalculation = 0; #define DEFAULT_SCREW_SPEED 1200 double ScrewSpeed = DEFAULT_SCREW_SPEED; double ScrewRunningTime = 0; @@ -127,7 +128,7 @@ uint32_t Winder_Prepare(void *JobDetails) //float process_speed = JobTicket->processparameters->dyeingspeed; double ScrewSpeed = DEFAULT_SCREW_SPEED;//(process_speed*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].pulleyradius); // we will use pulley radius of the screw for this purpose, as of now WinderMotorSpeedRollOver=false; - + StartWinderCalculation = 0; //MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_SCREW,InternalWinderCfg.segmentoffsetpulses); //REPORT_MSG(ScrewSpeed, "Winder_Prepare"); /* @@ -299,7 +300,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) if (WinderMotorSpeedRollOver == false) { Add100 = true; - LOG_ERROR(Add100, "Add100 = true"); + //LOG_ERROR(Add100, "Add100 = true"); } // WinderMotorSpeedCounter=0; } @@ -327,7 +328,9 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag) #ifdef READ_SCREW_ENCODER int WinderRun; WinderRun = abs(ScrewLocationRun[1] - ScrewLocationRun[0]); - if ((WinderRun < 30000)&&(WinderMotorSpeedRollOver == true)) + if (WinderMotorSpeedRollOver == true) + StartWinderCalculation++; + if ((WinderRun < 30000)&&(StartWinderCalculation >= 2)) { WinderRunSamples++; WinderRunSum+=WinderRun; diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste.h b/Software/Embedded_SW/Embedded/Modules/Waste/Waste.h index 9235acf48..4518f0ded 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste.h +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste.h @@ -124,6 +124,11 @@ typedef enum waste_cartridge2 } cartridge_name; +typedef enum +{ + VALVE_DIR_WASTE_CARTRIDGE1 = 0, + VALVE_DIR_WASTE_CARTRIDGE2 +} valve_cartridge_name; struct WHS_sensors_status @@ -162,7 +167,7 @@ struct WHS_information struct cartridge_params cartridge_1, cartridge_2; struct WHS_sensors_status WHS_sensors; struct pump_params WHS_pump; - bool WHS_valve; + valve_cartridge_name WHS_valve; WHS_sensor event; cartridge_name active_cartridge; uint32_t Cartridge_Ink_device_Id; diff --git a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c index f22ce46ac..ddf1a5ee1 100644 --- a/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Waste/Waste_init.c @@ -448,8 +448,8 @@ bool SetValveDirection() * */ bool ret = notOK; //if (WHS_info.WHS_valve != no_waste_cartridge) - if (WHS_info.active_cartridge == waste_cartridge1) WHS_info.WHS_valve = 1; - else WHS_info.WHS_valve = 2; + if (WHS_info.active_cartridge == waste_cartridge1) WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE1; + else WHS_info.WHS_valve = VALVE_DIR_WASTE_CARTRIDGE2; { Valve_Set(VALVE_WASTE_TANK, WHS_info.WHS_valve); ret = OK; @@ -463,10 +463,10 @@ bool SetValveDirection() U8 CartridgeWasteFilling(bool status) { bool ret = notOK; - + SetValveDirection(); if ((status == ON) && (WHS_info.active_cartridge != no_waste_cartridge)) { - Valve_Set(VALVE_WASTE_TANK, WHS_info.active_cartridge); //set the valve direction + //SetValveDirection();//Valve_Set(VALVE_WASTE_TANK, WHS_info.active_cartridge); //set the valve direction //Pannel_Leds(PANEL_BUTTON_OR_CRAT_ID Pannel_Led_Id, OPERATION_MODE LED_Mode); //set cartridge led color slow blink SetWastePump(OPEN); //WHS_info.WHS_pump.time = 0; @@ -476,7 +476,7 @@ U8 CartridgeWasteFilling(bool status) else // stop Waste cartridge filling { SetWastePump(CLOSE); - Valve_Set(VALVE_WASTE_TANK, waste_cartridge2); //set the valve direction set to low POWER !!! + //Valve_Set(VALVE_WASTE_TANK, VALVE_DIR_WAST_CARTRIDGE1); //set the valve direction set to low POWER !!! switch (WHS_info.active_cartridge) { @@ -491,7 +491,9 @@ U8 CartridgeWasteFilling(bool status) REPORT_MSG(WHS_empty," ------------ WHS waste_cartridge2 is used please replace it ----------------- "); break; case no_waste_cartridge: - + REPORT_MSG(WHS_empty," ------------ !!!!!WHS No waste cartridge !!!!! ----------------- "); + REPORT_MSG(WHS_empty," ------------ !!!! WHS insert cartridge!!!! ----------------- "); + ret = ERROR; break; default: break; @@ -710,7 +712,14 @@ bool WasteTankCBFunction() /* if the machine status is power down : don't start the waste emptying sequence !!!*/ if ( PowerOffInProcessGetState() ) break; - + if ((WHS_info.WHS_sensors.cartridge_cover == OPEN) && (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL)) + { + REPORT_MSG(WHS_emptying," ------------ WHS_full , cartridge cover is open cant start the pump!!!! ----------------- "); + REPORT_MSG(WHS_emptying," ------------ close the cartridge cover to start the pump!!!! ----------------- "); + //pump_on_flag = OPEN; + WHS_info.WHS_sensors.waste_tank_full_sensor = SENSORnotFULL; + break; + } if (WHS_info.WHS_sensors.waste_tank_full_sensor == SENSORFULL) { WHS_info.sttMachine = WHS_full; @@ -722,7 +731,7 @@ bool WasteTankCBFunction() ret = WrRFIDStatus(WHS_info.active_cartridge, WasteFilling);//write RFID status todo if (ret == OK) { - CartridgeWasteFilling(ON); + ret = CartridgeWasteFilling(ON); } else { |
