From 31476e863ec157682861d227ea0e23c7690cb65d Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 16 Oct 2018 08:45:20 +0300 Subject: small changes, remove debug data in thread_print --- Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 023e0dfc8..d2bbad72b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -14,7 +14,6 @@ #include "PMR/Hardware/HardwareDancerType.pb-c.h" #include "PMR/Printing/JobSegment.pb-c.h" #include "PMR/Printing/JobTicket.pb-c.h" -#include "PMR/common/ErrorCode.pb-c.h" #include #include @@ -311,14 +310,14 @@ uint32_t ThreadControlSpeedReadFunction(uint32_t IfIndex, uint32_t ReadValue) } return OK; } -double calculatedError[1000]; //double eNormalizedError[100]; +//int TranslatedreadValue[100]; +/*double calculatedError[1000]; int MotorId[1000]; int readValue[1000]; -//int TranslatedreadValue[100]; int AveragereadValue[1000]; int calculatedspeed[1000]; -int timestamp[1000]; +int timestamp[1000];*/ int controlIndex = 0; bool keepdata = true; /*int32_t KeepReadValue = 0; @@ -479,19 +478,17 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) }*/ if (abs(calculated_speed-CurrentControlledSpeed[index])>2) { - if (keepdata == true) + /*if (keepdata == true) { calculatedError[controlIndex] = MotorControlConfig[index].m_calculatedError; - //double eNormalizedError[100]; MotorId[controlIndex] = index; readValue[controlIndex] = ReadValue; - //int TranslatedreadValue[100]; AveragereadValue[controlIndex] = avreageSampleValue; calculatedspeed[controlIndex] = calculated_speed; timestamp[controlIndex] = HibernateRTCSSGet(); if (controlIndex++>=999) controlIndex = 0; - } + }*/ CurrentControlledSpeed[index] = calculated_speed; MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed); } -- cgit v1.3.1 From 1d2d783fdbbd6500e9b89f4c628affc190ff2b8d Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 16 Oct 2018 09:08:16 +0300 Subject: heaters correction --- Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h | 12 ------------ .../Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c | 1 - .../Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 16 ++++++++++++++-- .../Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 15 --------------- 4 files changed, 14 insertions(+), 30 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h index 3b357ce11..f7a2f3079 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h @@ -50,20 +50,8 @@ typedef struct HeaterCommandstruc uint32_t targettemperatue; }HeaterCommand; -typedef struct -{ - bool m_isEnabled; - float m_SetParam; - float m_mesuredParam; - float m_preError; - float m_integral; - float m_calculatedError; - bool m_isReady; - PID_Config_Params m_params; -}HeaterControlConfig_t; extern HeaterPIDControlConfig HeaterControl[MAX_HEATERS_NUM]; -extern HeaterControlConfig_t HeaterPIDConfig[MAX_HEATERS_NUM]; extern HeaterCommand HeaterCmd[MAX_HEATERS_NUM]; extern uint32_t Heater_timerBase; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 87a202469..e862107ff 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -46,7 +46,6 @@ typedef enum { /******************** GLOBAL PARAMETERS ********************************************/ HeaterPIDControlConfig HeaterControl[MAX_HEATERS_NUM] = {0,0,0,0,0,0,0,0,0,0,0,0}; -HeaterControlConfig_t HeaterPIDConfig[MAX_HEATERS_NUM] = {0,0,0,0,0,0,0,0,0,0,0,0}; bool AcHeaterConfigured[MAX_AC_HEATERS] = {0,0,0}; int NumberOFSlicesInUse = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 08a86ac39..3caf91de4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -41,6 +41,18 @@ typedef struct HeatersControlMessage{ uint32_t tick; uint8_t messageData[20]; }HeatersControlMessageStruc; +typedef struct +{ + bool m_isEnabled; + float m_SetParam; + float m_mesuredParam; + float m_preError; + float m_integral; + float m_calculatedError; + bool m_isReady; + PID_Config_Params m_params; +}HeaterControlConfig_t; +HeaterControlConfig_t HeaterPIDConfig[MAX_HEATERS_NUM] = {0,0,0,0,0,0,0,0,0,0,0,0}; /******************** GLOBAL PARAMETERS ********************************************/ HeaterCommand HeaterCmd[MAX_HEATERS_NUM]; @@ -522,7 +534,7 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) //check only for the proportional band limits HeaterPIDConfig[index].m_calculatedError = PIDAlgorithmCalculation(HeaterPIDConfig[index].m_SetParam , HeaterPIDConfig[index].m_mesuredParam, &HeaterPIDConfig[index].m_params, &HeaterPIDConfig[index].m_preError, &HeaterPIDConfig[index].m_integral); - //HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, (int)(HeaterPIDConfig[index].m_calculatedError)); + //HeaterRecalculateSharedHeatersParams(HARDWARE_PID_CONTROL_TYPE__DryerHeaterMain, (int)(HeaterPIDConfig[index].m_calculatedError/100)); } @@ -618,7 +630,7 @@ uint32_t DCHeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) // Report(logmsg[index],__FILE__,__LINE__,index,RpWarning,index, Counter[index]); //#warning PID is now only proportional (above) - //HeaterRecalculateHeaterParams(index, (int)(HeaterPIDConfig[index].m_calculatedError)); + //HeaterRecalculateHeaterParams(index, (int)(HeaterPIDConfig[index].m_calculatedError/100)); } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index d2bbad72b..503ef2c37 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -461,21 +461,6 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //KeepNormalizedError = NormalizedError; } calculated_speed = (1-MotorControlConfig[index].m_calculatedError)*OriginalMotorSpd_2PPS[index]; - /*if (index == FEEDER_MOTOR) - { - if (KeepReadValue != TranslatedReadValue) - { - eNormalizedError[controlIndex] = NormalizedError; - calculatedError[controlIndex] = MotorControlConfig[index].m_calculatedError; - readValue[controlIndex] = ReadValue; - TranslatedreadValue[controlIndex] = TranslatedReadValue; - AveragereadValue[controlIndex] = avreageSampleValue; - calculatedspeed[controlIndex] = calculated_speed; - controlIndex++; - if (controlIndex >= 99) controlIndex = 0; - KeepReadValue = TranslatedReadValue; - } - }*/ if (abs(calculated_speed-CurrentControlledSpeed[index])>2) { /*if (keepdata == true) -- cgit v1.3.1 From 6ecc58f3c47fbb10250253e14e35a75023dd7998 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 16 Oct 2018 09:37:33 +0300 Subject: job error reporting. validate process parameters --- .../Embedded_SW/Embedded/Modules/General/process.c | 25 +++++++------- .../Embedded/Modules/Thread/Thread_Winder.c | 2 +- .../Embedded/Modules/Thread/Thread_print.c | 5 ++- .../Embedded/StateMachines/Printing/JobSTM.c | 38 +++++++++++++++------- 4 files changed, 43 insertions(+), 27 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 8fc9434cb..b56162bea 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -33,6 +33,18 @@ ProcessParameters* ProcessParametersKeep; uint32_t HandleProcessParameters(ProcessParameters* ProcessParams) { uint32_t status = 0; + if (ProcessParams->dryerzone1temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->dryerzone2temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->dryerzone3temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->mixertemp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->headzone1temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->headzone2temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->headzone3temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->headzone4temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->headzone5temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (ProcessParams->headzone6temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; + if (status != 0) + return status; if (ProcessParams) { ProcessParametersKeep = ProcessParams; @@ -127,7 +139,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams) headairflow = ProcessParams->headairflow; dryerairflow = ProcessParams->dryerairflow; - return OK;//status; + return status;//status; } void ProcessRequestFunc(MessageContainer* requestContainer) @@ -148,17 +160,6 @@ void ProcessRequestFunc(MessageContainer* requestContainer) REPORT_MSG (ProcessParams->dryerzone1temp,"Process Params Dryer"); - if (ProcessParams->dryerzone1temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->dryerzone2temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->dryerzone3temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->mixertemp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->headzone1temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->headzone2temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->headzone3temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->headzone4temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->headzone5temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (ProcessParams->headzone6temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; - if (status == 0) status = HandleProcessParameters(ProcessParams); if (status) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index ccc9623a3..c7dd4f7ae 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -107,7 +107,7 @@ uint32_t Winder_PrepareStage2(uint32_t deviceID, uint32_t ReadValue) uint32_t status=OK; uint32_t numOfSteps = InternalWinderCfg.startoffsetpulses*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].microstep; - MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_SCREW,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].maxfrequency); + MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_SCREW,InternalWinderCfg.segmentoffsetpulses); //REPORT_MSG(numOfSteps, "Winder_PrepareStage2"); REPORT_MSG(MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].maxfrequency, "Winder_PrepareStage2"); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 023e0dfc8..7ff72f057 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -14,7 +14,6 @@ #include "PMR/Hardware/HardwareDancerType.pb-c.h" #include "PMR/Printing/JobSegment.pb-c.h" #include "PMR/Printing/JobTicket.pb-c.h" -#include "PMR/common/ErrorCode.pb-c.h" #include #include @@ -479,7 +478,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) }*/ if (abs(calculated_speed-CurrentControlledSpeed[index])>2) { - if (keepdata == true) + /*if (keepdata == true) { calculatedError[controlIndex] = MotorControlConfig[index].m_calculatedError; //double eNormalizedError[100]; @@ -491,7 +490,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) timestamp[controlIndex] = HibernateRTCSSGet(); if (controlIndex++>=999) controlIndex = 0; - } + }*/ CurrentControlledSpeed[index] = calculated_speed; MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed); } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index 0b85fbd87..72eea34d7 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -315,13 +315,17 @@ void JobAbortFunc(MessageContainer* requestContainer) } double previousJobLength; +char ErrorMsg[100]; //******************************************************************************************************************** void JobRequestFunc(MessageContainer* requestContainer) { uint32_t status = NOT_SUPPORTED; MessageContainer responseContainer; uint8_t* container_buffer; + ErrorCode error = ERROR_CODE__NONE; + int len; + len = usnprintf(ErrorMsg, 100, "GJM"); /*if (CurrentJobRequest!= NULL) job_request__free_unpacked(CurrentJobRequest,NULL); @@ -338,6 +342,8 @@ void JobRequestFunc(MessageContainer* requestContainer) { LOG_ERROR (TicketSize, "job ticket message too long"); status = FAILED; + error = ERROR_CODE__BAD_CRC; + len = usnprintf(ErrorMsg, 100, "job ticket message too long"); } else { @@ -347,10 +353,23 @@ void JobRequestFunc(MessageContainer* requestContainer) status = PASSED; if (Ticket->processparameters) - HandleProcessParameters(Ticket->processparameters); + { + if (HandleProcessParameters(Ticket->processparameters)!= OK) + { + status = FAILED; + error = ERROR_CODE__INVALID_PARAMETER; + len = usnprintf(ErrorMsg, 100, "Hardware Parameters Not Set"); + } + } if (Ticket->spool) - InternalWindingConfigMessage(Ticket->spool); - + { + if (InternalWindingConfigMessage(Ticket->spool)!= OK) + { + status = FAILED; + error = ERROR_CODE__INVALID_PARAMETER; + len = usnprintf(ErrorMsg, 100, "spool parameters error"); + } + } // PrepareWaiting[Module_Heaters] = ModuleWaiting; } if (status == PASSED) @@ -365,9 +384,9 @@ void JobRequestFunc(MessageContainer* requestContainer) JobStatus jobStatus = JOB_STATUS__INIT; if (status == PASSED) { - char Msg[13] = "Job Accepted"; + len = usnprintf(ErrorMsg, 100, "Job Accepted"); - jobStatus.message =Msg; + jobStatus.message =ErrorMsg; jobStatus.has_progress = true; jobStatus.progress = 0.0; jobStatus.has_currentsegmentindex = false; @@ -378,10 +397,7 @@ void JobRequestFunc(MessageContainer* requestContainer) } else { - char Msg[25] = "Job message too large"; - - - jobStatus.message = Msg; + jobStatus.message = ErrorMsg; jobStatus.has_progress = true; jobStatus.progress = 0.0; jobStatus.has_currentsegmentindex = false; @@ -389,9 +405,9 @@ void JobRequestFunc(MessageContainer* requestContainer) response.has_canceled = true; response.canceled = true; responseContainer = createContainer(MESSAGE_TYPE__JobResponse, JobToken, true, &response, &job_response__pack, &job_response__get_packed_size); - container_buffer = malloc(message_container__get_packed_size(&responseContainer)); responseContainer.has_error = true; - responseContainer.error = ERROR_CODE__BAD_CRC; + responseContainer.error = error; + container_buffer = malloc(message_container__get_packed_size(&responseContainer)); } if (container_buffer) { -- cgit v1.3.1