aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-12-07 23:32:59 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-12-07 23:32:59 +0200
commitb4062b0eace7983126d87001739ddcd3ad9c2c32 (patch)
tree67f39389beb4b11a14ec6177dff773084cdb77a5 /Software/Embedded_SW
parent19960336594324a57d3bfd01bfec1aab44c95138 (diff)
downloadTango-b4062b0eace7983126d87001739ddcd3ad9c2c32.tar.gz
Tango-b4062b0eace7983126d87001739ddcd3ad9c2c32.zip
fixes
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Main.c7
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c55
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c12
5 files changed, 19 insertions, 61 deletions
diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c
index 5a98b5ece..d046df48d 100644
--- a/Software/Embedded_SW/Embedded/Main.c
+++ b/Software/Embedded_SW/Embedded/Main.c
@@ -136,7 +136,7 @@ Void MyswitchFxn(Task_Handle prev, Task_Handle next)
PrevTask = prev;
NextTask = next;
}
-void updateresetreasonineeprom(void)
+void updateresetreasonineeprom(int i)
{
#define Head_Address 40
#define Max_Address 100
@@ -146,6 +146,7 @@ void updateresetreasonineeprom(void)
EEPROMRead(&Head,Head_Address*4, 4);
if (Head>=Max_Address) Head=0;
Head++;
+ RESC+=(i*0x1000);
EEPROMProgram(&Head, Head_Address*4, 4);
EEPROMProgram(&RESC, (Head_Address+Head)*4, 4);
@@ -159,7 +160,7 @@ Void errHook(Error_Block *eb)
//char File[50] = "";*/
char message[300];
int len;
- updateresetreasonineeprom();
+ updateresetreasonineeprom(InitFailures);
//STATUS_GREEN_LED_OFF;
ACTIVITY_GREEN_LED_OFF;
@@ -268,7 +269,7 @@ int main(void)
uint32_t Data,i;
MCU_E2PromInit();
- updateresetreasonineeprom();
+ updateresetreasonineeprom(0);
#endif
#ifdef EVALUATION_BOARD
diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c
index 829261533..160c3a0b5 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;
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/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index d567f8ad9..879aa84a6 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -693,6 +693,8 @@ bool AdjustDispenserSpeedToPressure(int DispenserId, double RefMaxPressure,doubl
for (Dispenser_i = 0; Dispenser_i < n_dispensers; Dispenser_i++)
{
DispenserId = Dispensers[Dispenser_i]->index;
+ if (DispenserId!=Dispenser_i)
+ ReportWithPackageFilter(IDSFilter,"DispenserId!=Dispenser_i",__FILE__,__LINE__,DispenserId,RpWarning,(int)Dispenser_i,0);
HW_Motor_Id = DispenserIdToMotorId[DispenserId];
if (MotorsCfg[HW_Motor_Id].hardwaremotortype
!= DispenserIdToMotorId[DispenserId])
@@ -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 f5e012a1e..8f9246f8f 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c
@@ -673,11 +673,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,4000);
#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,4000);
+ MotorMovetoLimitSwitch (SCREW_3_Motor,MotorsCfg[SCREW_3_Motor].directionthreadwize, ScrewSpeed, GPI_LS_SPARE1_2, NULL,4000);
+ MotorMovetoLimitSwitch (SCREW_4_Motor,MotorsCfg[SCREW_4_Motor].directionthreadwize, ScrewSpeed, GPI_LS_RDANCER_UP, NULL,4000);
#endif
return OK;
@@ -686,8 +686,8 @@ uint32_t WinderDistanceToSpoolState(void )
{
double DTS_Time = (dryerbufferCentimeters/dyeingspeed)*1000;//distance to spool time in milliseconds
double WinderBackTimeBySpeed = WinderBackToBaseTime;
- WinderBackTimeBySpeed /= 50;
- WinderBackTimeBySpeed *= dyeingspeed;
+ WinderBackTimeBySpeed *= 50;
+ WinderBackTimeBySpeed /= dyeingspeed;
REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState");
ScrewDTSControlId = AddControlCallback("screw DTS",ScrewDTSCallback, DTS_Time-WinderBackTimeBySpeed,TemplateDataReadCBFunction,0,0,0);