diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-05-19 12:07:38 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-05-19 12:07:38 +0300 |
| commit | 5ed1e236bc0db0f1480344d0934cbb42df20df7b (patch) | |
| tree | d242fecf6d74a1af7b00760c1fd23a62fddda1c0 /Software/Embedded_SW/Embedded/Modules | |
| parent | db94be7a673886297f5a6dfe4331793452a9f609 (diff) | |
| parent | 1d2d515c91a78a8a3e373e05ae925ba6af1f32fd (diff) | |
| download | Tango-5ed1e236bc0db0f1480344d0934cbb42df20df7b.tar.gz Tango-5ed1e236bc0db0f1480344d0934cbb42df20df7b.zip | |
merge, no change
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
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 ; |
