From ffbe0df145c04bc9e39d5db162a49928ae205da3 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 23 Feb 2020 15:41:29 +0200 Subject: switch ADC line 16 and 17 (drier 1, drier 2). pt100 error is a BIT failure. dancer status, and use low dancer values and 0x3FFF (for dancer rollover) --- .../Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 14 ++++++-------- 1 file changed, 6 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 1dd101f82..9e0a2ac7f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -442,7 +442,6 @@ void testDancersControl() ThreadControlActive = false; } #endif -bool dancerinvalid = false; int MotorFailedSample[MAX_THREAD_MOTORS_NUM] = {0,0,0,0,0}; char TMessage[150]; //char time[150]; @@ -481,21 +480,20 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //if (MotorDriverResponse[ThreadMotorIdToMotorId[index]].Busy == true) // return OK; DancerId = ThreadMotorIdToDancerId[index]; - if (ReadValue < 10) +/* if (ReadValue < 10) { MotorFailedSample[index]++; ReportWithPackageFilter(ThreadFilter,"Dancer value read too small.",__FILE__,__LINE__,DancerId,RpError,ReadValue,0); return OK; - } + }*/ if (ReadValue == 0x3FFF) { - MotorFailedSample[index]++; - if (dancerinvalid == false) + if (Read_Dryer_Status(DancerId) != OK) { - dancerinvalid = true; - ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,__LINE__,(int)IfIndex,RpError,(int)ReadValue,0); + ReportWithPackageFilter(ThreadFilter,"Dancer value invalid.",__FILE__,ReadValue,(int)DancerId,RpError,(int)Read_Dryer_Status(DancerId),0); + MotorFailedSample[index]++; + return OK; } - return OK; } KeepReadValue = ReadValue; TranslatedReadValue = ReadValue - DancersCfg[DancerId].zeropoint; -- cgit v1.3.1 From e4b6aae111fefea65835cf2a40089fb8528fe588 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 24 Feb 2020 10:02:36 +0200 Subject: EC PT100 upper limit lowered. fix short jog screw alarm, improve current measurement --- .../Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 2 +- .../Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 13 ++++++++++--- .../Embedded/StateMachines/Initialization/InitSequence.c | 6 +++++- 3 files changed, 16 insertions(+), 5 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 5434765e1..bc0d1002b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -320,7 +320,7 @@ uint32_t HeatersTestInternalAlarmsCBFunction(uint32_t IfIndex, uint32_t readValu } readValue = MillisecGetTemperatures(InternalId2PT100Id[index]); - if((MINIMUM_HEATER_READ*100>=readValue)||(270.00*100 < readValue)) + if((MINIMUM_HEATER_READ*100>=readValue)||(200.00*100 < readValue)) { //ReportWithPackageFilter(HeatersFilter,"PT100 not working properly",__FILE__,__LINE__,HeaterId,RpError, 0,0); return ERROR; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 78092ae2b..78150e9f9 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -213,9 +213,16 @@ uint32_t Winder_PrepareStage2(uint32_t deviceID, uint32_t ReadValue) REPORT_MSG(millisecondCounter/*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].maxfrequency*/, "Winder_PrepareStage2"); if (ReadValue != LIMIT) { - LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!"); - //returned with a timeout - Winder_ScrewAtOffsetCallback(0,0); + if (JobIsActive()==true) + { + LOG_ERROR(ReadValue,"Screw failed to reach the limit switch!!"); + //returned with a timeout + Winder_ScrewAtOffsetCallback(0,0); + } + else //short jog, etc + { + AlarmHandlingSetAlarm (EVENT_TYPE__SCREW_MOTOR_LIMIT_TIMEOUT,OFF); //on a short jog, this callback will be called without need + } } else { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 20780b8c1..92f22b0ac 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -222,6 +222,7 @@ double MainCurrent,SecondaryCurrent,StableCurrent; double InitDrierAcVoltage = 0.0; int InitDrierAcVoltageCount = 0; double Zone2Resistance = 0.0; +int WaitForCurrentRaise = 0;//let the heater current raise void InitCurrentReadingStable(void) { memset(Heater_Current,0,sizeof(Heater_Current)); @@ -229,8 +230,9 @@ void InitCurrentReadingStable(void) count_Heater_Current = 0; Maxcount_Heater_Current = 0; StableCurrent = 0.0; + WaitForCurrentRaise = 0; } - +#define MaxStabilization 10 bool DetectIfCurrentReadingStable(double HeaterCurrent) { bool ret = false; @@ -268,6 +270,8 @@ uint32_t PowerManagementCallBack(uint32_t IfIndex, uint32_t BusyFlag) { ReportWithPackageFilter(InitFilter,"PowerManagementCallBack", __FILE__,MainHeaterStable,(int)(SecondaryHeaterStable), RpMessage, Maxcount_Heater_Current, 0); ReportWithPackageFilter(InitFilter,"PowerManagementCallBack", __FILE__,GetHeaterState(HEATER_TYPE__DryerMainHeater),(int)(GetHeaterState(HEATER_TYPE__DryerSecondaryHeater)), RpMessage, Maxcount_Heater_Current, 0); + if (WaitForCurrentRaise++ < MaxStabilization) + return OK; if ((MainHeaterStable == false)&&(Maxcount_Heater_Current Date: Thu, 27 Feb 2020 13:54:57 +0200 Subject: Version 1.4.6.14 - new RML --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Communication/PMR/Printing/JobSpool.pb-c.c | 19 +- .../Communication/PMR/Printing/JobSpool.pb-c.h | 4 +- .../Communication/PMR/Printing/JobTicket.pb-c.c | 19 +- .../Communication/PMR/Printing/JobTicket.pb-c.h | 4 +- .../PMR/Printing/ProcessParameters.pb-c.c | 48 +++-- .../PMR/Printing/ProcessParameters.pb-c.h | 14 +- .../PMR/Printing/ThreadParameters.pb-c.c | 196 +++++++++++++++++++++ .../PMR/Printing/ThreadParameters.pb-c.h | 88 +++++++++ Software/Embedded_SW/Embedded/DataDef.h | 6 + .../Embedded/Drivers/I2C_Communication/I2C.h | 1 + .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 19 ++ .../Main_Board_EEPROM/Main_EEPROM.c | 11 +- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c | 27 ++- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h | 4 +- .../Embedded/Drivers/flash_ram/MCU_E2Prom.c | 16 +- .../Embedded/Drivers/flash_ram/MCU_E2Prom.h | 18 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 4 +- .../Modules/Diagnostics/DiagnosticActions.c | 8 +- .../Embedded/Modules/General/GeneralHardware.c | 4 +- .../Embedded_SW/Embedded/Modules/General/process.c | 23 ++- .../Embedded/Modules/Stubs_Handler/Progress.c | 6 +- .../Embedded/Modules/Thread/ThreadLoad.c | 6 +- .../Embedded/Modules/Thread/Thread_print.c | 40 +++++ .../StateMachines/Initialization/InitSequence.c | 40 +++++ .../StateMachines/Initialization/PowerIdle.c | 4 + .../Initialization/PowerOffSequence.c | 6 +- .../Embedded/StateMachines/Printing/JobSTM.c | 7 + 28 files changed, 567 insertions(+), 77 deletions(-) create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.c create mode 100644 Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.h (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') 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 3cf96dd03..51540cf50 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,4,6,13}; +TangoVersion_t _gTangoVersion = {1,4,6,14}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c index d41bb4eff..693d619df 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.c @@ -52,7 +52,7 @@ void job_spool__free_unpacked assert(message->base.descriptor == &job_spool__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor job_spool__field_descriptors[9] = +static const ProtobufCFieldDescriptor job_spool__field_descriptors[10] = { { "JobSpoolType", @@ -162,6 +162,18 @@ static const ProtobufCFieldDescriptor job_spool__field_descriptors[9] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "LimitSwitchStartPointOffset", + 10, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(JobSpool, has_limitswitchstartpointoffset), + offsetof(JobSpool, limitswitchstartpointoffset), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned job_spool__field_indices_by_name[] = { 6, /* field[6] = BackingRate */ @@ -169,6 +181,7 @@ static const unsigned job_spool__field_indices_by_name[] = { 3, /* field[3] = Diameter */ 0, /* field[0] = JobSpoolType */ 1, /* field[1] = Length */ + 9, /* field[9] = LimitSwitchStartPointOffset */ 4, /* field[4] = RotationsPerPassage */ 7, /* field[7] = SegmentOffsetPulses */ 5, /* field[5] = StartOffsetPulses */ @@ -177,7 +190,7 @@ static const unsigned job_spool__field_indices_by_name[] = { static const ProtobufCIntRange job_spool__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 9 } + { 0, 10 } }; const ProtobufCMessageDescriptor job_spool__descriptor = { @@ -187,7 +200,7 @@ const ProtobufCMessageDescriptor job_spool__descriptor = "JobSpool", "", sizeof(JobSpool), - 9, + 10, job_spool__field_descriptors, job_spool__field_indices_by_name, 1, job_spool__number_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h index c7fd89869..fedeea16a 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobSpool.pb-c.h @@ -45,10 +45,12 @@ struct _JobSpool int32_t segmentoffsetpulses; protobuf_c_boolean has_bottombackingrate; int32_t bottombackingrate; + protobuf_c_boolean has_limitswitchstartpointoffset; + int32_t limitswitchstartpointoffset; }; #define JOB_SPOOL__INIT \ { PROTOBUF_C_MESSAGE_INIT (&job_spool__descriptor) \ - , 0, JOB_SPOOL_TYPE__StandardSpool, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , 0, JOB_SPOOL_TYPE__StandardSpool, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } /* JobSpool methods */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c index 70d17789c..68f833aa7 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.c @@ -52,7 +52,7 @@ void job_ticket__free_unpacked assert(message->base.descriptor == &job_ticket__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor job_ticket__field_descriptors[14] = +static const ProtobufCFieldDescriptor job_ticket__field_descriptors[15] = { { "Guid", @@ -222,6 +222,18 @@ static const ProtobufCFieldDescriptor job_ticket__field_descriptors[14] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "ThreadParameters", + 15, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_MESSAGE, + 0, /* quantifier_offset */ + offsetof(JobTicket, threadparameters), + &thread_parameters__descriptor, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned job_ticket__field_indices_by_name[] = { 2, /* field[2] = EnableInterSegment */ @@ -236,13 +248,14 @@ static const unsigned job_ticket__field_indices_by_name[] = { 13, /* field[13] = SampleWinding */ 8, /* field[8] = Segments */ 7, /* field[7] = Spool */ + 14, /* field[14] = ThreadParameters */ 9, /* field[9] = UploadStrategy */ 6, /* field[6] = WindingMethod */ }; static const ProtobufCIntRange job_ticket__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 14 } + { 0, 15 } }; const ProtobufCMessageDescriptor job_ticket__descriptor = { @@ -252,7 +265,7 @@ const ProtobufCMessageDescriptor job_ticket__descriptor = "JobTicket", "", sizeof(JobTicket), - 14, + 15, job_ticket__field_descriptors, job_ticket__field_indices_by_name, 1, job_ticket__number_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h index 3d555b717..79bacd63f 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/JobTicket.pb-c.h @@ -19,6 +19,7 @@ PROTOBUF_C__BEGIN_DECLS #include "JobWindingMethod.pb-c.h" #include "JobSpool.pb-c.h" #include "JobUploadStrategy.pb-c.h" +#include "ThreadParameters.pb-c.h" typedef struct _JobTicket JobTicket; @@ -54,10 +55,11 @@ struct _JobTicket uint32_t numberofunits; protobuf_c_boolean has_samplewinding; protobuf_c_boolean samplewinding; + ThreadParameters *threadparameters; }; #define JOB_TICKET__INIT \ { PROTOBUF_C_MESSAGE_INIT (&job_ticket__descriptor) \ - , NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, 0, JOB_WINDING_METHOD__Embroidery, NULL, 0,NULL, 0, JOB_UPLOAD_STRATEGY__Default, NULL, 0, 0, 0, 0, 0, 0 } + , NULL, NULL, 0, 0, 0, 0, 0, 0, NULL, 0, JOB_WINDING_METHOD__Embroidery, NULL, 0,NULL, 0, JOB_UPLOAD_STRATEGY__Default, NULL, 0, 0, 0, 0, 0, 0, NULL } /* JobTicket methods */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c index 1f2eeaf74..8636a3b14 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.c @@ -52,7 +52,7 @@ void process_parameters__free_unpacked assert(message->base.descriptor == &process_parameters__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor process_parameters__field_descriptors[28] = +static const ProtobufCFieldDescriptor process_parameters__field_descriptors[30] = { { "DyeingSpeed", @@ -367,24 +367,48 @@ static const ProtobufCFieldDescriptor process_parameters__field_descriptors[28] 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "StSpZone1Temp", + "RBlowerFlow", 27, PROTOBUF_C_LABEL_OPTIONAL, PROTOBUF_C_TYPE_DOUBLE, - offsetof(ProcessParameters, has_stspzone1temp), - offsetof(ProcessParameters, stspzone1temp), + offsetof(ProcessParameters, has_rblowerflow), + offsetof(ProcessParameters, rblowerflow), NULL, NULL, 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, { - "StSpZone2Temp", + "RBlowerTemp", 28, PROTOBUF_C_LABEL_OPTIONAL, PROTOBUF_C_TYPE_DOUBLE, - offsetof(ProcessParameters, has_stspzone2temp), - offsetof(ProcessParameters, stspzone2temp), + offsetof(ProcessParameters, has_rblowertemp), + offsetof(ProcessParameters, rblowertemp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "LBlowerFlow", + 29, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(ProcessParameters, has_lblowerflow), + offsetof(ProcessParameters, lblowerflow), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "LBlowerTemp", + 30, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_DOUBLE, + offsetof(ProcessParameters, has_lblowertemp), + offsetof(ProcessParameters, lblowertemp), NULL, NULL, 0, /* flags */ @@ -412,19 +436,21 @@ static const unsigned process_parameters__field_indices_by_name[] = { 20, /* field[20] = HeadZone7Temp */ 21, /* field[21] = HeadZone8Temp */ 22, /* field[22] = HeadZone9Temp */ + 28, /* field[28] = LBlowerFlow */ + 29, /* field[29] = LBlowerTemp */ 2, /* field[2] = MaxInkUptake */ 1, /* field[1] = MinInkUptake */ 6, /* field[6] = MixerTemp */ 4, /* field[4] = PullerTension */ - 26, /* field[26] = StSpZone1Temp */ - 27, /* field[27] = StSpZone2Temp */ + 26, /* field[26] = RBlowerFlow */ + 27, /* field[27] = RBlowerTemp */ 19, /* field[19] = TableIndex */ 5, /* field[5] = WinderTension */ }; static const ProtobufCIntRange process_parameters__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 28 } + { 0, 30 } }; const ProtobufCMessageDescriptor process_parameters__descriptor = { @@ -434,7 +460,7 @@ const ProtobufCMessageDescriptor process_parameters__descriptor = "ProcessParameters", "", sizeof(ProcessParameters), - 28, + 30, process_parameters__field_descriptors, process_parameters__field_indices_by_name, 1, process_parameters__number_ranges, diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h index 97376a881..e68f393c7 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ProcessParameters.pb-c.h @@ -78,14 +78,18 @@ struct _ProcessParameters double headzone11temp; protobuf_c_boolean has_headzone12temp; double headzone12temp; - protobuf_c_boolean has_stspzone1temp; - double stspzone1temp; - protobuf_c_boolean has_stspzone2temp; - double stspzone2temp; + protobuf_c_boolean has_rblowerflow; + double rblowerflow; + protobuf_c_boolean has_rblowertemp; + double rblowertemp; + protobuf_c_boolean has_lblowerflow; + double lblowerflow; + protobuf_c_boolean has_lblowertemp; + double lblowertemp; }; #define PROCESS_PARAMETERS__INIT \ { PROTOBUF_C_MESSAGE_INIT (&process_parameters__descriptor) \ - , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } /* ProcessParameters methods */ diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.c b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.c new file mode 100644 index 000000000..1c8a5ffef --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.c @@ -0,0 +1,196 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ThreadParameters.proto */ + +/* Do not generate deprecated warnings for self */ +#ifndef PROTOBUF_C__NO_DEPRECATED +#define PROTOBUF_C__NO_DEPRECATED +#endif + +#include "ThreadParameters.pb-c.h" +void thread_parameters__init + (ThreadParameters *message) +{ + static const ThreadParameters init_value = THREAD_PARAMETERS__INIT; + *message = init_value; +} +size_t thread_parameters__get_packed_size + (const ThreadParameters *message) +{ + assert(message->base.descriptor == &thread_parameters__descriptor); + return protobuf_c_message_get_packed_size ((const ProtobufCMessage*)(message)); +} +size_t thread_parameters__pack + (const ThreadParameters *message, + uint8_t *out) +{ + assert(message->base.descriptor == &thread_parameters__descriptor); + return protobuf_c_message_pack ((const ProtobufCMessage*)message, out); +} +size_t thread_parameters__pack_to_buffer + (const ThreadParameters *message, + ProtobufCBuffer *buffer) +{ + assert(message->base.descriptor == &thread_parameters__descriptor); + return protobuf_c_message_pack_to_buffer ((const ProtobufCMessage*)message, buffer); +} +ThreadParameters * + thread_parameters__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data) +{ + return (ThreadParameters *) + protobuf_c_message_unpack (&thread_parameters__descriptor, + allocator, len, data); +} +void thread_parameters__free_unpacked + (ThreadParameters *message, + ProtobufCAllocator *allocator) +{ + if(!message) + return; + assert(message->base.descriptor == &thread_parameters__descriptor); + protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); +} +static const ProtobufCFieldDescriptor thread_parameters__field_descriptors[9] = +{ + { + "FeederP", + 1, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_feederp), + offsetof(ThreadParameters, feederp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "FeederI", + 2, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_feederi), + offsetof(ThreadParameters, feederi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "FeederD", + 3, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_feederd), + offsetof(ThreadParameters, feederd), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "PullerP", + 4, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_pullerp), + offsetof(ThreadParameters, pullerp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "PullerI", + 5, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_pulleri), + offsetof(ThreadParameters, pulleri), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "PullerD", + 6, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_pullerd), + offsetof(ThreadParameters, pullerd), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WinderP", + 7, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_winderp), + offsetof(ThreadParameters, winderp), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WinderI", + 8, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_winderi), + offsetof(ThreadParameters, winderi), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, + { + "WinderD", + 9, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_INT32, + offsetof(ThreadParameters, has_winderd), + offsetof(ThreadParameters, winderd), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, +}; +static const unsigned thread_parameters__field_indices_by_name[] = { + 2, /* field[2] = FeederD */ + 1, /* field[1] = FeederI */ + 0, /* field[0] = FeederP */ + 5, /* field[5] = PullerD */ + 4, /* field[4] = PullerI */ + 3, /* field[3] = PullerP */ + 8, /* field[8] = WinderD */ + 7, /* field[7] = WinderI */ + 6, /* field[6] = WinderP */ +}; +static const ProtobufCIntRange thread_parameters__number_ranges[1 + 1] = +{ + { 1, 0 }, + { 0, 9 } +}; +const ProtobufCMessageDescriptor thread_parameters__descriptor = +{ + PROTOBUF_C__MESSAGE_DESCRIPTOR_MAGIC, + "ThreadParameters", + "ThreadParameters", + "ThreadParameters", + "", + sizeof(ThreadParameters), + 9, + thread_parameters__field_descriptors, + thread_parameters__field_indices_by_name, + 1, thread_parameters__number_ranges, + (ProtobufCMessageInit) thread_parameters__init, + NULL,NULL,NULL /* reserved[123] */ +}; diff --git a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.h b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.h new file mode 100644 index 000000000..1acfd6686 --- /dev/null +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.h @@ -0,0 +1,88 @@ +/* Generated by the protocol buffer compiler. DO NOT EDIT! */ +/* Generated from: ThreadParameters.proto */ + +#ifndef PROTOBUF_C_ThreadParameters_2eproto__INCLUDED +#define PROTOBUF_C_ThreadParameters_2eproto__INCLUDED + +#include + +PROTOBUF_C__BEGIN_DECLS + +#if PROTOBUF_C_VERSION_NUMBER < 1003000 +# error This file was generated by a newer version of protoc-c which is incompatible with your libprotobuf-c headers. Please update your headers. +#elif 1003000 < PROTOBUF_C_MIN_COMPILER_VERSION +# error This file was generated by an older version of protoc-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protoc-c. +#endif + + +typedef struct _ThreadParameters ThreadParameters; + + +/* --- enums --- */ + + +/* --- messages --- */ + +struct _ThreadParameters +{ + ProtobufCMessage base; + protobuf_c_boolean has_feederp; + int32_t feederp; + protobuf_c_boolean has_feederi; + int32_t feederi; + protobuf_c_boolean has_feederd; + int32_t feederd; + protobuf_c_boolean has_pullerp; + int32_t pullerp; + protobuf_c_boolean has_pulleri; + int32_t pulleri; + protobuf_c_boolean has_pullerd; + int32_t pullerd; + protobuf_c_boolean has_winderp; + int32_t winderp; + protobuf_c_boolean has_winderi; + int32_t winderi; + protobuf_c_boolean has_winderd; + int32_t winderd; +}; +#define THREAD_PARAMETERS__INIT \ + { PROTOBUF_C_MESSAGE_INIT (&thread_parameters__descriptor) \ + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } + + +/* ThreadParameters methods */ +void thread_parameters__init + (ThreadParameters *message); +size_t thread_parameters__get_packed_size + (const ThreadParameters *message); +size_t thread_parameters__pack + (const ThreadParameters *message, + uint8_t *out); +size_t thread_parameters__pack_to_buffer + (const ThreadParameters *message, + ProtobufCBuffer *buffer); +ThreadParameters * + thread_parameters__unpack + (ProtobufCAllocator *allocator, + size_t len, + const uint8_t *data); +void thread_parameters__free_unpacked + (ThreadParameters *message, + ProtobufCAllocator *allocator); +/* --- per-message closures --- */ + +typedef void (*ThreadParameters_Closure) + (const ThreadParameters *message, + void *closure_data); + +/* --- services --- */ + + +/* --- descriptors --- */ + +extern const ProtobufCMessageDescriptor thread_parameters__descriptor; + +PROTOBUF_C__END_DECLS + + +#endif /* PROTOBUF_C_ThreadParameters_2eproto__INCLUDED */ diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 3aaa38c2e..c8d2615c8 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -407,6 +407,12 @@ typedef enum LS_STATUS_ERROR = 1, }LS_STATUS; +typedef enum +{ + HEAD_FAN_RIGHT, + HEAD_FAN_LEFT, + MAX_HEAD_FAN, +}HEAD_FAN_ENUM; /* typedef union diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h index 6c46410e4..d1cc5f580 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h @@ -33,6 +33,7 @@ void Trigger_PT100_Read(void); void Trigger_HeaterWriting(void); void Trigger_Head_Init_PT100(void); void Trigger_Head_Actuators_Control(uint32_t Act_ID, bool Active_Low_Pwr, bool Direction); +void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM); void Trigger_InputsReading(void); uint32_t Block_Main_MUX_TCA9548A_0xE4(); ////unused I2C MUX 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 00c46f378..c3a6363df 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -40,6 +40,7 @@ typedef enum Outputs_Writing, Head_Init_PT100, Actuators_Control, + HeadFanControl, /* enum for WHS :*/ WHS_start, @@ -141,6 +142,21 @@ void Trigger_Head_Actuators_Control(uint32_t Act_ID, bool Active_Low_Pwr, bool D return; } +void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM) +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + //uint8_t Midtank_i; + + if ((Fan_ID>=MAX_HEAD_FAN)||(PWM>0xFF)) + return ERROR; + + I2C_ReadingMessage.messageId = HeadFanControl; + I2C_ReadingMessage.parameter = Fan_ID; + I2C_ReadingMessage.parameter2 = PWM; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} void Trigger_HeaterWriting(void) { @@ -460,6 +476,9 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) case Actuators_Control: HeadCard_Actuators_Control(I2C_ReadingMessage.parameter, /*(bool)I2C_ReadingMessage.parameter2,*/(bool)I2C_ReadingMessage.parameter3); break; + case HeadFanControl: + Head_Fan_PWM_Control(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter2); + break; case Inputs_Reading: Head_Read_IO_Reg(0x46, HIGH);//READ HEAD CARD LS + ACT status break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.c index bc01df5ad..8f7188cf9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.c @@ -44,17 +44,18 @@ uint32_t Main_EEPROM_Read_Main_Card_SN() status = Main_I2C_EEprom_Read_Ch(); - memset (Serial,0,20); - MCU_E2PromSerialNumRead(&Serial); + /*memset (Serial,0,20); + MCU_E2PromSerialNumRead(&Serial);*/ - if ((Main_EEPROM_Data.bytes.Main_card_SN[0] == 'M' ) && (Main_EEPROM_Data.bytes.Main_card_SN[0] == 'U' ))//Main Unit + if ((Main_EEPROM_Data.bytes.Main_card_SN[0] == 'M' ) && (Main_EEPROM_Data.bytes.Main_card_SN[1] == 'U' ))//Main Unit { - if((Serial[0] != 'M' ) && (Serial[0] != 'U' )) + /*if((Serial[0] != 'M' ) && (Serial[0] != 'U' )) { MCU_E2PromSerialNumProgram (Main_EEPROM_Data.bytes.Main_card_SN) ; - } + }*/ Report(Main_EEPROM_Data.bytes.Main_card_SN, __FILE__,__LINE__,22, RpMessage, 21, 0); + memcpy(Serial, Main_EEPROM_Data.bytes.Main_card_SN,20); } else { diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c index 20b2cc25e..1e611f65c 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c @@ -19,10 +19,14 @@ #include #include +#include "drivers/Flash_ram/MCU_E2Prom.h" + +uint16_t Orf_zero_value[DRIER_FLOW_METER+1] = {1112,0,1040}; +#warning get Orf_zero_value for all orf MAX11614 U20_MAX11614 ; -static WHS_Display_View display_view = AVARAGE; +static WHS_Display_View display_view = AVERAGE; //static uint16_t orf1V0Value = 0; //static uint16_t orf3V0Value = 0; @@ -50,6 +54,15 @@ uint32_t WHS_MAX11614_Init () return status; +} +uint32_t WHS_MAX11614_Load_OrificeZeroValue (uint16_t O1, uint16_t O3) +{ + + Orf_zero_value[HEAD_FLOW_METER] = O1; + Orf_zero_value[DRIER_FLOW_METER] = O3; + ReportWithPackageFilter(InitFilter,"WHS_MAX11614_Load_OrificeZeroValue", __FILE__,__LINE__,Orf_zero_value[HEAD_FLOW_METER], RpMessage, Orf_zero_value[DRIER_FLOW_METER], 0); + return OK; + } uint32_t WHS_MAX11614_Read_allADC( ) @@ -275,10 +288,6 @@ bool SetDisplayView(WHS_Display_View view ) } - -uint16_t Orf_zero_value[HEAD_FLOW_METER+1] = {1112,0,1040}; -#warning get Orf_zero_value for all orf - double GetWHSAirFlow(uint8_t OR_Id) { uint16_t value = 0; @@ -286,28 +295,28 @@ double GetWHSAirFlow(uint8_t OR_Id) switch (OR_Id) { case DRIER_FLOW_METER: - if (display_view == AVARAGE) + if (display_view == AVERAGE) { Q_value = get_average_ORF3_Q(); } else // CURRENT { get_orf_3(&value); - Q_value = get_Q(value-orf3V0Value); + Q_value = get_Q(value-Orf_zero_value[DRIER_FLOW_METER]); } break; case NU_FLOW_METER: get_orf_2(&value); break; case HEAD_FLOW_METER: - if (display_view == AVARAGE) + if (display_view == AVERAGE) { Q_value = get_average_ORF1_Q(); } else //CURRENT { get_orf_1(&value); - Q_value = get_Q(value-orf1V0Value); + Q_value = get_Q(value-Orf_zero_value[HEAD_FLOW_METER]); } break; default: diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h index ba12b0e6f..5826b26eb 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h @@ -34,9 +34,9 @@ typedef enum typedef enum { CURRENT = 0, - AVARAGE + AVERAGE }WHS_Display_View; - +uint32_t WHS_MAX11614_Load_OrificeZeroValue (uint16_t O1, uint16_t O3); double GetWHSAirFlow(uint8_t OR_Id); uint16_t GetWHSGasSensor(void); uint16_t GetWHSWasteTankLevel(void); diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c index 7eeae2e4d..dd55f4f91 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.c @@ -88,7 +88,7 @@ float MCU_E2PromReadMidtank_B(int MidtankId) return (Data); } -uint32_t MCU_E2PromSerialNumProgram(char *Data) +/*uint32_t MCU_E2PromSerialNumProgram(char *Data) { char * SerialNum = Data; int len = strlen(SerialNum); @@ -114,7 +114,7 @@ uint32_t MCU_E2PromSerialNumRead(char* *Data) return len; -} +}*/ uint32_t MCU_E2PromDryerBacklashProgram(char *Data) { char * Backlash = Data; @@ -124,15 +124,15 @@ uint32_t MCU_E2PromDryerBacklashProgram(char *Data) Report("MCU_E2PromDryerBacklashProgram length error",__FILE__,__LINE__,len,RpWarning,(int)0,0); return ERROR; } - EEPROMProgram((uint32_t *)Backlash, DRYER_BACKLASH_ADDR*4, 4); + EEPROMProgram((uint32_t *)Backlash, EEPROM_STORAGE_DRYER_BACKLASH*4, 4); return OK; } float MCU_E2PromDryerBacklashRead() { float Data; - EEPROMRead((uint32_t *)&Data,DRYER_BACKLASH_ADDR*4, 4); + EEPROMRead((uint32_t *)&Data,EEPROM_STORAGE_DRYER_BACKLASH*4, 4); - Report("MCU_E2PromDryerBacklashRead length ",__FILE__,__LINE__,DRYER_BACKLASH_ADDR*4,RpWarning,(int)(Data*100),0); + Report("MCU_E2PromDryerBacklashRead length ",__FILE__,__LINE__,EEPROM_STORAGE_DRYER_BACKLASH*4,RpWarning,(int)(Data*100),0); return Data; } @@ -147,15 +147,15 @@ uint32_t MCU_E2PromEmbeddedVersionProgram(void) return ERROR; } memcpy((uint8_t*)&Data,&_gTangoVersion,size); - EEPROMProgram((uint32_t *)&Data, EMBEDDED_VERSION_ADDR*4, 4); + EEPROMProgram((uint32_t *)&Data, EEPROM_STORAGE_EMBEDDED_VERSION*4, 4); return OK; } uint32_t MCU_E2PromEmbeddedVersionRead() { uint32_t Data; - EEPROMRead((uint32_t *)&Data,EMBEDDED_VERSION_ADDR*4, 4); + EEPROMRead((uint32_t *)&Data,EEPROM_STORAGE_EMBEDDED_VERSION*4, 4); - Report("MCU_E2PromEmbeddedVersionRead length ",__FILE__,__LINE__,EMBEDDED_VERSION_ADDR*4,RpWarning,(int)(Data),0); + Report("MCU_E2PromEmbeddedVersionRead length ",__FILE__,__LINE__,EEPROM_STORAGE_EMBEDDED_VERSION*4,RpWarning,(int)(Data),0); return Data; } diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h index 4ec99e478..f8f22a2f6 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -31,22 +31,26 @@ typedef enum { EEPROM_STORAGE_MIDTANK_7_B, EEPROM_STORAGE_MIDTANK_8_A, EEPROM_STORAGE_MIDTANK_8_B, - EEPROM_STORAGE_SERIAL_NUM, - EEPROM_STORAGE_MAC_ADDR, + //EEPROM_STORAGE_SERIAL_NUM, + //EEPROM_STORAGE_MAC_ADDR, EEPROM_STORAGE_DRYER_BACKLASH, EEPROM_STORAGE_EMBEDDED_VERSION, - ALARM_SUPPORT, + EEPROM_ALARM_SUPPORT, + EEPROM_ORIFICE1_ZERO_VALUE, + EEPROM_ORIFICE3_ZERO_VALUE, MAX_EEPROM_STORAGE }EEPROM_STORAGE_USAGE_ENUM; #define MAX_SERIAL_NUM_LEN 5 //5*4 bytes #define MAX_MAC_ADDR_LEN 2 //2*4 bytes -typedef enum { +/*typedef enum { SERIAL_NUM_ADDR = EEPROM_STORAGE_SERIAL_NUM, MAC_ADDR_ADDR = (SERIAL_NUM_ADDR + MAX_SERIAL_NUM_LEN), DRYER_BACKLASH_ADDR = (MAC_ADDR_ADDR + MAX_MAC_ADDR_LEN), EMBEDDED_VERSION_ADDR, ALARM_SUPPORT_ADDR, -}EEPROm_ADDRESSES; + ORIFICE1_ZERO_VALUE_ADDR, + ORIFICE3_ZERO_VALUE_ADDR, +}EEPROM_ADDRESSES;*/ uint32_t MCU_E2PromProgram(int Address,uint32_t Data); uint32_t MCU_E2PromRead(int Address,uint32_t *Data); @@ -54,8 +58,8 @@ void MCU_E2PromProgramMidTank(int midtankId,float a,float b); float MCU_E2PromReadMidtank_A(int MidtankId); float MCU_E2PromReadMidtank_B(int MidtankId); void MCU_E2PromInit(void); -uint32_t MCU_E2PromSerialNumProgram(char *Data); -uint32_t MCU_E2PromSerialNumRead(char* *Data); +//uint32_t MCU_E2PromSerialNumProgram(char *Data); +//uint32_t MCU_E2PromSerialNumRead(char* *Data); uint32_t MCU_E2PromDryerBacklashProgram(char *Data); float MCU_E2PromDryerBacklashRead(void); uint32_t MCU_E2PromEmbeddedVersionProgram(void); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 8b388e065..25022ab67 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -584,7 +584,7 @@ void AlarmHandlingSetCurrentLimits(double currentalarmhighlimit,double curre uint32_t AlarmhandlingFlags = 0; void AlarmHandlingLoadFlags(void) { - MCU_E2PromRead(ALARM_SUPPORT_ADDR,&AlarmhandlingFlags); + MCU_E2PromRead(EEPROM_ALARM_SUPPORT,&AlarmhandlingFlags); CheckHardLimitAlarms = (AlarmhandlingFlags && 0x0001); CheckCurrentAlarms = (AlarmhandlingFlags && 0x0002); @@ -607,7 +607,7 @@ void AlarmHandlingSetFlags(bool checkHardLimitAlarms,bool checkCurrentAlarms if (CheckMotorAlarms) flags |= 0x8; if (AlarmhandlingFlags != flags) { - MCU_E2PromProgram(ALARM_SUPPORT_ADDR,flags); + MCU_E2PromProgram(EEPROM_ALARM_SUPPORT,flags); AlarmhandlingFlags = flags; } } diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index 41f6b2334..42739f20f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -371,9 +371,9 @@ uint32_t SetBlowerStateRequestFunc(MessageContainer* requestContainer) if (Head_Type == HEAD_TYPE_STAPLE_SPUN) { if ((request->has_voltage)&&(request->isactive == true)) - status = Head_Fan_PWM_Control(0,request->voltage); + Trigger_Head_Fan_Control(HEAD_FAN_RIGHT,request->voltage); else if (request->isactive == false) - status = Head_Fan_PWM_Control(0,0); + Trigger_Head_Fan_Control(HEAD_FAN_RIGHT,0); } else status = NOT_SUPPORTED; @@ -383,9 +383,9 @@ uint32_t SetBlowerStateRequestFunc(MessageContainer* requestContainer) if (Head_Type == HEAD_TYPE_STAPLE_SPUN) { if ((request->has_voltage)&&(request->isactive == true)) - status = Head_Fan_PWM_Control(1,request->voltage); + Trigger_Head_Fan_Control(HEAD_FAN_LEFT,request->voltage); else if (request->isactive == false) - status = Head_Fan_PWM_Control(1,0); + Trigger_Head_Fan_Control(HEAD_FAN_LEFT,0); } else status = NOT_SUPPORTED; diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 8e360cf6e..0e52832ca 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -556,8 +556,8 @@ uint32_t MachineCalibrationDataRequestFunc(MessageContainer* requestContainer) MidTankInfo[i].has_slopeb = true; MidTankInfo[i].slopeb = MCU_E2PromReadMidtank_B(i); } - memset (Serial,0,20); - MCU_E2PromSerialNumRead(&Serial); + //memset (Serial,0,20); + //MCU_E2PromSerialNumRead(&Serial); MachineCalibrationDataResponse response = MACHINE_CALIBRATION_DATA_RESPONSE__INIT; machine_calibration_data__init(&response.machinecalibrationdata); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index c270c9828..166ba0d88 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -81,6 +81,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) if (ProcessParams==NULL) { status = ERROR_CODE__INVALID_PARAMETER; + ReportWithPackageFilter(InitFilter,"HandleProcessParameters NULL",__FILE__,(int)__LINE__,(int)0,RpWarning,(int)0,0); return status; } if (ProcessParams->dryerzone1temp > MAX_ALLOWED_TEMPERATURE) status = ERROR_CODE__INVALID_PARAMETER; @@ -94,9 +95,13 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) 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) + { + ReportWithPackageFilter(InitFilter,"HandleProcessParameters Temperature too high",__FILE__,(int)__LINE__,(int)status,RpWarning,(int)0,0); return status; + } if (GetMachineState()stspzone1temp>1) + if (ProcessParams->rblowertemp>1) { - status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->stspzone1temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, true,ProcessParams->rblowertemp); } else { - status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->stspzone1temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater1, false,ProcessParams->rblowertemp); } - if (ProcessParams->stspzone2temp>1) + if (ProcessParams->lblowertemp>1) { - status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->stspzone2temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, true,ProcessParams->lblowertemp); } else { - status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->stspzone2temp); + status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__HeadCoverHeater2, false,ProcessParams->lblowertemp); } + Trigger_Head_Fan_Control(HEAD_FAN_RIGHT,ProcessParams->rblowerflow); + Trigger_Head_Fan_Control(HEAD_FAN_LEFT,ProcessParams->lblowerflow); } + if (status) + { + ReportWithPackageFilter(InitFilter,"HandleProcessParameters start heaters error",__FILE__,(int)__LINE__,(int)status,RpWarning,(int)GetMachineState(),0); + } HeatersStopControlOnHeatersOff(ProcessParams); dyeingspeed = ProcessParams->dyeingspeed; dryerbufferlength = ProcessParams->dryerbufferlength; diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 12e344b79..cbe70b444 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -153,7 +153,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) } else { - SetDisplayView( AVARAGE ); + SetDisplayView( AVERAGE ); } switch(request->delay )// get A2D @@ -482,7 +482,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) //Head_Fan_PWM_Command[0] = (request->delay & 0xFF) ; //Test_Head_fan_Click(); - Head_Fan_PWM_Control(0, request->delay & 0xFF); + Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, request->delay & 0xFF); Task_sleep(2000); //response.progress = Fan_Click_Info.Product_ID; @@ -493,7 +493,7 @@ void Stub_ProgressRequest(MessageContainer* requestContainer) else if((request->amount == 0xFAC1) /*&& (request->delay == 0xFAC)*/) //Head Fan control { - Head_Fan_PWM_Control(1, request->delay & 0xFF); + Trigger_Head_Fan_Control(HEAD_FAN_LEFT, request->delay & 0xFF); Task_sleep(2000); response.progress = Head_Fan_Tach[1]; response.has_progress = true; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 128564586..eeb0051f5 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -186,8 +186,10 @@ ProcessParametersClear.headzone10temp = 0; ProcessParametersClear.headzone11temp = 0; ProcessParametersClear.headzone12temp = 0; - ProcessParametersClear.stspzone1temp = 0; - ProcessParametersClear.stspzone2temp = 0; + ProcessParametersClear.rblowertemp = 0; + ProcessParametersClear.lblowertemp = 0; + ProcessParametersClear.rblowerflow = 0; + ProcessParametersClear.lblowerflow = 0; ProcessParametersClear.dyeingspeed = 40; ProcessParametersClear.dryerbufferlength = ProcessParametersKeep.dryerbufferlength; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 9e0a2ac7f..60cd994dd 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -15,6 +15,7 @@ #include "PMR/Hardware/HardwareDancerType.pb-c.h" #include "PMR/Printing/JobSegment.pb-c.h" #include "PMR/Printing/JobTicket.pb-c.h" +#include "PMR/Printing/ThreadParameters.pb-c.h" #include #include @@ -744,7 +745,44 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) ThreadPreSegmentState(request,0); return OK; } +uint32_t HandleJobThreadControlParameters(ThreadParameters* ThreadParams) +{ + /* + FEEDER_MOTOR, + DRYER_MOTOR, + POOLER_MOTOR, + WINDER_MOTOR, + MotorControlConfig[Motor_i].m_params.Kd = MotorsControl[Pid_Id].derivativetime; + MotorControlConfig[Motor_i].m_params.Kp = MotorsControl[Pid_Id].proportionalgain; + MotorControlConfig[Motor_i].m_params.Ki = MotorsControl[Pid_Id].integraltime; + + */ + if (ThreadParams == NULL) + { + return OK; + } + if(ThreadParams->feederp) + MotorControlConfig[FEEDER_MOTOR].m_params.Kd = ThreadParams->feederp; + if(ThreadParams->feederi) + MotorControlConfig[FEEDER_MOTOR].m_params.Ki = ThreadParams->feederi; + if(ThreadParams->feederd) + MotorControlConfig[FEEDER_MOTOR].m_params.Kd = ThreadParams->feederd; + + if(ThreadParams->pullerp) + MotorControlConfig[POOLER_MOTOR].m_params.Kd = ThreadParams->pullerp; + if(ThreadParams->pulleri) + MotorControlConfig[POOLER_MOTOR].m_params.Ki = ThreadParams->pulleri; + if(ThreadParams->pullerd) + MotorControlConfig[POOLER_MOTOR].m_params.Kd = ThreadParams->pullerd; + + if(ThreadParams->winderp) + MotorControlConfig[WINDER_MOTOR].m_params.Kd = ThreadParams->winderp; + if(ThreadParams->winderi) + MotorControlConfig[WINDER_MOTOR].m_params.Ki = ThreadParams->winderi; + if(ThreadParams->winderd) + MotorControlConfig[WINDER_MOTOR].m_params.Kd = ThreadParams->winderd; +} //******************************************************************************************************************** uint32_t ThreadPrepareState(void *JobDetails) { @@ -905,6 +943,8 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) if (Motor_i == ThreadMotorIdToMotorId[DRYER_MOTOR]) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled continue; } + HandleJobThreadControlParameters(JobTicket->threadparameters); //OVERRIDES CONFIGURATION PARAMETERS!!! + #ifdef TEST_PID_THREAD testDancersControl(); #endif diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 0d4dba468..9f864c2dc 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -30,6 +30,8 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/adc_sampling/adc.h" #include "drivers/Valves/Valve.h" +#include "drivers/Flash_ram/MCU_E2Prom.h" +#include #include "heaters/heaters_ex.h" @@ -361,7 +363,45 @@ uint32_t InitSequencePowerManagementInit(void) uint32_t InitSequenceInitialBlowerActivation(void) { MachineStateDetail = MACHINE_STATE_INITIAL_BLOWER_ACTIVATION; + int i,total1=0,total3=0; + uint32_t ZeroValue; + uint16_t value = 0; //WHS_Start_Blower_Control_Closed_Loop(0.0); + if (WHS_Type == WHS_TYPE_NEW) + { + if (ResetReason & SYSCTL_CAUSE_POR) + { + for (i=0;i<8;i++) + { + get_orf_1(&value); + total1+=value; + get_orf_3(&value); + total3+=value; + ReportWithPackageFilter(InitFilter,"load initial orifice value", __FILE__,i,total1, RpMessage, total3, 0); + Task_sleep(100); + } + total1/=8; + total3/=8; + MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE,&ZeroValue); + if ((total1>800)&&(total1<2000)) + { + MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE,total1); + } + else + total1 = ZeroValue; + ReportWithPackageFilter(InitFilter,"store initial orifice 1 value", __FILE__,EEPROM_ORIFICE1_ZERO_VALUE,total1, RpMessage, ZeroValue, 0); + MCU_E2PromRead(EEPROM_ORIFICE3_ZERO_VALUE,&ZeroValue); + if ((total3>1000)&&(total3<1500)) + { + MCU_E2PromProgram(EEPROM_ORIFICE3_ZERO_VALUE,total3); + } + else + total3 = ZeroValue; + ReportWithPackageFilter(InitFilter,"store initial orifice 3 value", __FILE__,EEPROM_ORIFICE3_ZERO_VALUE,total3, RpMessage, ZeroValue, 0); + WHS_MAX11614_Load_OrificeZeroValue(total1,total3); + } + } + Turn_the_Blower_On();//Turn on with the Default_Voltage // if (BlowerCfg.voltage) // Control_Voltage_To_Blower(BlowerCfg.voltage); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index 70e713420..4a3938808 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -93,6 +93,10 @@ void PowerIdleSetIdle(void) ProcessParametersClear.headzone11temp = (ActiveProcessParameters.headzone11temp <80)? ActiveProcessParameters.headzone11temp :IdleHeadTemperature; ProcessParametersClear.headzone12temp = (ActiveProcessParameters.headzone12temp <80)? ActiveProcessParameters.headzone12temp :IdleHeadTemperature; ProcessParametersClear.dyeingspeed = (ActiveProcessParameters.dyeingspeed <40)? ActiveProcessParameters.dyeingspeed :IdleHeadTemperature; + ProcessParametersClear.rblowertemp = (ActiveProcessParameters.rblowertemp <80)? ActiveProcessParameters.rblowertemp :IdleHeadTemperature; + ProcessParametersClear.lblowertemp = (ActiveProcessParameters.lblowertemp <80)? ActiveProcessParameters.lblowertemp :IdleHeadTemperature; + ProcessParametersClear.rblowerflow = (ActiveProcessParameters.rblowerflow <96)? ActiveProcessParameters.rblowerflow :96; + ProcessParametersClear.lblowerflow = (ActiveProcessParameters.lblowerflow <96)? ActiveProcessParameters.lblowerflow :96; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { LOG_ERROR (1, "Turn Heaters idle failed"); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 037db2684..987500dc6 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -246,8 +246,10 @@ uint32_t PowerOffHeatersOff(void) ProcessParametersClear.headzone10temp = 0; ProcessParametersClear.headzone11temp = 0; ProcessParametersClear.headzone12temp = 0; - ProcessParametersClear.stspzone1temp = 0; - ProcessParametersClear.stspzone2temp = 0; + ProcessParametersClear.rblowertemp = 0; + ProcessParametersClear.lblowertemp = 0; + ProcessParametersClear.rblowerflow = 0; + ProcessParametersClear.rblowerflow = 0; ProcessParametersClear.dyeingspeed = 40; if (HandleProcessParameters(&ProcessParametersClear,false)!= OK) { diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index f295f2475..92d3e05a7 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -63,6 +63,7 @@ #include "PMR/Diagnostics/ThreadAbortJoggingResponse.pb-c.h" #include "StateMachines/Initialization/PowerIdle.h" +#include "StateMachines/Initialization/InitSequence.h" #include "drivers/Motors/Motor.h" @@ -782,6 +783,12 @@ void JobRequestFunc(MessageContainer* requestContainer) status = FAILED; error = ERROR_CODE__INVALID_PARAMETER; usnprintf(ErrorMsg, 100, "Hardware Parameters Not Set"); + if (GetMachineState()