aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-10-12 10:01:24 +0300
committerShlomo Hecht <shlomo@twine-s.com>2020-10-12 10:01:24 +0300
commit848b9edfa4db5daaf385e3fcd46fbfb4f44c39b4 (patch)
tree7e9bc1965c75f93e8932a1b802dfcd4d77e528e7 /Software/Embedded_SW/Embedded
parentce5c7688337926ded0ee0778819f26b668cfc1d7 (diff)
downloadTango-848b9edfa4db5daaf385e3fcd46fbfb4f44c39b4.tar.gz
Tango-848b9edfa4db5daaf385e3fcd46fbfb4f44c39b4.zip
prepare working with open valves
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/DataDef.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c12
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c66
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IFS/ifs.c3
-rw-r--r--Software/Embedded_SW/Embedded/Software Release Notes.txt2
6 files changed, 64 insertions, 29 deletions
diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h
index dcf0ad217..99798cf3b 100644
--- a/Software/Embedded_SW/Embedded/DataDef.h
+++ b/Software/Embedded_SW/Embedded/DataDef.h
@@ -31,7 +31,7 @@
//#define EMC_FORCE_MOT_CLOCK_INTERNAL
//#define VAC_TEST
-
+//#define DISPENSER_VALVES_OPEN
//#define USE_TUNNEL_PT100
//#define SPECIAL_DISPENSERS
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
index 71343c78f..091df1a3f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c
@@ -578,6 +578,13 @@ uint32_t Diagnostics_Dryer_MovetoEncoderPosition_Callback(uint32_t MotorId, uint
{
MessageContainer responseContainer;
MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT;
+ ReportWithPackageFilter(DiagnosticsFilter,"Diagnostics_Dryer_MovetoEncoderPosition_Callback time",__FILE__,__LINE__,msec_millisecondCounter,RpMessage,0,0);
+ if (HomingControlId[MotorId] != 0xff)
+ {
+ ReportWithPackageFilter(DiagnosticsFilter,"MotorHomingProgressReport stopped",__FILE__,__LINE__,MotorId,RpMessage,HomingCounter[MotorId],0);
+ RemoveControlCallback(HomingControlId[MotorId],MotorHomingProgressReport);
+ HomingControlId[MotorId] = 0xff;
+ }
ReportWithPackageFilter(DiagnosticsFilter,"Store angle of arm drier - ended",__FILE__,__LINE__,(int)(Calculate_Arm_Angle(Drier_Center_read,ReadValue)*360),RpMessage,D_numberOfCycles,0);
//ReportWithPackageFilter(DiagnosticsFilter,"Diagnostics_Dryer_MovetoEncoderPosition_Callback",__FILE__,__LINE__,0,RpMessage,CallbackCounter,0);
@@ -624,6 +631,7 @@ uint32_t Diagnostics_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue
ReportWithPackageFilter(DiagnosticsFilter,"Loading drier - halted",__FILE__,__LINE__,D_numberOfCycles,RpMessage,LoadArmRounds,0);
ReportWithPackageFilter(DiagnosticsFilter,"Store angle of arm drier - halted",__FILE__,__LINE__,(int)(Calculate_Arm_Angle(Drier_Center_read,ReadValue)*360),RpMessage,D_numberOfCycles,0);
MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, 200);
+ Diagnostics_Dryer_MovetoEncoderPosition_Callback(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,0);
}
return OK;
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
index c55f10277..991f4ecc0 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c
@@ -217,6 +217,10 @@ uint32_t IDS_HomeDispenserCallback(uint32_t motorId, uint32_t ReadValue)
HomingActive[DispenserId]= false;
PrimingActive[DispenserId]= false;
Control_TCA9534ByPass(DispenserId,DISABLE);// use ENABLE or DISABLE
+#ifdef DISPENSER_VALVES_OPEN
+ if (JobIsActive()==false)
+ Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
+#endif
//close dry air valve in the dispenser
Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF);
@@ -336,6 +340,10 @@ uint32_t IDS_StopHomeDispenser (uint32_t DispenserId)
HomingActive[DispenserId] = false;
PrimingActive[DispenserId] = false;
Control_TCA9534ByPass(DispenserId,DISABLE);// use ENABLE or DISABLE
+#ifdef DISPENSER_VALVES_OPEN
+ if (JobIsActive()==false)
+ Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
+#endif
if (Extended_Motor_Param[MotorId] == true)
Power_Step_01_Dispenser_Mode(DispenserId,Voltage);
//MotorSetMicroStep(MotorId, KeepMicrostep[DispenserId]);
@@ -564,7 +572,11 @@ void IDS_Dispenser_Init(uint8_t DispenserId)
HomingActive[DispenserId]= false;
PrimingActive[DispenserId]= false;
Valve_Set(IDS_Id_to_AirValve[DispenserId], Atm_MidTank_OFF);
+#ifdef DISPENSER_VALVES_OPEN
+ Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
+#else
Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
+#endif
//if (Special_Dispensers == true)
{
if (ControlIdtoInactiveDispenserId[DispenserId] == 0xFF)
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index b52f8b908..2ad8db9d6 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -142,7 +142,7 @@ void IDS_Dispenser_SetPreSegmentWFCFValues(double dispenserpresegmentwfcf, doubl
uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request)
{
- int Dispenser_i,i;
+ /*int Dispenser_i,i;
//int temp;
for (i=0;i<MAX_SYSTEM_DISPENSERS;i++)
{
@@ -177,7 +177,7 @@ uint32_t IDS_DispenserPidRequestMessage(HardwarePidControl* request)
DispenserControlConfig[Dispenser_i].m_preError = 0;
DispenserControlConfig[Dispenser_i].m_SetParam = DispensersCtrl[Dispenser_i].outputproportionalcycletime;//need to update SetParams on presegment stage
-
+ */
return OK;
}
uint32_t DispenserPidControlId[MAX_SYSTEM_DISPENSERS] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};
@@ -789,29 +789,29 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
for (Motor_i = 0;Motor_i < MAX_SYSTEM_DISPENSERS;Motor_i++)
{
TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[Motor_i];
- Pid_Id = Motor_i;/*IDSMotorIdToControlId[Motor_i];*/
- DispenserControlConfig[Motor_i].m_params.MAX = 1;
- DispenserControlConfig[Motor_i].m_params.MIN = DispensersControl[Pid_Id].outputproportionalpowerlimit*-1;
- DispenserControlConfig[Motor_i].m_params.Kd = DispensersControl[Pid_Id].derivativetime;
- DispenserControlConfig[Motor_i].m_params.Kp = DispensersControl[Pid_Id].proportionalgain;
- DispenserControlConfig[Motor_i].m_params.Ki = DispensersControl[Pid_Id].integraltime;
- DispenserControlConfig[Motor_i].m_params.epsilon = 0.01;
- DispenserControlConfig[Motor_i].m_params.dt = eHundredMillisecond;
- DispenserControlConfig[Motor_i].m_calculatedError = 0;
- DispenserControlConfig[Motor_i].m_integral = 0;
- DispenserControlConfig[Motor_i].m_isEnabled = true;
- DispenserControlConfig[Motor_i].m_isReady = true;
- DispenserControlConfig[Motor_i].m_mesuredParam = 0;
- DispenserControlConfig[Motor_i].m_preError = 0;
- DispenserControlConfig[Motor_i].m_SetParam = 0;//need to update SetParams on presegment stage
-
- MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); //set the dispenser to the
- /*Start the dispensers to build initial pressure
- * check different handling for dispensers that participate in the first segment and idle dispensers
- * start control for initial pressure
- *
- */
- //ValveCommand (Enable,MixerDirection);
+ /*Pid_Id = Motor_i;//IDSMotorIdToControlId[Motor_i];
+ DispenserControlConfig[Motor_i].m_params.MAX = 1;
+ DispenserControlConfig[Motor_i].m_params.MIN = DispensersControl[Pid_Id].outputproportionalpowerlimit*-1;
+ DispenserControlConfig[Motor_i].m_params.Kd = DispensersControl[Pid_Id].derivativetime;
+ DispenserControlConfig[Motor_i].m_params.Kp = DispensersControl[Pid_Id].proportionalgain;
+ DispenserControlConfig[Motor_i].m_params.Ki = DispensersControl[Pid_Id].integraltime;
+ DispenserControlConfig[Motor_i].m_params.epsilon = 0.01;
+ DispenserControlConfig[Motor_i].m_params.dt = eHundredMillisecond;
+ DispenserControlConfig[Motor_i].m_calculatedError = 0;
+ DispenserControlConfig[Motor_i].m_integral = 0;
+ DispenserControlConfig[Motor_i].m_isEnabled = true;
+ DispenserControlConfig[Motor_i].m_isReady = true;
+ DispenserControlConfig[Motor_i].m_mesuredParam = 0;
+ DispenserControlConfig[Motor_i].m_preError = 0;
+ DispenserControlConfig[Motor_i].m_SetParam = 0;//need to update SetParams on presegment stage
+ */
+ MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); //set the dispenser to the
+ /*Start the dispensers to build initial pressure
+ * check different handling for dispensers that participate in the first segment and idle dispensers
+ * start control for initial pressure
+ *
+ */
+ //ValveCommand (Enable,MixerDirection);
}
if (HeaterCheckReady() == true)
@@ -865,6 +865,13 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
ReportWithPackageFilter(IDSFilter,"Inactive dispenser already homing",__FILE__,i,HomingActive[i],RpWarning,PrimingActive[i],0);
}
}
+#ifdef DISPENSER_VALVES_OPEN
+ else // turn inactive dispenser valve toward the midtank during job
+ {
+ if (HomingActive[i] == false)
+ Control3WayValvesWithCallback ((Valves_t)i, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
+ }
+#endif
}
}
if (NumOfActiveDispensers)
@@ -1871,7 +1878,11 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
{
MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz);
}
- Control3WayValvesWithCallback (Dispenser_i, MidTank_Dispenser, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
+#ifdef DISPENSER_VALVES_OPEN
+ Control3WayValvesWithCallback (Dispenser_i, Dispenser_Mixer, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
+#else
+ Control3WayValvesWithCallback (Dispenser_i, MidTank_Dispenser, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
+#endif
CurrentDispenserSpeed[Dispenser_i] = 0;
//IDS_Dispenser_Close_Valve_And_Stop_Motor(Dispenser_i,IDS_Valve_EndValveReady);
@@ -1880,6 +1891,9 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
{
// RemoveControlCallback(ControlIdtoInactiveDispenserId[Dispenser_i], IDS_Check_Pressure_Callback );
// ControlIdtoInactiveDispenserId[Dispenser_i] = 0xFF;
+#ifdef DISPENSER_VALVES_OPEN
+ Control3WayValvesWithCallback (Dispenser_i, Dispenser_Mixer, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer
+#endif
IDS_Valve_EndValveReady(Dispenser_i,false);
}
diff --git a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
index abad051cb..00081a022 100644
--- a/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
+++ b/Software/Embedded_SW/Embedded/Modules/IFS/ifs.c
@@ -243,7 +243,8 @@ uint32_t InkFillingUpdate(POWER_OFF_STAGES_ENUM stage)
Cartridge Cartridge = CARTRIDGE__INIT;
response.action = FILLING_ACTION__None;
response.has_action = true;
- response.cartridge = LoadCartridgeData(CART_1,&Cartridge);
+ LoadCartridgeData(CART_1,&Cartridge);
+ response.cartridge = &Cartridge;
response.cartridge = NULL;
response.has_progresspercentage = true;
diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt
index 88acb776c..d9e695600 100644
--- a/Software/Embedded_SW/Embedded/Software Release Notes.txt
+++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt
@@ -12,7 +12,7 @@ VOC sensor - Initialization, Configuration, Alarm handling
Shinko reading
Waste module job prepare - air flow of WHS, Arc head tunnel. read WHS flow sensor 2
Working with open valves when not in a job
-
+Increased blower activity after job to removed ink residues
Embedded SW Release note - Version 1.4.6.44 - Pack Mid alpha
=============================================================