From 21a6b045581db87278253428839bde3fcc9db563 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 21 Feb 2019 14:16:10 +0200 Subject: Version 1.3.7.4: update embedded parameters from a stub. load correctly. bug fix in heaters. logs for parameter initialization --- .../Modules/Diagnostics/DiagnosticActions.c | 3 ++ .../Embedded/Modules/Diagnostics/Diagnostics.c | 10 ++++-- .../Embedded/Modules/General/GeneralHardware.c | 41 ++++++++++++---------- .../Embedded/Modules/General/GeneralHardware.h | 3 ++ .../Embedded/Modules/Heaters/Heaters_print.c | 3 +- .../Embedded/Modules/IDS/IDS_dispenser.c | 3 ++ .../Embedded_SW/Embedded/Modules/IDS/IDS_maint.c | 2 ++ 7 files changed, 42 insertions(+), 23 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index 9a167b26e..e3f593924 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -245,6 +245,9 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) else DeActivateHeadMagnet(); break; +/* case INTERFACE_IOS__GPO_LED4: + DataUpdated = request->value; + break;*/ case INTERFACE_IOS__VALVE_WASTE_TANK: if (request->value == true) Valve_Set(VALVE_MIXCHIP_WASTECH,1); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 603de30d4..fe060874f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -99,7 +99,7 @@ DoubleArray DiagnosticsDispenserPressure[MAX_SYSTEM_DISPENSERS]; HeaterState **heatersstates; HeaterState HeaterInfo[HEATER_TYPE__MixerHeater+1]; DigitalInterfaceState **digitalinterfacestates; -DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM/*+1*/]; +DigitalInterfaceState DigitalOutputState[MAX_HEATERS_NUM+2]; /*double dispenser1motorfrequency[DIAGNOSTICS_LIMIT]; double dispenser2motorfrequency[DIAGNOSTICS_LIMIT]; double dispenser3motorfrequency[DIAGNOSTICS_LIMIT]; @@ -237,8 +237,12 @@ void DiagnosticsLoadDigitalValues(void) DigitalOutputState[9].interfaceio = INTERFACE_IOS__GPO_MIXCHIP_SSR4_CTRL; DigitalOutputState[9].value = GetHeaterState(9); - //DigitalOutputState[9].interfaceio = INTERFACE_IOS__GPO_SPARE_SSR13_CTRL; - //DigitalOutputState[9].value = GetHeaterState(9); + DigitalOutputState[9].interfaceio = INTERFACE_IOS__GPO_SPARE_SSR13_CTRL; + DigitalOutputState[9].value = 0; +#warning get the magnet state + + DigitalOutputState[9].interfaceio = INTERFACE_IOS__GPO_LED4; + DigitalOutputState[9].value = DataUpdated; } 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 d3d57ddb6..847396441 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -49,7 +49,6 @@ bool GeneralHwReady = false; HardwareBlower BlowerCfg; char *SW_INFO_DIR = "0://SysInfo"; -char *OLD_SW_INFO_DIR = "0://SWInfo"; char HwConfigPath[50] = "0://SysInfo//GenHwCfg.cfg"; uint32_t HWConfigurationInit(void) @@ -65,18 +64,6 @@ uint32_t HWConfigurationInit(void) Fresult = f_mkdir(SW_INFO_DIR); if ((Fresult == FR_OK)||(Fresult == FR_EXIST)) { -/************************************************************************* - Fresult = f_mkdir(OLD_SW_INFO_DIR); - - Fresult = f_rename ("//SWINFO//GENHWCFG.MSG", "//SYSINFO//GENHWCFG.CFG"); - Fresult |= f_rename ("//SWINFO//ALARMPRM.MSG", "//SYSINFO//ALARMPRM.CFG"); - Fresult |= f_rename ("//SWINFO//EMBPARAM.MSG", "//SYSINFO//EMBPARAM.CFG"); - Fresult |= f_rename ("//SWINFO//PROCESSP.MSG", "//SYSINFO//PROCESSP.CFG"); - Fresult |= f_rename ("//SWINFO//DISPSTOR.MSG", "/SYSINFO//DISPSTOR.CFG"); - Fresult |= f_rename ("//SWINFO//DANCCFG.MSG", "//SYSINFO//DANCCFG.CFG"); - Fresult |= f_rename ("//SWINFO//LOADARM.MSG", "//SYSINFO//LOADARM.CFG"); - - *************************************************************************/ FileHandle = my_malloc(sizeof(FIL)); Fresult = FileOpen(HwConfigPath, &Bytes, FileHandle); @@ -108,7 +95,7 @@ uint32_t HWConfigurationInit(void) } f_close(FileHandle); } - EmbeddedParametersInit(); + //EmbeddedParametersInit(); IDS_Dispenser_Content_Init(); //ProcessParamsInit(); return Fresult; @@ -116,10 +103,12 @@ uint32_t HWConfigurationInit(void) char EmbeddedParametersPath[50] = "0://SysInfo//EmbParam.cfg"; ConfigurationParameters EmbeddedParameters; +bool DataUpdated = false; void LoadConfigurationParameters(ConfigurationParameters *Params) { if (Params == 0) { + configuration_parameters__init(&EmbeddedParameters); EmbeddedParameters.has_breaksensorlimit = true; EmbeddedParameters.breaksensorlimit = 10; EmbeddedParameters.has_diagnosticcollectionlimit = true; @@ -156,8 +145,14 @@ void LoadConfigurationParameters(ConfigurationParameters *Params) EmbeddedParameters.dcheatersupperoperationlimit = 1002; EmbeddedParameters.has_midtankpressurecorrection = true; EmbeddedParameters.midtankpressurecorrection = 0.5; - - FileWrite(&EmbeddedParameters,sizeof(EmbeddedParameters),EmbeddedParametersPath); + uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(&EmbeddedParameters)); + size_t response_size = 0; + if (response_buffer) + { + response_size = configuration_parameters__pack(&EmbeddedParameters, response_buffer); + } + FileWrite(response_buffer,response_size,EmbeddedParametersPath); + my_free(response_buffer); } else memcpy (&EmbeddedParameters,Params,sizeof(EmbeddedParameters)); } @@ -168,14 +163,19 @@ uint32_t EmbeddedParametersInit(void) uint32_t Bytes = 0; ConfigurationParameters *Params; - LoadConfigurationParameters(0); Fresult = FileRead(EmbeddedParametersPath, &Bytes, &buffer); if (Fresult == FR_OK) { - Params = (ConfigurationParameters *)buffer; + Params = configuration_parameters__unpack(NULL, Bytes, buffer)/*(ConfigurationParameters *)buffer*/; LoadConfigurationParameters(Params); - free (buffer); + DataUpdated=true; + free (buffer); + configuration_parameters__free_unpacked(NULL,Params); + } + else + { + LoadConfigurationParameters(0); } IDS_Dispenser_SetTimeOutValues(EmbeddedParameters.closevalvetimeout, EmbeddedParameters.openvalvetimeout); IDS_Dispenser_SetBackLashValues(EmbeddedParameters.initialdispenserpressure, EmbeddedParameters.initialdispensertimeout, EmbeddedParameters.initialdispensertimelag); @@ -220,6 +220,9 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) { return ERROR; } + + EmbeddedParametersInit(); + PrintingHWConfiguration(request); if (request->n_winders == 1) status += InternalWinderConfigMessage(request->winders); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h index 9aa5201dc..8fdbad42e 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h @@ -14,6 +14,9 @@ extern void HWSystemResetRequest(MessageContainer* requestContainer); uint32_t HWConfigurationInit(void); extern HardwareBlower BlowerCfg; + +extern bool DataUpdated; + extern bool GeneralHwReady; #endif diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index e83be8633..2647970c9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -706,7 +706,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) //Heaters OFF until coming into the proportional band return OK; } - if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100)) +// if (readValue < ((HeaterCmd[index].targettemperatue * (100-HeaterControl[index].outputproportionalband))/100)) + if (readValue < (HeaterCmd[index].targettemperatue * AcHeatersLoweroperationLimit/1000)) { ActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary); ActivateHeater(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain); diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c index ede6b0674..42f990fda 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c @@ -44,11 +44,14 @@ void IDS_Dispenser_SetPrepareValues( uint32_t DispenserBuildPressureSpeed, DispenserPreparePressure = DispenserBuildPressureLimit; DispenserPrepareTimeout = DispenserBuildPressureTimeout; DispenserPrepareTimeLag = DispenserBuildPressureLag; + Report("IDS_Dispenser_SetPrepareValues ",__FILE__,__LINE__,DispenserPrepareSpeed,RpWarning,(int)DispenserPreparePressure,0); + Report("IDS_Dispenser_SetPrepareValues ",__FILE__,__LINE__,DispenserPrepareTimeout,RpWarning,(int)DispenserPrepareTimeLag,0); } void IDS_Dispenser_SetTimeOutValues(uint32_t CloseTimeout, uint32_t OpenTimeout) { CloseValveTimeout = CloseTimeout; OpenValveTimeout = OpenTimeout; + Report("IDS_Dispenser_SetTimeOutValues ",__FILE__,__LINE__,OpenValveTimeout,RpWarning,(int)CloseValveTimeout,0); } //******************************************************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c index 8028a60ee..7d851936c 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_maint.c @@ -75,6 +75,8 @@ void IDS_Dispenser_SetBackLashValues(double initialdispenserpressure, uint32 InitialDispenserPressure = initialdispenserpressure; InitialDispenserTimeout = initialdispensertimeout; InitialDispenserTimeLag = initialdispensertimelag; + + Report("IDS_Dispenser_SetBackLashValues ",__FILE__,InitialDispenserPressure,InitialDispenserTimeout,RpWarning,(int)InitialDispenserTimeLag,0); } uint32_t IDS_HomeDispenserBackMoveCallback(uint32_t deviceID, uint32_t ReadValue) { -- cgit v1.3.1 From a5fde6c76b7c98c482d5fc069c371da5480c0bdf Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 21 Feb 2019 14:24:23 +0200 Subject: Version 1.3.7.5 (careful!) control saves real time - main loop runs to the highest number of active control requests --- Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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 77011b073..2531a3e79 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 = {1,3,7,4}; +TangoVersion_t _gTangoVersion = {1,3,7,5}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index e4abc5e3c..52b52d93b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -232,8 +232,8 @@ uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlF uint32_t device_i; uint32_t deviceId = 0xFF; - //if (CtrlFrequency == eOneMillisecond) - //{ + if (CtrlFrequency == eOneMillisecond) + { for(device_i = 0;device_i < MAX_TANGO_CONTROL_DEVICES;device_i++) { if (ControlArray[device_i].ControlActive == false) @@ -242,7 +242,7 @@ uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlF break; } } -/* if (MaxHighDevices == 0xFF) + if (MaxHighDevices == 0xFF) MaxHighDevices = deviceId; else { @@ -252,7 +252,7 @@ uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlF } else { - for(device_i = MAX_TANGO_CONTROL_DEVICES-1;device_i >=0;device_i--) + for(device_i = MAX_TANGO_CONTROL_DEVICES-1;device_i > 0;device_i--) { if (ControlArray[device_i].ControlActive == false) { @@ -260,7 +260,7 @@ uint32_t AddControlCallback( ControlCBFunction Callback, CTRL_TIMING_ENUM CtrlF break; } } - }*/ + } if (deviceId == 0xFF) { @@ -399,10 +399,10 @@ uint32_t GetControlLowDevice_i(void) } uint32_t ControlLoop(uint32_t tick) { - //if (MaxHighDevices == 0xFF) - // return OK; - //for (ControlDevice_i = 0; ControlDevice_i <= MaxHighDevices;ControlDevice_i++) - for (ControlDevice_i = 0; ControlDevice_i < MAX_TANGO_CONTROL_DEVICES;ControlDevice_i++) + if (MaxHighDevices == 0xFF) + return OK; + for (ControlDevice_i = 0; ControlDevice_i <= MaxHighDevices;ControlDevice_i++) + //for (ControlDevice_i = 0; ControlDevice_i < MAX_TANGO_CONTROL_DEVICES;ControlDevice_i++) { if (ControlArray[ControlDevice_i].ControlActive) { -- cgit v1.3.1