From b3589be05166fdd15692a9a835262d6e04e56bd2 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 5 Feb 2020 16:00:59 +0200 Subject: fix continuous bug, alarm handling timing, control timing, initialization. --- Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 1 + 1 file changed, 1 insertion(+) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index a629afc50..5dc354785 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -1356,6 +1356,7 @@ uint32_t ThreadLoadingReport(void) //------------------------------------------------------------------------------------------- responseContainer = createContainer(MESSAGE_TYPE__StartThreadLoadingResponse, ThreadLoadingToken, last, &response, &start_thread_loading_response__pack, &start_thread_loading_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); -- cgit v1.3.1 From 5bf44be1121abf9dd36c948c19ca0650f5571c3e Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 6 Feb 2020 13:51:20 +0200 Subject: fix job bug and I2C_Task for LP machines --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 33 ++++++++++------------ .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 2 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 4 +-- .../Modules/Diagnostics/DiagnosticsHoming.c | 2 +- .../Embedded/Modules/Thread/Thread_init.c | 4 +-- .../Embedded/StateMachines/Printing/JobSTM.c | 5 ++-- 6 files changed, 23 insertions(+), 27 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index 79bbb4df8..bf1151d6e 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -53,6 +53,7 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { ActivateVersionResponse response = ACTIVATE_VERSION_RESPONSE__INIT; MessageContainer responseContainer; + bool last = true; usnprintf(activateString, 1000, "file %d of %d bytes %d of %d",CurrentRunningFile,NumberOfFiles,vme_index,CurrentFileSize); @@ -60,16 +61,9 @@ uint32_t ActivateVersionCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) if (CurrentRunningFiletoken, false, &response, &dispenser_homing_response__pack, &dispenser_homing_response__get_packed_size); responseContainer.has_continuous = true; -responseContainer.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); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index fb3b78752..e53adabb7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -73,14 +73,14 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; - if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) + /*if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01 } else { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 - } + }*/ MotorsCfg[Motor_i].kvalhold = request->kvalhold; MotorsCfg[Motor_i].kvalrun = request->kvalrun; MotorsCfg[Motor_i].kvalacc = request->kvalacc; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index d36de9bd7..a62d1b4b7 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -926,6 +926,8 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes //responseContainer = createContainer(MESSAGE_TYPE__JobResponse, JobToken, done, &JobResponseMsg, &job_response__pack, &job_response__get_packed_size); responseContainer = createAllocatedContainer(MESSAGE_TYPE__JobResponse, JobToken, done, &JobResponseMsg, &job_response__pack, &job_response__get_packed_size,&JobStatusBuffer); } + responseContainer.has_continuous = true; + responseContainer.continuous = true; container_buffer = my_malloc(message_container__get_packed_size(&responseContainer)); if (done == true) @@ -942,9 +944,6 @@ void SendJobProgress(double ProcessedLength, int SegmentId, bool done, char *Mes responseContainer.error = ERROR_CODE__CONTINUOUS_RESPONSE_ABORTED; } } - responseContainer.has_continuous = true; - responseContainer.continuous = true; - if (container_buffer) { size_t container_size = message_container__pack(&responseContainer, container_buffer); -- cgit v1.3.1 From 589bffe306db793987c17cd46f1dcac81f47bdcb Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Fri, 7 Feb 2020 13:03:22 +0200 Subject: remove some warnings --- .../Embedded/Common/SWUpdate/FirmwareUpgrade.c | 1 + .../Embedded/Common/Utilities/idle_task.c | 6 +- .../Embedded_SW/Embedded/Common/report/report.h | 1 + .../Embedded/Common/report/reportInit.c | 13 ++-- .../Head_Card/IO_Ports/Heaters/Head_Heaters.h | 2 +- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 21 ++---- .../Embedded_SW/Embedded/Drivers/Valves/Valve.c | 4 +- .../Embedded/Drivers/flash_ram/FlashProgram.c | 2 +- Software/Embedded_SW/Embedded/Main.c | 1 + .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 5 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.h | 2 + .../Embedded/Modules/Control/MillisecTask.c | 8 +- .../Embedded_SW/Embedded/Modules/Control/control.c | 2 + .../Modules/Diagnostics/DiagnosticActions.c | 4 +- .../Embedded/Modules/General/GeneralHardware.c | 1 + .../Embedded_SW/Embedded/Modules/Heaters/Heaters.h | 1 + .../Embedded/Modules/Heaters/Heaters_init.c | 1 + .../Embedded/Modules/Heaters/Heaters_print.c | 88 ++++++++++++++++++++-- .../Modules/Stubs_Handler/StubRealTimeUsage.c | 2 +- .../Embedded/Modules/Thread/ThreadLoad.c | 2 +- .../Embedded/Modules/Thread/Thread_print.c | 8 +- 21 files changed, 124 insertions(+), 51 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c index bf1151d6e..24f02f60c 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FirmwareUpgrade.c @@ -24,6 +24,7 @@ #include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h" #include "drivers/FPGA/Full_Vme/FPGA_Programming_Up.h" #include "drivers/FPGA/Full_Vme/ispvme/vmopcode.h" +#include "drivers/Flash_ram/FlashProgram.h" #include "Common/Utilities/Utils.h" #include "Common/SWUpdate/FileSystem.h" diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c index 8d1040ea2..9a1de790e 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c +++ b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c @@ -202,9 +202,9 @@ uint32_t unload_max_count=0; void IdleTaskGetLoadTable (uint32_t *aBuffer) { int i; - for (i=0;i<100;i++) - aBuffer[i] = idle_load_table[i]; - //memcpy (aBuffer,idle_load_table,sizeof(idle_load_table)); + //for (i=0;i<100;i++) + // aBuffer[i] = idle_load_table[i]; + memcpy (aBuffer,idle_load_table,sizeof(idle_load_table)); } uint32_t MillisecCounter = 0; uint32_t ControlCounter = 0; diff --git a/Software/Embedded_SW/Embedded/Common/report/report.h b/Software/Embedded_SW/Embedded/Common/report/report.h index 35253ce80..2d7e93ca5 100644 --- a/Software/Embedded_SW/Embedded/Common/report/report.h +++ b/Software/Embedded_SW/Embedded/Common/report/report.h @@ -130,6 +130,7 @@ void ReportResetReason(void); uint32_t OpenLogFile(void); uint32_t CloseLogFile(void); bool isReportActive(void); +uint32_t LogToFile(char *message, char *FileName, int LineNumber,int errorCode,int Severity,int parameter); /*************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index c8a11ce10..6ed149039 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -79,9 +79,9 @@ bool isReportActive(void) } uint32_t OpenLogFile(void) { - uint32_t Bytes = 0; - int len; - /*LogFresult = f_open(LogFileHandle,LogPath,FA_OPEN_ALWAYS | FA_WRITE | FA_READ); + /*int len; + uint32_t Bytes = 0; + LogFresult = f_open(LogFileHandle,LogPath,FA_OPEN_ALWAYS | FA_WRITE | FA_READ); if (LogFresult == FR_OK) { if (LogFileHandle->fsize < 100000) @@ -105,11 +105,12 @@ uint32_t LogToFile(char *message, /* The formatted message int Severity, /* user parameter no. 1 */ int parameter) { - uint32_t Bytes = 0; - int len; /* print user supplied error code */ - /* len = usnprintf(message, 300, "\r\n %s, file %s line %d code %d sev %d,param %d",message,FileName, LineNumber,errorCode, Severity, parameter); + /* uint32_t Bytes = 0; + int len; + + len = usnprintf(message, 300, "\r\n %s, file %s line %d code %d sev %d,param %d",message,FileName, LineNumber,errorCode, Severity, parameter); LogFresult = f_write(LogFileHandle,message,len,&Bytes );*/ return LogFresult; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h index fc3f88057..32a0dd8e0 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h @@ -8,7 +8,7 @@ #ifndef DRIVERS_I2C_COMMUNICATION_HEAD_CARD_HEATERS_HEAD_HEATERS_H_ #define DRIVERS_I2C_COMMUNICATION_HEAD_CARD_HEATERS_HEAD_HEATERS_H_ -#warning move to heaters enum + typedef enum { HEADCARD_HIT_ZN1, diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c index 8670a56b4..f659d965a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -74,21 +74,12 @@ void Trigger_Heater_Current_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; uint8_t Heater_i=0; - uint8_t Heater_Lim=0; - if(Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) - Heater_Lim = NUM_OF_CURRENT_HEATERS; - if(Head_Type == HEAD_TYPE_SYLKO) - Heater_Lim = HEAD_NUM_OF_ADC; - if(Head_Type == HEAD_TYPE_STAPLE_SPUN) - Heater_Lim = HEAD_NUM_OF_ADC; - - // for (Heater_i = 0;Heater_i < Heater_Lim;Heater_i++)//No need - reads all inputs at the same time - { - I2C_ReadingMessage.messageId = Heater_Current_Reading; - I2C_ReadingMessage.parameter = Heater_i; - if (I2C_ReadingMsgQ != NULL) - Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); - } + + I2C_ReadingMessage.messageId = Heater_Current_Reading; + I2C_ReadingMessage.parameter = Heater_i; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c index 59405be76..cf54019c5 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c +++ b/Software/Embedded_SW/Embedded/Drivers/Valves/Valve.c @@ -417,7 +417,7 @@ uint32_t Valve3WayCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callback_fptr callback) //direction: MidTank_Dispenser or Dispenser_Mixer { - uint32_t busy = false; + //uint32_t busy = false; //Report("Control3WayValvesWithCallback ",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)direction,0); if (Valve3WayControlId[_ValveId] != 0xFF) { @@ -432,7 +432,7 @@ uint32_t Control3WayValvesWithCallback (Valves_t _ValveId, bool direction, callb Report("Add control callback failed",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); //else // Report("Add control callback",__FILE__,__LINE__,(int)_ValveId,RpWarning,(int)Valve3WayControlId[_ValveId],0); - busy = FPGA_GetDispenserValveBusyOCD(_ValveId,0); + /*busy = */FPGA_GetDispenserValveBusyOCD(_ValveId,0); //Report("Set valve id, dir, busy",__FILE__,_ValveId,(int)direction,RpWarning,(int)busy,0); EnableDisableDispenserValve(_ValveId, ENABLE); diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c index 37c2280c9..bef2b1727 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/FlashProgram.c @@ -132,7 +132,7 @@ uint32_t ReadAppAndProgram(uint32_t ui32FlashStart,uint32_t ui32FileSize,void* b uint32_t EraseFlashSection(uint32_t ui32FlashStart,uint32_t ui32FileSize) { volatile uint32_t ui32Idx; - uint32_t status; + //uint32_t status; #ifdef FLASH_DEBUG Address[RxIndex] = ui32FlashStart; Size[RxIndex] = ui32FileSize; diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index da92b6fdf..393a366ac 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -53,6 +53,7 @@ #include "Modules/Control/MillisecTask.h" #include "Modules/Heaters/Heaters_ex.h" #include "Modules/Ids/Ids_ex.h" +#include "Modules/AlarmHandling/AlarmHandling.h" #include "StateMachines/Printing/PrintingSTM.h" #include "StateMachines/Initialization/InitSequence.h" diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 9fe67d773..03135c0d5 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -876,7 +876,6 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) { if (HeaterCheckReady()==false) { -#warning fit to new head with new alarms for (Heater_i=HEATER_TYPE__DryerAirHeater;Heater_i - +#include "Drivers/I2C_Communication/I2C_Task.h" +#include "Drivers/I2C_Communication/I2C.h" #include "modules/ids/ids_ex.h" /******************************************************************************** diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 35065cc2a..ec7650f3d 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -40,6 +40,7 @@ #include "drivers/I2C_Communication/DAC/Blower.h" #include "drivers/Valves/Valve.h" #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" +#include "Drivers/I2C_Communication/I2C.h" #include "drivers/Flash_ram/MCU_E2Prom.h" #include "StateMachines/Printing/PrintingSTM.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h index 05425cc45..b1d870919 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h @@ -17,6 +17,7 @@ extern int DCTimeSliceAllocation[HEATER_TYPE_MAX_HEATERS]; extern int NumberOFSlicesInUse; extern uint32_t MillisecondsPerChange; +void initializeArrays(void); typedef struct HeaterPIDControlConfigstruc { diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 237722779..0f6cb5124 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -68,6 +68,7 @@ uint32_t Heaters_Init(void) memset(HeaterControl,0,sizeof(HeaterControl)); for (i = 0;i HEAD_TYPE_SYLKO_WITHOUT_CARD) + { + HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = HEAD_PT100_ZONE_1_0X80_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = HEAD_PT100_ZONE_2_0X80_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = HEAD_PT100_ZONE_3_0X82_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = HEAD_PT100_ZONE_4_0X82_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = HEAD_PT100_ZONE_5_0X84_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD_PT100_ZONE_6_0X84_1; + HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = HEAD_PT100_MIXER_0X8E_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = HEAD_PT100_ZONE_7_0X86_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = HEAD_PT100_ZONE_8_0X86_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = HEAD_PT100_ZONE_9_0X88_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = HEAD_PT100_ZONE_10_0X88_1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = HEAD_PT100_ZONE_11_0X8A_0; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = HEAD_PT100_ZONE_12_0X8A_1; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = HEAD_PT100_AIR_HEATER_2_0X8C_1; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = HEAD_PT100_AIR_HEATER_1_0X8C_0 ; + + HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS; + HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1; + HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEAD_CURRENT_ZONE_1; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEAD_CURRENT_ZONE_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEAD_CURRENT_ZONE_3; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEAD_CURRENT_ZONE_4; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEAD_CURRENT_ZONE_5; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEAD_CURRENT_ZONE_6; + HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEAD_CURRENT_MIXER; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone7] = HEAD_CURRENT_ZONE_7; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone8] = HEAD_CURRENT_ZONE_8; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone9] = HEAD_CURRENT_ZONE_9; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone10] = HEAD_CURRENT_ZONE_10; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone11] = HEAD_CURRENT_ZONE_11; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone12] = HEAD_CURRENT_ZONE_12; + HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater1] = HEAD_CURRENT_HTIN_1; + HeaterId2CurrentId[HEATER_TYPE__HeadCoverHeater2] = HEAD_CURRENT_HTOT_1; + + } + else + { + HeaterId2PT100Id[HEATER_TYPE__DryerAirHeater] = DRYER_AIR_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerMainHeater] = DRYER_MAIN_PT100; + HeaterId2PT100Id[HEATER_TYPE__DryerSecondaryHeater] = DRYER_SECONDARY_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone1] = TEMP_SENSE_ANALOG_DYEINGH_TEMP1; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone2] = TEMP_SENSE_ANALOG_DYEINGH_TEMP2; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone3] = TEMP_SENSE_ANALOG_DYEINGH_TEMP3; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone4] = TEMP_SENSE_ANALOG_DYEINGH_TEMP4; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone5] = TEMP_SENSE_ANALOG_DYEINGH_TEMP5; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone6] = HEAD6_PT100; + HeaterId2PT100Id[HEATER_TYPE__MixerHeater] = MIXER_PT100; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone7] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone8] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone9] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone10] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone11] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeaterZone12] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater1] = 0xFF; + HeaterId2PT100Id[HEATER_TYPE__HeadCoverHeater2] = 0xFF; + + HeaterId2CurrentId[HEATER_TYPE__DryerAirHeater] = NUM_OF_CURRENT_HEATERS; + HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater] = HEATER_DRYER_CURRENT_1; + HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater] = HEATER_DRYER_CURRENT_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone1] = HEATER_HEAD_CURRENT_ZONE_1; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone2] = HEATER_HEAD_CURRENT_ZONE_2; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone3] = HEATER_HEAD_CURRENT_ZONE_3; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone4] = HEATER_HEAD_CURRENT_ZONE_4; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone5] = HEATER_HEAD_CURRENT_ZONE_5_6; + HeaterId2CurrentId[HEATER_TYPE__HeaterZone6] = HEATER_HEAD_CURRENT_ZONE_5_6; + HeaterId2CurrentId[HEATER_TYPE__MixerHeater] = HEATER_MIXCHIP_CURRENT; + + } +} uint32_t DryerInternalPT100Id = DRYER_AIR_PT100; bool HeatersRestart = false; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c index 2091b3bc5..765e183cb 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/StubRealTimeUsage.c @@ -46,7 +46,7 @@ void Stub_RealTimeUsageRequest(MessageContainer* requestContainer) StubRealTimeUsageResponse response = STUB_REAL_TIME_USAGE_RESPONSE__INIT; - response.n_percentile = 100; + response.n_percentile = 101; response.percentile = my_malloc(sizeof(response.percentile)*response.n_percentile); if (response.percentile) IdleTaskGetLoadTable(response.percentile); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 5dc354785..2a83f8425 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -31,7 +31,7 @@ #include "drivers/SSI_Comm/Dancer/Dancer.h" #include "drivers/motors/motor.h" #include "drivers/Flash_ram/MCU_E2Prom.h" - +#include "Drivers/I2C_Communication/I2C.h" #include "PMR/Stubs/StubHeatingTestRequest.pb-c.h" #include "PMR/Stubs/StubHeatingTestResponse.pb-c.h" #include "PMR/Stubs/StubHeatingTestPollRequest.pb-c.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 59b5642fb..fd53d6da2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -910,7 +910,7 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) void SetOriginMotorSpeed(float process_speed) { - int i,Motor_i, HW_Motor_Id; + int Motor_i, HW_Motor_Id; for (Motor_i = 0; Motor_i <= WINDER_MOTOR; Motor_i++) { HW_Motor_Id = ThreadMotorIdToMotorId[Motor_i]; @@ -1108,7 +1108,7 @@ char Endstr[150]; { int Motor_i; ThreadControlActive = false; - uint32_t status = OK,tempCtl; + uint32_t status = OK; usnprintf(Endstr, 100, "Total _processed length: Feeder: %d Pooler %d",(int)TotalProcessedLength,(int)PoolerTotalProcessedLength); SendJobProgress(0.0,0,false, Endstr); ReportWithPackageFilter(ThreadFilter,Endstr,__FILE__,__LINE__,(int)TotalProcessedLength,RpWarning,(int)PoolerTotalProcessedLength,0); @@ -1122,7 +1122,7 @@ char Endstr[150]; if (SpeedControlId != 0xFF) { if(RemoveControlCallback(SpeedControlId,ThreadLengthCBFunction)!=OK) - ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)SpeedControlId,0); + ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)ThreadLengthCBFunction,RpError,(int)SpeedControlId,0); SpeedControlId = 0xFF; } if (PoolerSpeedControlId != 0xFF) @@ -1134,7 +1134,6 @@ char Endstr[150]; for ( Motor_i = 0;Motor_i <= WINDER_MOTOR;Motor_i++) { - tempCtl = ControlIdtoMotorId[Motor_i]; if (ControlIdtoMotorId[Motor_i] != 0xFF) { status = RemoveControlCallback(ControlIdtoMotorId[Motor_i],ThreadControlCBFunction); @@ -1143,7 +1142,6 @@ char Endstr[150]; else ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)ControlIdtoMotorId[Motor_i],0); } - //ReportWithPackageFilter(ThreadFilter,"Remove Control",__FILE__,Motor_i,(int)status,RpError,(int)tempCtl,0); } Task_sleep(100); -- cgit v1.3.1 From 0d1c8e051bcbd1b05646301ffef59b48d9490e23 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 9 Feb 2020 18:43:35 +0200 Subject: improve powerstep and reglar, new process params, start of power management --- Software/Embedded_SW/Embedded/DataDef.h | 4 +- .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 80 +++++++++++++++++----- .../I2C_Communication/WHS_Card/EEPROM/WHS_EEPROM.c | 7 ++ .../Embedded/Modules/Diagnostics/Diagnostics.c | 17 +++++ .../Embedded_SW/Embedded/Modules/General/process.c | 49 +++++-------- .../Embedded/Modules/Heaters/Heaters_ex.h | 1 + .../Embedded/Modules/Heaters/Heaters_init.c | 7 +- .../Embedded/Modules/Heaters/Heaters_print.c | 27 ++++++-- .../Embedded/Modules/Stubs_Handler/Progress.c | 28 +++++--- .../Embedded/Modules/Thread/Thread_init.c | 3 +- 10 files changed, 157 insertions(+), 66 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index a1d9fe52d..32e149968 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -19,11 +19,11 @@ #define NO_INITIAL_HEATING #define MAX_STRING_LEN 255 //Embedded version + filter.c -#define WATCHDOG +//#define WATCHDOG //#define FPGA_WATCHDOG_DISABLE -//#define USE_POWERSTEP01 +#define USE_POWERSTEP01 //#define SPECIAL_DISPENSERS #define Use_Head_Card //for real card only diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index 259b0a1fc..01a14825b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -146,26 +146,71 @@ uint8_t FPGA_SPI_Receive(TimerMotors_t _motorId) //---------------- GET ------------------------------ -void Read_Motors_Driver_ADC(TimerMotors_t i) +void Read_Motors_Driver_ADC(void) { - SysCtlDelay(12000); - Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; - FPGA_SPI_Transnit(i); - SysCtlDelay(12000); - FPGA_Get_Res(i); - MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + static bool first_time_flag = true; + + int i; + + if(first_time_flag == true) + { + + for(i=0; i < 25; i++) + { + + Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; + FPGA_SPI_Transnit(i); + } + + delayms(45); + + for(i=0; i < 25; i++) + { + FPGA_Get_Res(i); + MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + if(MotorDriverResponse[i].ADC == 0) + { + Change_Motor_SPI_Direction(i,Current_Or_Voltage); + } + + } + + delayms(45); + + for(i=0; i < 25; i++) + { + + if(MotorDriverResponse[i].ADC == 0) + { + Fpga_Spi[i].TX_MOSI = (x_GET_PARAM | x_ADC_OUT)<<8; + FPGA_SPI_Transnit(i); + } + } + + delayms(45); + + for(i=0; i < 25; i++) + { + if(MotorDriverResponse[i].ADC == 0) + { + FPGA_Get_Res(i); + MotorDriverResponse[i].ADC = Fpga_Spi[i].RX_MISO; + } + } + + first_time_flag = false; + } } uint32_t Read_Motors_Driver_Type(TimerMotors_t i) { uint32_t status = OK; -#ifdef USE_POWERSTEP01 +//#ifdef USE_POWERSTEP01 //First communicate with powerSTEP01 - Read_Motors_Driver_ADC(i); - //if((MotorDriverResponse[i].ADC >= 22) && (MotorDriverResponse[i].ADC < 26)) // //(powerSTEP01, ADC = 24) + if((MotorDriverResponse[i].ADC >= 22) && (MotorDriverResponse[i].ADC < 26)) // //(powerSTEP01, ADC = 24) { MotorDriverResponse[i].DriverType = CombinrdMotDriver; //default for dispensers, dryer-LID and DH-LID Voltage mode, for other motors Current mode @@ -174,16 +219,16 @@ uint32_t Read_Motors_Driver_Type(TimerMotors_t i) else MotorDriverResponse[i].DriverMode = Current; } - //else -#else + else +//#else { //Change the SPI direction and check if this driver is Current or Voltage - if(MotorDriverResponse[i].DriverType == UnKnownMotDriver) +/* if(MotorDriverResponse[i].DriverType == UnKnownMotDriver) { Change_Motor_SPI_Direction(i,Current_Or_Voltage); } delayms(5); - Read_Motors_Driver_ADC(i); + Read_Motors_Driver_ADC(i);*/ if((MotorDriverResponse[i].ADC >= 9) && (MotorDriverResponse[i].ADC < 13)) { @@ -204,7 +249,7 @@ uint32_t Read_Motors_Driver_Type(TimerMotors_t i) status = ERROR; } } -#endif +//#endif return status; } @@ -426,16 +471,17 @@ void FPGA_SetMotorsInit() { uint8_t i=0; + Read_Motors_Driver_ADC(); for(i=0;i HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + AcVoltage = ReadVAC(); + DiagnosticsMonitor.whsblower2voltage = &AcVoltage; + DiagnosticsMonitor.n_whsblower2voltage = 1; + } +*/ + } @@ -526,6 +536,13 @@ void DiagnosticOneSecCollection(void) int i; memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + AcVoltage = ReadVAC(); + DiagnosticsMonitor.whsblower2voltage = &AcVoltage; + DiagnosticsMonitor.n_whsblower2voltage = 1; + } + if (Head_Type == HEAD_TYPE_SYLKO_WITHOUT_CARD) { DiagnosticLoadTemperature(HARDWARE_PID_CONTROL_TYPE__MixerHeater, MillisecGetTemperatures( MIXER_PT100)); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 5bfc46559..ad53149f0 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -63,6 +63,10 @@ void HeatersStopControlOnHeatersOff(ProcessParameters* ProcessParams) HeatersControlStop(); REPORT_MSG(temp_sum,"Heating control off - temperatures off"); } + else + { + HeatersControlStart(); + } } uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) { @@ -107,7 +111,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone1temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, true,ProcessParams->headzone1temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone1temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->headzone1temp); #endif @@ -115,7 +119,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ1, false,ProcessParams->headzone1temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, false,ProcessParams->headzone1temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->headzone1temp); #endif @@ -123,7 +127,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone2temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, true,ProcessParams->headzone2temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, true,ProcessParams->headzone2temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->headzone2temp); #endif @@ -131,7 +135,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ2, false,ProcessParams->headzone2temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ8, false,ProcessParams->headzone2temp); status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->headzone2temp); #endif @@ -139,56 +143,56 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams->headzone3temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, true,ProcessParams->headzone3temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, true,ProcessParams->headzone3temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ3, false,ProcessParams->headzone3temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ9, false,ProcessParams->headzone3temp); #endif } if (ProcessParams->headzone4temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, true,ProcessParams->headzone4temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, true,ProcessParams->headzone4temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ4, false,ProcessParams->headzone4temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ10, false,ProcessParams->headzone4temp); #endif } if (ProcessParams->headzone5temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, true,ProcessParams->headzone5temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, true,ProcessParams->headzone5temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ5, false,ProcessParams->headzone5temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ11, false,ProcessParams->headzone5temp); #endif } if (ProcessParams->headzone6temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, true,ProcessParams->headzone6temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, true,ProcessParams->headzone6temp); #endif } else { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ6, false,ProcessParams->headzone6temp); -#ifdef Use_Head_Card +#ifdef rUse_Head_Card status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ12, false,ProcessParams->headzone6temp); #endif } @@ -196,24 +200,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, true,ProcessParams->dryerzone1temp); else status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__DryerAirTemperature, false,ProcessParams->dryerzone1temp); -/* if (ProcessParams->dryerzone2temp) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, true, - ProcessParams->dryerzone2temp); - else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, false, - ProcessParams->dryerzone2temp); - if (ProcessParams->dryerzone3temp) - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, true, - ProcessParams->dryerzone3temp); - else - status |= HeaterCommandRequestMessage( - HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary, false, - ProcessParams->dryerzone3temp); - */ - /* if (ProcessParams->headzone7temp>1) + if (ProcessParams->headzone7temp>1) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadHeaterZ7, true,ProcessParams->headzone7temp); } @@ -277,7 +264,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) { status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->stspzone2temp); } -*/ + HeatersStopControlOnHeatersOff(ProcessParams); dyeingspeed = ProcessParams->dyeingspeed; dryerbufferlength = ProcessParams->dryerbufferlength; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index bcc19bd6f..0c6ee94ee 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -12,6 +12,7 @@ extern EventType HeaterEventType[HEATER_TYPE_MAX_HEATERS]; extern EventType HeaterUnderEventType[HEATER_TYPE_MAX_HEATERS]; extern EventType HeaterUnderEventType_B[HEATER_TYPE_MAX_HEATERS]; +extern uint32_t stub_heating_limit; //uint32_t HeaterCommandRequestMessage(MessageContainer* requestContainer); uint32_t HeaterConfigRequestMessage(HardwarePidControl* request); uint32_t HeaterConfigSetSharedHeatersParams (uint32_t outputproportionalcycletime, uint32_t outputproportionalsinglestep); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 0f6cb5124..349d5a5e3 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -186,11 +186,12 @@ uint32_t HeaterConfigSetSharedHeatersParams(uint32_t outputproportionalcycletime * * parameters - the cycle time for the coordinated operation, the size (in MCU cycles) of a single step. */ +uint32_t stub_heating_limit = 100; uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_outputproportionalpowerlimit) { int Slice_i; int Heater1000Slices,Heater200aSlices /*,Heater200bSlices Currently both 200W heaters will work together*/; - + uint32_t stub_outputproportionalpowerlimit = new_outputproportionalpowerlimit; if (NumberOFSlicesInUse > MAX_TIMESLICES ) { @@ -198,8 +199,10 @@ uint32_t HeaterRecalculateSharedHeatersParams(uint32_t deviceId, uint32_t new_ou return ERROR;//NumberOFSlicesInUse = MAX_TIMESLICES; } + if (stub_outputproportionalpowerlimit > stub_heating_limit) + stub_outputproportionalpowerlimit = stub_heating_limit; // all numbers are rounded down. better to have carefully calculated numbers - HeaterControl[deviceId].outputproportionalpowerlimit = new_outputproportionalpowerlimit;///100; + HeaterControl[deviceId].outputproportionalpowerlimit = stub_outputproportionalpowerlimit;///100; Heater1000Slices = HeaterControl[HEATER_TYPE__DryerMainHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100; Heater200aSlices = HeaterControl[HEATER_TYPE__DryerSecondaryHeater].outputproportionalpowerlimit * NumberOFSlicesInUse / 100; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 2ee7a3d2a..d84098469 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -469,8 +469,8 @@ uint32_t HeatersSingleHeaterEnd(int HeaterId) } DeActivateHeater(HEATER_TYPE__DryerMainHeater); DeActivateHeater(HEATER_TYPE__DryerSecondaryHeater); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); HeaterPIDConfig[HeaterId].m_SetParam = 0; HeaterCmd[HeaterId].targettemperatue = 0; HeaterReady[HeaterId] = true; @@ -1167,8 +1167,8 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) Control_Voltage_To_Blower(BlowerCfg.voltage); } HeaterReady[index] = true; - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); - Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); + //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerSecondaryHeater]); } return OK; @@ -1473,6 +1473,23 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y) } return OK; } +bool UseSecondaryDrierHeater = true; +uint32_t DrierHeaterVlotageSetup(double voltage) +{ + uint32_t status = OK; + double DrierAcVoltage = 0.0; + if (Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD) //rapid/pp machines + { + DrierAcVoltage = ReadVAC(); + //if () + + } + else + { + UseSecondaryDrierHeater = true; + } + +} uint32_t HeatersControlLoop(uint32_t tick) { //char str[100]; @@ -1500,7 +1517,7 @@ uint32_t HeatersControlLoop(uint32_t tick) if (AcHeaterDisaster == false) { - if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true) + //if (HeaterReady[HEATER_TYPE__DryerAirHeater] == true) { if (TimeSliceAllocation[SliceCounter] == HEATER_TYPE__DryerMainHeater) { diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index dbe46db97..03beac151 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -27,6 +27,7 @@ #include "Modules/IDS/ids_ex.h" #include "Modules/Control/MillisecTask.h" #include "modules/thread/thread_ex.h" +#include "modules/heaters/heaters_ex.h" #include #include #include @@ -531,21 +532,32 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) if(request->amount == 0xB3) //fast refresh for pressure { LOG_ERROR(request->amount,"keep alive test"); - //keepalivetest = true; response.progress = keepalivetest; response.has_progress = true; } else - if(request->amount == 0xB4) //fast refresh for pressure - { - LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init"); - IDS_Dispenser_Content_Init(); - //keepalivetest = true; - response.progress = keepalivetest; - response.has_progress = true; + if(request->amount == 0xB4) //fast refresh for pressure + { + LOG_ERROR(request->amount,"IDS_Dispenser_Content_Init"); + IDS_Dispenser_Content_Init(); + response.progress = keepalivetest; + response.has_progress = true; + } + else + if(request->amount == 0xB5) //fast refresh for pressure + { + if (request->delay<=100) + { + LOG_ERROR(request->delay,"set stub_heating_limit"); + stub_heating_limit = request->delay; } + response.progress = request->delay; + response.has_progress = true; + + } + else if((request->amount == 0xDF) && (request->delay == 0xDF)) //Power off { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index e53adabb7..ec705c2d2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -73,7 +73,8 @@ uint32_t MotorsConfigMessage(HardwareConfiguration * HWrequest) MotorsCfg[Motor_i].pulseperround = request->pulseperround; MotorsCfg[Motor_i].pulleyradius = request->pulleyradius; MotorsCfg[Motor_i].configword = request->configword; - /*if(MotorDriverResponse[Motor_i].DriverType == CombinrdMotDriver) + MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize;//L6470 + L6472 +/* if(MotorDriverResponse[Motor_i].DriverType != CombinrdMotDriver) { MotorsCfg[Motor_i].directionthreadwize = request->directionthreadwize ^ 1;//PowerSTEP01 } -- cgit v1.3.1