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() Date: Tue, 3 Mar 2020 14:05:37 +0200 Subject: Version 1.4.6.15 head (magnet) improved, rockers bypass, --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Common/Utilities/idle_task.c | 3 -- .../PMR/Printing/ThreadParameters.pb-c.c | 19 ++++++++-- .../PMR/Printing/ThreadParameters.pb-c.h | 4 +- Software/Embedded_SW/Embedded/DataDef.h | 8 +++- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 44 +++++++++++----------- .../Embedded/Drivers/I2C_Communication/I2C.h | 8 ---- .../Embedded/Drivers/I2C_Communication/I2C_Task.c | 22 ++++++++++- .../Embedded/Drivers/I2C_Communication/I2C_Task.h | 9 ++++- .../Embedded/Drivers/Motors/MotorActions.c | 4 +- .../Embedded/Modules/Control/MillisecTask.c | 2 +- .../Embedded/Modules/General/GeneralHardware.c | 1 - .../Embedded/Modules/Stubs_Handler/Progress.c | 3 +- .../Embedded/Modules/Thread/Thread_print.c | 5 ++- 14 files changed, 87 insertions(+), 47 deletions(-) (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 51540cf50..28ab799a1 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,14}; +TangoVersion_t _gTangoVersion = {1,4,6,15}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c index 9a1de790e..86c030dc0 100644 --- a/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c +++ b/Software/Embedded_SW/Embedded/Common/Utilities/idle_task.c @@ -201,9 +201,6 @@ 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)); } uint32_t MillisecCounter = 0; 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 index 1c8a5ffef..4c653de78 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.c +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.c @@ -52,7 +52,7 @@ void thread_parameters__free_unpacked assert(message->base.descriptor == &thread_parameters__descriptor); protobuf_c_message_free_unpacked ((ProtobufCMessage*)message, allocator); } -static const ProtobufCFieldDescriptor thread_parameters__field_descriptors[9] = +static const ProtobufCFieldDescriptor thread_parameters__field_descriptors[10] = { { "FeederP", @@ -162,8 +162,21 @@ static const ProtobufCFieldDescriptor thread_parameters__field_descriptors[9] = 0, /* flags */ 0,NULL,NULL /* reserved1,reserved2, etc */ }, + { + "BypassRockers", + 10, + PROTOBUF_C_LABEL_OPTIONAL, + PROTOBUF_C_TYPE_BOOL, + offsetof(ThreadParameters, has_bypassrockers), + offsetof(ThreadParameters, bypassrockers), + NULL, + NULL, + 0, /* flags */ + 0,NULL,NULL /* reserved1,reserved2, etc */ + }, }; static const unsigned thread_parameters__field_indices_by_name[] = { + 9, /* field[9] = BypassRockers */ 2, /* field[2] = FeederD */ 1, /* field[1] = FeederI */ 0, /* field[0] = FeederP */ @@ -177,7 +190,7 @@ static const unsigned thread_parameters__field_indices_by_name[] = { static const ProtobufCIntRange thread_parameters__number_ranges[1 + 1] = { { 1, 0 }, - { 0, 9 } + { 0, 10 } }; const ProtobufCMessageDescriptor thread_parameters__descriptor = { @@ -187,7 +200,7 @@ const ProtobufCMessageDescriptor thread_parameters__descriptor = "ThreadParameters", "", sizeof(ThreadParameters), - 9, + 10, thread_parameters__field_descriptors, thread_parameters__field_indices_by_name, 1, thread_parameters__number_ranges, 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 index 1acfd6686..a8ac6f78f 100644 --- a/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.h +++ b/Software/Embedded_SW/Embedded/Communication/PMR/Printing/ThreadParameters.pb-c.h @@ -44,10 +44,12 @@ struct _ThreadParameters int32_t winderi; protobuf_c_boolean has_winderd; int32_t winderd; + protobuf_c_boolean has_bypassrockers; + protobuf_c_boolean bypassrockers; }; #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 } + , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } /* ThreadParameters methods */ diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index bdfbab720..0ada1e7ec 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -374,7 +374,6 @@ typedef enum HEAD_TYPE_UNKNOWN_WITH_CARD, HEAD_TYPE_SYLKO, HEAD_TYPE_STAPLE_SPUN, - }HEAD_TYPE; extern uint8_t Head_Type; @@ -416,6 +415,13 @@ typedef enum MAX_HEAD_FAN, }HEAD_FAN_ENUM; +typedef enum +{ + OPEN_MAGNET, + CLOSE_MAGNET, + DISABLE_MAGNET +}MAGNET_COMMAND_ENUM; + /* typedef union { diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index a6b8723a8..3cd60123a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -433,7 +433,6 @@ bool FPGA_Read_limit_Switches(FPGA_GPI_ENUM Limit_Switch) if(Head_Type == HEAD_TYPE_SYLKO) LM_Status = !(Head_I2C_EXP4_0x46.bits.INPUT_LS_UP); break; - default : LM_Status = NO_LIMIT; break; @@ -515,7 +514,8 @@ uint32_t MagnetCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) { if(Head_Type == HEAD_TYPE_SYLKO) - HeadCard_HeadMagnet_Disable(); + Trigger_Head_Magnet(DISABLE_MAGNET); + //HeadCard_HeadMagnet_Disable(); else MotorStop(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,Hard_Hiz ); @@ -533,18 +533,19 @@ uint32_t ActivateHeadMagnet() //WHS_Start_Blower_Control_Closed_Loop(BlowerSetPoint); //Task_sleep(500); if(Head_Type == HEAD_TYPE_SYLKO) - HeadCard_ActivateHeadMagnet(); + //HeadCard_ActivateHeadMagnet(); + Trigger_Head_Magnet(CLOSE_MAGNET); else { F2_CTRL_Reg.ushort &= ~SPARE_SSR13_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; - if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) - { - if (MotorDriverResponse[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM].DriverType == CombinrdMotDriver) - MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); - else - MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_CLOSE ); - } + } + if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) + { + if (MotorDriverResponse[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM].DriverType == CombinrdMotDriver) + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); + else + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_CLOSE ); } MagnetControlId = AddControlCallback(NULL, MagnetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); return OK; @@ -562,23 +563,24 @@ uint32_t DeActivateHeadMagnet() if(Head_Type == HEAD_TYPE_SYLKO) { - HeadCard_DeActivateHeadMagnet(); - MagnetControlId = AddControlCallback(NULL, MagnetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); + Trigger_Head_Magnet(OPEN_MAGNET); + //HeadCard_DeActivateHeadMagnet(); } else { - Report("DeActivateHeadMagnet - open the lid magnet",__FILE__,__LINE__,(int)HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,RpWarning,(int)DH_LID_CLOSE,0); - if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) - { - if (MotorDriverResponse[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM].DriverType == CombinrdMotDriver) - MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_CLOSE ); - else - MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); - //MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM, DH_LID_OPEN, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM], NULL,1000); - } F2_CTRL_Reg.ushort |= SPARE_SSR13_CTRL; F2_CTRL = F2_CTRL_Reg.ushort; } + Report("DeActivateHeadMagnet - open the lid magnet",__FILE__,__LINE__,(int)HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,RpWarning,(int)DH_LID_CLOSE,0); + if (isMotorConfigured(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM)) + { + if (MotorDriverResponse[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM].DriverType == CombinrdMotDriver) + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_CLOSE ); + else + MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); + //MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM, DH_LID_OPEN, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM], NULL,1000); + } + MagnetControlId = AddControlCallback(NULL, MagnetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); Task_sleep(500); return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h index d1cc5f580..d8b2d1286 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h @@ -27,14 +27,6 @@ uint32_t I2C_ReadBuff(uint32_t I2C_BASE, unsigned char addr, unsigned char* data uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, uint32_t No_BytesToWrite ); uint32_t I2C_Read(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Read_buf, uint32_t No_BytesToRead ); -void Trigger_Heater_Current_Read(void); -void Trigger_MidTank_Pressure_Read(void); -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 extern uint8_t Main_Mux_Flag ; 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 803b66b63..b81674d68 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -18,6 +18,8 @@ #include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h" #include "Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.h" #include "Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.h" +#include "Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h" +#include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" #include #include #include @@ -26,7 +28,6 @@ #include #include "ADC_MUX/ADC_MUX.h" #include "modules/ids/ids_ex.h" -#include "Drivers/I2C_Communication/Head_Card/Fan/Head_Fan.h" extern Semaphore_Handle I2C_Sem; Task_Handle I2C_Task_Handle; @@ -42,6 +43,7 @@ typedef enum Head_Init_PT100, Actuators_Control, HeadFanControl, + HeadMagnetAction, /* enum for WHS :*/ WHS_start, @@ -159,7 +161,17 @@ void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM) Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); return; } +void Trigger_Head_Magnet(int direction) +{ + I2C_ReadingMessageStruc I2C_ReadingMessage; + //uint8_t Midtank_i; + I2C_ReadingMessage.messageId = HeadMagnetAction; + I2C_ReadingMessage.parameter = direction; + if (I2C_ReadingMsgQ != NULL) + Mailbox_post(I2C_ReadingMsgQ , &I2C_ReadingMessage, BIOS_NO_WAIT); + return; +} void Trigger_HeaterWriting(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; @@ -492,6 +504,14 @@ void I2C_ReadingTask(UArg arg0, UArg arg1) case HeadFanControl: Head_Fan_PWM_Control(I2C_ReadingMessage.parameter, I2C_ReadingMessage.parameter2); break; + case HeadMagnetAction: + if (I2C_ReadingMessage.parameter == OPEN_MAGNET) + HeadCard_ActivateHeadMagnet(); + else if (I2C_ReadingMessage.parameter == CLOSE_MAGNET) + HeadCard_DeActivateHeadMagnet(); + else //DISABLE_MAGNET + HeadCard_HeadMagnet_Disable(); + break; case Head_Inputs_Reading: Head_Read_IO_Reg(0x44, LOW_AND_HIGH);//BREAK__ZN1-12 + BREAK_HTIN Head_Read_IO_Reg(0x46, LOW_AND_HIGH);//READ HEAD CARD LS + ACT status + BREAK_HTOT diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h index 71a46bcec..e95ada01f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.h @@ -32,12 +32,19 @@ void Trigger_WHS_MAX11614_Read_allADC(); void Trigger_WHS_Set_RDAC(uint16_t value); void Trigger_WHS_set_Rheostat_to_CLEAN_AIR(void); - //void Trigger_WHS_set_fan_speed( fan_num, uint16_t fan_speed); //void Trigger_WHS_Set_Volt_Blower_Control(uint16_t volt); //void Trigger_WHS_Set_Blower_Control_Closed_Loop (uint32_t setpoint_Q); //void Trigger_WHS_Set_Valve(uint8_t valve_number, bool status); //void Trigger_WHS_Set_Pump(bool status); +void Trigger_Heater_Current_Read(void); +void Trigger_MidTank_Pressure_Read(void); +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); #endif /* DRIVERS_I2C_COMMUNICATION_I2C_TASK_H_ */ diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 67fb707f5..d679cbb01 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -845,8 +845,8 @@ void MotorActionsInit(void) } if (Head_Type == HEAD_TYPE_SYLKO)//adjust the limit switches { - Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_FRONT; - Motor_Id_to_LS_IdUp [HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_REAR; + Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_REAR; + Motor_Id_to_LS_IdUp [HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_FRONT; } } diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index da4f04f3b..99036a073 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -706,7 +706,7 @@ uint32_t MillisecLowLoop(uint32_t tick) if (Onesecond_Tick) { char Lenstr[160]; - static int Counter = 0; + //static int Counter = 0; MachineUpdateResponseFunc(); //KeepAliveOneSecondCall(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 0e52832ca..5a920bc25 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -726,7 +726,6 @@ uint32_t LoadConfigurationParamsFromFile(bool Initialize) } void HWConfigurationLoadFile(void) { - FRESULT Fresult = FR_OK; uint8_t* buffer = NULL; uint32_t Bytes = 0; buffer = HWConfigurationLoadFromFile(&Bytes); //load hardware config diff --git a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c index 9a6099215..57b596931 100644 --- a/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c +++ b/Software/Embedded_SW/Embedded/Modules/Stubs_Handler/Progress.c @@ -33,7 +33,7 @@ #include "modules/heaters/heaters_ex.h" #include #include -#include +#include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" #include "drivers/adc_sampling/adc.h" #include #include @@ -43,7 +43,6 @@ #include #include -#include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" extern float NumberOfRotationPerPassage; // how many rotations per spool passage diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 60cd994dd..8cd917a8d 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -72,10 +72,12 @@ double TempTotalProcessedLength = 0.0; bool InitialProcess = false; bool PrepareState = false; + // job parameters bool EnableLubrication = false; bool EnableIntersegment = false; double IntersegmentLength = 0; +bool Thread_Rockers_Bypass = false; int CurrentSegmentId = 0; @@ -781,6 +783,8 @@ uint32_t HandleJobThreadControlParameters(ThreadParameters* ThreadParams) MotorControlConfig[WINDER_MOTOR].m_params.Ki = ThreadParams->winderi; if(ThreadParams->winderd) MotorControlConfig[WINDER_MOTOR].m_params.Kd = ThreadParams->winderd; + if(ThreadParams->bypassrockers) + Thread_Rockers_Bypass = true; } //******************************************************************************************************************** @@ -1003,7 +1007,6 @@ uint32_t ThreadDryerRampUp(uint32_t IfIndex, uint32_t BusyFlag) return OK; } -bool Thread_Rockers_Bypass = false; bool Set_Thread_Rockers_Bypass (int value) { if (value == 0) -- cgit v1.3.1 From 1bd06862fd3874775986256b3ce9ff541108d117 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 3 Mar 2020 14:51:02 +0200 Subject: add WASTE_TANK_ZERO_VALUE to the EEPROM data --- Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h | 1 + Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') 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 f8f22a2f6..1e735d628 100644 --- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h +++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h @@ -38,6 +38,7 @@ typedef enum { EEPROM_ALARM_SUPPORT, EEPROM_ORIFICE1_ZERO_VALUE, EEPROM_ORIFICE3_ZERO_VALUE, + EEPROM_WASTE_TANK_ZERO_VALUE, MAX_EEPROM_STORAGE }EEPROM_STORAGE_USAGE_ENUM; #define MAX_SERIAL_NUM_LEN 5 //5*4 bytes diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 8cd917a8d..bc6662aac 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -786,6 +786,7 @@ uint32_t HandleJobThreadControlParameters(ThreadParameters* ThreadParams) if(ThreadParams->bypassrockers) Thread_Rockers_Bypass = true; + return OK; } //******************************************************************************************************************** uint32_t ThreadPrepareState(void *JobDetails) @@ -1187,7 +1188,7 @@ char Endstr[150]; if (PoolerSpeedControlId != 0xFF) { if(RemoveControlCallback(PoolerSpeedControlId,PoolerThreadLengthCBFunction)!=OK) - ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)Motor_i,RpError,(int)PoolerSpeedControlId,0); + ReportWithPackageFilter(ThreadFilter,"Remove Control Failed.",__FILE__,__LINE__,(int)PoolerThreadLengthCBFunction,RpError,(int)PoolerSpeedControlId,0); PoolerSpeedControlId = 0xFF; } -- cgit v1.3.1 From 98848a96f592588748e37624ba09b5fae19921a4 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 4 Mar 2020 12:16:51 +0200 Subject: set head type to sylko until fixed. set the WHS blower setpoint in SW --- Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 2 +- .../Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c | 1 + .../I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 1 + Software/Embedded_SW/Embedded/Modules/General/process.c | 4 +++- Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 6 +++--- Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 2 +- .../Embedded/StateMachines/Initialization/InitSequence.c | 5 ++++- .../Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c | 2 +- .../Embedded/StateMachines/Initialization/PowerOffSequence.c | 2 +- 9 files changed, 16 insertions(+), 9 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index 3cd60123a..2d3763ede 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -580,7 +580,7 @@ uint32_t DeActivateHeadMagnet() MotorGoTo(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM,DH_LID_OPEN ); //MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RLOADARM, DH_LID_OPEN, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_RLOADARM], NULL,1000); } - MagnetControlId = AddControlCallback(NULL, MagnetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); + //MagnetControlId = AddControlCallback(NULL, MagnetCallBackFunction, 2* eOneSecond, TemplateDataReadCBFunction,0,0, 0 ); Task_sleep(500); return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c index 626c4ab7b..f08ea772a 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c @@ -891,6 +891,7 @@ uint32_t Detect_Head_PT100_Faults(TEMPERATURE_SENSOR_ID_ENUM SensorId) } } + Head_Type = HEAD_TYPE_SYLKO; //FOR NOW return Head_Type; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index d38784a9e..eaad047e1 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -414,6 +414,7 @@ void WHS_Set_SetPoint_Q_value(double value) { SetPoint_Q = value; CofigurationFlow = 0; + WHS_Start_Blower_Control_Closed_Loop(); } void WHS_enable_control_loop(bool value) // 0=disable 1= enable diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index 166ba0d88..da9070201 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -121,6 +121,7 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) REPORT_MSG(Bytes,"Bytes write to flash"); } } + if (ProcessParams->mixertemp>1) status |= HeaterCommandRequestMessage(HARDWARE_PID_CONTROL_TYPE__MixerHeater, true,ProcessParams->mixertemp); else @@ -263,7 +264,8 @@ uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData) dryerbufferMeters = dryerbufferlength*0.76+0.9; dryerbufferCentimeters = dryerbufferlength*76+90; - Report("drier buffer length",__FILE__,(int)dryerbufferlength,(int)dryerbufferMeters*100,RpWarning,(int)dryerbufferCentimeters,0); + //Report("drier buffer length",__FILE__,(int)dryerbufferlength,(int)dryerbufferMeters*100,RpWarning,(int)dryerbufferCentimeters,0); + ReportWithPackageFilter(InitFilter,"HandleProcessParameters Head type",__FILE__,(int)__LINE__,(int)Head_Type,RpWarning,(int)dryerbufferCentimeters,0); mininkuptake = ProcessParams->mininkuptake; feedertension = ProcessParams->feedertension; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index d36d9d0c5..66f965d15 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -24,6 +24,7 @@ #include "../control/pidalgo.h" #include "../control/MillisecTask.h" #include "../Ids/Ids_ex.h" +#include "../General/process.h" #include #include @@ -699,13 +700,12 @@ void PrepareACHeater(int HeaterId,uint32_t Frequency, uint32_t SetTemperatue) HeaterAtTemp[HeaterId] = false; if (BlowerCfg.enabled == true) { - //WHS_Start_Blower_Control_Closed_Loop(2.5); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.heatingvoltage) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); else Control_Voltage_To_Blower(BlowerCfg.voltage-500); - + WHS_Set_SetPoint_Q_value(headairflow/2); } if (SetTemperatue) { @@ -1177,11 +1177,11 @@ uint32_t HeaterControlCBFunction(uint32_t IfIndex, uint32_t readValue) AlarmHandlingSetAlarm(HeaterUnderEventType[index], false); if (BlowerCfg.enabled == true) { - //WHS_Start_Blower_Control_Closed_Loop(5.0); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.voltage) //Gradual_Increase_Blower(BlowerCfg.heatingvoltage,BlowerCfg.voltage); Control_Voltage_To_Blower(BlowerCfg.voltage); + WHS_Set_SetPoint_Q_value(headairflow); } HeaterReady[index] = true; //Disable_Reading_Heaters_Current(HeaterId2CurrentId[HEATER_TYPE__DryerMainHeater]); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index eeb0051f5..6116818b2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -201,7 +201,7 @@ } else { - //WHS_Start_Blower_Control_Closed_Loop(2.5); + WHS_Set_SetPoint_Q_value(headairflow/2); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.heatingvoltage) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 19434ad78..6b75c410d 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -22,6 +22,7 @@ #include "modules/Diagnostics/Diagnostics.h" #include "Modules/General/process.h" #include "Modules/Waste/Waste.h" +#include "modules/General/process.h" #include "StateMachines/Printing/PrintingSTM.h" #include "InitSequence.h" @@ -205,7 +206,8 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); else Control_Voltage_To_Blower(3000); - //WHS_Start_Blower_Control_Closed_Loop(2.5); + WHS_enable_control_loop(true); + WHS_Set_SetPoint_Q_value(headairflow/2); AlarmHandlingSetAlarm (EVENT_TYPE__MACHINE_STATE_INITIAL_BLOWER_FAILED,OFF); //handle alarm detection and operation Safety_Init(); @@ -367,6 +369,7 @@ uint32_t InitSequenceInitialBlowerActivation(void) uint32_t ZeroValue; uint16_t value = 0; //WHS_Start_Blower_Control_Closed_Loop(0.0); + WHS_enable_control_loop(false); if (WHS_Type == WHS_TYPE_NEW) { if (ResetReason & SYSCTL_CAUSE_POR) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index 4a3938808..91a089321 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -104,12 +104,12 @@ void PowerIdleSetIdle(void) } if (BlowerCfg.enabled == true) { - //WHS_Start_Blower_Control_Closed_Loop(2.5); Turn_the_Blower_On();//Turn on with the Default_Voltage if (BlowerCfg.heatingvoltage) Control_Voltage_To_Blower(BlowerCfg.heatingvoltage); else Control_Voltage_To_Blower(BlowerCfg.voltage-500); + WHS_Set_SetPoint_Q_value(headairflow/2); } SetMachineStatus(MACHINE_STATE__Sleep); if (Auto_Shutdown_Bypass == false) diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index 987500dc6..a0cd8d118 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -442,7 +442,7 @@ uint32_t PowerOffTurnOffCooler(void) /*******************************************************************************************************/ uint32_t PowerOffTurnOffBlower(void) { - //WHS_Start_Blower_Control_Closed_Loop(0.0); + WHS_Set_SetPoint_Q_value(0); Turn_the_Blower_Off();//Turn off PowerOffMachineState++; return OK; -- cgit v1.3.1 From 99f7f5459baabb7651ab4a111e677e6aab167686 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 4 Mar 2020 12:29:48 +0200 Subject: compilation warnings removed --- Software/Embedded_SW/Embedded/Communication/CommunicationTask.c | 2 +- .../Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 2 +- Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c | 3 +-- .../I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c | 4 ++-- Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c | 2 +- Software/Embedded_SW/Embedded/Modules/General/process.h | 1 + Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h | 1 + Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 3 ++- .../Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c | 1 + .../Embedded/StateMachines/Initialization/PowerOffSequence.h | 1 + 10 files changed, 12 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c index 5369878f8..f1264b3d5 100644 --- a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c +++ b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c @@ -126,7 +126,7 @@ void freeArray(uint32_t buffer) uint32_t CommunicationTaskInit(void) { USBCDCD_init(); - Init_U0(); + //Init_U0(); return OK; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c index 283249dd1..457a8b895 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c @@ -426,7 +426,7 @@ bool Get_Heater_Current_Reading_State(HEATERS_CURRENT Heater_ID) //0-8 if((Head_Type > HEAD_TYPE_SYLKO_WITHOUT_CARD)&&(Heater_ID>=HEATER_DRYER_CURRENT_3)) return false; if (Heater_ID>=NUM_OF_CURRENT_HEATERS) - return; + return false; return Heaters_Current_Read_Enable[Heater_ID]; } 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 b81674d68..a4debd4b9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Task.c @@ -81,7 +81,6 @@ typedef struct I2C_ReadingMessage{ void Trigger_Heater_Current_Read(void) { I2C_ReadingMessageStruc I2C_ReadingMessage; - uint8_t Heater_i=0; I2C_ReadingMessage.messageId = Heater_Current_Reading; I2C_ReadingMessage.parameter = NUM_OF_CURRENT_HEATERS; @@ -152,7 +151,7 @@ void Trigger_Head_Fan_Control(uint32_t Fan_ID, uint16_t PWM) //uint8_t Midtank_i; if ((Fan_ID>=MAX_HEAD_FAN)||(PWM>0xFF)) - return ERROR; + return; I2C_ReadingMessage.messageId = HeadFanControl; I2C_ReadingMessage.parameter = Fan_ID; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index eaad047e1..1a0021694 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -196,8 +196,8 @@ bool WHS_init_Blower() double WHS_Blower_Avarege(WHS_Flow_Meter ORF_id) { - uint16_t orifice_hex_value = 0; - uint16_t V0_value = 0; + //uint16_t orifice_hex_value = 0; + //uint16_t V0_value = 0; double Q_temp = 0 ; double average_Q = 0.0; diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c index 1f69387a6..0e95f4053 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c @@ -707,7 +707,7 @@ uint32_t MillisecLowLoop(uint32_t tick) } if (Onesecond_Tick) { - char Lenstr[160]; + //char Lenstr[160]; //static int Counter = 0; MachineUpdateResponseFunc(); //KeepAliveOneSecondCall(); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.h b/Software/Embedded_SW/Embedded/Modules/General/process.h index 97d28f1ef..a546ffdbe 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.h +++ b/Software/Embedded_SW/Embedded/Modules/General/process.h @@ -26,6 +26,7 @@ extern ProcessParameters ProcessParametersKeep; extern void ProcessRequestFunc(MessageContainer* requestContainer); extern uint32_t HandleProcessParameters(ProcessParameters* ProcessParams,bool saveData); +uint32_t LoadProcessParamsFromFile(void); uint32_t ProcessParamsInit(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h index f29dd186b..aeec7d696 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h @@ -37,5 +37,6 @@ void Heaters_SetOperationLimits(int acheatersloweroperationlimit,int acheatersu uint32_t DrierHeaterVoltageSetup(void); uint32_t HeatersEnd(void); +void HeatersControlStart(void); void HeatersControlStop(void); uint32_t Heaters_Init(void); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index bc6662aac..229b86cac 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -458,7 +458,8 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //extern int MotorSamplePointer[MAX_THREAD_MOTORS_NUM]; //read value is the dancer angle - int i,index=MAX_THREAD_MOTORS_NUM,len; + int i,index=MAX_THREAD_MOTORS_NUM; + //int len; int DancerId; int32_t TranslatedReadValue, avreageSampleValue = 0;//,avreageMotorSampleValue = 0; //double tempcalcspeed = 0; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 6b75c410d..08136c846 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -33,6 +33,7 @@ #include "drivers/Valves/Valve.h" #include "drivers/Flash_ram/MCU_E2Prom.h" #include +#include #include "heaters/heaters_ex.h" diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h index cf743c1a6..5f347c5ba 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.h @@ -34,6 +34,7 @@ uint32_t PowerOffCancel(void);//POWER_OFF_CANCELLED void PowerOffSetTemperatureThreshold (int32_t temperature); //celsius temperature bool PowerOffInProcessGetState(void); +uint32_t PowerOffHeatersOff(void); uint32_t PowerDownUpdateFunc(MessageContainer* requestContainer); uint32_t AbortPowerDownFunc(MessageContainer* requestContainer); -- cgit v1.3.1 From 12aa8a9ea3347b0c8365c14e172311d6b8ee6f38 Mon Sep 17 00:00:00 2001 From: Shai Frieder Date: Wed, 4 Mar 2020 17:16:25 +0200 Subject: --- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 1 + .../WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.c | 5 -- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.c | 59 +++++++++++++++------- .../WHS_Card/D_MAX11614_ADC/WHS_MAX11614_A2D.h | 13 +++++ .../Embedded/Modules/General/GeneralHardware.c | 1 + .../Embedded_SW/Embedded/Modules/General/process.c | 2 +- .../Embedded/Modules/Heaters/Heaters_print.c | 1 + .../Embedded/Modules/Thread/ThreadLoad.c | 3 ++ .../Embedded/Modules/Thread/Thread_print.c | 2 +- .../StateMachines/Initialization/InitSequence.c | 2 + .../StateMachines/Initialization/PowerIdle.c | 2 +- .../Initialization/PowerOffSequence.c | 2 +- 12 files changed, 65 insertions(+), 28 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index 2d3763ede..d9a25aa61 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -18,6 +18,7 @@ #include #include "Drivers/I2C_Communication/Head_Card/IO_Ports/Head_IO.h" +#include FPGA_GPI FPGA_Gpi; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.c index c25a0397c..d589b35ec 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_AD5272_Rheostat/WHS_Rheostat.c @@ -148,8 +148,3 @@ bool Gas_Voc() return status; } -bool Set_Next_Gas_Value() -{ - - -} 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 c712dbd32..f813e9b91 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 @@ -18,7 +18,7 @@ #include #include #include - +#include #include "drivers/Flash_ram/MCU_E2Prom.h" uint16_t Orf_zero_value[DRIER_FLOW_METER+1] = {1112,0,1040}; @@ -253,7 +253,7 @@ double get_Q(WHS_Flow_Meter num) bool get_cur_vlv1(uint16_t *value) { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[14]) << 8) | U20_MAX11614.MAX11614_Read_Buf[15] ) & 0x0FFF); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[14]) << 8) | U20_MAX11614.MAX11614_Read_Buf[15] ) & 0x0FFF);//AIN7 ReportWithPackageFilter(WasteFilter,"------------ get_cur_vlv1 (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } @@ -262,7 +262,7 @@ bool get_cur_fan(uint16_t *value) { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[12]) << 8) | U20_MAX11614.MAX11614_Read_Buf[13] ) & 0x0FFF); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[12]) << 8) | U20_MAX11614.MAX11614_Read_Buf[13] ) & 0x0FFF);//AIN6 ReportWithPackageFilter(WasteFilter,"------------ get_cur_fan (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } @@ -271,7 +271,7 @@ bool get_gas_out(uint16_t *value) { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[10]) << 8) | U20_MAX11614.MAX11614_Read_Buf[11] ) & 0x0FFF ); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[10]) << 8) | U20_MAX11614.MAX11614_Read_Buf[11] ) & 0x0FFF );//AIN5 ReportWithPackageFilter(WasteFilter,"------------ get_gas_out (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } @@ -280,16 +280,16 @@ bool get_vlev2(uint16_t *value) { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[8]) << 8) | U20_MAX11614.MAX11614_Read_Buf[9] ) & 0x0FFF ); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[8]) << 8) | U20_MAX11614.MAX11614_Read_Buf[9] ) & 0x0FFF );//AIN4 ReportWithPackageFilter(WasteFilter,"------------ get_vlev2 (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } -bool get_vlev1(uint16_t *value) // U36 connected to AIN3 +bool get_vlev1(uint16_t *value) // U36 connected to AIN1 { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[2]) << 8) | U20_MAX11614.MAX11614_Read_Buf[3] ) & 0x0FFF ); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[2]) << 8) | U20_MAX11614.MAX11614_Read_Buf[3] ) & 0x0FFF );//AIN1 ReportWithPackageFilter(WasteFilter,"------------ get_vlev1 (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } @@ -298,7 +298,7 @@ bool get_orf_3(uint16_t *value) // U33 connected to AIN0 { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[0]) << 8) | U20_MAX11614.MAX11614_Read_Buf[1] ) & 0x0FFF ); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[0]) << 8) | U20_MAX11614.MAX11614_Read_Buf[1] ) & 0x0FFF );//AIN0 ReportWithPackageFilter(WasteFilter,"------------ get_orf_3 (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } @@ -307,7 +307,7 @@ bool get_orf_2(uint16_t *value) // U36 connected to AIN3 { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[6]) << 8) | U20_MAX11614.MAX11614_Read_Buf[7] ) & 0x0FFF ); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[6]) << 8) | U20_MAX11614.MAX11614_Read_Buf[7] ) & 0x0FFF );// AIN3 ReportWithPackageFilter(WasteFilter,"------------ get_orf_2 (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } @@ -315,7 +315,7 @@ bool get_orf_2(uint16_t *value) // U36 connected to AIN3 bool get_orf_1(uint16_t *value) // U34 connected to AIN2 { bool status = OK; - *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[4]) << 8) | U20_MAX11614.MAX11614_Read_Buf[5] ) & 0x0FFF ); + *value = (((((uint16_t)U20_MAX11614.MAX11614_Read_Buf[4]) << 8) | U20_MAX11614.MAX11614_Read_Buf[5] ) & 0x0FFF ); // AIN2 ReportWithPackageFilter(WasteFilter,"------------ get_orf_1 (value)-----------------", __FILE__,__LINE__, value, RpMessage, 0, 0); return status; } @@ -378,18 +378,39 @@ double GetWHSAirFlow(uint8_t OR_Id) return Q_value ; } - -uint16_t GetWHSGasSensor() +#define coefficient 9.72 +double GetWHSWasteTankLevelMiliLiter() { - uint16_t value = 0; - get_gas_out(&value); - return value; + uint16_t Vm = 0; + uint16_t V0 = 0; + double waste_volume_ml = 0.0; + + get_vlev1(&Vm); + MCU_E2PromRead(EEPROM_WASTE_TANK_ZERO_VALUE,&V0); + waste_volume_ml = (coefficient * (Vm -V0)); + ReportWithPackageFilter(WasteFilter,"------------ waste_volume_ml -----------------", __FILE__, __LINE__, 0, RpMessage, (waste_volume_ml * 1000), 0); + return waste_volume_ml; } -uint16_t GetWHSWasteTankLevel() +#define OPEN_WASTE_VALVE 0 +#define CLOSE_WASTE_VALVE 1 +bool waste_seq() { - uint16_t value = 0; - get_cur_fan(&value); - return value; + bool status = OK; + double waste_level = 0.0; + + ReportWithPackageFilter(WasteFilter,"------------ open waste level Air valve -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); + Trigger_SetWHS_VOC_Valve(OPEN_WASTE_VALVE); + ReportWithPackageFilter(WasteFilter,"------------ wait 1 second -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); + + ReportWithPackageFilter(WasteFilter,"------------ close waste level Air valve -----------------", __FILE__, __LINE__, 0, RpMessage, 0, 0); + Trigger_SetWHS_VOC_Valve(CLOSE_WASTE_VALVE); + + waste_level = GetWHSWasteTankLevelMiliLiter(); + ReportWithPackageFilter(WasteFilter,"------------ get waste level in ml -----------------", __FILE__, __LINE__, 0, RpMessage, (waste_level*1000), 0); + + + + return status; } 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 0a4f73508..223135e37 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 @@ -4,6 +4,18 @@ #ifndef WHS_MAX11614_H_ #define WHS_MAX11614_H_ + +/* + * DRIER -> ORF3 -> U33 -> ORF_1 -> U20.5 (AIN0) + * WAST_TANK -> LEV1 -> U35 -> ORF_2 -> U20.6 (AIN1) + * HEAD -> ORF1 -> U34 -> ORF_3 -> U20.7 (AIN2) + * N.U. -> ORF2 -> U36 -> VLEV1 -> U20.8 (AIN3) + * N.U -> U39 -> U45 -> VLEV2 -> U20.9 (AIN4) + * REHOSTAT -> U40 -> U45 -> GAS_OUT -> U20.10 (AIN5) + * CURRENT FAN -> U13 -> CUR_FAN -> U20.11 (AIN6) + * VALV1 -> U25 -> CUR_VLV1 -> U20.12 (AIN7) + * VALV2 -> U29 -> CUR_VLV2 -> U20.4 (AIN8) + */ #include typedef enum @@ -58,6 +70,7 @@ uint16_t GetWHSWasteTankLevel(void); bool SetDisplayView(WHS_Display_View view ); bool SetLeftDisplayView(WHS_Left_Display_View view ); bool SetWriteDisplayView(WHS_Left_Display_View view ); +uint32_t WHS_MAX11614_Load_OrificeZeroValue (uint16_t O1, uint16_t O3); uint16_t Get_orf1_V0(void); uint16_t Get_orf3_V0(void); diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c index 5a920bc25..6297299de 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c +++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c @@ -53,6 +53,7 @@ #include "Modules/Waste/Waste.h" #include "Drivers/I2C_Communication/Main_Board_EEPROM/Main_EEPROM.h" #include +#include uint32_t EmbeddedParametersInit(void); uint32_t EmbeddedParametersWrite(void * buffer, uint16_t size); diff --git a/Software/Embedded_SW/Embedded/Modules/General/process.c b/Software/Embedded_SW/Embedded/Modules/General/process.c index da9070201..4cb35d488 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/process.c +++ b/Software/Embedded_SW/Embedded/Modules/General/process.c @@ -25,7 +25,7 @@ #include "StateMachines/Initialization/InitSequence.h" #include "drivers/Flash_ram/FlashProgram.h" - +#include double dyeingspeed = 0; double dryerbufferlength = 0; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 66f965d15..9b628a160 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -38,6 +38,7 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h" #include "Drivers/I2C_Communication/I2C.h" +#include #include "StateMachines/Printing/PrintingSTM.h" #include "StateMachines/Initialization/PowerIdle.h" diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 6116818b2..946eae0ec 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -32,6 +32,9 @@ #include "drivers/motors/motor.h" #include "drivers/Flash_ram/MCU_E2Prom.h" #include "Drivers/I2C_Communication/I2C.h" +#include +#include + #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 229b86cac..91f655171 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -458,7 +458,7 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //extern int MotorSamplePointer[MAX_THREAD_MOTORS_NUM]; //read value is the dancer angle - int i,index=MAX_THREAD_MOTORS_NUM; + int i,index=MAX_THREAD_MOTORS_NUM,len; //int len; int DancerId; int32_t TranslatedReadValue, avreageSampleValue = 0;//,avreageMotorSampleValue = 0; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 08136c846..6d9b8c411 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -34,6 +34,8 @@ #include "drivers/Flash_ram/MCU_E2Prom.h" #include #include +#include +#include #include "heaters/heaters_ex.h" diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c index 91a089321..11fb18110 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerIdle.c @@ -23,7 +23,7 @@ #include "drivers/I2C_Communication/DAC/Blower.h" #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/Valves/Valve.h" - +#include #include "Modules/General/buttons.h" #include "heaters/heaters_ex.h" diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c index a0cd8d118..10dde5bbe 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/PowerOffSequence.c @@ -34,7 +34,7 @@ #include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h" #include "drivers/Heater/TemperatureSensor.h" #include "drivers/Valves/Valve.h" - +#include #include "StateMachines/Printing/PrintingSTM.h" #include "PowerIdle.h" -- cgit v1.3.1 From 42d9e4ee8951e337046428e332099ba16047856b Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 5 Mar 2020 18:14:05 +0200 Subject: Version 1.4.6.16 handle rockers PPC homing request, fix FFS semaphore issue --- .../Embedded/Common/SWUpdate/FileSystem.c | 178 +++++++++++++-------- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Modules/Diagnostics/DiagnosticsHoming.c | 20 +++ .../Embedded_SW/Embedded/Modules/General/Safety.c | 18 +++ .../Embedded/Modules/Thread/Thread_print.c | 4 +- .../Embedded/StateMachines/Printing/PrintingSTM.c | 3 +- 6 files changed, 155 insertions(+), 70 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index 3b5ba176d..e14727f4b 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -296,6 +296,11 @@ uint32_t FileDownloadRequestFunc(MessageContainer* requestContainer) Semaphore_post(FFS_Sem); } } + else + { + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); + } } } @@ -453,16 +458,23 @@ uint32_t CreateRequestFunc(MessageContainer* requestContainer) Fresult = FR_DENIED; else { - Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); - Fresult = f_open(UploadFileHandle,request->path,FA_CREATE_NEW); - if (Fresult == FR_OK) + if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) { - if (f_close (UploadFileHandle)!= FR_OK) + Fresult = f_open(UploadFileHandle,request->path,FA_CREATE_NEW); + if (Fresult == FR_OK) { - Fresult = FR_LOCKED; + if (f_close (UploadFileHandle)!= FR_OK) + { + Fresult = FR_LOCKED; + } } + Semaphore_post(FFS_Sem); + } + else + { + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); } - Semaphore_post(FFS_Sem); } } if (Fresult != FR_OK) @@ -502,9 +514,16 @@ uint32_t DeleteRequestFunc(MessageContainer* requestContainer) //int NumOfFiles = 0; FRESULT Fresult = FR_OK; - Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); - Fresult = f_unlink(request->path); - Semaphore_post(FFS_Sem); + if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) + { + Fresult = f_unlink(request->path); + Semaphore_post(FFS_Sem); + } + else + { + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); + } REPORT_MSG(Fresult, "File Delete"); responseContainer = createContainer(MESSAGE_TYPE__DeleteResponse, requestContainer->token, false, &response, &delete_response__pack, &delete_response__get_packed_size); @@ -587,6 +606,8 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) char FullPath[MAX_NUM_OF_FILES][60]; int i,NumOfFiles = 0; FRESULT Fresult = FR_OK; + FileInfo **FilesInfo = (FileInfo**)my_malloc(sizeof(FileInfo *)*(MAX_NUM_OF_FILES)); + FileInfo Data[MAX_NUM_OF_FILES]; /* time_t t; struct tm *ltm; @@ -597,40 +618,45 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) Report(curTime, __FILE__, ltm->tm_hour,ltm->tm_min , RpWarning, ltm->tm_sec, 0); */ - Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); - Fresult |= f_opendir(&dir, g_cCwdBuf); - if(Fresult != FR_OK) + if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) { - Semaphore_post(FFS_Sem); - return(Fresult); - } + Fresult |= f_opendir(&dir, g_cCwdBuf); + if(Fresult != FR_OK) + { + Semaphore_post(FFS_Sem); + return(Fresult); + } - memset (fno,0,sizeof(fno)); - FileInfo **FilesInfo = (FileInfo**)my_malloc(sizeof(FileInfo *)*(MAX_NUM_OF_FILES)); - FileInfo Data[MAX_NUM_OF_FILES]; - memset(fno,0,sizeof(fno)); - fno[0] = my_malloc(sizeof(FILINFO)); - memset (fno[0],0,sizeof(FILINFO)); + memset (fno,0,sizeof(fno)); + memset(fno,0,sizeof(fno)); + fno[0] = my_malloc(sizeof(FILINFO)); + memset (fno[0],0,sizeof(FILINFO)); - //============================ - Fresult = f_opendir(&dir, request->path); /* Open the directory */ - if (Fresult == FR_OK) - { - for (NumOfFiles = 1;NumOfFiles < MAX_NUM_OF_FILES;NumOfFiles++) + //============================ + Fresult = f_opendir(&dir, request->path); /* Open the directory */ + if (Fresult == FR_OK) { - fno[NumOfFiles] = my_malloc(sizeof(FILINFO)); - memset (fno[NumOfFiles],0,sizeof(FILINFO)); - Fresult = f_readdir(&dir, fno[NumOfFiles]); /* Read a directory item */ - if (Fresult == FR_OK) + for (NumOfFiles = 1;NumOfFiles < MAX_NUM_OF_FILES;NumOfFiles++) { - if(fno[NumOfFiles]->fname[0] ==0) + fno[NumOfFiles] = my_malloc(sizeof(FILINFO)); + memset (fno[NumOfFiles],0,sizeof(FILINFO)); + Fresult = f_readdir(&dir, fno[NumOfFiles]); /* Read a directory item */ + if (Fresult == FR_OK) { - break; + if(fno[NumOfFiles]->fname[0] ==0) + { + break; + } } } } - } - Semaphore_post(FFS_Sem); + Semaphore_post(FFS_Sem); + } + else + { + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); + } if ((Fresult == FR_OK)&&(NumOfFiles)) { @@ -688,8 +714,10 @@ uint32_t GetFilesRequestFunc(MessageContainer* requestContainer) size_t container_size = message_container__pack(&responseContainer, container_buffer); SendChars(container_buffer, container_size); } - my_free(responseContainer.data.data); - my_free(FilesInfo); + if (responseContainer.data.data) + my_free(responseContainer.data.data); + if (FilesInfo) + my_free(FilesInfo); get_files_request__free_unpacked(request,NULL); for (i = 0;i < NumOfFiles;i++) { @@ -711,29 +739,32 @@ FRESULT FileWrite(void * buffer, uint16_t size,char *path, uint32_t timeout) Fresult = FR_DENIED; else { - if (Semaphore_pend(FFS_Sem, timeout) == false) - { - LOG_ERROR (false,"file system busy error"); - return FR_TIMEOUT; - } - - Fresult = f_open(FileHandle,path,FA_WRITE | FA_OPEN_ALWAYS|FA_CREATE_ALWAYS); - if (Fresult == FR_OK) + if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) { - Fresult = f_write(FileHandle,buffer,size,&Bytes ); - if(Fresult != FR_OK) + Fresult = f_open(FileHandle,path,FA_WRITE | FA_OPEN_ALWAYS|FA_CREATE_ALWAYS); + if (Fresult == FR_OK) { - LOG_ERROR (Fresult,"fwrite error"); + Fresult = f_write(FileHandle,buffer,size,&Bytes ); + if(Fresult != FR_OK) + { + LOG_ERROR (Fresult,"fwrite error"); + } + //LOG_ERROR (Bytes,"f_write ok no of bytes"); + Report("f_write ok no of bytes", __FILE__, __LINE__, Bytes, RpWarning, (int)size, 0); + f_close(FileHandle); + } + else + { + LOG_ERROR (Fresult,"fopen error"); } - //LOG_ERROR (Bytes,"f_write ok no of bytes"); - Report("f_write ok no of bytes", __FILE__, __LINE__, Bytes, RpWarning, (int)size, 0); - f_close(FileHandle); + Semaphore_post(FFS_Sem); } else { - LOG_ERROR (Fresult,"fopen error"); + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); } - Semaphore_post(FFS_Sem); + my_free(FileHandle); } } @@ -763,29 +794,36 @@ FRESULT FileRead(char *path, uint32_t *Size, void **Buffer) Fresult = FR_DENIED; else { - Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); - Fresult = f_open(FileHandle,path,FA_READ); - if (Fresult == FR_OK) + if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) { - Fresult = f_read(FileHandle,buffer,fno->fsize,&Bytes ); - if(Fresult == FR_OK) + Fresult = f_open(FileHandle,path,FA_READ); + if (Fresult == FR_OK) { - *Buffer = buffer; - *Size = (uint32_t)fno->fsize; - Report("f_read ok no of bytes", __FILE__, __LINE__, Bytes, RpWarning, (int)fno->fsize, 0); + Fresult = f_read(FileHandle,buffer,fno->fsize,&Bytes ); + if(Fresult == FR_OK) + { + *Buffer = buffer; + *Size = (uint32_t)fno->fsize; + Report("f_read ok no of bytes", __FILE__, __LINE__, Bytes, RpWarning, (int)fno->fsize, 0); + } + else + { + LOG_ERROR (Fresult,"fread error"); + my_free (buffer); + } + f_close(FileHandle); } else { - LOG_ERROR (Fresult,"fread error"); + LOG_ERROR (Fresult,"fopen error"); my_free (buffer); } - f_close(FileHandle); Semaphore_post(FFS_Sem); } else { - LOG_ERROR (Fresult,"fopen error"); - my_free (buffer); + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); } my_free(FileHandle); } @@ -819,8 +857,16 @@ FRESULT FileOpen(char *path, uint32_t *Size, FIL *FileHandle) if (FileHandle == 0) Fresult = FR_DENIED; else - Semaphore_pend(FFS_Sem, BIOS_WAIT_FOREVER); - Fresult = f_open(FileHandle,path,FA_READ); + if (Semaphore_pend(FFS_Sem, BIOS_NO_WAIT)) + { + Fresult = f_open(FileHandle,path,FA_READ); + Semaphore_post(FFS_Sem); //will be closed with the f_close, in the job + } + else + { + Fresult = FR_DENIED; + Report("Semaphore_pend failed", __FILE__, __LINE__, 4, RpWarning, (int)0, 0); + } } else { 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 28ab799a1..6c2e35f76 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,15}; +TangoVersion_t _gTangoVersion = {1,4,6,16}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index 0b2b56c5b..427ed5098 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -39,11 +39,21 @@ char HomingToken[NUM_OF_MOTORS][36+1]={0}; /******************************************************************************** * Motor Homing ********************************************************************************/ +int32_t keepkvalright,keepkvalleft; + uint32_t MotorHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) { MessageContainer responseContainer; MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT; + if(deviceID == HARDWARE_MOTOR_TYPE__MOTO_RLOADING) + { + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, keepkvalright); + } + if(deviceID == HARDWARE_MOTOR_TYPE__MOTO_LLOADING) + { + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, keepkvalleft); + } responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); responseContainer.has_continuous = true; responseContainer.continuous = true; @@ -107,6 +117,16 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) } if ( Motor_Id_to_LS_IdDown[MotorId] != MAX_GPI) { + if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_RLOADING) + { + keepkvalright = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun; + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); + } + if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_LLOADING) + { + keepkvalleft = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].kvalrun; + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); + } MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed, Motor_Id_to_LS_IdUp[MotorId], MotorHomingRequestCallback,30000); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c index 139763c75..9680e11d0 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c +++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c @@ -47,6 +47,11 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) bool mAirFlowAlarmState = false; bool mAirFilterAlarmState = false; bool mWasteOverflowAlarmState = false; +#ifdef CONTROL_DEBUG + uint32_t tempp,tempq,delta; + uint32_t sys_ticks_start = msec_millisecondCounter,sys_ticks_end,max = 0,dev = 0; + tempp = HibernateRTCSSGet(); +#endif for (Disp_i = 0;Disp_i < MAX_SYSTEM_DISPENSERS;Disp_i++) { if (isMotorConfigured(Disp_i + HARDWARE_MOTOR_TYPE__MOTO_DISPENSER_1)==true) @@ -194,6 +199,19 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, false); WasteOverflowAlarmState = mWasteOverflowAlarmState; } +#ifdef CONTROL_DEBUG + tempq = HibernateRTCSSGet(); + if (tempq < tempp) + { + delta = (32768 - tempp) + tempq + 1; + } + else + delta = tempq - tempp; + if (delta>1000) + { + ReportWithPackageFilter(GeneralFilter,"------ Safety Delta ------------", __FILE__,delta,tempq, RpMessage,tempp, 0); + } +#endif return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 91f655171..26d7ea854 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -458,8 +458,8 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) //extern int MotorSamplePointer[MAX_THREAD_MOTORS_NUM]; //read value is the dancer angle - int i,index=MAX_THREAD_MOTORS_NUM,len; - //int len; + int i,index=MAX_THREAD_MOTORS_NUM; + int len; int DancerId; int32_t TranslatedReadValue, avreageSampleValue = 0;//,avreageMotorSampleValue = 0; //double tempcalcspeed = 0; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 962bc37ee..a8490556b 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -141,7 +141,8 @@ extern Semaphore_Handle FFS_Sem; FRESULT CloseJobFile() { Fresult = f_close(JobRequestFileHandle); - Semaphore_post(FFS_Sem); + //Semaphore_post(FFS_Sem); +#warning trying not to hold the semaphore and enable the PPC/MS to work on several files simultaneously readbBytes = 0; ImmediateRead = 0; -- cgit v1.3.1 From d07917743723a9ba3267e5cf6627ab19c75ffcc7 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Sun, 15 Mar 2020 13:34:06 +0200 Subject: sime fixes for Rapid 2 ( new LTFU) --- .../Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 6 ++++++ Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c | 4 ++-- .../Embedded/Modules/Diagnostics/DiagnosticsHoming.c | 10 +++++----- Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c | 13 +++++++++++-- Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 6 +++--- 5 files changed, 27 insertions(+), 12 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index d9a25aa61..00b48d3d8 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -422,6 +422,12 @@ bool FPGA_Read_limit_Switches(FPGA_GPI_ENUM Limit_Switch) case GPI_LS_DH_CLEAN_DOWN: LM_Status = Ls_Dryer_Dh.bits.F1_LS_DH_CLEAN_DOWN; break; + case GPI_LS_LSPARE1: + LM_Status = LS_Left.bits.F1_LS_LSPARE1; + break; + case GPI_LS_LSPARE2: + LM_Status = LS_Left.bits.F1_LS_LSPARE2; + break; case I2C_HEADCARD_COVER_LS_FRONT: if(Head_Type == HEAD_TYPE_SYLKO) LM_Status = !(Head_I2C_EXP4_0x46.bits.INPUT_LS_FRONT); diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index fc8d29b56..b7b54455d 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -845,8 +845,8 @@ void MotorActionsInit(void) } if (Head_Type == HEAD_TYPE_SYLKO)//adjust the limit switches { - Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_REAR; - Motor_Id_to_LS_IdUp [HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_FRONT; + Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_FRONT; + Motor_Id_to_LS_IdUp [HARDWARE_MOTOR_TYPE__MOTO_DH_LID] = I2C_HEADCARD_COVER_LS_REAR ; } } diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index acecf4c7c..bdbf1b33e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -39,7 +39,7 @@ char HomingToken[NUM_OF_MOTORS][36+1]={0}; /******************************************************************************** * Motor Homing ********************************************************************************/ -int32_t keepkvalright,keepkvalleft; +//int32_t keepkvalright,keepkvalleft; uint32_t MotorHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) { @@ -48,11 +48,11 @@ uint32_t MotorHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) if(deviceID == HARDWARE_MOTOR_TYPE__MOTO_RLOADING) { - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, keepkvalright); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 24); } if(deviceID == HARDWARE_MOTOR_TYPE__MOTO_LLOADING) { - MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, keepkvalleft); + MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 24); } responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); responseContainer.has_continuous = true; @@ -119,12 +119,12 @@ uint32_t MotorHomingRequestFunc(MessageContainer* requestContainer) { if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_RLOADING) { - keepkvalright = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun; + //keepkvalright = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].kvalrun; MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 70); } if(MotorId == HARDWARE_MOTOR_TYPE__MOTO_LLOADING) { - keepkvalleft = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].kvalrun; + //keepkvalleft = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].kvalrun; MotorSetKvalRun(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 70); } MotorMovetoLimitSwitch (MotorId,1-MotorsCfg[MotorId].directionthreadwize, speed, Motor_Id_to_LS_IdUp[MotorId], MotorHomingRequestCallback,30000); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c index 946eae0ec..698852f00 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c @@ -415,7 +415,8 @@ CallbackCounter++; //MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID].directionthreadwize, 200, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID, 0, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); - Trigger_Head_Actuators_Control(ACTOT, LOW,true); + Trigger_Head_Actuators_Control(ACTOT, LOW,false); + Trigger_Head_Actuators_Control(ACTIN, LOW,false); return OK; } uint32_t Thread_Load_Lift_Dancers(void) @@ -427,6 +428,8 @@ MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDANCER,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, 15, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_RDANCER], Thread_Load_HomingCallback,15000);*/ CallbackCounter++; MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 500, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000); + CallbackCounter++; + MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER2,1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER2].directionthreadwize, 500, Motor_Id_to_LS_IdUp[HARDWARE_MOTOR_TYPE__MOTO_LDANCER2], Thread_Load_HomingCallback,25000); return OK; } @@ -509,6 +512,11 @@ // MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 500, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000); MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, (5000*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].microstep), Thread_Load_HomingCallback,20000); + CallbackCounter++; + MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_LDANCER2, 500); + +// MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_LDANCER1,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1].directionthreadwize, 500, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_LDANCER1], Thread_Load_HomingCallback,25000); + MotorMoveWithCallback (HARDWARE_MOTOR_TYPE__MOTO_LDANCER2, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER2].directionthreadwize, (5000*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LDANCER2].microstep), Thread_Load_HomingCallback,20000); return OK; } @@ -523,7 +531,8 @@ CallbackCounter++; // MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID].directionthreadwize, 200, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); MotorGotoWithCallback(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID, 2, Motor_Id_to_LS_IdDown[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LID], Thread_Load_HomingCallback,10000); - Trigger_Head_Actuators_Control(ACTOT, LOW,false); + Trigger_Head_Actuators_Control(ACTOT, LOW,true); + Trigger_Head_Actuators_Control(ACTIN, LOW,true); return OK; } uint32_t Thread_Load_Resume_Heating(void) diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 26d7ea854..be6644067 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -868,10 +868,10 @@ uint32_t HandleJobThreadControlParameters(ThreadParameters* ThreadParams) ////////////////////////////////////////////////// for (i = 0;i < (int)MotorsControl[Motor_i].pvinputfilterfactormode; i++) { - if (Motor_i == DRYER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled + //if (Motor_i == DRYER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled MotorSamples[Motor_i][i] = Control_Read_Dancer_Position(ThreadMotorIdToDancerId[Motor_i],0); //reset the samples value for control beginning - else if ((Motor_i == POOLER_MOTOR)||(Motor_i == FEEDER_MOTOR)) - MotorSamples[Motor_i][i] = DancersCfg[ThreadMotorIdToDancerId[Motor_i]].zeropoint; + // else if ((Motor_i == POOLER_MOTOR)||(Motor_i == FEEDER_MOTOR)) + // MotorSamples[Motor_i][i] = DancersCfg[ThreadMotorIdToDancerId[Motor_i]].zeropoint; //MotorSpeedSamples[Motor_i][i] = 0; } MotorSamplePointer[Motor_i] = 0; -- cgit v1.3.1