aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded/Modules
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2020-12-13 01:36:14 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2020-12-13 01:36:14 +0200
commit10ed2886c61b94ed0ec294e40d260d2a69ef2cc1 (patch)
treefd439c24cf0cd48350f42cbfa54aeb90d563e5da /Software/Embedded_SW/Embedded/Modules
parent2a73ff05b9bf95da0f9fe10aa7823bd70f01f01e (diff)
parenta793aababd2b255dda42540715792167164e1e94 (diff)
downloadTango-10ed2886c61b94ed0ec294e40d260d2a69ef2cc1.tar.gz
Tango-10ed2886c61b94ed0ec294e40d260d2a69ef2cc1.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded/Modules')
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c49
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Control/control.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/Safety.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c55
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c20
8 files changed, 58 insertions, 84 deletions
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 829261533..db4535e06 100644
--- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
+++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
@@ -490,16 +490,12 @@ uint32_t AlarmHandlingLoadFile(void)
F_count = 0;
for (i = 0; i < AlarmParametersTable->n_alarmitem ;i++)
{
- FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection;
FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection;
- //FileAlarmItem[F_count].Frequency = AlarmParametersTable->alarmitem[i]->frequency; //1/10/100/1000
FileAlarmItem[F_count].AlarmSource = AlarmParametersTable->alarmitem[i]->alarmsource;
FileAlarmItem[F_count].DeviceId = AlarmParametersTable->alarmitem[i]->deviceid;
FileAlarmItem[F_count].ModuleDeviceId = AlarmParametersTable->alarmitem[i]->moduledeviceid;
FileAlarmItem[F_count].AlarmValue = AlarmParametersTable->alarmitem[i]->alarmvalue;
- FileAlarmItem[F_count].AlarmDirection = AlarmParametersTable->alarmitem[i]->alarmdirection;
FileAlarmItem[F_count].Severity = AlarmParametersTable->alarmitem[i]->severity;
- //FileAlarmItem[F_count].Predecessor = AlarmParametersTable->alarmitem[i]->predecessor;
FileAlarmItem[F_count].DebounceValue = AlarmParametersTable->alarmitem[i]->debouncevalue;
FileAlarmItem[F_count].EventType = AlarmParametersTable->alarmitem[i]->eventtype;
FileAlarmItem[F_count].isPersistent = AlarmParametersTable->alarmitem[i]->ispersistent;
@@ -1010,30 +1006,33 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob)
}
}
}
- if ((AlarmState[Alarm_i].Status == true)&&(FoundReason == JOB_OK))
+ for (Alarm_i = 0;Alarm_i<NumOfSystemAlarms;Alarm_i++)
{
- if(AlarmItem[Alarm_i].Severity>=DEBUG_LOG_CATEGORY__Error)
+ if ((AlarmState[Alarm_i].Status == true)&&(FoundReason == JOB_OK))
{
- ReportWithPackageFilter(AlarmFilter,"an alarm existing before job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
- switch (AlarmItem[Alarm_i].EventType )
+ if(AlarmItem[Alarm_i].Severity>=DEBUG_LOG_CATEGORY__Error)
{
- case EVENT_TYPE__INSUFFICIENT_AIR_FLOW:
- case EVENT_TYPE__VOC_SENSOR_ALARM_TIME:
-#warning unmark to prevent job on voc alarm//case EVENT_TYPE__VOC_SENSOR_ALARM_SLOPE:
- //case EVENT_TYPE__POWER_UP_BIT_FAILURE:
- FoundReason = JOB_WASTE_HANDLING_PROBLEM;
- AlarmId = Alarm_i;
- ReportWithPackageFilter(AlarmFilter,"an alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
- break;
- case EVENT_TYPE__ELECTRICAL_CABINET_OVERTEMPERATURE:
- case EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE:
- case EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE_2:
- FoundReason = JOB_TEMPERATURE_ALARM;
- AlarmId = Alarm_i;
- ReportWithPackageFilter(AlarmFilter,"machine internal over-temperature is preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
- break;
- default:
- break;
+ ReportWithPackageFilter(AlarmFilter,"an alarm existing before job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
+ switch (AlarmItem[Alarm_i].EventType )
+ {
+ case EVENT_TYPE__INSUFFICIENT_AIR_FLOW:
+ case EVENT_TYPE__VOC_SENSOR_ALARM_TIME:
+ //case EVENT_TYPE__VOC_SENSOR_ALARM_SLOPE:
+ //case EVENT_TYPE__POWER_UP_BIT_FAILURE:
+ FoundReason = JOB_WASTE_HANDLING_PROBLEM;
+ AlarmId = Alarm_i;
+ ReportWithPackageFilter(AlarmFilter,"an alarm preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
+ break;
+ case EVENT_TYPE__ELECTRICAL_CABINET_OVERTEMPERATURE:
+ case EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE:
+ case EVENT_TYPE__MACHINE_INTERNAL_OVERTEMPERATURE_2:
+ FoundReason = JOB_TEMPERATURE_ALARM;
+ AlarmId = Alarm_i;
+ ReportWithPackageFilter(AlarmFilter,"machine internal over-temperature is preventing job", __FILE__,__LINE__,AlarmItem[Alarm_i].EventType, AlarmItem[Alarm_i].Severity, AlarmItem[Alarm_i].DeviceId, 0);
+ break;
+ default:
+ break;
+ }
}
}
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
index eb72de61b..ad5a1d5ca 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/MillisecTask.c
@@ -544,8 +544,12 @@ int MillisecCalculateTemperatures (TEMPERATURE_SENSOR_ID_ENUM SensorId)
calc = TemperatureSum[SensorId] / (TemperatureCount[SensorId]-2);
if (TemperatureSum[SensorId]>10)
{
+
if(abs(TemperatureMax[SensorId]-TemperatureMin[SensorId])>2000)
+ {
+ if ((Head_Type == HEAD_TYPE_FLAT_WITHOUT_CARD)||(SensorId!=TEMP_SENSE_AN_ENCLOSURETEMP3))
Report("Millisec Temp spike",__FILE__,SensorId,(int)TemperatureMax[SensorId],RpWarning,(int) TemperatureMin[SensorId],0);
+ }
}
TemperatureSum[SensorId] = 0;
TemperatureCount[SensorId] = 0;
@@ -645,7 +649,6 @@ uint32_t MillisecLowLoop(uint32_t tick)
//Screw_ENC_Velocity_to_DAC(); - for testing the screw enc
if (Head_Type > HEAD_TYPE_FLAT_WITHOUT_CARD)
StartPT100 = TEMP_SENSE_ANALOG_DRYER_TEMP1;
-
if (Ten_msTick)
{
//Speed_Data = Read_Speed_Sensor_TypeII();
diff --git a/Software/Embedded_SW/Embedded/Modules/Control/control.c b/Software/Embedded_SW/Embedded/Modules/Control/control.c
index e02bd8191..e6da43178 100644
--- a/Software/Embedded_SW/Embedded/Modules/Control/control.c
+++ b/Software/Embedded_SW/Embedded/Modules/Control/control.c
@@ -83,6 +83,7 @@ typedef struct
DataReadCBFunction ControlDataReadPtr;
ControlCBFunction ControlCallbackPtr;
uint32_t ControlTiming;
+ uint32_t LastCalled;
char *Name;
}ControlDeviceStruc;
@@ -613,10 +614,13 @@ uint32_t ControlLowLoop(uint32_t tick)
{
if (tick - ControlArray[ControlLowDevice_i].StartTick<=skipped_ticks)
continue;
+ if (tick - ControlArray[ControlLowDevice_i].LastCalled<=skipped_ticks)
+ continue;
if (ControlArray[ControlLowDevice_i].ControlTiming == eOneMillisecond)
continue;
if (ControlArray[ControlLowDevice_i].StartTick == tick)
continue;
+ ControlArray[ControlLowDevice_i].LastCalled = tick;
if (((tick - ControlArray[ControlLowDevice_i].StartTick)%ControlArray[ControlLowDevice_i].ControlTiming)<=skipped_ticks) // run the control on exact intervals
{
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index d880b1381..9cad274b9 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -78,7 +78,7 @@ DiagnosticsMonitors DiagnosticsMonitor = DIAGNOSTICS_MONITORS__INIT;
#define DIAGNOSTICS_LIMIT 3
#define DIAGNOSTICS_DANCER_LIMIT 30
int DiagnosticsIndex = 0;
-int DiagnosticCollectionLimit = 3; //number of data samples to collect before sending to the host
+int DiagnosticCollectionLimit = 1; //number of data samples to collect before sending to the host
//int DiagnosticLimit = eHundredMillisecond; //frequency of data collection
//int DiagnosticFastLimit = eTenMillisecond; //frequency of data collection
int DiagnosticLimit =eHundredMillisecond; //frequency of data collection
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index 7b4a30dd2..010fc9607 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -220,7 +220,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_initialdispenserpressure = true;
EmbeddedParameters->initialdispenserpressure=3.85;
EmbeddedParameters->has_initialdispensertimeout = true;
- EmbeddedParameters->initialdispensertimeout=120000.0 ;
+ EmbeddedParameters->initialdispensertimeout=119999.0 ;
EmbeddedParameters->has_initialdispensertimelag = true;
EmbeddedParameters->initialdispensertimelag=100.0 ;
@@ -229,7 +229,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->has_dispenserbuildpressurelimit = true;
EmbeddedParameters->dispenserbuildpressurelimit=1.0 ;
EmbeddedParameters->has_dispenserbuildpressuretimeout = true;
- EmbeddedParameters->dispenserbuildpressuretimeout=150000;
+ EmbeddedParameters->dispenserbuildpressuretimeout=419999.0;
EmbeddedParameters->has_dispenserbuildpressurelag = true;
EmbeddedParameters->dispenserbuildpressurelag=50;
@@ -297,6 +297,7 @@ void LoadConfigurationParameters(ConfigurationParameters *Params)
EmbeddedParameters->powerofftemperaturelimit = 90;
EmbeddedParameters->has_ids_presegment_wfcf_timebeforesegment = true;
EmbeddedParameters->ids_presegment_wfcf_timebeforesegment = 20000;
+ EmbeddedParameters->description = "default embedded parameters";
uint8_t* response_buffer = my_malloc(configuration_parameters__get_packed_size(EmbeddedParameters));
if (response_buffer)
diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
index ebbc3d326..a70866fd6 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c
@@ -205,10 +205,10 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag)
{
if (Check_Disp_Safety_Stop_Indication(Disp_i) == false)
{
- AlarmHandlingSetAlarm(DispenserAlarm[Disp_i], false);
if (DispenserAlarm[Disp_i] == true)
{
IDS_Dispenser_Alarm_Off(Disp_i);
+ AlarmHandlingSetAlarm(DispenserAlarm[Disp_i], false);
}
DispenserAlarm[Disp_i] = 0;
DispenserOverPressure[Disp_i] = false;
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index d567f8ad9..c196ea031 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -701,6 +701,8 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
{
continue;
}
+ if (DispenserId!=Dispenser_i)
+ ReportWithPackageFilter(IDSFilter,"DispenserId!=Dispenser_i",__FILE__,__LINE__,DispenserId,RpWarning,(int)Dispenser_i,0);
//(Speed*uStep*PPR)/((2*PI*Dispenser_Radius)
segmentfirst_speed = Dispensers[Dispenser_i]->nanolitterpersecond
/ Dispensers[Dispenser_i]->nanoliterperpulse;
@@ -729,7 +731,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
{
MotorSetSpeed(HW_Motor_Id, segmentfirst_speed);
}
- CurrentDispenserSpeed[Dispenser_i] = segmentfirst_speed;
+ CurrentDispenserSpeed[DispenserId] = segmentfirst_speed;
/*usnprintf(IdMessage, 80,
"WFCF Dispenser %d nl/sec %d nl/pulse %d Pulse/sec %d speed %d",
@@ -747,7 +749,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
if (DispenserUsedInJob[DispenserId] == true)
{
MotorStop(HW_Motor_Id, Hard_Hiz);
- CurrentDispenserSpeed[Dispenser_i] = 0;
+ CurrentDispenserSpeed[DispenserId] = 0;
//usnprintf(IdsMessage, 80,"WFCF Prepare Dispenser %d stopped",DispenserId,(int) segmentfirst_speed);
//ReportWithPackageFilter(IDSFilter,IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
}
@@ -1085,9 +1087,9 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
/ Dispensers[Dispenser_i]->nanoliterperpulse;
if (segmentfirst_speed > MINIMAL_MOTOR_SPEED)
{
- DispenserUsedInSegment[Dispenser_i] = true;
+ DispenserUsedInSegment[DispenserId] = true;
MotorSetSpeed(HW_Motor_Id, DispenserPrepareSpeed);
- CurrentDispenserSpeed[Dispenser_i] = DispenserPrepareSpeed;
+ CurrentDispenserSpeed[DispenserId] = DispenserPrepareSpeed;
//usnprintf(IdsMessage, 80,"Presegment Prepare Dispenser %d speed %d",DispenserId,(int) DispenserPrepareSpeed);
//REPORT_MSG(segmentfirst_speed,IdsMessage);
//ReportWithPackageFilter(IDSFilter,IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, DispenserPrepareSpeed, 0);
@@ -1105,7 +1107,7 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
{
MotorStop(HW_Motor_Id, Hard_Hiz);
}
- CurrentDispenserSpeed[Dispenser_i] = 0;
+ CurrentDispenserSpeed[DispenserId] = 0;
//usnprintf(IdsMessage, 80,"Presegment Prepare Dispenser %d stopped",DispenserId,(int) segmentfirst_speed);
//ReportWithPackageFilter(IDSFilter,IdsMessage, __FILE__, __LINE__, Dispenser_i, RpWarning, segmentfirst_speed, 0);
}
@@ -1302,7 +1304,7 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
//Control3WayValvesWithCallback (DispenserId, Dispenser_Mixer, NULL); //direction: MidTank_Dispenser or Dispenser_Mixer
//IDS_Dispenser_Start_Motor_and_Open_Valve(DispenserId,segmentfirst_speed,NULL);
MotorSetSpeed(HW_Motor_Id, segmentfirst_speed);
- CurrentDispenserSpeed[Dispenser_i] = segmentfirst_speed;
+ CurrentDispenserSpeed[DispenserId] = segmentfirst_speed;
/*usnprintf(IdMessage, 80,
"WFCF Dispenser %d nl/sec %d nl/pulse %d Pulse/sec %d speed %d",
@@ -1422,47 +1424,8 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
}
ReportWithPackageFilter(IDSFilter,"Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0);
}
- /*if (EnableCleaning == true)
- {
- InterSegmentStartSprayCleaner = 500;
- InterSegmentStartRocking = 1000;
- InterSegmentCenterRockers = 3000;
- }*/
-
- //InterSegmentStartWFCFDispensers = (lInterSegmentLength>5000)?lInterSegmentLength-5000:lInterSegmentLength;
}
}
- /*if (SegmentId == 0)//first segment - running the DTS out of the drier
- {
- Valve_Set(VALVE_MIXCHIP_WASTECH, Mixer_Waste); //if intersegment is defined throw the ink away
- for (Dispenser_i = 0; Dispenser_i < MAX_SYSTEM_DISPENSERS; Dispenser_i++)
- {
- HW_Motor_Id = DispenserIdToMotorId[Dispenser_i];
- //MotorStop(HW_Motor_Id,Hard_Hiz); //26/03/19 test without valves
- if (DispenserUsedInJob[Dispenser_i]==true)//unconfigured dispenser
- {
- MotorStop(HW_Motor_Id, Soft_Hiz);
- CurrentDispenserSpeed[Dispenser_i] = 0;
- }
- }
- lInterSegmentLength = (dryerbufferCentimeters*1000/dyeingspeed);
- lInterSegmentLength-=(lInterSegmentLength%100); //round to a 100 multiplication
- InterSegmentStepsCount = 0;
- DispenserPreSegmentControlId = AddControlCallback( IDSPreSegmentStateCallbackRunner, IDS_PRESEGMENT_TIME_STEP,TemplateDataReadCBFunction ,0, 0, 0 );
- if (DispenserPreSegmentControlId == 0xFF)
- {
- ReportWithPackageFilter(IDSFilter,"Add control callback failed",__FILE__,__LINE__,(int)100,RpWarning,(int)0,0);
- return ERROR;
- }
- ReportWithPackageFilter(IDSFilter,"Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)lInterSegmentLength,0);
- if (EnableCleaning == true)
- {
- InterSegmentStartSprayCleaner = 500;
- InterSegmentStartRocking = 1000;
- InterSegmentCenterRockers = 3000;
- }
- InterSegmentStartWFCFDispensers = lInterSegmentLength-5000;
- }*/
if (uploadstrategy == JOB_UPLOAD_STRATEGY__Default)
{
@@ -1539,8 +1502,6 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
MotorStop(HW_Motor_Id,Soft_Hiz); //26/03/19 test without valves
}
CurrentDispenserSpeed[DispenserId] = 0;
- //MotorSetSpeed(HW_Motor_Id, 5);
- //CurrentDispenserSpeed[Dispenser_i] = 5;
DispenserPreSegmentReady[DispenserId] = true; //27/03/19 check if job should be stopped
REPORT_MSG(DispenserId,"Dispenser stopped pre Segment");
}
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
index a75241671..03bc9d24d 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -50,6 +50,7 @@ bool WinderMotorSpeedRollOver = false;
int StartWinderCalculation = 0;
#define DEFAULT_SCREW_SPEED 1200
double ScrewSpeed = DEFAULT_SCREW_SPEED;
+double RetreatTime = 0;
double ScrewRunningTime = 0;
uint32_t ScrewNumberOfSteps = 0; //holds the current number of steps for the next screw run - will be used to build the cone
bool SCREW_TimerActivated = false;
@@ -635,6 +636,7 @@ uint32_t Winder_Presegment(void *SegmentDetails, uint32_t SegmentId)
temp *= ScrewNumberOfSteps;
temp /= ScrewSpeed;
ScrewRunningTime = temp;//(SYS_CLK_FREQ*InternalWinderCfg.segmentoffsetpulses)/ScrewSpeed;
+ RetreatTime = ScrewNumberOfSteps*1000/ScrewSpeed;
REPORT_MSG((int)ScrewNumberOfSteps,"Winder pre segment - ScrewNumberOfSteps");
REPORT_MSG((int)ScrewRunningTime,"Winder pre segment - ScrewRunningTime");
//MotorSetDirection (HARDWARE_MOTOR_TYPE__MOTO_SCREW, ScrewCurrentDirection);
@@ -673,11 +675,11 @@ uint32_t ScrewDTSCallback(uint32_t deviceID, uint32_t BusyFlag)
//move the cart to the edge so the spool can be easily replaced
//MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_SCREW,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].directionthreadwize, 1000, GPI_LS_SCREW_RIGHT, NULL,0);
//MotorStop(HARDWARE_MOTOR_TYPE__MOTO_SCREW,Hard_Hiz);
- MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_SCREW,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].directionthreadwize, ScrewSpeed, GPI_LS_SCREW_RIGHT, WinderDistanceToSpoolEnded,2000);
+ MotorMovetoLimitSwitch (HARDWARE_MOTOR_TYPE__MOTO_SCREW,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_SCREW].directionthreadwize, ScrewSpeed, GPI_LS_SCREW_RIGHT, WinderDistanceToSpoolEnded,RetreatTime*2);
#ifdef FOUR_WINDERS
- MotorMovetoLimitSwitch (SCREW_2_Motor,MotorsCfg[SCREW_2_Motor].directionthreadwize, ScrewSpeed, GPI_LS_SPARE2_2, NULL,2000);
- MotorMovetoLimitSwitch (SCREW_3_Motor,MotorsCfg[SCREW_3_Motor].directionthreadwize, ScrewSpeed, GPI_LS_SPARE1_2, NULL,2000);
- MotorMovetoLimitSwitch (SCREW_4_Motor,MotorsCfg[SCREW_4_Motor].directionthreadwize, ScrewSpeed, GPI_LS_RDANCER_UP, NULL,2000);
+ MotorMovetoLimitSwitch (SCREW_2_Motor,MotorsCfg[SCREW_2_Motor].directionthreadwize, ScrewSpeed, GPI_LS_SPARE2_2, NULL,RetreatTime*2);
+ MotorMovetoLimitSwitch (SCREW_3_Motor,MotorsCfg[SCREW_3_Motor].directionthreadwize, ScrewSpeed, GPI_LS_SPARE1_2, NULL,RetreatTime*2);
+ MotorMovetoLimitSwitch (SCREW_4_Motor,MotorsCfg[SCREW_4_Motor].directionthreadwize, ScrewSpeed, GPI_LS_RDANCER_UP, NULL,RetreatTime*2);
#endif
return OK;
@@ -685,10 +687,14 @@ uint32_t ScrewDTSCallback(uint32_t deviceID, uint32_t BusyFlag)
uint32_t WinderDistanceToSpoolState(void )
{
double DTS_Time = (dryerbufferCentimeters/dyeingspeed)*1000;//distance to spool time in milliseconds
- REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState");
+ double WinderBackTimeBySpeed = WinderBackToBaseTime;
+ WinderBackTimeBySpeed *= 50;
+ WinderBackTimeBySpeed /= dyeingspeed;
+ Report("WinderDistanceToSpoolState start", __FILE__,DTS_Time,RetreatTime, RpMessage, (int)WinderBackTimeBySpeed, 0);
+ //REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState");
- ScrewDTSControlId = AddControlCallback("screw DTS",ScrewDTSCallback, DTS_Time-WinderBackToBaseTime,TemplateDataReadCBFunction,0,0,0);
- Report("ScrewDTSCallback start", __FILE__,DTS_Time,msec_millisecondCounter, RpMessage, WinderBackToBaseTime, 0);
+ ScrewDTSControlId = AddControlCallback("screw DTS",ScrewDTSCallback, DTS_Time-RetreatTime,TemplateDataReadCBFunction,0,0,0);
+ Report("ScrewDTSCallback start", __FILE__,DTS_Time,msec_millisecondCounter, RpMessage, (int)WinderBackTimeBySpeed, 0);
return OK;
}