From 9ff1fdb7a1149d5c8335f78d236d59838aaa45c0 Mon Sep 17 00:00:00 2001 From: Shlomo Hecht Date: Mon, 22 Jun 2020 15:24:46 +0300 Subject: 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/Modules/Thread/Thread_Winder.c | 9 +++++++-- .../Embedded/Modules/Thread/Thread_print.c | 19 ++++++++----------- 2 files changed, 15 insertions(+), 13 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') 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; } -- cgit v1.3.1 From 5c9feefa07d31b521beef374697fbda7111816aa Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Tue, 23 Jun 2020 16:24:47 +0300 Subject: Addd define and logic for emc testing with motors internal clock (EMC_FORCE_MOT_CLOCK_INTERNAL) --- Software/Embedded_SW/Embedded/DataDef.h | 2 ++ .../Embedded/Drivers/FPGA/FPGA_SPI_Comm.c | 22 +++++++++++++++++++--- .../Embedded_SW/Embedded/Drivers/Motors/Motor.c | 16 ++++++++++++---- .../Embedded/Modules/Thread/Thread_Winder.c | 2 +- .../Embedded/StateMachines/Printing/JobSTM.c | 2 ++ 5 files changed, 36 insertions(+), 8 deletions(-) (limited to 'Software/Embedded_SW/Embedded/Modules/Thread') diff --git a/Software/Embedded_SW/Embedded/DataDef.h b/Software/Embedded_SW/Embedded/DataDef.h index 045bb2349..af252d9b5 100644 --- a/Software/Embedded_SW/Embedded/DataDef.h +++ b/Software/Embedded_SW/Embedded/DataDef.h @@ -26,6 +26,8 @@ #define USE_POWERSTEP01 +//#define EMC_FORCE_MOT_CLOCK_INTERNAL + //#define VAC_TEST //#define SPECIAL_DISPENSERS diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c index 9255a3c4f..a10c9fa1e 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_SPI_Comm.c @@ -692,7 +692,15 @@ uint32_t FPGA_MotorConfig_callback(TimerMotors_t _motorId, uint32_t ReadValue) if(MotorsCfg[_motorId].has_p01configword == true) { - temp |= MotorsCfg[_motorId].p01configword<<8; + if( (_motorId == HARDWARE_MOTOR_TYPE__MOTO_LDRIVING) || (_motorId == HARDWARE_MOTOR_TYPE__MOTO_RDRIVING) || + (_motorId == HARDWARE_MOTOR_TYPE__MOTO_SCREW) || (_motorId == HARDWARE_MOTOR_TYPE__MOTO_SCREW) ) + { + #ifdef EMC_FORCE_MOT_CLOCK_INTERNAL + temp |= (MotorsCfg[_motorId].p01configword & ~(0x000F))<<8; + #else + temp |= MotorsCfg[_motorId].p01configword<<8; + #endif + } MillisecWriteToMotor(_motorId, temp, 4, FPGA_MotorConfig_callback); } else//backward compatibility @@ -717,8 +725,16 @@ uint32_t FPGA_MotorConfig_callback(TimerMotors_t _motorId, uint32_t ReadValue) } else { - //temp |= 0x1C8F<<8;//need to change in current mode? - temp |= (0x1C80 | (MotorsCfg[_motorId].configword & 0x000F)) <<8;// + if( (_motorId == HARDWARE_MOTOR_TYPE__MOTO_LDRIVING) || (_motorId == HARDWARE_MOTOR_TYPE__MOTO_RDRIVING) || + (_motorId == HARDWARE_MOTOR_TYPE__MOTO_SCREW) || (_motorId == HARDWARE_MOTOR_TYPE__MOTO_SCREW) ) + { + #ifdef EMC_FORCE_MOT_CLOCK_INTERNAL + temp |= 0x1C80<<8; + #else + temp |= (0x1C80 | (MotorsCfg[_motorId].configword & 0x000F)) <<8; + #endif + + } MillisecWriteToMotor(_motorId, temp, 4, FPGA_MotorConfig_callback); } } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c index 190d564e0..8fb0fc573 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.c @@ -73,10 +73,18 @@ uint32_t MotorsInit(void) } //option to change itafter initialization (to solve EMC issues) in the function Control_motors_clock_source - F3_Moto_Clk_Src_Sel.Motor.LDRIVING = EXTERNAL; - F3_Moto_Clk_Src_Sel.Motor.RDRIVING = EXTERNAL; - F3_Moto_Clk_Src_Sel.Motor.SCREW = EXTERNAL; - F3_Moto_Clk_Src_Sel.Motor.WINDER = EXTERNAL; + #ifdef EMC_FORCE_MOT_CLOCK_INTERNAL + F3_Moto_Clk_Src_Sel.Motor.LDRIVING = INTERNAL; + F3_Moto_Clk_Src_Sel.Motor.RDRIVING = INTERNAL; + F3_Moto_Clk_Src_Sel.Motor.SCREW = INTERNAL; + F3_Moto_Clk_Src_Sel.Motor.WINDER = INTERNAL; + #else + F3_Moto_Clk_Src_Sel.Motor.LDRIVING = EXTERNAL; + F3_Moto_Clk_Src_Sel.Motor.RDRIVING = EXTERNAL; + F3_Moto_Clk_Src_Sel.Motor.SCREW = EXTERNAL; + F3_Moto_Clk_Src_Sel.Motor.WINDER = EXTERNAL; + #endif + F3_MOTO_CLK_SRC_SEL = F3_Moto_Clk_Src_Sel.ushort; return OK; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c index 0e3bf95a4..80ca05cb7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_Winder.c @@ -123,7 +123,7 @@ uint32_t InternalWindingConfigMessage(JobSpool* request) InternalWinderCfg.diameter = request->diameter; usnprintf(ScrewStr, 150, "WindingConfig start,offset,head,tail {, %d, %d, %d, %d, %d}",InternalWinderCfg.startoffsetpulses,(int)InternalWinderCfg.segmentoffsetpulses, (int)InternalWinderCfg.spoolbackingrate,(int)InternalWinderCfg.SpoolBottomBackingRate,(int)(InternalWinderCfg.NumberOfRotationPerPassage*1000)); - Report(ScrewStr,__FILE__,__LINE__,(int)InternalWinderCfg.diameter,RpWarning,(int)(InternalWinderCfg.NumberOfRotationPerPassage*1000), 0); + Report(ScrewStr,__FILE__,__LINE__,(int)InternalWinderCfg.startoffsetpulses,RpWarning,(int)(InternalWinderCfg.NumberOfRotationPerPassage*1000), 0); return status; } diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c index b5715ca0a..48ade0798 100644 --- a/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c +++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/JobSTM.c @@ -417,6 +417,7 @@ uint32_t ThreadJoggingFunc(int speed) Tspool->segmentoffsetpulses = 1000; Tspool->startoffsetpulses = 220; Tspool->rotationsperpassage = 3.1415926*2; + Tspool->has_limitswitchstartpointoffset = false; Ticket.spool = Tspool; CurrentJob = &Ticket; InternalWindingConfigMessage(Tspool); @@ -599,6 +600,7 @@ uint32_t ThreadCleaningJob(int speed) Tspool->segmentoffsetpulses = 1000; Tspool->startoffsetpulses = 220; Tspool->rotationsperpassage = 3.1415926*2; + Tspool->has_limitswitchstartpointoffset = false; Ticket.spool = Tspool; CurrentJob = &Ticket; job_length = CurrentJob->length + dryerbufferMeters; -- cgit v1.3.1