diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-05-07 18:47:15 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-05-07 18:47:15 +0300 |
| commit | 3b2aecfc3f95a642653644ce01134f8aa3ccb36d (patch) | |
| tree | 4c5ddaff7fd8f12658fd1620e23df5395c78e1e7 /Software/Embedded_SW/Embedded/Modules | |
| parent | e346110c7b993fc6f0215a598fe3f6961246429e (diff) | |
| download | Tango-3b2aecfc3f95a642653644ce01134f8aa3ccb36d.tar.gz Tango-3b2aecfc3f95a642653644ce01134f8aa3ccb36d.zip | |
version 1.3.9.9 IDS: build pressure to waste on job prepare. Heaters: do not restart heating on new setup if set temperature had not changed. lubricant vavle workaround
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 15 | ||||
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 114 |
2 files changed, 104 insertions, 25 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 4534a2da0..e10990f85 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -23,6 +23,7 @@ #include "../control/control.h" #include "../control/pidalgo.h" #include "../control/MillisecTask.h" +#include "../Ids/Ids_ex.h" #include <ti/sysbios/knl/Task.h> #include <driverlib/timer.h> @@ -403,17 +404,17 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) } else if ((HeaterState == HEATER_ON)&& (OnOff == HEATER_ON)) //set temperature { - HeaterPIDConfig[HeaterId].m_SetParam = HeaterCmd[HeaterId].targettemperatue; - /*/if (abs(HeaterPIDConfig[HeaterId].m_SetParam - HeaterCmd[HeaterId].targettemperatue)>0.5) //#bug 221 + //HeaterPIDConfig[HeaterId].m_SetParam = HeaterCmd[HeaterId].targettemperatue; + if (abs(HeaterPIDConfig[HeaterId].m_SetParam - HeaterCmd[HeaterId].targettemperatue)>0.5) //#bug 221 { PrepareHeater(HeaterId,Temperature); //prepare the heaters control info } else { - HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId);// - LOG_ERROR(HeaterId,"ReRead Heater Temp"); - }*/ - PrepareHeater(HeaterId,Temperature); //prepare the heaters control info + //HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId);// + LOG_ERROR(HeaterId,"Restarting same temperature Heater Temp"); + } + //PrepareHeater(HeaterId,Temperature); //prepare the heaters control info // if the heater is not on return (?). //set the target operation temperature //set the heater operation mode to fast heating - depended on the current temperature @@ -608,7 +609,7 @@ void HeaterPrepareReady(void) } } PrepareReady(Module_Heaters,ModuleDone); - //IDSPrepareStart(); + IDSPrepareStart(); } /* * HeaterControlCBFunction diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 2df9632b8..af2ca0a13 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -549,12 +549,60 @@ c. Go to step 2.a x Segment.BrushStopsCount. } //******************************************************************************************************************** + uint32_t DispenserPrepareControlId = 0xFF; + double PrepeareSpeed = 0; + int NumOfActiveDispensers = 0; + int DispenserBuildTimeCounter = 0; + //******************************************************************************************************************** + uint32_t IDS_Prepare_Callback(uint32_t DispenserId, uint32_t ReadValue) + { + bool pressureReady = false; + int i; + int NumofReadyDispensers = 0; + //REPORT_MSG((int)DispenserPrepareControlId, "Prepare Callback"); + + DispenserBuildTimeCounter+=eOneSecond; + + if (DispenserBuildTimeCounter<=(3*eOneSecond)) + { + REPORT_MSG(DispenserBuildTimeCounter,"waiting 3 seconds for pressure changes"); + return OK; + } + for (i = 0; i < MAX_DYE_DISPENSERS; i++) + { + //IDS_StopHomeDispenser(i); + if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers + { + if (GetDispenserPressure(i) > 1.0) + NumofReadyDispensers++; + } + } + + if (NumofReadyDispensers) + Report("IDS_Prepare_Callback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0); + + if (NumofReadyDispensers>=NumOfActiveDispensers) + pressureReady = true; + + if ((DispenserBuildTimeCounter >= DispenserPrepareTimeout)||(pressureReady == true)) + { + SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback ); + //DispenserPrepareReady(); + PrepareReady(Module_IDS,ModuleDone); + } + return OK; + } + //******************************************************************************************************************** uint32_t IDSPrepareState(void *JobDetails) { - int Motor_i, HW_Motor_Id, Pid_Id,i; + int Motor_i, HW_Motor_Id, Pid_Id; //start IDS control for all motors IDS_Active = true; Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); + + JobTicket* JobTicket = JobDetails; + + for (Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++) { HW_Motor_Id = DispenserIdToMotorId[Motor_i]; @@ -582,27 +630,57 @@ c. Go to step 2.a x Segment.BrushStopsCount. */ //ValveCommand (Enable,MixerDirection); } - //set 3 dancers to the profile positions - //IDS_MapDispenserUsedinJob(JobDetails); - for (i = 0; i < MAX_SYSTEM_DISPENSERS; i++) - { - //IDS_StopHomeDispenser(i); - if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers - { - DispenserReady[i] = false; - IDS_Dispenser_Build_Pressure(i, IDS_PrepareReady); - REPORT_MSG(i,"Dispenser prepare called"); - } - else - { - DispenserReady[i] = true; - //IDS_HomeDispenser (i, 1000 , NULL); - } + PrepeareSpeed = JobTicket->processparameters->dyeingspeed*JobTicket->processparameters->maxinkuptake*1.30; + REPORT_MSG((int)JobTicket->processparameters->dyeingspeed, "dyeing speed"); + REPORT_MSG((int)JobTicket->processparameters->maxinkuptake, "max ink uptake"); + + if (HeaterCheckReady() == true) + { + REPORT_MSG(1,"heaters ready, starting"); + IDSPrepareStart(); } - DispenserPrepareReady(); return OK; } + void IDSPrepareStart(void) + { + int i; + double dispenserspeed = 0; + + if (IDS_Active == false) + { + LOG_ERROR(IDS_Active,"IDSPrepareStart Not in a job"); + return; + } + + NumOfActiveDispensers = 0; + for (i = 0; i < MAX_DYE_DISPENSERS; i++) + { + //IDS_StopHomeDispenser(i); + if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers + { + NumOfActiveDispensers++; + } + } + if (NumOfActiveDispensers) + { + PrepeareSpeed/=NumOfActiveDispensers; + REPORT_MSG((int)NumOfActiveDispensers, "Num Of Active Dispensers"); + for (i = 0; i < MAX_DYE_DISPENSERS; i++) + { + dispenserspeed = PrepeareSpeed/MotorsCfg[DispenserIdToMotorId[i]].microstep; + REPORT_MSG((int)dispenserspeed, "Prepare Speed"); + //IDS_StopHomeDispenser(i); + if (DispenserUsedInJob[i] == true) //we actually should check for all dispensers + { + IDS_Dispenser_Start_Motor_and_Open_Valve(i,dispenserspeed, NULL); + } + } + } + DispenserBuildTimeCounter = 0; + DispenserPrepareControlId = AddControlCallback( IDS_Prepare_Callback, eOneSecond,TemplateDataReadCBFunction ,0, 0, 0 ); + + } //******************************************************************************************************************** uint32_t IDS_Valve_PresegmentValveReady(uint32_t deviceID, uint32_t ReadValue) { |
