diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-19 20:37:44 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2020-02-19 20:37:44 +0200 |
| commit | d6e2772dd98e6880de14ea12be0ef53bae24f763 (patch) | |
| tree | 4d3385fc155c5bc5cb080da5318dc7dfeb4d0d75 /Software/Embedded_SW/Embedded/Modules | |
| parent | b41a0cfe17a485abd077b7f059bb9620cf6e474c (diff) | |
| parent | 7577588797cea9bd827df9170180370b739a5a8d (diff) | |
| download | Tango-d6e2772dd98e6880de14ea12be0ef53bae24f763.tar.gz Tango-d6e2772dd98e6880de14ea12be0ef53bae24f763.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
9 files changed, 185 insertions, 18 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index e06e908bd..22cc33822 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -1566,7 +1566,7 @@ void SendEventNotifications(void) } EventsResponse.n_events = 0; - UInt Key = Task_disable(); + //UInt Key = Task_disable(); for (i = 0;i<NumOfSystemAlarms;i++) { if (AlarmState[i].Status == true) @@ -1594,14 +1594,24 @@ void SendEventNotifications(void) { EventsResponse.events[e]=AlarmState[i].EventPtr; e++; + if (e > EventsResponse.n_events) + { + ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers - large ", __FILE__,__LINE__,EventsResponse.n_events, RpFatalError, e, 0); + break; + } } } } + if (e!=EventsResponse.n_events) + { + ReportWithPackageFilter(AlarmFilter,"Error in alarm numbers - small ", __FILE__,__LINE__,EventsResponse.n_events, RpFatalError, e, 0); + EventsResponse.n_events = e; + } } else { LOG_ERROR(EventsResponse.n_events,"events malloc error"); - Task_restore(Key); + //Task_restore(Key); return; } } @@ -1609,7 +1619,7 @@ void SendEventNotifications(void) { EventsResponse.events = NULL; } - Task_restore(Key); + //Task_restore(Key); responseContainer = createAllocatedContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &EventsResponse, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size,&alarm_response_buffer); responseContainer.has_continuous = true; responseContainer.continuous = true; @@ -1670,11 +1680,22 @@ uint32_t StartEventsNotificationRequestFunc(MessageContainer* requestContainer) // ReportInitParams InitParams; //ControlStart(); EventsNotificationRequestAccepted = true; - //AlarmHandlingStart(); + AlarmHandlingStart(); + MessageContainer responseContainer; + + StartEventsNotificationResponse response = START_EVENTS_NOTIFICATION_RESPONSE__INIT; StartEventsNotificationRequest* request = start_events_notification_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); ustrncpy (AlarmHandlingToken, requestContainer->token,36); start_events_notification_request__free_unpacked(request,NULL); + + responseContainer = createContainer(MESSAGE_TYPE__StartEventsNotificationResponse, AlarmHandlingToken, false, &response, &start_events_notification_response__pack, &start_events_notification_response__get_packed_size); + responseContainer.has_continuous = true; + responseContainer.continuous = true; + uint8_t* container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); + size_t container_size = message_container__pack(&responseContainer, container_buffer); + my_free(responseContainer.data.data); + SendChars(container_buffer, container_size); return status; } uint32_t StopEventsNotificationRequestFunc(MessageContainer* requestContainer) diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 2c7512129..fe350d78d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -569,6 +569,7 @@ void setRapidPressureRead(bool value) } uint16_t PumpCounter = 0; +uint16_t realtimetest[101]; uint32_t MillisecLowLoop(uint32_t tick) { uint8_t Motor_i,Disp_i,temp; @@ -598,6 +599,7 @@ uint32_t MillisecLowLoop(uint32_t tick) Onesecond_Tick = (tick%eOneSecond == 0) ?true:false; OneMinute_Tick = (tick%eOneMinute == 0) ?true:false; OneHourTick = (tick%eOneHour == 0) ?true:false; + realtimetest[(tick%1000)/10]++; //gather Motor data from FPGA //ROM_IntMasterDisable(); int StartPT100 = 0; @@ -723,6 +725,7 @@ uint32_t MillisecLowLoop(uint32_t tick) WHS_Blower_Avarege_ORF1(); //drier WHS_Blower_Avarege_ORF3(); //head Trigger_WHSReadAllFanTacho (); + WHS_Start_Blower_Control_Closed_Loop (); } if (OneMinute_Tick) { diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index ba11ff58c..bea68e314 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -585,7 +585,7 @@ uint32_t ControlLowLoop(uint32_t tick) { if (ControlArray[ControlLowDevice_i].ControlActive) { - if (tick == ControlArray[ControlLowDevice_i].StartTick) + if (tick - ControlArray[ControlLowDevice_i].StartTick<=skipped_ticks) continue; if (ControlArray[ControlLowDevice_i].ControlTiming == eOneMillisecond) continue; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 63fe510c4..0764b2028 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -446,7 +446,7 @@ void DiagnosticOneMinuteCollection(void) } DiagnosticsMonitor.n_overalltemperature = 1; OverallTemperature = max(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1),MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)); - OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1))*10 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100)); + OverallTemperature = ((int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP1)/100)*1000 + (int)(MillisecGetTemperatures(TEMP_SENSE_AN_ENCLOSURETEMP2)/100)); DiagnosticsMonitor.overalltemperature = &OverallTemperature; DiagnosticsMonitor.n_midtank1level = 1; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 4f6a40c90..ec59385ab 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -129,6 +129,7 @@ uint32_t HWConfigurationInit(void) status = HWConfiguration(UploadRequest); if (status !=OK) { + AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_NO_CFG_FILE,ON); SetMachineState(MACHINE_STATE_HW_CONFIG_FAILED); STATUS_GREEN_LED_OFF; } @@ -494,12 +495,18 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest) } BlowerCfg.enabled = true; - BlowerCfg.voltage = 2650; - BlowerCfg.heatingvoltage = 3000; if (WHS_Type == WHS_TYPE_UNKNOWN) - blowerType = HARDWARE_BLOWER_TYPE__WHSBlower2; - else + { blowerType = HARDWARE_BLOWER_TYPE__DefaultBlower; + BlowerCfg.voltage = 3000; + BlowerCfg.heatingvoltage = 2650; + } + else + { + blowerType = HARDWARE_BLOWER_TYPE__WHSBlower2; + BlowerCfg.voltage = 2200; + BlowerCfg.heatingvoltage = 2000; + } if (request->n_blowers) { for (Dispenser_i = 0; Dispenser_i < request->n_blowers ; Dispenser_i++) @@ -717,6 +724,21 @@ uint32_t LoadConfigurationParamsFromFile(bool Initialize) } return Fresult; } +void HWConfigurationLoadFile(void) +{ + FRESULT Fresult = FR_OK; + uint8_t* buffer = NULL; + uint32_t Bytes = 0; + buffer = HWConfigurationLoadFromFile(&Bytes); //load hardware config + if (buffer) + { + ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH, 4,&Bytes); + ReadAppAndProgram(GENHWCFG_MAP_IN_FLASH+4, Bytes, buffer); + free (buffer); + FlashInitResults[0] = true; + } + Report("Hardware Initialized", __FILE__,__LINE__,Bytes, RpMessage, GENHWCFG_MAP_IN_FLASH, 0); +} void FlashInitAndLoad(void) { FRESULT Fresult = FR_OK; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h index 76e4d4414..55490a140 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h @@ -17,6 +17,8 @@ extern void HWSystemResetRequest(MessageContainer* requestContainer); uint32_t HWConfigurationInit(void); void FlashInitAndLoad(void); uint32_t LoadConfigurationParamsFromFile(bool); +void HWConfigurationLoadFile(void); + extern HardwareBlower BlowerCfg; extern bool DataUpdated; diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 6b87db616..815a26385 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -22,6 +22,7 @@ #include "modules/ids/ids_ex.h" #include "Common/SWUpdate/FileSystem.h" #include "StateMachines/Initialization/PowerIdle.h" +#include "StateMachines/Initialization/InitSequence.h" #include "drivers/Flash_ram/FlashProgram.h" @@ -94,6 +95,11 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone6temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; if (status != 0) return status; + if (GetMachineState()<MACHINE_STATE_HEATING_STARTED) + { + status = ERROR_CODE__GENERAL_ERROR; + return status; + } if (ProcessParams) { memcpy (&ProcessParametersKeep,ProcessParams,sizeof(ProcessParameters)); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 290e65fa9..06da53823 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -40,6 +40,8 @@ #include "StateMachines/Printing/PrintingSTM.h" #include "StateMachines/Initialization/PowerIdle.h" +#include "StateMachines/Initialization/PowerOffSequence.h" +#include "StateMachines/Initialization/InitSequence.h" /******************** Data Structures ********************************************/ @@ -1485,19 +1487,75 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y) return OK; } bool UseSecondaryDrierHeater = true; -uint32_t DrierHeaterVlotageSetup(double voltage) +double TotalCurrentLimit(double VAC) +{ + if (VAC<=210) + { + return 5.8; + } + else if (VAC>222) + { + return 5.15; + } + else + { + return 5.5; + } + +} +uint32_t DrierHeaterVoltageSetup(double voltage) { - uint32_t status = OK; double DrierAcVoltage = 0.0; + char str[100]; + bool tempDrier2 = UseSecondaryDrierHeater; + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines { DrierAcVoltage = ReadVAC(); - + if (DrierAcVoltage<=180) + { + AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); + ReportWithPackageFilter(HeatersFilter,"Power too low!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0); + } + else if (DrierAcVoltage>264) + { + AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE, true); + ReportWithPackageFilter(HeatersFilter,"Power too high!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0); + ReportWithPackageFilter(HeatersFilter,"Power too high!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0); + ReportWithPackageFilter(HeatersFilter,"Power too high!!!!!", __FILE__,__LINE__,DrierAcVoltage, RpMessage, 0, 0); + HeatersEnd(); + //PowerOffPowerOff(); + } + else if (DrierAcVoltage<205) + { + UseSecondaryDrierHeater = true; + } + else if (DrierAcVoltage>224) + { + UseSecondaryDrierHeater = false; + } + else + { + if ((GetZone2RMSCurrent(DrierAcVoltage)+Get_Heaters_Current(HEATER_DRYER_CURRENT_1))>TotalCurrentLimit(DrierAcVoltage)) + { + UseSecondaryDrierHeater = false; + } + else + { + UseSecondaryDrierHeater = true; + } + } } else { UseSecondaryDrierHeater = true; } + if (tempDrier2 != UseSecondaryDrierHeater) + { + usnprintf(str, 100, "\r\n Changing Drier 2 setting VAC %d D1 Current %d D2 assumed current %d limit %d" + ,DrierAcVoltage,(int)(GetZone2RMSCurrent(DrierAcVoltage)*100),(int)(Get_Heaters_Current(HEATER_DRYER_CURRENT_1)*100),(int)(TotalCurrentLimit(DrierAcVoltage)*100)); + ReportWithPackageFilter(HeatersFilter,str, __FILE__,__LINE__,DrierAcVoltage, RpMessage, UseSecondaryDrierHeater, 0); + } return OK; } uint32_t HeatersControlLoop(uint32_t tick) @@ -1541,7 +1599,7 @@ uint32_t HeatersControlLoop(uint32_t tick) } if ((HeaterMaxTempFlag[HEATER_TYPE__DryerSecondaryHeater] == false)&&(UseSecondaryDrierHeater == true)) { -#warning trial use both heaters in drier +//#warning trial use both heaters in drier ActivateHeater (HEATER_TYPE__DryerSecondaryHeater); //DeActivate HEATER_TYPE__DryerSecondaryHeater //DeActivateHeater (HEATER_TYPE__DryerSecondaryHeater); diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 88b8cb0c9..ccd051c71 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -14,10 +14,12 @@ #include "drivers/Flash_Memory/FATFS/ff.h" #include "drivers/Flash_Memory/FATFS/Control_File_System.h" +#include "drivers/Flash_ram/FlashProgram.h" #include "drivers/adc_sampling/adc.h" #include "drivers/Heater/TemperatureSensor.h" #include "drivers/ADC_Sampling/adc.h" #include "drivers/Flash_ram/MCU_E2Prom.h" +#include "Drivers/SSI_Comm/Dancer/Dancer.h" #include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h" #include "Drivers/I2C_Communication/Head_Card/Fan/fan_click.h" @@ -121,18 +123,30 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) { if (WHS_Type == WHS_TYPE_NEW) { - WHS_Set_Blower_Control_Closed_Loop (request->delay); + WHS_Set_SetPoint_Q_value((double) request->delay); response.progress = 0; response.has_progress = false; } } else + if (request->amount == 0x3E6) // get WHS Blower speed by Q value + { + if (WHS_Type == WHS_TYPE_NEW) + { + response.progress = WHS_Get_Volt_Blower_Control(); + //response.progress = 0; + response.has_progress = true; + } + } + // WHS_Get_Volt_Blower_Control + else if(request->amount == 0x3EA) { uint16_t tempu16 = 0; + double temp_double = 0.0; if (WHS_Type == WHS_TYPE_NEW) { - switch(request->delay )// set WHS Blower speed 0x00-0xfff + switch(request->delay )// get A2D { case 0: get_orf_1(&tempu16); @@ -161,12 +175,53 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) case 8: tempu16 = 0; //get_cur_vlv2(&tempu16); break; + case 10: + temp_double = get_ORF1_Q(); + break; + case 12: + temp_double = get_ORF3_Q(); + break; + case 20: + temp_double = get_average_ORF1_Q(); + break; + case 22: + temp_double = get_average_ORF3_Q(); + break; + + case 11: + //get_orf_2(&tempu16); + break; + case 13: + //get_vlev1(&tempu16); + break; + case 14: + //get_vlev2(&tempu16); + break; + case 15: + //get_gas_out(&tempu16); + break; + case 16: + //get_cur_fan(&tempu16); + break; + case 17: + //get_cur_vlv1(&tempu16); + break; + case 18: + //tempu16 = 0; //get_cur_vlv2(&tempu16); + break; default : tempu16 = 0x500; //get_cur_vlv2(&tempu16); break; } } - response.progress = (double)tempu16; + if ((request->delay)<10) + { + response.progress = (double)tempu16; + } + else + { + response.progress = temp_double; + } response.has_progress = true; } else // @@ -511,7 +566,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) else if((request->amount == 0x0CE) && (request->delay == 0x0CE)) //Get Gas Sensor { - LOG_ERROR(request->delay,"FlashInitAndLoad"); + LOG_ERROR(request->delay,"FlashInit"); FlashInit(); response.progress = (double)OK; response.has_progress = true; |
