aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorMirta <mirta@twine-s.com>2019-05-14 14:43:14 +0300
committerMirta <mirta@twine-s.com>2019-05-14 14:43:14 +0300
commitd13a20a4ab738e1f96fb94aa192d9b925ad2e164 (patch)
treed1c55eafe9facf87cb1ebd7e89dd5a418bdefe98 /Software/Embedded_SW/Embedded/Modules
parent06b6cec9375af3951117ffec9206c47f354b7ad8 (diff)
parent5326f66bf1b6ebd7519087d7811a55d193e8542f (diff)
downloadTango-d13a20a4ab738e1f96fb94aa192d9b925ad2e164.tar.gz
Tango-d13a20a4ab738e1f96fb94aa192d9b925ad2e164.zip
MERGE.
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c32
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c7
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c9
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c11
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c6
9 files changed, 66 insertions, 16 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 916d33772..4cd56df56 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -477,6 +477,11 @@ int MillisecGetTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId)
{
return TemperatureCalc[SensorId];
}
+bool RapidPressureRead = false;
+void setRapidPressureRead(bool value)
+{
+ RapidPressureRead = value;
+}
uint32_t MillisecLowLoop(uint32_t tick)
{
uint8_t Motor_i,Disp_i,Heater_i,temp;
@@ -528,18 +533,30 @@ uint32_t MillisecLowLoop(uint32_t tick)
//LOG_ERROR (1111, "Control_WD");
}
}
+ if (RapidPressureRead == true)
+ {
+ for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
+ {
+ CalculateDispenserPressure(Disp_i);
+ //Read_MidTank_Pressure_Sensor(Disp_i);
+ }
+ ADC_TriggerCollection();
+ }
}
- if (O900Millisecond_Tick)
+ if ((O900Millisecond_Tick)&&(RapidPressureRead == false))
{
ADC_TriggerCollection();
}
if (Onesecond_Tick)
{
- for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
+ if (RapidPressureRead == false)
{
- CalculateDispenserPressure(Disp_i);
- //Read_MidTank_Pressure_Sensor(Disp_i);
+ for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++)
+ {
+ CalculateDispenserPressure(Disp_i);
+ //Read_MidTank_Pressure_Sensor(Disp_i);
+ }
}
FPGA_GetAllDispensersValveBusyOCD();
temp = Read_Fans_Tacho();
@@ -553,9 +570,12 @@ uint32_t MillisecLowLoop(uint32_t tick)
if (isMotorConfigured(Motor_i))
MotorGetStatusFromFPGA(Motor_i);
}
- for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++)
+ if (!(OneMinute_Tick))
{
- Read_Heaters_Current(Heater_i);
+ for (Heater_i = 0;Heater_i < NUM_OF_CURRENT_HEATERS;Heater_i++)
+ {
+ Read_Heaters_Current(Heater_i);
+ }
}
Gas_PPM = Calculate_Gas_Power_Consumption();
for (Sensor_i = 0;Sensor_i < MAX_TEMPERATURE_SENSOR_ID;Sensor_i++)
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h
index be82d9e98..4edc1a8ed 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.h
@@ -34,6 +34,7 @@ uint32_t getDrawerFansStatus(void);
uint32_t getSystemFansStatus(void);
uint8_t getGasReading(void);
int MillisecGetTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId);
+void setRapidPressureRead(bool value);
void MillisecInit(void);
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
index 2b24f9832..f8a57362a 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c
@@ -262,6 +262,12 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer)
case INTERFACE_IOS__GPO_WHS_WTANKPUMP2:
SetWastePump( request->value);
break;
+ case INTERFACE_IOS__GPO_SPARE_SSR12_CTRL:
+ if (request->value == true)
+ Lubricant_2Way_Valve(START);//use START or STOP, 0 - 100%();
+ else
+ Lubricant_2Way_Valve(STOP);//use START or STOP, 0 - 100%();
+ break;
default:
responseContainer.has_error = true;
responseContainer.error = ERROR_CODE__GENERAL_ERROR;
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index db13f5e15..2fa4c9fe4 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -114,7 +114,7 @@ DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS];
HeaterState **heatersstates;
HeaterState HeaterInfo[HEATER_TYPE__MixerHeater+1];
DigitalInterfaceState **digitalinterfacestates;
-DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM+8];
+DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM+9];
/*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT+1];
double dispenser2motorfrequency[DIAGNOSTICS_LIMIT+1];
double dispenser3motorfrequency[DIAGNOSTICS_LIMIT+1];
@@ -179,7 +179,7 @@ void DiagnosticsInit(void)
heatersstates[i] = &HeaterInfo[i];
}
digitalinterfacestates = (DigitalInterfaceState**)my_malloc(sizeof(DigitalInterfaceState *)*(MAX_HEATERS_NUM+8));
- for (i = 0;i<(MAX_HEATERS_NUM+8);i++ )
+ for (i = 0;i<(MAX_HEATERS_NUM+9);i++ )
{
digital_interface_state__init(&DigitalOutputState[i]);
DigitalOutputState[i].has_interfaceio = true;
@@ -276,6 +276,9 @@ void DiagnosticsLoadDigitalValues(void)
DigitalOutputState[15].interfaceio = INTERFACE_IOS__GPO_SPARE1_2; /*waste middle cartridge presence*/
DigitalOutputState[15].value = WHS_WasteCartridgeMiddlePresent();
+ DigitalOutputState[16].interfaceio = INTERFACE_IOS__GPO_SPARE_SSR12_CTRL; /*lubricant valve*/
+ DigitalOutputState[16].value = GetLubricantState();
+
}
void DiagnosticLoadTemperature(int HeaterId, int temperature)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index f0edc56ab..15060ab8b 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -42,6 +42,8 @@
#include "StateMachines/Initialization/InitSequence.h"
#include "StateMachines/Initialization/PowerIdle.h"
#include "StateMachines/Initialization/PowerOffSequence.h"
+#include "Drivers/I2C_Communication/Dispenser_Card/EEPROM/Dispenser_EEPROM.h"
+#include <Drivers/I2C_Communication/Dispenser_Card/IO_Ports/Dispenser_IO.h>
uint32_t EmbeddedParametersInit(void);
uint32_t EmbeddedParametersWrite(void * buffer, uint16_t size);
@@ -155,7 +157,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters.has_dispenserpresegmentwfcf = true;
EmbeddedParameters.dispenserpresegmentwfcf = 80;
EmbeddedParameters.has_startheatingoninitsequence = true;
- EmbeddedParameters.startheatingoninitsequence = false;
+ EmbeddedParameters.startheatingoninitsequence = true; //set to true shlomo 14/5/2019
//size_t n_generalparameters;
// EmbeddedParameters.*generalparameters;
EmbeddedParameters.has_currentalarmlowlimit = true;
@@ -273,6 +275,7 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
if (JobIsActive())
{
+ LOG_ERROR(1,"JobIsActive");
return ERROR;
}
if (watchdogCriticalAlarm == true)
@@ -285,6 +288,10 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
PrintingHWConfiguration(request);
if (request->n_winders == 1)
status += InternalWinderConfigMessage(request->winders);
+
+ Check_Dispenser_Type();
+ Init_Dispensers_IO_Registers(&Disp_IO_Reg);
+
status += MotorsInit();
if (request->n_motors < NUM_OF_MOTORS)
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index e10990f85..db23ab588 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -391,6 +391,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
if ((HeaterState == HEATER_OFF)&& (OnOff == HEATER_ON)) //start heating
{
+ Report("HeaterCommandRequest OFF-> ON",__FILE__,HeaterId,Temperature*100,RpWarning,HeaterState, 0);
//set the heater control parameters
//set the target operation temperature
//start the control
@@ -404,6 +405,7 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
}
else if ((HeaterState == HEATER_ON)&& (OnOff == HEATER_ON)) //set temperature
{
+ Report("HeaterCommandRequest ON-> ON",__FILE__,HeaterId,Temperature*100,RpWarning,HeaterState, 0);
//HeaterPIDConfig[HeaterId].m_SetParam = HeaterCmd[HeaterId].targettemperatue;
if (abs(HeaterPIDConfig[HeaterId].m_SetParam - HeaterCmd[HeaterId].targettemperatue)>0.5) //#bug 221
{
@@ -565,7 +567,7 @@ uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue)
temp = SetTemperatue*(100-band);
//temp = SetTemperatue*90.0;
HeaterControl[HeaterId].sensorminvalue = (int)temp;
- Report("Temperature limits",__FILE__,HeaterId,HeaterControl[HeaterId].sensormaxvalue,RpWarning,HeaterControl[HeaterId].sensorminvalue, 0);
+ //Report("Temperature limits",__FILE__,HeaterId,HeaterControl[HeaterId].sensormaxvalue,RpWarning,HeaterControl[HeaterId].sensorminvalue, 0);
if (HeaterPIDConfig[HeaterId].m_params.IntegralErrorMultiplier)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index cd748fd5c..4e965350a 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -553,6 +553,7 @@ c. Go to step 2.a x Segment.BrushStopsCount.
double PrepeareSpeed = 0;
int NumOfActiveDispensers = 0;
int DispenserBuildTimeCounter = 0;
+#define PRESSURE_READ_TIME_GAP 100
//********************************************************************************************************************
uint32_t IDS_Prepare_Callback(uint32_t DispenserId, uint32_t ReadValue)
{
@@ -561,11 +562,11 @@ c. Go to step 2.a x Segment.BrushStopsCount.
int NumofReadyDispensers = 0;
//REPORT_MSG((int)DispenserPrepareControlId, "Prepare Callback");
- DispenserBuildTimeCounter+=500;
+ DispenserBuildTimeCounter+=PRESSURE_READ_TIME_GAP;
if (DispenserBuildTimeCounter<(2*eOneSecond))
{
- REPORT_MSG(DispenserBuildTimeCounter,"waiting 2 seconds for pressure changes");
+ //REPORT_MSG(DispenserBuildTimeCounter,"waiting 2 seconds for pressure changes");
return OK;
}
for (i = 0; i < MAX_DYE_DISPENSERS; i++)
@@ -578,7 +579,7 @@ c. Go to step 2.a x Segment.BrushStopsCount.
}
}
- if (NumofReadyDispensers)
+ if ((NumofReadyDispensers)&&(DispenserBuildTimeCounter%1000 == 0))
Report("IDS_Prepare_Callback",__FILE__,DispenserBuildTimeCounter,NumofReadyDispensers,RpWarning,(int)NumOfActiveDispensers,0);
if (NumofReadyDispensers>=NumOfActiveDispensers)
@@ -587,6 +588,7 @@ c. Go to step 2.a x Segment.BrushStopsCount.
if ((DispenserBuildTimeCounter >= DispenserPrepareTimeout)||(pressureReady == true))
{
SafeRemoveControlCallback(DispenserPrepareControlId, IDS_Prepare_Callback );
+ setRapidPressureRead(false);
//DispenserPrepareReady();
PrepareReady(Module_IDS,ModuleDone);
}
@@ -679,7 +681,8 @@ c. Go to step 2.a x Segment.BrushStopsCount.
}
}
DispenserBuildTimeCounter = 0;
- DispenserPrepareControlId = AddControlCallback( IDS_Prepare_Callback, 500,TemplateDataReadCBFunction ,0, 0, 0 );
+ DispenserPrepareControlId = AddControlCallback( IDS_Prepare_Callback, PRESSURE_READ_TIME_GAP,TemplateDataReadCBFunction ,0, 0, 0 );
+ setRapidPressureRead(true);
}
//********************************************************************************************************************
diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
index c6f2526db..c3b94c01f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
+++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c
@@ -25,6 +25,12 @@ void Stub_ProgressRequest(MessageContainer* requestContainer)
ProgressResponse response = PROGRESS_RESPONSE__INIT;
+ if((request->amount == 0xDE) && (request->delay < 8) && (request->delay >= 0)) // read dispenser type + LS status
+ {
+ response.progress = ((Dispenser_struct[request->delay].Type) << 8) + Dispenser_struct[request->delay].Status;
+ response.has_progress = true;
+ }
+ else
if((request->amount == 0xCF) && (request->delay == 0xCF)) //Create File System on the Drive
{
FRESULT iFResult = Init_Flash_File_System(true);
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index df88db3f9..e0350935a 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -237,6 +237,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag)
if (WinderMotorSpeedRollOver == false)
{
Add100 = true;
+ LOG_ERROR(Add100, "Add100 = true");
}
WinderMotorSpeedCounter=0;
WinderMotorSpeedRollOver=true;
@@ -289,7 +290,7 @@ uint32_t Screw100msecDirectionChange(uint32_t deviceID, uint32_t BusyFlag)
WinderReferenceSpeed = Averagewinderspeed;
}
screw_horizontal_speed = ScrewNumberOfSteps / Rotations;//InternalWinderCfg.NumberOfRotationPerPassage;
- if (Rotations > 7.0)
+ if (Rotations > 6.4)//7.0)
Rotations = 6.0;
RotationsPerSecond = WinderReferenceSpeed / (double)MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_WINDER].pulseperround;
tempScrewSpeed = screw_horizontal_speed*RotationsPerSecond;
@@ -387,6 +388,7 @@ uint32_t Winder_Presegment(void *SegmentDetails, uint32_t SegmentId)
TotalWinderSpeed = 0;
WinderMotorSpeedRollOver=false;
Add100 = false;
+ LOG_ERROR(Add100, "Add100 = false");
}
PreSegmentReady(Module_Winder,ModuleDone);
@@ -479,7 +481,7 @@ void ScrewTimerInterrupt(int ARG0)
TimerDisable(Screw_timerBase, TIMER_A);
}
ROM_IntMasterEnable();
- Rotations+=0.03;
+ Rotations+=0.005;
return ;