aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-07-30 10:20:11 +0300
committerShlomo Hecht <shlomo@twine-s.com>2019-07-30 10:20:11 +0300
commit1f69782f90dfa3d48e6b081fd2d25f69cf929fbb (patch)
treef342fa64a6384115ffafa58aee10f7604d197d04 /Software/Embedded_SW/Embedded
parent90178d6bab9bfd40426bbcaac8368c56a6cccc43 (diff)
downloadTango-1f69782f90dfa3d48e6b081fd2d25f69cf929fbb.tar.gz
Tango-1f69782f90dfa3d48e6b081fd2d25f69cf929fbb.zip
Version 1.4.2.8 improved loading, cleaning introduced, time handled
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Common/SW_Info/SW_Info.c2
-rw-r--r--Software/Embedded_SW/Embedded/Common/Utilities/Utils.c8
-rw-r--r--Software/Embedded_SW/Embedded/Common/Utilities/Utils.h1
-rw-r--r--Software/Embedded_SW/Embedded/Communication/Connection.c1
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c6
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c30
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c7
-rw-r--r--Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c27
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c41
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c1
11 files changed, 93 insertions, 33 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 2ef74c7b6..1d427a7a5 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,2,7};
+TangoVersion_t _gTangoVersion = {1,4,2,8};
#define BUILD_DATE __DATE__
char Dat[50] = BUILD_DATE;
char _gTangoName [MAX_STRING_LEN] = "Tango01 ";//d
diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c
index e22291963..d1143ada2 100644
--- a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c
+++ b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.c
@@ -12,6 +12,7 @@
//#include <driverlib/systick.h>
#include "driverlib/hibernate.h"
#include <driverlib/Watchdog.h>
+#include <ti/sysbios/hal/Seconds.h>
//*****************************************************************************
@@ -138,9 +139,14 @@ void utilsInit(uint32_t ui32SysClock)
// Configure the hibernate module counter to RTC counter mode.
HibernateCounterMode(HIBERNATE_COUNTER_RTC);
+#define STARTTIME 1564403262
+ Seconds_set(STARTTIME);
}
-
+void utilsUpdateDateTime(uint32_t StartTime)
+{
+ Seconds_set(StartTime);
+}
uint32_t UsersysTickGet (void) {
uint32_t tick = 0;
diff --git a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h
index 37eade5c4..b54453e2c 100644
--- a/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h
+++ b/Software/Embedded_SW/Embedded/Common/Utilities/Utils.h
@@ -22,6 +22,7 @@ typedef enum
void utilsInit(uint32_t ui32SysClock);
+void utilsUpdateDateTime(uint32_t StartTime);
uint32_t UsersysTickGet (void);
bool DanserCheckPosition(uint16_t position , Danser_t danser, bool test);
void InitWatchdog(uint32_t clock);
diff --git a/Software/Embedded_SW/Embedded/Communication/Connection.c b/Software/Embedded_SW/Embedded/Communication/Connection.c
index 50f23d26e..cfcfc6658 100644
--- a/Software/Embedded_SW/Embedded/Communication/Connection.c
+++ b/Software/Embedded_SW/Embedded/Communication/Connection.c
@@ -60,6 +60,7 @@ void ConnectionRequest(MessageContainer* requestContainer)
char AssyVersion[30] = {0};
response.deviceinformation = &DevInfo;
+ utilsUpdateDateTime(1564403262);//(request->seconds);
/*
extern TangoVersion_t _gTangoVersion;
extern char Dat[50];
diff --git a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c
index 79f232655..0eccc7601 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Flash_Memory/FATFS/fatfs_port_mx66l51235f.c
@@ -23,6 +23,7 @@
#include "driverlib/ssi.h"
#include "driverlib/gpio.h"
#include "inc/hw_memmap.h"
+#include <time.h>
//#include <ti/mw/fatfs/ff.h>
//#include <ti/mw/fatfs/ffcio.h>
@@ -198,8 +199,9 @@ void disk_timerproc (void)
DWORD get_fattime (void)
{
- return miliseconds / 1000;
-
+ //return miliseconds / 1000;
+ DWORD t = (DWORD)time(NULL);
+ return t;
}
diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c
index e2b0ed701..52f62ed5a 100644
--- a/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c
+++ b/Software/Embedded_SW/Embedded/Drivers/Motors/MotorActions.c
@@ -27,6 +27,7 @@
#include "drivers/FPGA/FPGA_Comm.h"
#include "drivers/FPGA/FPGA_GPIO/FPGA_GPIO.h"
#include "drivers/SSI_Comm/Dancer/Dancer.h"
+#include "drivers/Flash_ram/MCU_E2Prom.h"
/////////////////////////
#include "driverlib/ssi.h"
@@ -223,10 +224,15 @@ uint32_t MotorVerifiedCallBackFunction(uint32_t IfIndex, uint32_t ArmPosition) /
MotorStop(MotorId,Hard_Hiz );
Task_sleep(5);
MotorMove(MotorId,DrierBackLashDirection,DryerBackLash );
- Task_sleep(5);
+ Task_sleep(100);
if (MotorId == HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM)
MotorStop(MotorId,Hard_Stop );
+ Task_sleep(5);
+ Read_Dryer_ENC_Position(); //trigger the next call
+ Task_sleep(5);
DrierZeroPosition = Read_Dryer_ENC_Position(); //trigger the next call
+ MCU_E2PromProgram(EEPROM_STORAGE_DRYER_CENTER,DrierZeroPosition);
+
Report("MotorVerifiedCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,DryerBackLash,0);
//call the module callback
@@ -284,9 +290,10 @@ uint32_t MotorMoveToDrierPositionCallBackFunction(uint32_t IfIndex, uint32_t Rea
Report("MotorMoveToDrierPositionCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0);
//CallbackCalls = 0;
}
-
+ Read_Dryer_ENC_Position();
//if (DrierZeroPosition == ReadValue) //thread running identified
{
+ Report("MotorMoveToDrierPosition end",__FILE__,__LINE__,DrierZeroPosition,RpWarning,ReadValue,0);
//stop this control loop
SafeRemoveControlCallback(MotorControlId[MotorId], MotorControlCallback[MotorId] );
MotorControlCallback[MotorId] = 0;
@@ -321,9 +328,9 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb
Task_sleep(5);
Read_Dryer_ENC_Position();
Task_sleep(5);
- currentposition = Control_Read_Dryer_Position(0,0,0);
+ currentposition = Control_Read_Dryer_Position(0,0);
+ MCU_E2PromRead(EEPROM_STORAGE_DRYER_CENTER,&DrierZeroPosition);
Report("MotorMovetoEncoderPosition",__FILE__,__LINE__,DrierZeroPosition,RpWarning,currentposition,0);
-
if (currentposition > DrierZeroPosition)
{
direction = false;
@@ -341,6 +348,7 @@ uint32_t MotorMovetoEncoderPosition (TimerMotors_t MotorId, callback_fptr callb
direction = true;
}
}
+ Report("MotorMovetoEncoderPosition direction",__FILE__,__LINE__,direction,RpWarning,15,0);
MotorSetDirection( MotorId, direction);
MotorSetSpeed (MotorId, 15);
@@ -369,9 +377,19 @@ uint32_t MotorMoveCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag) //TODO
LOG_ERROR (IfIndex, "Wrong Interface type");
return 0xFFFFFFFF;
}
- MotorId = IfIndex&0xFF;
+ CallbackCalls++;
+ if (CallbackCalls%5 == 0)
+ {
+ Read_Dryer_ENC_Position();
+ }
+ if (CallbackCalls%5 == 1)
+ {
+ MotorId = Control_Read_Dryer_Position(0,0);
+ Report("MotorMoveCallBackFunction",__FILE__,__LINE__,DrierZeroPosition,RpWarning,MotorId,0);
+ }
- if (BusyFlag == NOTBUSY)
+ MotorId = IfIndex&0xFF;
+ if (BusyFlag == NOTBUSY)
{
//stop this control loop
SafeRemoveControlCallback(MotorControlId[MotorId], MotorControlCallback[MotorId] );
diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h
index 7a843b1c1..2b3b33dff 100644
--- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h
+++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/Dancer/Dancer.h
@@ -12,7 +12,7 @@
uint32_t Read_Dancer_Position (HardwareDancerType DancerId);
uint32_t Control_Read_Dancer_Position(HardwareDancerType DancerId, uint32_t Parameter1, uint32_t Parameter2);
uint32_t Read_Dryer_ENC_Position ();
-uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1, uint32_t Parameter2);
+uint32_t Control_Read_Dryer_Position(uint32_t DryerID, uint32_t Parameter1);
void Loop_SSI();
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
index 212570462..186fef2f9 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_dispenser.c
@@ -299,8 +299,11 @@ uint32_t IDS_Dispenser_Store_Data (void)
ReadAppAndProgram(DISPENSERS_MAP_IN_FLASH+4, response_size, IDS_Dispenser_Data);
Status = FileWrite(IDS_Dispenser_Data,response_size,DispenserStorePath,BIOS_NO_WAIT);
- DispenserDataUpdated = false;
- REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time");
+ if (Status == FR_OK)
+ {
+ DispenserDataUpdated = false;
+ REPORT_MSG(msec_millisecondCounter - timing, "Updating dispensers file - time");
+ }
return Status;
}
void IDS_Dispenser_Content_Calculation (char DispenserId)
diff --git a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
index 9d708d959..ac6df3c42 100644
--- a/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/IDS/IDS_print.c
@@ -67,9 +67,10 @@ bool DispensersAlarmState[ MAX_SYSTEM_DISPENSERS] = {false,false,false,f
int JobBrushStopId = 0;
int lInterSegmentLength = 0;
int InterSegmentStepsLimit = 0,InterSegmentStepsCount = 0;
- uint32_t InterSegmentStartSprayCleaner;
- uint32_t InterSegmentStartRocking;
- uint32_t InterSegmentCenterRockers;
+
+ uint32_t InterSegmentStartSprayCleaner = 0;
+ uint32_t InterSegmentStartRocking = 0;
+ uint32_t InterSegmentCenterRockers = 0;
uint32_t LeftRockerSpeed = 20;
uint32_t RighttRockerSpeed = 20;
uint32_t CleaningDispenserSpeed = 40;
@@ -805,20 +806,20 @@ uint32_t IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
}
if (EnableCleaning == true)
{
- if (InterSegmentStartSprayCleaner == InterSegmentStepsCount)
+ if (( InterSegmentStartSprayCleaner )&&(InterSegmentStartSprayCleaner == InterSegmentStepsCount))
{
Report("Start Spray Cleaner",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0);
- //IDS_Cleaning_Spray_Cleaning_Solution (int dispenserSpeed,callback_fptr callback);
+ IDS_Cleaning_Spray_Cleaning_Solution (CleaningDispenserSpeed,NULL);
}
- if (InterSegmentStartRocking == InterSegmentStepsCount)
+ /*if (InterSegmentStartRocking == InterSegmentStepsCount)
{
Report("Start cleaning rockers",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0);
//IDS_Cleaning_Move_Rockers (int LeftRockerSpeed,int RightRockerSpeed);
- }
- if (InterSegmentCenterRockers == InterSegmentStepsCount)
+ }*/
+ if (( InterSegmentCenterRockers)&&(InterSegmentCenterRockers == InterSegmentStepsCount))
{
Report("Stop spray and center rockers",__FILE__,__LINE__,InterSegmentStepsCount,RpWarning,(int)lInterSegmentLength,0);
- //IDS_Cleaning_Stop_Cleaning_Solution (callback_fptr callback);
+ IDS_Cleaning_Stop_Cleaning_Solution (NULL);
//IDS_Cleaning_Center_And_Stop_Rockers (int timeout,callback_fptr callback);
}
}
@@ -962,12 +963,12 @@ uint32_t IDSPreSegmentState(void *SegmentDetails, int SegmentId)
return ERROR;
}
Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)IntersegmentLength,0);
- if (EnableCleaning == true)
+ /*if (EnableCleaning == true)
{
InterSegmentStartSprayCleaner = 500;
InterSegmentStartRocking = 1000;
InterSegmentCenterRockers = 3000;
- }
+ }*/
InterSegmentStartWFCFDispensers = (lInterSegmentLength>5000)?lInterSegmentLength-5000:lInterSegmentLength;
}
@@ -1310,12 +1311,12 @@ uint32_t IDSSegmentState(void *SegmentDetails, int SegmentId)
return ERROR;
}
Report("Add control callback ",__FILE__,__LINE__,(int)100,RpWarning,(int)IntersegmentLength,0);
- if (EnableCleaning == true)
+ /*if (EnableCleaning == true)
{
InterSegmentStartSprayCleaner = 500;
InterSegmentStartRocking = 1000;
InterSegmentCenterRockers = 3000;
- }
+ }*/
InterSegmentStartWFCFDispensers = 0;
diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
index d3a9b96ef..efb3f99a9 100644
--- a/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
+++ b/Software/Embedded_SW/Embedded/Modules/Thread/ThreadLoad.c
@@ -232,6 +232,16 @@
//Use Notation How Many Rotations In The Drier, Or Check Against Stopper. Move Slowly
return OK;
}
+ uint32_t Thread_Load_Jog_Feeder_To_Middle_Point_Callback(uint32_t deviceID, uint32_t BusyFlag)
+ {
+ {
+ Report("Thread_Load_Jog_Feeder_To_Middle_Point_Callback",__FILE__,__LINE__,LoadStages,RpMessage,CallbackCounter,0);
+ //storeLoadArmParameters();
+ LoadStages++;
+ ThreadLoadStateMachine(LoadStages);
+ }
+ return OK;
+ }
uint32_t Thread_Load_HomingCallback(uint32_t MotorId, uint32_t ReadValue)
{
@@ -396,13 +406,20 @@
{
REPORT_MSG(LoadStages, "Thread Load State Machine step");
CallbackCounter++;
- MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 100, FEEDER_DANCER ,true, Thread_Load_HomingCallback,2000);
+ MotorMovetoDancerPosition (HARDWARE_MOTOR_TYPE__MOTO_RDRIVING,MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_RDRIVING].directionthreadwize, 100, FEEDER_DANCER ,true, Thread_Load_Jog_Feeder_To_Middle_Point_Callback,2000);
return OK;
}
uint32_t Thread_Load_Dryer_MovetoEncoderPosition_Callback(uint32_t MotorId, uint32_t ReadValue)
{
+ Report("Thread_Load_Dryer_MovetoEncoderPosition_Callback",__FILE__,__LINE__,LoadStages,RpMessage,ReadValue,0);
MotorSetMaxSpeed (HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM, 200);
+ if(ControlId != 0xFF)
+ {
+ MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz);
+ RemoveControlCallback(ControlId, ThreadLoadControlCBFunction );
+ ControlId = 0xFF;
+ }
if (CallbackCounter)
{
CallbackCounter--;
@@ -418,17 +435,18 @@
else
LOG_ERROR(MotorId, "Thread_Load_HomingCallback Callback is already 0");
+ return OK;
}
uint32_t Thread_Load_Dryer_Loading_Callback(uint32_t MotorId, uint32_t ReadValue)
{
Report("Thread Load State Machine Callback.",__FILE__,__LINE__,LoadStages,RpMessage,NumberOfDrierLoaderCycles,0);
- if(ControlId != 0xFF)
+ /*if(ControlId != 0xFF)
{
MotorStop(ThreadMotorIdToMotorId[FEEDER_MOTOR],Hard_Hiz);
RemoveControlCallback(ControlId, ThreadLoadControlCBFunction );
ControlId = 0xFF;
- }
- //REPORT_MSG(MotorId, "Thread_Load_Dryer_Loading_Callback Motor Id");
+ }*/
+ REPORT_MSG(MotorId, "Thread_Load_Dryer_Loading_Callback Motor Id");
MotorMovetoEncoderPosition(HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM,Thread_Load_Dryer_MovetoEncoderPosition_Callback,10000);
return OK;
}
@@ -437,13 +455,14 @@
{
REPORT_MSG(LoadStages, "Thread Load State Machine step");
LoadArmInfo.LoadArmRounds = 20;
- uint32_t numberOfSteps = 0;
+ float numberOfSteps = 0;
//Start Feeder Pid, Rotate Loading Arm Counter Thread Direction X Circles According To Rml. Feeder Speed Is 40
SetOriginMotorSpeed(19);
// OriginalMotorSpd_2PPS[FEEDER_MOTOR] = 1000;
// CurrentControlledSpeed[FEEDER_MOTOR] = 1000;
numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*LoadArmInfo.LoadArmRounds*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius;
+ //numberOfSteps = MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulseperround*3.3*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius;
Report("Thread Load State Machine step.",__FILE__,LoadStages,numberOfSteps,RpMessage,(int)(MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].microstep*MotorsCfg[HARDWARE_MOTOR_TYPE__MOTO_DRYER_LOADARM].pulleyradius),0);
MotorControlConfig[FEEDER_MOTOR].m_params.MAX = 1;
MotorControlConfig[FEEDER_MOTOR].m_params.MIN = MotorsControl[FEEDER_MOTOR].outputproportionalpowerlimit*-1;
@@ -534,7 +553,7 @@
MotorControlConfig[POOLER_MOTOR].m_params.MIN = MotorsControl[POOLER_MOTOR].outputproportionalpowerlimit*-1;
MotorControlConfig[POOLER_MOTOR].m_params.Kd = MotorsControl[POOLER_MOTOR].derivativetime;
MotorControlConfig[POOLER_MOTOR].m_params.Kp = MotorsControl[POOLER_MOTOR].proportionalgain;
- MotorControlConfig[POOLER_MOTOR].m_params.Ki = MotorsControl[POOLER_MOTOR].integraltime;
+ MotorControlConfig[POOLER_MOTOR].m_params.Ki = 0;//MotorsControl[POOLER_MOTOR].integraltime;
MotorControlConfig[POOLER_MOTOR].m_params.IntegralErrorMultiplier = MotorsControl[POOLER_MOTOR].setpointramprateorsoftstartramp;
MotorControlConfig[POOLER_MOTOR].m_params.ProportionalErrorMultiplier = MotorsControl[POOLER_MOTOR].outputonoffhysteresisvalue;
MotorControlConfig[POOLER_MOTOR].m_params.epsilon = MotorsControl[POOLER_MOTOR].epsilon;
@@ -556,7 +575,7 @@
MotorControlConfig[WINDER_MOTOR].m_params.MIN = MotorsControl[WINDER_MOTOR].outputproportionalpowerlimit*-1;
MotorControlConfig[WINDER_MOTOR].m_params.Kd = MotorsControl[WINDER_MOTOR].derivativetime;
MotorControlConfig[WINDER_MOTOR].m_params.Kp = MotorsControl[WINDER_MOTOR].proportionalgain;
- MotorControlConfig[WINDER_MOTOR].m_params.Ki = MotorsControl[WINDER_MOTOR].integraltime;
+ MotorControlConfig[WINDER_MOTOR].m_params.Ki = 0;//MotorsControl[WINDER_MOTOR].integraltime;
MotorControlConfig[WINDER_MOTOR].m_params.IntegralErrorMultiplier = MotorsControl[WINDER_MOTOR].setpointramprateorsoftstartramp;
MotorControlConfig[WINDER_MOTOR].m_params.ProportionalErrorMultiplier = MotorsControl[WINDER_MOTOR].outputonoffhysteresisvalue;
MotorControlConfig[WINDER_MOTOR].m_params.epsilon = MotorsControl[WINDER_MOTOR].epsilon;
@@ -682,7 +701,10 @@ uint32_t ThreadLoadButton(THREAD_LOAD_STAGES_ENUM ReadValue)
{
ThreadLoadStateMachine(ReadValue);
}
+ return OK;
}
+uint32_t LoadCounter = 0;
+
uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
{
//read value is the dancer angle
@@ -741,6 +763,11 @@ uint32_t ThreadLoadControlCBFunction(uint32_t IfIndex, uint32_t ReadValue)
CurrentControlledSpeed[index] = calculated_speed;
MotorSetSpeed(ThreadMotorIdToMotorId[index], calculated_speed);
}
+ LoadCounter++;
+ if ((LoadCounter % 5001) == 0)
+ {
+ Report("MotorSpeedUpdated",__FILE__,index,abs(TranslatedReadValue),RpWarning,(int)CurrentControlledSpeed[index],0);
+ }
return OK;
}
void ThreadLoadRequest(MessageContainer* requestContainer)
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
index 2959a688b..3aa7f8895 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Printing/PrintingSTM.c
@@ -151,6 +151,7 @@ FRESULT CloseJobFile()
SegmentPtr = NULL;
}
REPORT_MSG(Fresult,"CloseJobFile");
+ IDS_Dispenser_Store_Data ();
return Fresult;
}