From 12642bc555c2fadbbe501b642ad0272abb6d8ee4 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 7 Aug 2018 09:46:39 +0300 Subject: fix jogging directions --- .../Embedded/Modules/Thread/Thread_print.c | 32 ++++++++++++++-------- 1 file changed, 21 insertions(+), 11 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 b536c93b0..c3b58625f 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -20,7 +20,8 @@ #include "StateMachines/Printing/PrintingSTM.h" #include "drivers/Motors/Motor.h" -#include "drivers/Danser_SSI/ssi_comm.h" +//#include "drivers/SSI_Comm/ssi_comm.h" +#include "drivers/SSI_Comm/Dancer/Dancer.h" #include "drivers/Heater/TemperatureSensor.h" #include "drivers/Heater/Heater.h" #include "drivers/Motors/Motor.h" @@ -353,16 +354,21 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) avreageSampleValue += MotorSamples[index][i]; avreageSampleValue = avreageSampleValue / MotorsControl[index].pvinputfilterfactormode; - if (index == POOLER_MOTOR) + if (BreakSensorenabled == true) { - if (JobCounter > eOneSecond) + if (index == POOLER_MOTOR) { - if (ReadBreakSensor()==ERROR) + if (JobCounter > eOneSecond) { - //LOG_ERROR(index, "ReadBreakSensor Error"); - JobEndReason = JOB_THREAD_BREAK; - //SendJobProgress(0.0,0,false, "ReadBreakSensor Error"); - EndState(CurrentJob,"ReadBreakSensor Error" ); + if (ReadBreakSensor()==ERROR) + { + //consider applying the debouce parameters later + //BreakSensordebouncetimemilli + //LOG_ERROR(index, "ReadBreakSensor Error"); + JobEndReason = JOB_THREAD_BREAK; + //SendJobProgress(0.0,0,false, "ReadBreakSensor Error"); + EndState(CurrentJob,"ReadBreakSensor Error" ); + } } } } @@ -415,6 +421,10 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) } //******************************************************************************************************************** +uint32_t ThreadGetMotorSpeed(threadMotorsEnum MotorId) +{ + return CurrentControlledSpeed[MotorId]; +} //******************************************************************************************************************** uint32_t ThreadInitialTestStub(HardwareMotor * request) @@ -561,17 +571,17 @@ uint32_t ThreadPreSegmentState(void *JobDetails) //MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RDRIVING, OriginalMotorSpd_2PPS[FEEDER_MOTOR]); //#warning rocker disabled - if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].maxfrequency) + if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].maxfrequency > 0) { MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize); MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 2); } - if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].maxfrequency) + if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].maxfrequency > 0) { MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize); MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 2); } -//#warning rocker disabled + //#warning rocker disabled // MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 0, GPI_LS_RLOADMOTOR_UP, EndState); //TODO -- cgit v1.3.1 From 8c9dcb78af71f508c6ac70e0ca602727a5325b90 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 7 Aug 2018 10:35:00 +0300 Subject: some changes from machine 001 --- .../Embedded/Communication/CommunicationTask.c | 4 +-- .../Embedded_SW/Embedded/Modules/Control/control.c | 4 ++- .../Modules/Diagnostics/DiagnosticsHoming.c | 13 +++----- .../Embedded/Modules/Heaters/Heaters_init.c | 38 +++++++++------------- .../Embedded/Modules/Thread/Thread_print.c | 17 ++++++---- 5 files changed, 36 insertions(+), 40 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 b6841ef7e..4051c57e6 100644 --- a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c +++ b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c @@ -95,7 +95,7 @@ void communicationTask(UArg arg0, UArg arg1) initArray(1); //ui32RxCount = 0; - CommunicationRxMsgQ = Mailbox_create(sizeof(CommRxMessageStruc), 5, NULL,NULL); + CommunicationRxMsgQ = Mailbox_create(sizeof(CommRxMessageStruc), 4, NULL,NULL); /* Block while the device is NOT connected to the USB */ // Semaphore_pend(initConnectionSem, BIOS_WAIT_FOREVER); @@ -166,7 +166,7 @@ void communicationTxTask(UArg arg0, UArg arg1) SetCommunicationPath(isUART); #endif //ui32RxCount = 0; - CommunicationTxMsgQ = Mailbox_create(sizeof(CommTxMessageStruc), 10, NULL,NULL); + CommunicationTxMsgQ = Mailbox_create(sizeof(CommTxMessageStruc), 4, NULL,NULL); /* Block while the device is NOT connected to the USB */ // Semaphore_pend(initConnectionSem, BIOS_WAIT_FOREVER); diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c index 60322b4d7..6a9735c13 100644 --- a/Software/Embedded_SW/Embedded/Modules/Control/control.c +++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c @@ -293,8 +293,10 @@ uint32_t ControlLoop(uint32_t tick) bool Ten_msTick, Hundred_msTick, Onesecond_Tick,Tick98,Tick998; Ten_msTick = (tick%eTenMillisecond == 0) ?true:false; Hundred_msTick = (tick%eHundredMillisecond == 0) ?true:false; +// Hundred_msTick = (tick%200 == 0) ?true:false; Onesecond_Tick = (tick%eOneSecond == 0) ?true:false; - Tick98 = (tick%eHundredMillisecond == 99) ?true:false; + Tick98 = (tick%eHundredMillisecond == 98) ?true:false; +// Tick98 = (tick%200 == 199) ?true:false; Tick998 = (tick%eOneSecond == 996) ?true:false; //ROM_IntMasterDisable(); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index b70c5a744..6745b9ff2 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -81,7 +81,7 @@ uint32_t MotorHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) MessageContainer responseContainer; MotorHomingResponse response = MOTOR_HOMING_RESPONSE__INIT; - responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], false, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); responseContainer.continuous = false; HomingToken[deviceID][0] = 0; uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); @@ -100,7 +100,7 @@ uint32_t DispenserHomingRequestCallback(uint32_t deviceID, uint32_t ReadValue) //open dry air valve in the dispenser Valve_Set((Valves_t) (deviceID+VALVE_2W_MID_AIR_LF), Atm_MidTank_OFF); - responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], false, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); + responseContainer = createContainer(MESSAGE_TYPE__MotorHomingResponse, HomingToken[deviceID], true, &response, &motor_homing_response__pack, &motor_homing_response__get_packed_size); responseContainer.continuous = false; HomingToken[deviceID][0] = 0; uint8_t* container_buffer = malloc(message_container__get_packed_size(&responseContainer)); @@ -254,20 +254,17 @@ uint32_t DispenserJoggingRequestFunc(MessageContainer* requestContainer) { if (JobIsActive() == false) { - if (request->has_direction) + switch (request->direction) { - switch (request->direction) - { case MOTOR_DIRECTION__Forward: Control3WayValvesWithCallback ((Valves_t) request->index, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer break; case MOTOR_DIRECTION__Backward: Control3WayValvesWithCallback ((Valves_t) request->index, MidTank_Dispenser, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer break; - } - MotorSetDirection(MotorId,request->direction); - MotorSetSpeed(MotorId, /*request->speed*/150); } + MotorSetDirection(MotorId,request->direction); + MotorSetSpeed(MotorId, /*request->speed*/150); } else { diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c index 7989ded9e..8e16e2c01 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_init.c @@ -85,28 +85,22 @@ void HeatingTestRequest(MessageContainer* requestContainer) HeaterId2 = request->hardwarepidcontrol2->hardwarepidcontroltype; status += HeaterConfigRequestMessage(request->hardwarepidcontrol2); - if (request->has_dryerzone1temp) - { - if (request->dryerzone1temp) - status |= HeaterCommandRequestMessage( - HeaterId1, true, - request->dryerzone1temp); - else - status |= HeaterCommandRequestMessage( - HeaterId1, false, - request->dryerzone1temp); - } - if (request->has_dryerzone2temp) - { - if (request->dryerzone2temp) - status |= HeaterCommandRequestMessage( - HeaterId2, true, - request->dryerzone2temp); - else - status |= HeaterCommandRequestMessage( - HeaterId2, false, - request->dryerzone2temp); - } + if (request->dryerzone1temp) + status |= HeaterCommandRequestMessage( + HeaterId1, true, + request->dryerzone1temp); + else + status |= HeaterCommandRequestMessage( + HeaterId1, false, + request->dryerzone1temp); + if (request->dryerzone2temp) + status |= HeaterCommandRequestMessage( + HeaterId2, true, + request->dryerzone2temp); + else + status |= HeaterCommandRequestMessage( + HeaterId2, false, + request->dryerzone2temp); ControlStart(); StubHeatingTestResponse response = STUB_HEATING_TEST_RESPONSE__INIT; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 75d54ef02..5b92fe3a0 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -456,8 +456,7 @@ bool InitialProcess = false; MotorControlConfig[Motor_i].m_preError = 0; MotorControlConfig[Motor_i].m_SetParam = 0;//need to update SetParams on presegment stage - if (MotorsCfg[HW_Motor_Id].has_directionthreadwize) - MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); + MotorSetDirection((TimerMotors_t)HW_Motor_Id,MotorsCfg[HW_Motor_Id].directionthreadwize); if (Motor_i == FEEDER_MOTOR) // dryer motor is speed controlled. later a speed sensor will be utilized, but for now it will not be controlled { @@ -561,13 +560,17 @@ uint32_t ThreadPreSegmentState(void *JobDetails) //MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RDRIVING, OriginalMotorSpd_2PPS[FEEDER_MOTOR]); //#warning rocker disabled - if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].has_directionthreadwize) + if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].maxfrequency > 0) + { MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_RLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RLOADING].directionthreadwize); - MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 2); - if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].has_directionthreadwize) + MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_RLOADING, 2); + } + if (MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].maxfrequency > 0) + { MotorSetDirection((TimerMotors_t)HARDWARE_MOTOR_TYPE__MOTO_LLOADING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_LLOADING].directionthreadwize); - MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 2); -//#warning rocker disabled + MotorSetSpeed(HARDWARE_MOTOR_TYPE__MOTO_LLOADING, 2); + } + //#warning rocker disabled // MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 0, GPI_LS_RLOADMOTOR_UP, EndState); //TODO -- cgit v1.3.1 From 04cddc236245f2f72ff5bd72a9d4df734552b110 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 7 Aug 2018 11:33:03 +0300 Subject: blower control in configuration and diagnostics --- .../Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c | 10 ++++++---- .../Embedded/Modules/Diagnostics/DiagnosticsHoming.c | 9 +++++++-- Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c | 1 - Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c | 11 +++++++---- 4 files changed, 20 insertions(+), 11 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 0e0e7a886..68a651426 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -364,7 +364,8 @@ void SendDiagnostics(void) DiagnosticsMonitor.n_dryerzone1temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__DryerHeater1000w]; DiagnosticsMonitor.n_dryerzone2temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__DryerHeater200w1]; DiagnosticsMonitor.n_dryerzone3temperature = HeaterCounterIndex[HARDWARE_PID_CONTROL_TYPE__DryerHeater200w2]; - + DiagnosticsMonitor.n_blowervoltage = 1; + DiagnosticsMonitor.blowervoltage = &voltage; memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); if (JobIsActive()) @@ -399,20 +400,21 @@ void SendDiagnostics(void) //response.digitalpins = DigitalPinArray; response.n_events = 0; response.n_componentsstates = 0; - if (blowervolatgedisplay == true) +/* if (blowervolatgedisplay == true) { ValueComponentState *BlowerValue = malloc(sizeof(ValueComponentState)); if (BlowerValue) { response.n_componentsstates++; + response.componentsstates = malloc(sizeof(ValueComponentState *)); BlowerValue->has_component = true; BlowerValue->component = VALUE_COMPONENT__BlowerVoltage; BlowerValue->has_value = true; BlowerValue->value = voltage; - response.componentsstates = BlowerValue; + response.componentsstates[0] = BlowerValue; } } - +*/ responseContainer = createContainer(MESSAGE_TYPE__StartDiagnosticsResponse, DiagnosticsToken, false, &response, &start_diagnostics_response__pack, &start_diagnostics_response__get_packed_size); responseContainer.continuous = true; diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c index 176281c77..2a943017c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticsHoming.c @@ -420,7 +420,7 @@ uint32_t SetComponentValueRequestRequestFunc(MessageContainer* requestContainer) MessageContainer responseContainer; uint8_t* container_buffer; uint32_t status = 0; - + uint32_t intvoltage; SetComponentValueRequest* request = set_component_value_request__unpack(NULL, requestContainer->data.len, requestContainer->data.data); @@ -436,9 +436,14 @@ uint32_t SetComponentValueRequestRequestFunc(MessageContainer* requestContainer) case VALUE_COMPONENT__BlowerVoltage: blowervolatgedisplay = true; voltage = request->value; - Control_Voltage_To_Blower(voltage); if (voltage == 0.0) Turn_the_Blower_Off(); + else + { + Turn_the_Blower_On(); + intvoltage = voltage; + Control_Voltage_To_Blower(intvoltage); + } break; default: break; diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index 27d17f044..0e5afe780 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -183,7 +183,6 @@ uint32_t HeaterCommandRequestMessage(int HeaterId, bool OnOff, int Temperature) LOG_ERROR (HeaterId,"HeaterControl not configured"); return ERROR; } -// Turn_the_Blower_On(); if (HeaterId< MAX_HEATERS_NUM) { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c index 1b960dada..e4a5b362c 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c @@ -103,10 +103,13 @@ uint32_t DancerConfigMessage(HardwareDancer * request) uint32_t ThreadConfigBreakSensor(void *request) { HardwareBreakSensor *SensorCfg = (HardwareBreakSensor*)request; - BreakSensorenabled = SensorCfg->enabled; - BreakSensordebouncetimemilli = SensorCfg->debouncetimemilli; - - return OK; + if (SensorCfg) + { + BreakSensorenabled = SensorCfg->enabled; + BreakSensordebouncetimemilli = SensorCfg->debouncetimemilli; + return OK; + } + return ERROR; } uint32_t thread_init(void) { -- cgit v1.3.1 From ad65c02d1a8e7db0fa51bccfc282f274d489de25 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Tue, 7 Aug 2018 14:12:04 +0300 Subject: improve communications. double array are disabled --- .../Embedded_SW/Embedded/Communication/CommunicationTask.c | 2 +- .../Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c | 4 ++-- Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 14 +++++++++++--- .../Embedded_SW/Embedded/Modules/Thread/Thread_print.c | 7 ++++++- 4 files changed, 20 insertions(+), 7 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 4051c57e6..bd89b8f2a 100644 --- a/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c +++ b/Software/Embedded_SW/Embedded/Communication/CommunicationTask.c @@ -166,7 +166,7 @@ void communicationTxTask(UArg arg0, UArg arg1) SetCommunicationPath(isUART); #endif //ui32RxCount = 0; - CommunicationTxMsgQ = Mailbox_create(sizeof(CommTxMessageStruc), 4, NULL,NULL); + CommunicationTxMsgQ = Mailbox_create(sizeof(CommTxMessageStruc), 20, NULL,NULL); /* Block while the device is NOT connected to the USB */ // Semaphore_pend(initConnectionSem, BIOS_WAIT_FOREVER); diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c index 68a651426..95ab9680b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c @@ -368,7 +368,7 @@ void SendDiagnostics(void) DiagnosticsMonitor.blowervoltage = &voltage; memset(HeaterCounterIndex,0,sizeof(HeaterCounterIndex)); - if (JobIsActive()) + /*if (JobIsActive()) { DiagnosticsMonitor.n_dispensersmotorsfrequency = MAX_SYSTEM_DISPENSERS; @@ -393,7 +393,7 @@ void SendDiagnostics(void) DiagnosticsDispenserPressure[i].data = dispenserspressure[i]; DiagnosticsDispenserPressure[i].n_data = DiagnosticsIndex; DiagnosticsMonitor.dispenserspressure[i] = &DiagnosticsDispenserPressure[i]; - } + }*/ response.monitors = &DiagnosticsMonitor; response.n_digitalpins = 0/**MAX_GPI*/; diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 9b5077ecc..84125c5e2 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -233,6 +233,7 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) SegmentReady(Module_IDS,ModuleDone); return OK; // all configured heaters are ready } + char Message[80]; //******************************************************************************************************************** uint32_t IDSSegmentState(void *JobDetails, int SegmentId) @@ -242,7 +243,6 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) TimerMotors_t HW_Motor_Id; double segmentfirst_speed; int CurrentSegment = SegmentId; - char Message[80]; if (CurrentSegment>=JobTicket->n_segments) @@ -267,7 +267,15 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) //(Speed*uStep*PPR)/((2*PI*Dispenser_Radius) segmentfirst_speed = JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanolitterpersecond/ JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanoliterperpulse; - segmentfirst_speed/=MotorsCfg[HW_Motor_Id].microstep; //the dye supply is calculated based on a 1/8 microstep + if (JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->dispenserstepdivision != DISPENSER_STEP_DIVISION__Auto) + { + MotorSetMicroStep(HW_Motor_Id, JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->dispenserstepdivision); + segmentfirst_speed/=JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->dispenserstepdivision; //the dye supply is calculated based on a 1/8 microstep + } + else + { + segmentfirst_speed/=MotorsCfg[HW_Motor_Id].microstep; //the dye supply is calculated based on a 1/8 microstep + } // double Dispenser_speed = (segmentfirst_speed * MotorsCfg[HW_Motor_Id].pulseperround)/(2*PI* MotorsCfg[HW_Motor_Id].pulleyradius); //DispenserControlConfig[Dispenser_i].m_SetParam = Dispenser_speed; // OriginalDispenserSpd_2PPS[Dispenser_i] = (int)Dispenser_speed; @@ -276,7 +284,7 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) DispenserSegmentReady[DispenserId] = false; Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer MotorSetSpeed(HW_Motor_Id, segmentfirst_speed); - usnprintf(Message, 80, "Dispenser %d nl\sec %f nl\pulse %f speed %d",Dispenser_i,JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanolitterpersecond, + usnprintf(Message, 80, "Dispenser %d nl/sec %f nl/pulse %f speed %d",Dispenser_i,JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanolitterpersecond, JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanoliterperpulse,segmentfirst_speed); //LOG_ERROR(segmentfirst_speed,Message); Report(Message,__FILE__,__LINE__,Dispenser_i,RpWarning,segmentfirst_speed,0); diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index 6f4ba1956..f9eb69de7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -289,6 +289,7 @@ void testDancersControl() ThreadControlCBFunction(IfTypeThread*0x100+FEEDER_MOTOR, DancersCfg[HARDWARE_DANCER_TYPE__RightDancer].zeropoint + mm20); ThreadControlActive = false; }*/ +bool dancerinvalid = false; uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) { //#define MAX_CONTROL_SAMPLES 6 @@ -335,7 +336,11 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue) } if (ReadValue == 0x3FFF) { - LOG_ERROR(index, "Dancer value invalid."); + if (dancerinvalid == false) + { + dancerinvalid = true; + LOG_ERROR(index, "Dancer value invalid."); + } return OK; } TranslatedReadValue = ReadValue - DancersCfg[DancerId].zeropoint; -- cgit v1.3.1 From 36d626ba28a5d889452b040ea01fc3b1a36f5da2 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 8 Aug 2018 12:28:42 +0300 Subject: sending some initial job information (dispensers rate and screw speed) --- Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 6 ++++-- Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 84125c5e2..bb552211c 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -233,11 +233,11 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) SegmentReady(Module_IDS,ModuleDone); return OK; // all configured heaters are ready } - char Message[80]; //******************************************************************************************************************** uint32_t IDSSegmentState(void *JobDetails, int SegmentId) { + char Message[80]; JobTicket* JobTicket = JobDetails; int Dispenser_i,n_dispensers,DispenserId; TimerMotors_t HW_Motor_Id; @@ -287,7 +287,9 @@ uint32_t IDSPreSegmentState(void *JobDetails, int SegmentId) usnprintf(Message, 80, "Dispenser %d nl/sec %f nl/pulse %f speed %d",Dispenser_i,JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanolitterpersecond, JobTicket->segments[CurrentSegment]->brushstops[JobBrushStopId]->dispensers[Dispenser_i]->nanoliterperpulse,segmentfirst_speed); //LOG_ERROR(segmentfirst_speed,Message); - Report(Message,__FILE__,__LINE__,Dispenser_i,RpWarning,segmentfirst_speed,0); + //Report(Message,__FILE__,__LINE__,Dispenser_i,RpWarning,segmentfirst_speed,0); + SendJobProgress(0.0,0,false, Message); + } } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 486f8384f..f4242be2b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -261,6 +261,7 @@ uint32_t Winder_Presegment(void *JobDetails, uint32_t SegmentId) //JobTicket* JobTicket = JobDetails; float screw_horizontal_speed = 0; float RotationsPerSecond; + char Message[80]; if (dyeingspeed == 0) { @@ -284,6 +285,11 @@ uint32_t Winder_Presegment(void *JobDetails, uint32_t SegmentId) ScrewSpeed = screw_horizontal_speed*RotationsPerSecond; MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_SCREW,ScrewSpeed); + usnprintf(Message, 80, "SCREW speed Rot/sec %d horizon %d pulses %d",RotationsPerSecond,screw_horizontal_speed,ScrewSpeed); + //LOG_ERROR(segmentfirst_speed,Message); + //Report(Message,__FILE__,__LINE__,Dispenser_i,RpWarning,segmentfirst_speed,0); + SendJobProgress(0.0,0,false, Message); + CurrentControlledSpeed[SCREW_MOTOR] = ScrewSpeed; //screw_horizontal_speed = InternalWinderCfg.milimetersperrotation // * 2. determine optimal micro-step setting -- cgit v1.3.1