aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-05-07 18:47:15 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-05-07 18:47:15 +0300
commit3b2aecfc3f95a642653644ce01134f8aa3ccb36d (patch)
tree4c5ddaff7fd8f12658fd1620e23df5395c78e1e7 /Software/Embedded_SW/Embedded/Modules
parente346110c7b993fc6f0215a598fe3f6961246429e (diff)
downloadTango-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.c15
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c114
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)
{