aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2020-12-09 15:00:25 +0200
committerShlomo Hecht <shlomo@twine-s.com>2020-12-09 15:00:25 +0200
commit90a01b662322c7e52aa242ae23a0ee33e61b9380 (patch)
treeedf068ccf3501a6f176660d2a8d830655fb02b75 /Software/Embedded_SW
parent19960336594324a57d3bfd01bfec1aab44c95138 (diff)
downloadTango-90a01b662322c7e52aa242ae23a0ee33e61b9380.tar.gz
Tango-90a01b662322c7e52aa242ae23a0ee33e61b9380.zip
smal changes
Diffstat (limited to 'Software/Embedded_SW')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c3
-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/Control/MillisecTask.c5
-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
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c1
8 files changed, 26 insertions, 63 deletions
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 5bac56231..236cd87d7 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
@@ -280,12 +280,13 @@ double Calc_Calibration_MidTank_Liquid(uint32_t VsampleInBits, MidTank_t MidTan
( Slope_B[MidTank_ID] > Max_Slope_B) || ( Slope_B[MidTank_ID] < Min_Slope_B) )
{
temp = VSensor - Deafault_Initial_Offset_A;
-
+#ifndef LIGHT_COLORS
if(MidTank_ID == MIDTANK_8)
{
LiquidLitter = temp * Deafault_Slope_B_Disp8;
}
else
+#endif
{
LiquidLitter = temp * Deafault_Slope_B;
}
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/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/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);
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
index 0d3b5e2f0..9b722ff04 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
@@ -611,6 +611,7 @@ uint32_t InitSequenceStartHeating(void)
TimerMotors_t MotorId = HARDWARE_MOTOR_TYPE__MOTO_DH_LID;
SetMachineReadyForHeating(true);
+ SetMachineState(INIT_SEQUENCE_START_HEATING);
if(Head_Type == HEAD_TYPE_ARC) {
MotorMovetoLimitSwitch(MotorId,1-MotorsCfg[MotorId].directionthreadwize, 30, Motor_Id_to_LS_IdDown[MotorId], cleaningMotorCBFunction,30000);