aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules/Thread
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules/Thread')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c6
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_init.c11
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c41
3 files changed, 40 insertions, 18 deletions
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
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)
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
index bca6f6533..f9eb69de7 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c
@@ -20,7 +20,7 @@
#include "StateMachines/Printing/PrintingSTM.h"
#include "drivers/Motors/Motor.h"
-#include "drivers/SSI_Comm/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"
@@ -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;
@@ -354,16 +359,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" );
+ }
}
}
}
@@ -416,6 +426,10 @@ uint32_t ThreadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
}
//********************************************************************************************************************
+uint32_t ThreadGetMotorSpeed(threadMotorsEnum MotorId)
+{
+ return CurrentControlledSpeed[MotorId];
+}
//********************************************************************************************************************
uint32_t ThreadInitialTestStub(HardwareMotor * request)
@@ -457,8 +471,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
{
@@ -562,17 +575,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