diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2018-12-10 09:11:38 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2018-12-10 09:11:38 +0200 |
| commit | 397adba1c72901a4bb15e5d69b6a6c8e07488ea7 (patch) | |
| tree | deab81743016ad4e866529c11d2d06973081091c /Software/Embedded_SW/Embedded | |
| parent | 0f39b726de2c75589ff5b4805669966c8878d27f (diff) | |
| download | Tango-397adba1c72901a4bb15e5d69b6a6c8e07488ea7.tar.gz Tango-397adba1c72901a4bb15e5d69b6a6c8e07488ea7.zip | |
1.2.0.2 Heaters control 1 second, valve timeout 1 second. in process, stop dispenser only after this 1 second. open valve to waste on init
Diffstat (limited to 'Software/Embedded_SW/Embedded')
6 files changed, 37 insertions, 14 deletions
diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index be7b81042..0f8f8a22a 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {001,002,000,001}; +TangoVersion_t _gTangoVersion = {001,002,000,002}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index 0c11fb1fe..c6006781f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -363,7 +363,7 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb Valve3WayModuleCallback[_ValveId] = callback; - Valve3WayControlId[_ValveId] = AddControlCallback( Valve3WayCallBackFunction, eHundredMillisecond, FPGA_GetDispenserValveBusyOCD,(IfTypeDisopenser*0x100+_ValveId), _ValveId, 0 ); + Valve3WayControlId[_ValveId] = AddControlCallback( Valve3WayCallBackFunction, eOneMillisecond/*eHundredMillisecond*/, FPGA_GetDispenserValveBusyOCD,(IfTypeDisopenser*0x100+_ValveId), _ValveId, 0 ); if (Valve3WayControlId[_ValveId] == 0xFF) Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); else diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index 36556ab51..712d5ac1b 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -48,6 +48,7 @@ extern Semaphore_Handle sdCardSem; #include <Drivers/SSI_Comm/SSI_Comm.h> #include "drivers/SPI/SPI_Comm.h" #include "drivers/Uart_Comm/Uart.h" +#include "drivers/valves/valve.h" #include "drivers/FPGA/FPGA.h" #include <drivers/FPGA/FPGA_Comm.h> @@ -168,6 +169,7 @@ int main(void) ControlStart(); MotorsInit(); //IDS_ModuleInit(); + Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); //////////////////////////// diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 3b3ac540a..08353d1d9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -344,14 +344,18 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue) if (HeaterId >= MAX_AC_HEATERS) //DC Heaters { if (ControlIdtoHeaterId [HeaterId] == 0xFF) - ControlIdtoHeaterId [HeaterId] = AddControlCallback( DCHeaterControlCBFunction, /*eOneSecond*/eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); + ControlIdtoHeaterId [HeaterId] = AddControlCallback( DCHeaterControlCBFunction, eOneSecond/*eHundredMillisecond*/,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),HeaterId2PT100Id[HeaterId],0); + HeaterPIDConfig[HeaterId].m_params.dt *=10; DCInitialHeating[HeaterId] = true; HeaterReady[HeaterId] = false; } else if (HeaterId == HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature) //AC Heaters { if (ControlIdtoHeaterId [HeaterId] == 0xFF) - ControlIdtoHeaterId [HeaterId] = AddControlCallback( HeaterControlCBFunction, eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),DryerInternalPT100Id,0); + { + ControlIdtoHeaterId [HeaterId] = AddControlCallback( HeaterControlCBFunction, eOneSecond/*eHundredMillisecond*/,TemperatureSensorRead,(IfTypeHeaters*0x100+HeaterId),DryerInternalPT100Id,0); + HeaterPIDConfig[HeaterId].m_params.dt *=10; + } if (MainDryerHeaterMaxTempControl == 0xFF) MainDryerHeaterMaxTempControl = AddControlCallback( HeaterMaxTempCBFunction, eHundredMillisecond,TemperatureSensorRead,(IfTypeHeaters*0x100+HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain),HeaterId2PT100Id[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain],0); if (SecondDryerHeaterMaxTempControl == 0xFF) diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 958f481bf..ab959f341 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -183,6 +183,13 @@ bool IDS_isDispenserUsedNextSegment(void *JobDetails,int DispenserId, int Segmen } //******************************************************************************************************************** + uint32_t IDS_Valve_PresegmentValveReady(uint32_t deviceID, uint32_t ReadValue) + { + TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[deviceID]; + MotorStop(HW_Motor_Id,Hard_Hiz); + IDS_Valve_PresegmentReady( deviceID, ReadValue); + } + //******************************************************************************************************************** uint32_t IDS_Valve_PresegmentReady(uint32_t deviceID, uint32_t ReadValue) { int i; @@ -257,9 +264,9 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) if (JobTicket->segments[SegmentId]->brushstops[0]->dispensers[Dispenser_i]->nanolitterpersecond==0) //if (IDS_isDispenserUsedNextSegment(JobDetails,Dispenser_i,SegmentId) == false) { - Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, IDS_Valve_PresegmentReady); //direction: MidTank_Dispenser or Dispenser_Mixer + //MotorStop(HW_Motor_Id,Hard_Hiz); + Control3WayValvesWithCallback ((Valves_t)DispenserId, MidTank_Dispenser, IDS_Valve_PresegmentValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer LOG_ERROR(DispenserId,"Dispenser Not Used Next Segment"); - MotorStop(HW_Motor_Id,Hard_Hiz); } else { @@ -343,12 +350,12 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) if ((int)segmentfirst_speed > 0) { DispenserSegmentReady[DispenserId] = false; - Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); usnprintf(Message, 80, "Dispenser %d nl/sec %d nl/pulse %d speed %d",Dispenser_i,(int)JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanolitterpersecond, (int)JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanoliterperpulse,(int)segmentfirst_speed); //LOG_ERROR(segmentfirst_speed,Message); //Report(Message,__FILE__,__LINE__,Dispenser_i,RpWarning,segmentfirst_speed,0); + Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer SendJobProgress(0.0,0,false, Message); @@ -359,6 +366,14 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) return OK; } //******************************************************************************************************************** + uint32_t IDS_Valve_DistanceToSpoolValveReady(uint32_t deviceID, uint32_t ReadValue) + { + TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[deviceID]; + MotorStop(HW_Motor_Id,Hard_Hiz); + IDS_Valve_DistanceToSpoolReady( deviceID, ReadValue); + } + + //******************************************************************************************************************** uint32_t IDS_Valve_DistanceToSpoolReady(uint32_t deviceID, uint32_t ReadValue) { int i; @@ -386,15 +401,17 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) if (MotorsCfg[HW_Motor_Id].hardwaremotortype != DispenserIdToMotorId[Dispenser_i])//unconfigured dispenser continue; DispenserDistanceToSpoolReady[Dispenser_i] = false; + //MotorStop(HW_Motor_Id,Hard_Hiz); Control3WayValvesWithCallback ((Valves_t)Dispenser_i, MidTank_Dispenser, IDS_Valve_DistanceToSpoolReady); //direction: MidTank_Dispenser or Dispenser_Mixer - - MotorStop(HW_Motor_Id,Hard_Hiz); - } return OK; } - + uint32_t IDS_Valve_EndValveReady(uint32_t deviceID, uint32_t ReadValue) + { + TimerMotors_t HW_Motor_Id = DispenserIdToMotorId[deviceID]; + MotorStop(HW_Motor_Id,Hard_Hiz); + } //******************************************************************************************************************** uint32_t IDSEndState(void *JobDetails) { @@ -403,8 +420,8 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); for ( Dispenser_i = 0;Dispenser_i < MAX_SYSTEM_DISPENSERS;Dispenser_i++) { - MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); - Control3WayValvesWithCallback (Dispenser_i, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer + //MotorStop(DispenserIdToMotorId[Dispenser_i],Hard_Hiz); + Control3WayValvesWithCallback (Dispenser_i, MidTank_Dispenser, IDS_Valve_EndValveReady); //direction: MidTank_Dispenser or Dispenser_Mixer } return OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 76783ee92..76c0fbfd8 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -317,7 +317,7 @@ uint32_t ThreadControlSpeedReadFunction(uint32_t IfIndex, uint32_t ReadValue) } //double eNormalizedError[100]; //int TranslatedreadValue[100]; -#define MAX_THREAD_CONTROL_LOG 300 +#define MAX_THREAD_CONTROL_LOG 100 double calculatedError[MAX_THREAD_CONTROL_LOG+1]; double NormError[MAX_THREAD_CONTROL_LOG+1]; double mIntegral[MAX_THREAD_CONTROL_LOG+1]; |
