aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2018-12-10 09:11:38 +0200
committerShlomo Hecht <shlomo@twine-s.com>2018-12-10 09:11:38 +0200
commit397adba1c72901a4bb15e5d69b6a6c8e07488ea7 (patch)
treedeab81743016ad4e866529c11d2d06973081091c /Software/Embedded_SW/Embedded
parent0f39b726de2c75589ff5b4805669966c8878d27f (diff)
downloadTango-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')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c2
-rw-r--r--Software/Embedded_SW/Embedded/Main.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c8
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c35
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c2
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];