aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-05-19 12:07:38 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-05-19 12:07:38 +0300
commit5ed1e236bc0db0f1480344d0934cbb42df20df7b (patch)
treed242fecf6d74a1af7b00760c1fd23a62fddda1c0 /Software/Embedded_SW/Embedded/Modules
parentdb94be7a673886297f5a6dfe4331793452a9f609 (diff)
parent1d2d515c91a78a8a3e373e05ae925ba6af1f32fd (diff)
downloadTango-5ed1e236bc0db0f1480344d0934cbb42df20df7b.tar.gz
Tango-5ed1e236bc0db0f1480344d0934cbb42df20df7b.zip
merge, no change
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c34
-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.c13
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c18
-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, 83 insertions, 19 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index 916d33772..cb1be7fa5 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,24 +533,36 @@ 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();
DrawerFansStatus = temp & 0x1F;
SystemFansStatus = temp & 0xE0;
- KeepAliveOneSecondCall();
+ //KeepAliveOneSecondCall();
for (Motor_i = 0;Motor_i < NUM_OF_MOTORS;Motor_i++)
{
if (Motor_i == HARDWARE_MOTOR_TYPE__MOTO_SCREW)
@@ -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..800d40db6 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)
@@ -358,7 +365,9 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
}
else
{
- BlowerCfg.enabled = false;
+ BlowerCfg.enabled = true;
+ BlowerCfg.voltage = 3000;
+ BlowerCfg.heatingvoltage = 3000;
}
//from now on starting blower on INIT, so that the chiller does not freeze
/*if (BlowerCfg.enabled == true)
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index e10990f85..b401af289 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -353,6 +353,7 @@ int GetFilteredHeaterRead(int HeaterId)
* called by: Communication from host
* initialized all global data
*************************************************************************************/
+bool HeaterRestarted[MAX_HEATERS_NUM] = {false,false,false,false,false,false,false,false,false,false};
uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
{
//uint32_t status = NOT_SUPPORTED;
@@ -391,6 +392,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 +406,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
{
@@ -412,7 +415,8 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature)
else
{
//HeaterPreviousRead[HeaterId] = MillisecGetTemperatures(HeaterId);//
- LOG_ERROR(HeaterId,"Restarting same temperature Heater Temp");
+ Report("Restarting same temperature Heater Temp",__FILE__,HeaterId,ControlIdtoHeaterId [HeaterId],RpWarning,HeaterPreviousRead[HeaterId], 0);
+ HeaterRestarted[HeaterId] = true;
}
//PrepareHeater(HeaterId,Temperature); //prepare the heaters control info
// if the heater is not on return (?).
@@ -565,7 +569,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)
{
@@ -956,6 +960,11 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
// #warning PID is now only proportional (above)
// Report(ACheatstr,__FILE__,__LINE__,index,RpWarning,readValue, HeaterPIDConfig[index].m_calculatedError);
//Report("AC PID",__FILE__,__LINE__,HeaterPIDConfig[index].m_calculatedError/100,RpWarning,readValue, index);
+ if (HeaterRestarted[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain] == true)
+ {
+ Report("Restarting same temperature Heater Temp",__FILE__,HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain,HeaterPIDConfig[index].m_calculatedError,RpWarning,readValue, 0);
+ HeaterRestarted[HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain] = false;
+ }
HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, (int)(HeaterPIDConfig[index].m_calculatedError/100));
}
}
@@ -1102,6 +1111,11 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue)
// Counter[index] = 0;
// Report(logmsg[index],__FILE__,__LINE__,index,RpWarning,index, Counter[index]);
// #warning PID is now only proportional (above)
+ if (HeaterRestarted[index] == true)
+ {
+ Report("Restarting same temperature Heater Temp",__FILE__,index,HeaterPIDConfig[index].m_calculatedError,RpWarning,readValue, 0);
+ HeaterRestarted[index] = false;
+ }
HeaterRecalculateHeaterParams(index, (int)(HeaterPIDConfig[index].m_calculatedError/100));
}
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..f8b0efb17 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.6)//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.01;
return ;