From 19960336594324a57d3bfd01bfec1aab44c95138 Mon Sep 17 00:00:00 2001 From: Ronen Sberlo Date: Mon, 7 Dec 2020 14:53:04 +0200 Subject: bug 4045: "SCREW_MOTOR_LIMIT_TIMEOUT" after the job ended --- Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index a75241671..f5e012a1e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -685,10 +685,13 @@ 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 + double WinderBackTimeBySpeed = WinderBackToBaseTime; + WinderBackTimeBySpeed /= 50; + WinderBackTimeBySpeed *= dyeingspeed; 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-WinderBackTimeBySpeed,TemplateDataReadCBFunction,0,0,0); + Report("ScrewDTSCallback start", __FILE__,DTS_Time,msec_millisecondCounter, RpMessage, (int)WinderBackTimeBySpeed, 0); return OK; } -- cgit v1.3.1 From b4062b0eace7983126d87001739ddcd3ad9c2c32 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 7 Dec 2020 23:32:59 +0200 Subject: fixes --- Software/Embedded_SW/Embedded/Main.c | 7 +-- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 4 -- .../Embedded/Modules/Diagnostics/Diagnostics.c | 2 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 55 ++++------------------ .../Embedded/Modules/Thread/Thread_Winder.c | 12 ++--- 5 files changed, 19 insertions(+), 61 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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); -- cgit v1.3.1 From 90a01b662322c7e52aa242ae23a0ee33e61b9380 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Wed, 9 Dec 2020 15:00:25 +0200 Subject: smal changes --- .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 3 +- Software/Embedded_SW/Embedded/Main.c | 7 +-- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 4 -- .../Embedded/Modules/Control/MillisecTask.c | 5 +- .../Embedded/Modules/Diagnostics/Diagnostics.c | 2 +- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 55 ++++------------------ .../Embedded/Modules/Thread/Thread_Winder.c | 12 ++--- .../StateMachines/Initialization/InitSequence.c | 1 + 8 files changed, 26 insertions(+), 63 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') 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); -- cgit v1.3.1 From 8cf2490a30fd21959cea4baa0afc9cdced434593 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 10 Dec 2020 00:06:49 +0200 Subject: file handling --- .../Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c | 13 +++++++++---- Software/Embedded_SW/Embedded/Common/report/reportInit.c | 2 ++ .../Embedded/Modules/General/GeneralHardware.c | 5 +++-- .../Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c | 15 +++++++++------ .../Embedded/StateMachines/Printing/PrintingSTM.c | 4 ++-- 5 files changed, 25 insertions(+), 14 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c index f3d42b01a..a59a14dcf 100644 --- a/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c +++ b/Software/Embedded_SW/Embedded/Common/SWUpdate/FileSystem.c @@ -794,8 +794,11 @@ FRESULT FileWrite(void * buffer, uint16_t size,char *path, uint32_t timeout) { LOG_ERROR (Fresult,"fwrite error"); } - //LOG_ERROR (Bytes,"f_write ok no of bytes"); - Report("f_write ok no of bytes", __FILE__, __LINE__, Bytes, RpWarning, (int)size, 0); + else + { + //LOG_ERROR (Bytes,"f_write ok no of bytes"); + Report("f_write ok no of bytes", __FILE__, __LINE__, Bytes, RpWarning, (int)size, 0); + } f_close(FileHandle); } else @@ -875,12 +878,14 @@ FRESULT FileRead(char *path, uint32_t *Size, void **Buffer) } else { - LOG_ERROR (Fresult,"malloc error"); + Report("malloc error", __FILE__, __LINE__, Fresult, RpWarning, (int)fno->fsize, 0); + Fresult = FR_DENIED; } } else { - LOG_ERROR (Fresult,"f_stat error"); + Report("f_stat error", __FILE__, __LINE__, Fresult, RpWarning, (int)0, 0); + Fresult = FR_DENIED; } my_free(fno); return Fresult; diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index a11f9db73..633b8ca34 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -134,6 +134,8 @@ uint32_t LogToFile(char *message, /* The formatted message len = usnprintf(RepMessage, 300, "\r\nfile %s\t line %d\t code %d\t sev %d,\tparam %d,\t %s",FileName, LineNumber,errorCode, Severity, parameter,message); LogFresult = f_write(LogFileHandle,RepMessage,len,&Bytes ); + if (LogFileHandle->fsize > 100000) + f_lseek(LogFileHandle, 0); return LogFresult; } 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/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 8f9246f8f..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,4000); + 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,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); + 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; @@ -688,9 +690,10 @@ uint32_t WinderDistanceToSpoolState(void ) double WinderBackTimeBySpeed = WinderBackToBaseTime; WinderBackTimeBySpeed *= 50; WinderBackTimeBySpeed /= dyeingspeed; - REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState"); + Report("WinderDistanceToSpoolState start", __FILE__,DTS_Time,RetreatTime, RpMessage, (int)WinderBackTimeBySpeed, 0); + //REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState"); - ScrewDTSControlId = AddControlCallback("screw DTS",ScrewDTSCallback, DTS_Time-WinderBackTimeBySpeed,TemplateDataReadCBFunction,0,0,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; diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c index 3e790eabe..cb0703f27 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c @@ -203,7 +203,7 @@ JobDescriptionFileSegment *GetNextSegmentFromJobFile() }//segment malloc else { - LOG_ERROR (SegmentPtr, "malloc error"); + LOG_ERROR (SegmentSize, "malloc error"); //status = ERROR; } }//segment read size @@ -270,7 +270,7 @@ JobDescriptionFileBrushStop *GetNextBrushStopFromJobFile() }//brushstop size read ok else { - LOG_ERROR (BrushStopPtr, "malloc error"); + Report("malloc error", __FILE__, __LINE__, BrushStopSize, RpWarning, (int)0, 0); //status = ERROR; } }// if brush stop count -- cgit v1.3.1 From afaee9a1cc07c5578aa9630963d895380d64f51b Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Thu, 10 Dec 2020 12:20:55 +0200 Subject: fix idle and timing in control. remove error file for release --- Software/Embedded_SW/Embedded/Common/report/reportInit.c | 16 +++++++++++----- Software/Embedded_SW/Embedded/Communication/Container.c | 2 +- Software/Embedded_SW/Embedded/Main.c | 2 +- Software/Embedded_SW/Embedded/Modules/Control/control.c | 4 ++++ Software/Embedded_SW/Embedded/Modules/General/Safety.c | 2 +- .../Embedded/StateMachines/Initialization/InitSequence.c | 2 ++ 6 files changed, 20 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index 633b8ca34..d80db5d73 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -85,7 +85,7 @@ bool isReportActive(void) } uint32_t OpenLogFile(void) { - int len; + /*int len; uint32_t Bytes = 0; LogFileHandle = my_malloc(sizeof(FIL)); if (LogFileHandle) @@ -105,18 +105,21 @@ uint32_t OpenLogFile(void) else LogFresult = FR_INT_ERR; - return LogFresult; + return LogFresult;*/ + return OK; } uint32_t CloseLogFile(void) { /* perform default error output */ - int len; + /*int len; uint32_t Bytes = 0; len = usnprintf(RepMessage, 80, "Closing Log File %s %s",__DATE__, __TIME__); LogFresult = f_write(LogFileHandle,RepMessage,len,&Bytes ); LogFresult = f_close(LogFileHandle); LogFileHandle = NULL; - return LogFresult; + return LogFresult;*/ + return OK; + } uint32_t LogToFile(char *message, /* The formatted message */ char *FileName, @@ -127,7 +130,7 @@ uint32_t LogToFile(char *message, /* The formatted message { /* print user supplied error code */ - uint32_t Bytes = 0; +/* uint32_t Bytes = 0; int len; if (LogFileHandle == NULL) return OK; @@ -138,6 +141,9 @@ uint32_t LogToFile(char *message, /* The formatted message f_lseek(LogFileHandle, 0); return LogFresult; + */ + return OK; + } int ReportResponseFunc(char *message, /* The formatted message */ char *FileName, diff --git a/Software/Embedded_SW/Embedded/Communication/Container.c b/Software/Embedded_SW/Embedded/Communication/Container.c index 2103c5d2f..cce9747bc 100644 --- a/Software/Embedded_SW/Embedded/Communication/Container.c +++ b/Software/Embedded_SW/Embedded/Communication/Container.c @@ -149,7 +149,7 @@ void receive_callback(char* buffer, size_t length) ReportWithPackageFilter(CommFilter,"Message received", __FILE__,__LINE__,requestContainer->type, RpMessage,length, 0); } #endif - if ((requestContainer->type != MESSAGE_TYPE__KeepAliveRequest)||(requestContainer->type != MESSAGE_TYPE__KeepAliveResponse)) + if ((requestContainer->type != MESSAGE_TYPE__KeepAliveRequest)&&(requestContainer->type != MESSAGE_TYPE__KeepAliveResponse)) resetIdleCounter(); //ReportWithPackageFilter(CommFilter,"Message received", __FILE__,__LINE__,requestContainer->type, RpMessage,length, 0); if (keepalivetest == false) diff --git a/Software/Embedded_SW/Embedded/Main.c b/Software/Embedded_SW/Embedded/Main.c index d046df48d..16334a0ad 100644 --- a/Software/Embedded_SW/Embedded/Main.c +++ b/Software/Embedded_SW/Embedded/Main.c @@ -450,7 +450,7 @@ int main(void) IDLE_TASK_package_init(); Start_InitSequence(); - PowerIdleInit(); + //PowerIdleInit(); BIOS_start(); return (0); 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/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/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index 9b722ff04..d7a49dfe0 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -471,6 +471,8 @@ uint32_t InitSequenceInitialBlowerActivation(void) Turn_the_Blower_On();//Turn on with the Default_Voltage Control_Voltage_To_Blower(1); //stop the blower HeadBlowersInit(); + PowerIdleInit(); + Task_sleep (1000); if (WHS_Type == WHS_TYPE_NEW) -- cgit v1.3.1 From a1a5b23fa3ae710e5c3d741fe59e0b6cc3fbcd5b Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Thu, 10 Dec 2020 19:38:53 +0200 Subject: version 1.5.3.4 --- .../Embedded_SW/Embedded/Common/SW_Info/SW_Info.c | 2 +- .../Embedded/Common/report/reportInit.c | 17 +++++--- Software/Embedded_SW/Embedded/DataDef.h | 4 ++ .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 45 ++++++++++++---------- .../Embedded_SW/Embedded/Modules/IDS/IDS_print.c | 4 +- .../Embedded/Software Release Notes.txt | 11 ++++++ .../Procedures/Set_Head_Type_With_DB.pproj | 1 + .../stubs/embeddedparametersbuild_w_cleaning.cs | 2 +- 8 files changed, 55 insertions(+), 31 deletions(-) create mode 100644 Software/Stubs Collection/Procedures/Set_Head_Type_With_DB.pproj (limited to 'Software/Embedded_SW/Embedded/Modules') diff --git a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c index e27127c56..5392a415e 100644 --- a/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c +++ b/Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c @@ -20,7 +20,7 @@ typedef struct } TangoVersion_t; -TangoVersion_t _gTangoVersion = {1,5,3,3}; +TangoVersion_t _gTangoVersion = {1,5,3,4}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; diff --git a/Software/Embedded_SW/Embedded/Common/report/reportInit.c b/Software/Embedded_SW/Embedded/Common/report/reportInit.c index d80db5d73..2850f666e 100644 --- a/Software/Embedded_SW/Embedded/Common/report/reportInit.c +++ b/Software/Embedded_SW/Embedded/Common/report/reportInit.c @@ -85,7 +85,8 @@ bool isReportActive(void) } uint32_t OpenLogFile(void) { - /*int len; +#ifdef STORE_DEBUG_LOGS + int len; uint32_t Bytes = 0; LogFileHandle = my_malloc(sizeof(FIL)); if (LogFileHandle) @@ -105,19 +106,22 @@ uint32_t OpenLogFile(void) else LogFresult = FR_INT_ERR; - return LogFresult;*/ + return LogFresult; +#endif return OK; } uint32_t CloseLogFile(void) { /* perform default error output */ - /*int len; +#ifdef STORE_DEBUG_LOGS + int len; uint32_t Bytes = 0; len = usnprintf(RepMessage, 80, "Closing Log File %s %s",__DATE__, __TIME__); LogFresult = f_write(LogFileHandle,RepMessage,len,&Bytes ); LogFresult = f_close(LogFileHandle); LogFileHandle = NULL; - return LogFresult;*/ + return LogFresult; +#endif return OK; } @@ -130,7 +134,8 @@ uint32_t LogToFile(char *message, /* The formatted message { /* print user supplied error code */ -/* uint32_t Bytes = 0; +#ifdef STORE_DEBUG_LOGS + uint32_t Bytes = 0; int len; if (LogFileHandle == NULL) return OK; @@ -141,7 +146,7 @@ uint32_t LogToFile(char *message, /* The formatted message f_lseek(LogFileHandle, 0); return LogFresult; - */ +#endif return OK; } diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 7b0c4c215..291c94e9d 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -24,6 +24,10 @@ //#define DISPESER_TEST //#define FPGA_WATCHDOG_DISABLE +#ifndef WATCHDOG +#define STORE_DEBUG_LOGS +#endif +//#define STORE_DEBUG_LOGS //#define FOUR_WINDERS #ifdef FOUR_WINDERS #define BTSR_NO_FEEDER_TFU diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 160c3a0b5..db4535e06 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -1006,30 +1006,33 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) } } } - if ((AlarmState[Alarm_i].Status == true)&&(FoundReason == JOB_OK)) + for (Alarm_i = 0;Alarm_i=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/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c index 879aa84a6..c196ea031 100644 --- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c +++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c @@ -693,8 +693,6 @@ 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]) @@ -703,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; diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt index e0475b1cf..402a40e2e 100644 --- a/Software/Embedded_SW/Embedded/Software Release Notes.txt +++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt @@ -1,3 +1,14 @@ +Embedded SW Release note - Version 1.5.3(4) - Pack 3 +============================================================= +remove ErrFile.txt handling (storing logs while report is disconnected) - from release version +add logs and indications for file handling +fix idle problem (#4269) +improve timing (QA - notice the COMM led blinking rate) +add parameters setting (B,C) for head air flow calculation. +remove low flow alarm during head flow recalibration +fix screw going back at the end of job time +bug #4240 (and others) - restart at the beginning of a job - resolved! + Embedded SW Release note - Version 1.5.3(3) - Pack 3 ============================================================= for QA diff --git a/Software/Stubs Collection/Procedures/Set_Head_Type_With_DB.pproj b/Software/Stubs Collection/Procedures/Set_Head_Type_With_DB.pproj new file mode 100644 index 000000000..2a8d146ca --- /dev/null +++ b/Software/Stubs Collection/Procedures/Set_Head_Type_With_DB.pproj @@ -0,0 +1 @@ +{"$id":"1","Name":"Set_Head_Type","Visibility":"Public","Description":null,"Scripts":{"$id":"2","$values":[{"$id":"3","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\nusing System.IO;\r\nusing Tango.FSE.Common.SQL;\r\nusing Tango.PPC.Shared.SQL;\r\nusing Tango.FSE.Common.RemoteActions;\r\n\r\n\r\npublic class Program\r\n{\r\n private IProcedureContext context;\r\n private const Int32 I2C_ID = 3; //MCU_I2C3 \r\n private const Int32 TCA9548A_address = 0xE2;\r\n private const Int32 I2C_Slave_Add = 0xA0; //eeprom address - 32kByte \r\n private int Head_Mux_Channel_ID = 4; //Head MUX channel\r\n private const Int32 SerialNum = 0x01;\r\n\r\n public void OnExecute(IProcedureContext context)\r\n {\r\n this.context = context;\r\n\r\n int headType = context.GetInput(\"headType\"); //0 flate ; 1 Arc\r\n Byte HeadTtpe = (byte)(headType == 0 ? 3 : 4); //3 flate ; 4 Arc\r\n context.WriteLine(HeadTtpe);\r\n\r\n\t\t//Firmware -------------------------------------------------------------------------------------------------------------\r\n context.UpdateProgress(\"Updating machine EEPROM entry...\");\r\n\r\n //enable_all_channel();\r\n enable_channel(Head_Mux_Channel_ID); // Chanel 0-7 => Disp0enser 0-7 \r\n\r\n\r\n adc_write(I2C_Slave_Add, 0x00, HeadTtpe);\r\n context.Sleep(10); //Sleep for 5 milli. - must! otherwise read 0xff (See data sheet )\r\n\r\n context.Write(\"\\nPage 0x00 #\");\r\n context.Write(0);\r\n context.Write(\"\\t- The Buffer is: \");\r\n adc_set_for_read_ch(I2C_Slave_Add, 0x00);\r\n //Thread.Sleep(1); //Sleep for 10 milli.\r\n adc_read_ch(I2C_Slave_Add);\r\n\r\n context.Sleep(1000);\r\n\r\n\r\n\t\t//Software -------------------------------------------------------------------------------------------------------------\r\n context.UpdateProgress(\"Updating machine global and local database entries...\");\r\n\r\n //Create the SQL command and direct it to affect both the local machine's database and the global Twine's database.\r\n IRemoteSqlProvider sql = context.GetService();\r\n RemoteSqlCommand command = new RemoteSqlCommand();\r\n command.Mode = RemoteSqlCommandMode.Both;\r\n command.SQL = \"UPDATE MACHINES SET HEAD_TYPE = \" + headType + \" WHERE SERIAL_NUMBER = '\" + context.ConnectedMachine.SerialNumber + \"'\";\r\n RemoteSqlCommandResult result = sql.ExecuteSqlCommand(command);\r\n\r\n if (result.HasGlobalError || result.HasLocalError)\r\n {\r\n context.Fail(\"Could not update the machine's global or local entry.\\n\" + result.GlobalError + \"\\n\" + result.LocalError);\r\n }\r\n\r\n context.ShowInfo(\"The machine head type was updated successfully. Changes will take effect after system restart.\");\r\n }\r\n\r\n private int enable_channel(int Channel_ID)\r\n {\r\n uint Const_temp = 0x01;\r\n\r\n StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n stubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n stubI2CWriteBytesRequest.SlaveAddress = TCA9548A_address;\r\n\r\n Const_temp = Const_temp << Channel_ID;\r\n stubI2CWriteBytesRequest.BytesTWrite.Add(Const_temp);\r\n\r\n var response = context.Send(stubI2CWriteBytesRequest);\r\n\r\n return 1;\r\n }\r\n\r\n\r\n private int adc_write(uint I2C_Slave_Add, uint Page, Byte HeadTtpe)\r\n {\r\n StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n stubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\r\n UInt32 uInt32 = new UInt32();\r\n stubI2CWriteBytesRequest.BytesTWrite.Add(0);//Byte 0 to write\r\n stubI2CWriteBytesRequest.BytesTWrite.Add(Page);//Byte 0 to write\r\n //--------------------------------------------------------------\r\n\r\n stubI2CWriteBytesRequest.BytesTWrite.Add(SerialNum);//S/N\r\n //stubI2CWriteBytesRequest.BytesTWrite.Add(0x03);//HEAD_TYPE_FLAT\r\n stubI2CWriteBytesRequest.BytesTWrite.Add(HeadTtpe);//HEAD_TYPE_ARC\r\n\r\n var response = context.Send(stubI2CWriteBytesRequest);\r\n\r\n return 1;\r\n }\r\n\r\n private int adc_set_for_read_ch(uint I2C_Slave_Add, uint Page)\r\n {\r\n StubI2CWriteBytesRequest stubI2CWriteBytesRequest = new StubI2CWriteBytesRequest();\r\n stubI2CWriteBytesRequest.I2CId = I2C_ID;\r\n stubI2CWriteBytesRequest.SlaveAddress = I2C_Slave_Add;\r\n\r\n\r\n UInt32 uInt32 = new UInt32();\r\n stubI2CWriteBytesRequest.BytesTWrite.Add(0);//Byte 0 to write\r\n stubI2CWriteBytesRequest.BytesTWrite.Add(Page);//Byte 0 to write\r\n\r\n var response = context.Send(stubI2CWriteBytesRequest);\r\n\r\n return 1;\r\n }\r\n\r\n private int adc_read_ch(uint I2C_Slave_Add)\r\n {\r\n StubI2CReadBytesRequest stubI2CReadBytesRequest = new StubI2CReadBytesRequest();\r\n stubI2CReadBytesRequest.I2CId = I2C_ID;\r\n stubI2CReadBytesRequest.SlaveAddress = I2C_Slave_Add + 1;\r\n stubI2CReadBytesRequest.NumberOfBytesToRead = 10; // Number of bytes to read\r\n\r\n var response1 = context.Send(stubI2CReadBytesRequest);\r\n uint temph = 0;\r\n\r\n for (int i = 0; i < stubI2CReadBytesRequest.NumberOfBytesToRead; i++)\r\n {\r\n temph = response1.ReadBytes[i];\r\n context.WriteHex(temph, 2);\r\n }\r\n\r\n return 1;\r\n }\r\n\r\n}\r\n","Name":"Program.csx","IsEntryPoint":true},{"$id":"4","Code":"using System;\r\nusing System.Collections.Generic;\r\nusing System.Collections.ObjectModel;\r\nusing System.ComponentModel;\r\nusing System.Linq;\r\nusing System.Text;\r\nusing System.Threading;\r\nusing System.Threading.Tasks;\r\nusing System.Drawing;\r\nusing Google.Protobuf;\r\nusing Tango.BL.Entities;\r\nusing Tango.BL.Enumerations;\r\nusing Tango.PMR.Stubs;\r\nusing Tango.PMR.Diagnostics;\r\nusing Tango.FSE.Common.Connection;\r\nusing Tango.FSE.Common.Diagnostics;\r\nusing Tango.FSE.Procedures;\r\n\r\npublic class Service\r\n{\r\n public double Calc(double a, double b)\r\n {\r\n return a + b;\r\n }\r\n}","Name":"Service.csx","IsEntryPoint":false}]},"Inputs":{"$id":"5","$values":[{"$id":"6","Type":"Selection","SelectionInputs":{"$id":"7","$values":[{"$id":"8","Name":"Flat","Value":"0"},{"$id":"9","Name":"Arc","Value":"1"}]},"DisplayName":"Head Type","Description":"Select the new machine head type","Key":"headType","Value":"0"}]},"Variables":{"$id":"10","$values":[]},"ReferenceAssemblies":{"$id":"11","$values":[{"$id":"12","File":"Tango.BL.dll","HintType":null},{"$id":"13","File":"Tango.FSE.Common.dll","HintType":null},{"$id":"14","File":"Tango.FSE.Procedures.dll","HintType":null},{"$id":"15","File":"Tango.Integration.dll","HintType":null},{"$id":"16","File":"Tango.PMR.dll","HintType":null},{"$id":"17","File":"Tango.Transport.dll","HintType":null},{"$id":"18","File":"mscorlib.dll","HintType":null},{"$id":"19","File":"System.Core.dll","HintType":null},{"$id":"20","File":"System.Drawing.dll","HintType":null},{"$id":"21","File":"System.Windows.Forms.dll","HintType":null},{"$id":"22","File":"Tango.PPC.Shared.dll","HintType":null}]},"Resources":{"$id":"23","$values":[]},"Dialogs":{"$id":"24","$values":[]},"ID":"85cac11e-4694-43f9-adfb-b010967ff32b","ApartmentState":"STA"} \ No newline at end of file diff --git a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs index 403967569..57501cc0f 100644 --- a/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs +++ b/Software/Stubs Collection/stubs/embeddedparametersbuild_w_cleaning.cs @@ -21,7 +21,7 @@ public void OnExecute(StubManager stubManager) string description = ""; ConfigurationParameters configurationParameters = new ConfigurationParameters(); -description += "Version 1.5.3.3"; +description += "Version 1.5.3.4"; configurationParameters.BreakSensorLimit = 10; //how many samples to collect in diagnostics before sending -- cgit v1.3.1