diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-22 15:24:46 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2020-06-22 15:24:46 +0300 |
| commit | 9ff1fdb7a1149d5c8335f78d236d59838aaa45c0 (patch) | |
| tree | 84a35a948db5ae16ff9b0851d23c420cff9a32e5 /Software/Embedded_SW | |
| parent | 69a5fa82c4633e1c9afa3e0164ff215a8d54c1ed (diff) | |
| download | Tango-9ff1fdb7a1149d5c8335f78d236d59838aaa45c0.tar.gz Tango-9ff1fdb7a1149d5c8335f78d236d59838aaa45c0.zip | |
Embedded SW Release note - Version 1.4.6.33 - Pack 2+
=============================================================
remove logs from I2C errors - show only summary.
stop job, prevent job on internal heating.
remove current alarm on entering idle.
motor go to switch - improve accuracy.
handle machine specific spool offset.
add additional 4 steps for the RTFU raising in RML feeder tension.
fix midtank warning bug (these alarm went missing).
fix safety handling.
I2C FIFO in code (not active yet).
Diffstat (limited to 'Software/Embedded_SW')
13 files changed, 137 insertions, 59 deletions
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 c48538752..60707d0cb 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,4,6,32}; +TangoVersion_t _gTangoVersion = {1,4,6,33}; #define BUILD_DATE __DATE__ char Dat[50] = BUILD_DATE; char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c index 0cc1db9f6..e4f7f81ad 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/IO_Ports/Heaters/Head_Heaters.c @@ -64,6 +64,8 @@ uint32_t Write_Head_Card_Heaters_Commands() } else Report(" Write_Head_Card_Heaters",__FILE__,__LINE__,255,RpWarning,0,0); + if (status) + ReadFailures++; return status; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c index 35d0a0b1e..108676b47 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/Head_Card/PT100/Head_PT100_ADC.c @@ -22,6 +22,10 @@ ADDR 0x8E #include "modules/control/millisecTask.h" #include "Modules/AlarmHandling/AlarmHandling.h" #include "drivers/Heater/TemperatureSensor.h" + +#include "PMR/Diagnostics/EventType.pb-c.h" +//#include "StateMachines/Initialization/InitSequence.h" + //#include "PT100RTD.h" #include "../I2C_Head_Mux.h" @@ -92,8 +96,8 @@ uint32_t I2C_Write_SensorId(uint32_t I2C_ID, TEMPERATURE_SENSOR_ID_ENUM SensorId I2C_ADC_ADS122C04_SLAVE_ADD = SensorId_To_SlaveAdd(SensorId); status |= I2C_Write(I2C_ID, I2C_ADC_ADS122C04_SLAVE_ADD, I2C_Write_buf, No_BytesToWrite); - if (status) - Report("I2C_Write_SensorId error", __FILE__,Arb_Loss_Count,status, RpMessage,SensorId, 0); + //if (status) + // ReportWithPackageFilter(LoadFilter,"I2C_Write_SensorId error", __FILE__,Arb_Loss_Count,status, RpMessage,SensorId, 0); return status; } @@ -126,6 +130,8 @@ uint32_t I2C_Read_SensorId(uint32_t I2C_ID, TEMPERATURE_SENSOR_ID_ENUM SensorId, //TODO Choose TEMP1 sensor by I/O I2C_ADC_ADS122C04_SLAVE_ADD = SensorId_To_SlaveAdd(SensorId); status |= I2C_Read(I2C_ID, I2C_ADC_ADS122C04_SLAVE_ADD + 1, I2C_Read_buf, No_BytesToRead); + //if (status) + // ReportWithPackageFilter(LoadFilter,"I2C_Read_SensorId error", __FILE__,Arb_Loss_Count,status, RpMessage,SensorId, 0); return status; } @@ -210,8 +216,8 @@ uint32_t HeadADCPT100_SendReadDataCommand(TEMPERATURE_SENSOR_ID_ENUM SensorId) //delayms(10); Status |= I2C_Read_SensorId(I2C_ID_HEAD_CARD, SensorId, temp, 3); - if (Status) - Report("HeadADCPT100_SendReadDataCommand error", __FILE__,Arb_Loss_Count,Status, RpMessage,SensorId, 0); + //if (Status) + // ReportWithPackageFilter(LoadFilter,"HeadADCPT100_SendReadDataCommand error", __FILE__,Arb_Loss_Count,Status, RpMessage,SensorId, 0); //First send the MSB so we need to reorder the bytes Data_ADC_Head = temp[0]; @@ -852,7 +858,7 @@ uint32_t Get_HeadCard_PT100(TEMPERATURE_SENSOR_ID_ENUM SensorId) return TempSensorResponse[SensorId].Temperature_C_mult_by_100; } -uint16_t ReadCalls = 0;ReadFailures = 0; +uint16_t ReadCalls = 0, ReadFailures = 0, ReadResets = 0; bool I2C_Failure = false; #define I2C_FAILURES_PERIOD 100 #define I2C_FAILURES_LIMIT 30 @@ -884,10 +890,15 @@ uint32_t Set_HeadCard_PT100() //call every 50mSec (minimum delay 30mSec) ReadFailures++; if(ReadFailures>I2C_FAILURES_LIMIT) //30 failures in 10 seconds { + ReadResets++; //I2C_Failure = true; - ReportWithPackageFilter(HeatersFilter,"Head I2C interface failure ",__FILE__,__LINE__,ReadFailures,RpError, ReadCalls,0); - //SetMachineState(MACHINE_STATE_BUILT_IN_FAILED); - //AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE,true); + ReportWithPackageFilter(HeatersFilter,"Head I2C interface failure ",__FILE__,ReadResets,ReadFailures,RpError, ReadCalls,0); + if (ReadResets > 50) + { + Report("Head malfunctioning, shut down",__FILE__,ReadResets,ReadFailures,RpError, ReadCalls,0); + //SetMachineState(MACHINE_STATE_BUILT_IN_FAILED); + AlarmHandlingSetAlarm(EVENT_TYPE__POWER_UP_BIT_FAILURE,true); + } } } return Status; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h index d8b2d1286..ed4c1228f 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C.h @@ -17,6 +17,8 @@ uint32_t I2C_control(uint32_t I2C_ID, uint32_t Slave_Add, bool RW,uint32_t Byte2 void Init_All_I2C(); void I2C_ReadingTask_Init(void); +extern uint16_t ReadFailures; + //------------------------------------------------------------------------------------------------------------- //uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t No_BytesTWrite, uint32_t *Bytes2Write ); diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c index bda830e8e..ab05c92a9 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/I2C_Comm.c @@ -207,11 +207,11 @@ uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, //Byte2Write = Byte2Write & 0xFF; - if(No_BytesToWrite <= 2) { + /*if(No_BytesToWrite <= 2) { status = I2C_WriteBuff(I2C_BASE, Slave_Add, I2C_Write_buf, No_BytesToWrite); } else { status = I2C_WriteFifo(I2C_BASE, Slave_Add, buff, No_BytesToWrite); - } + }*/ //uint32_t I2C_W_buf[256] = {0},i; @@ -220,8 +220,7 @@ uint32_t I2C_Write(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Write_buf, // I2C_W_buf[i] = request->bytestwrite[i]; // } - //status = I2C_WriteBuff(I2C_BASE, Slave_Add, I2C_Write_buf, No_BytesToWrite); - //status = I2C_WriteFifo(I2C_BASE, Slave_Add, buff, No_BytesToWrite); + status = I2C_WriteBuff(I2C_BASE, Slave_Add, I2C_Write_buf, No_BytesToWrite); if (status) { if (Arb_Loss_Count++ > 10) @@ -273,25 +272,8 @@ uint32_t I2C_Read(uint32_t I2C_ID, uint32_t Slave_Add, uint32_t *I2C_Read_buf, u //Byte2Write = Byte2Write & 0xFF; -// if(No_BytesTWrite == 1) -// { -// status = Write_Single_I2C(I2C_BASE, Slave_Add,Bytes2Write[0] & 0xFF); -// } -// else -// { -// -// } - - //uint32_t I2C_W_buf[256] = {0},i; - -// for(i = 0; i < request->n_bytestwrite;i++) -// { -// I2C_W_buf[i] = request->bytestwrite[i]; -// } - - //status = I2C_WriteBuff(I2C_BASE, Slave_Add, Bytes2Write, No_BytesTWrite); - //status = I2C_ReadBuff(I2C_BASE, Slave_Add, I2C_Read_buf, No_BytesToRead); - status = I2C_ReadFifo(I2C_BASE, Slave_Add, buff, No_BytesToRead); + status = I2C_ReadBuff(I2C_BASE, Slave_Add, I2C_Read_buf, No_BytesToRead); + //status = I2C_ReadFifo(I2C_BASE, Slave_Add, buff, No_BytesToRead); if (status) { if (Arb_Loss_Count++ > 10) diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c index 7590113c1..c36d27d74 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.c @@ -41,9 +41,9 @@ typedef struct }WhsControlConfig_t; WhsControlConfig_t WHS_ControlData = {0}; -#define MAX_WHS_CONTROL_SAMPLES 10 +/*#define MAX_WHS_CONTROL_SAMPLES 10 float WhsBlowerSamples[MAX_WHS_CONTROL_SAMPLES] ; -int WhsBlowerSamplesPointer = 0; +int WhsBlowerSamplesPointer = 0;*/ bool Read_Max5805_device_ID(); double calc_Q_average(WHS_Flow_Meter ORF_id,double Q_temp); @@ -236,9 +236,9 @@ bool WHS_init_Blower() WHS_ControlData.m_preError = 0; WHS_ControlData.m_SetParam = 5.0;//need to update SetParams on presegment stage - WHS_ControlData.SamplesFilterSize = MAX_WHS_CONTROL_SAMPLES/2; + //WHS_ControlData.SamplesFilterSize = MAX_WHS_CONTROL_SAMPLES/2; - memset (WhsBlowerSamples,0,sizeof(WhsBlowerSamples)); + //memset (WhsBlowerSamples,0,sizeof(WhsBlowerSamples)); return status; } @@ -614,7 +614,7 @@ uint32_t WHS_Pid_Testing_Func(double setParam,double measuredParam) float avreageSampleValue = 0; int i; - WhsBlowerSamples[WhsBlowerSamplesPointer] = measuredParam;//(-1 * TranslatedReadValue); + /*WhsBlowerSamples[WhsBlowerSamplesPointer] = measuredParam;//(-1 * TranslatedReadValue); WhsBlowerSamplesPointer++; if (WhsBlowerSamplesPointer >= WHS_ControlData.SamplesFilterSize) WhsBlowerSamplesPointer = 0; @@ -622,7 +622,7 @@ uint32_t WHS_Pid_Testing_Func(double setParam,double measuredParam) avreageSampleValue += WhsBlowerSamples[i]; avreageSampleValue = avreageSampleValue / (int)WHS_ControlData.SamplesFilterSize; - /*WHS_ControlData.m_mesuredParam = avreageSampleValue;*/ + WHS_ControlData.m_mesuredParam = avreageSampleValue;*/ WHS_ControlData.m_mesuredParam = measuredParam; WHS_ControlData.m_SetParam = setParam; WHS_ControlData.m_calculatedError = PIDAlgorithmCalculation((float)WHS_ControlData.m_SetParam , (float)WHS_ControlData.m_mesuredParam, @@ -687,14 +687,14 @@ uint32_t WHS_PidRequestMessage(void* request) WHS_ControlData.m_preError = 0; WHS_ControlData.m_SetParam = PID_Request->outputproportionalcycletime;//need to update SetParams on presegment stage - WHS_ControlData.SamplesFilterSize = PID_Request->pvinputfilterfactormode; + /*WHS_ControlData.SamplesFilterSize = PID_Request->pvinputfilterfactormode; if (PID_Request->pvinputfilterfactormode > MAX_WHS_CONTROL_SAMPLES) WHS_ControlData.SamplesFilterSize = MAX_WHS_CONTROL_SAMPLES; if (PID_Request->pvinputfilterfactormode < 0.5) // = 0 WHS_ControlData.SamplesFilterSize = MAX_WHS_CONTROL_SAMPLES/2; - - memset (WhsBlowerSamples,0,sizeof(WhsBlowerSamples)); - WhsBlowerSamplesPointer = 0; +*/ + //memset (WhsBlowerSamples,0,sizeof(WhsBlowerSamples)); + //WhsBlowerSamplesPointer = 0; return OK; diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c index 0d6cd35c7..b2e623a11 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c @@ -674,7 +674,7 @@ uint32_t MotorMovetoLimitSwitch (TimerMotors_t MotorId,bool direction, uint32_t } MotorTimeout[MotorId] = 0; - MotorTimeLag[MotorId] = eTenMillisecond; + MotorTimeLag[MotorId] = 5; //five milliseconds for better accuracy MotorTimeLimit[MotorId] = timeout; if ((MotorId == HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD)||(HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH)||(HARDWARE_MOTOR_TYPE__MOTO_SCREW)) diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 8af4720a6..eded4bdce 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -976,6 +976,13 @@ JobEndReasonEnum AlarmHandlingPrepareJob(void *CurrentJob) 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; } @@ -1214,7 +1221,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) } break; case ALARM_SOURCE_TYPE__CurrentAlarm: - if (CheckCurrentAlarms) + if ((CheckCurrentAlarms)&&(getIdleState()==false)) { if (AlarmItem[Alarm_i].ModuleDeviceId == 0xFF) { @@ -1338,7 +1345,7 @@ uint32_t AlarmHandlingLoop(uint32_t tick) break; if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Warning) FluidLevelWarning = AlarmItem[Alarm_i].AlarmValue; - else if (AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Error) + else if ((AlarmItem[Alarm_i].Severity == DEBUG_LOG_CATEGORY__Error)&&(AlarmItem[Alarm_i].AlarmDirection == UNDER_VALUE)) FluidLevelError = AlarmItem[Alarm_i].AlarmValue; value = Get_MidTank_Int1000_Sensor(AlarmItem[Alarm_i].DeviceId); if (AlarmItem[Alarm_i].AlarmDirection == OVER_VALUE) diff --git a/Software/Embedded_SW/Embedded/Modules/General/Safety.c b/Software/Embedded_SW/Embedded/Modules/General/Safety.c index e8454370c..400b083e4 100644 --- a/Software/Embedded_SW/Embedded/Modules/General/Safety.c +++ b/Software/Embedded_SW/Embedded/Modules/General/Safety.c @@ -65,7 +65,46 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) if (AllDispensersInSafety) { - if (Get_COVER_1_State(DryerDoor)) + if (WHS_GPI_SW_FILTER_PRES()) + { + //report and handle filter missing + AlarmHandlingSetAlarm(EVENT_TYPE__AIR_FILTER_NOT_INSTALLED, true); + mAirFilterAlarmState = true; + AirFilterAlarmState = true; + } + else + { + if (WHS_GPI_WASTE_FLOW_SWITCH() == false) + { + //report and handle air flow failure + //if blower if off handling is different + AlarmHandlingSetAlarm(EVENT_TYPE__NO_AIR_PRESSURE, true); + mAirFlowAlarmState = true; + AirFlowAlarmState = true; + } + else + { + if (Get_COVER_1_State(DryerDoor)) + { + //report and handle dryer door open + AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, true); + mDrierDoorAlarmState = true; + DrierDoorAlarmState = true; + } + else + { + //if (WHS_GPI_WASTE_OVERFULL()) - cannot read this switch + { + //report and handle waste overflow + AlarmHandlingSetAlarm(EVENT_TYPE__WASTE_CONTAINER_OVERFLOW, true); + mWasteOverflowAlarmState = true; + WasteOverflowAlarmState = true; + } + } + } + } + +/* if (Get_COVER_1_State(DryerDoor)) { //report and handle dryer door open AlarmHandlingSetAlarm(EVENT_TYPE__DRYER_DOOR_OPEN, true); @@ -103,6 +142,7 @@ uint32_t Safety_Main_State(uint32_t IfIndex, uint32_t BusyFlag) } } } + */ } else if (AnyDispensersInSafety) { diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index b796cae50..0e3bf95a4 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -106,6 +106,11 @@ uint32_t InternalWindingConfigMessage(JobSpool* request) InternalWinderCfg.segmentoffsetpulses = request->segmentoffsetpulses; InternalWinderCfg.spoolbackingrate = request->backingrate; InternalWinderCfg.startoffsetpulses = request->startoffsetpulses; + if (request->has_limitswitchstartpointoffset) + { + InternalWinderCfg.startoffsetpulses += request->limitswitchstartpointoffset; + Report("limit switch start point offset",__FILE__,__LINE__,(int)(request->startoffsetpulses),RpWarning,(int)(request->limitswitchstartpointoffset), 0); + } InternalWinderCfg.SpoolBottomBackingRate = request->bottombackingrate; InternalWinderCfg.NumberOfRotationPerPassage = 3.1415926*3;//request->rotationsperpassage; if (request->rotationsperpassage > 6.1) @@ -543,7 +548,7 @@ uint32_t WinderDistanceToSpoolEnded(uint32_t deviceID, uint32_t ReadValue) } uint32_t ScrewDTSCallback(uint32_t deviceID, uint32_t BusyFlag) { - REPORT_MSG ((int)msec_millisecondCounter,"ScrewDTSCallback called"); + Report("ScrewDTSCallback called", __FILE__,__LINE__,msec_millisecondCounter, RpMessage, ScrewSpeed, 0); SafeRemoveControlCallback(ScrewDTSControlId, ScrewDTSCallback); if (ScrewControlId != 0xFF) @@ -566,7 +571,7 @@ uint32_t WinderDistanceToSpoolState(void ) REPORT_MSG ((int)DTS_Time,"WinderDistanceToSpoolState"); ScrewDTSControlId = AddControlCallback("screw DTS",ScrewDTSCallback, DTS_Time-WinderBackToBaseTime,TemplateDataReadCBFunction,0,0,0); - REPORT_MSG ((int)msec_millisecondCounter,"ScrewDTSCallback start"); + Report("ScrewDTSCallback start", __FILE__,DTS_Time,msec_millisecondCounter, RpMessage, WinderBackToBaseTime, 0); return OK; } diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c index e7a333cc2..21211481e 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_print.c @@ -794,16 +794,6 @@ uint32_t ThreadInitialTestStub(HardwareMotor * request) } uint32_t HandleJobThreadControlParameters(ThreadParameters* ThreadParams) { - /* - FEEDER_MOTOR, - DRYER_MOTOR, - POOLER_MOTOR, - WINDER_MOTOR, - MotorControlConfig[Motor_i].m_params.Kd = MotorsControl[Pid_Id].derivativetime; - MotorControlConfig[Motor_i].m_params.Kp = MotorsControl[Pid_Id].proportionalgain; - MotorControlConfig[Motor_i].m_params.Ki = MotorsControl[Pid_Id].integraltime; - - */ if (ThreadParams == NULL) { return OK; @@ -828,6 +818,7 @@ uint32_t HandleJobThreadControlParameters(ThreadParameters* ThreadParams) MotorControlConfig[WINDER_MOTOR].m_params.Ki = ThreadParams->winderi; if(ThreadParams->winderd) MotorControlConfig[WINDER_MOTOR].m_params.Kd = ThreadParams->winderd; + ReportWithPackageFilter(ThreadFilter,"Rockers activity",__FILE__,__LINE__,(int)Thread_Rockers_Bypass,RpWarning,(int)ThreadParams->bypassrockers,0); if(ThreadParams->bypassrockers) Thread_Rockers_Bypass = true; @@ -850,14 +841,20 @@ uint32_t Release_Right_TFU_Tension() { Report("Release_Right_TFU_Tension",__FILE__,__LINE__,HARDWARE_MOTOR_TYPE__MOTO_RDANCER,RpMessage,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].pulseperround/4,0); RTFU_Up = false; - status = MotorMoveWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RDANCER, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].pulseperround/2, Release_Right_TFU_TensionCallback,1000); + status = MotorMoveWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RDANCER, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize, MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].pulseperround/4* MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].microstep, Release_Right_TFU_TensionCallback,1000); } return status; } +uint32_t Adjust_Right_TFU_Tension_2nd_Callback(uint32_t MotorId, uint32_t ReadValue) +{ + Report("Adjust_Right_TFU_Tension_2ndCallback 4 more steps",__FILE__,__LINE__,MotorId,RpMessage,0,0); + return OK; +} uint32_t Adjust_Right_TFU_Tension_Callback(uint32_t MotorId, uint32_t ReadValue) { Report("Adjust_Right_TFU_Tension_Callback",__FILE__,__LINE__,MotorId,RpMessage,0,0); + MotorMoveWithCallback(HARDWARE_MOTOR_TYPE__MOTO_RDANCER, 1-MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].directionthreadwize,4* MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDANCER].microstep, Release_Right_TFU_TensionCallback,1000); RTFU_Up = true; return OK; } diff --git a/Software/Embedded_SW/Embedded/Software Release Notes.txt b/Software/Embedded_SW/Embedded/Software Release Notes.txt index ac4f813eb..b53a7016f 100644 --- a/Software/Embedded_SW/Embedded/Software Release Notes.txt +++ b/Software/Embedded_SW/Embedded/Software Release Notes.txt @@ -1,3 +1,33 @@ +Embedded SW Release note - Version 1.4.6.33 - Pack 2+ +============================================================= +remove logs from I2C errors - show only summary. +stop job, prevent job on internal heating. +remove current alarm on entering idle. +motor go to switch - improve accuracy. +handle machine specific spool offset. +add additional 4 steps for the RTFU raising in RML feeder tension. +fix midtank warning bug (these alarm went missing). +fix safety handling. + +I2C FIFO in code (not active yet). + +Embedded SW Release note - Version 1.4.6.32 - Pack 2+ +============================================================= +remove file system semaphore protection. +new paramete for motors for powerstep drivers. +preparation for dispensers test (compilation flag). +fix dispenser new pressure sensor reading. +whs pid fixing, minimum and maximum limits, alarms. +prevent job on VOC / air flow alarms +dancers motors homing - update (clear) EEPROM +skip HW Config storing if there is no change +minimal fill-up level for new midtankks - 0.5 litres +test for dancers PID on more than 1 millisecond - set by controloutputtype +thread movement waits for LTFU tension preparation +prevent job on missing spool - PP machines + + + Embedded SW Release note - Version 1.4.6.31 - Pack 2+ ============================================================= fix bug in SW update - test many short jobs. diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c index ced5e2677..629804170 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c @@ -417,6 +417,8 @@ uint32_t InitSequenceInitialBlowerActivation(void) { Control_Voltage_To_Blower(1); //stop the blower Task_sleep (1000); + Trigger_WHS_MAX11614_Read_allADC(); + Task_sleep (10); if (ResetReason & SYSCTL_CAUSE_POR) { for (i=0;i<8;i++) |
