diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-12 10:01:24 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-10-12 10:01:24 +0300 |
| commit | 848b9edfa4db5daaf385e3fcd46fbfb4f44c39b4 (patch) | |
| tree | 7e9bc1965c75f93e8932a1b802dfcd4d77e528e7 /Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | |
| parent | ce5c7688337926ded0ee0778819f26b668cfc1d7 (diff) | |
| download | Tango-848b9edfa4db5daaf385e3fcd46fbfb4f44c39b4.tar.gz Tango-848b9edfa4db5daaf385e3fcd46fbfb4f44c39b4.zip | |
prepare working with open valves
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c')
| -rw-r--r-- | Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 66 |
1 files changed, 40 insertions, 26 deletions
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); } |
