Messa in campo 4 file - 26/06/2020 Francia
Dependencies: mbed X_NUCLEO_IHM03A1_for
Fork of FORIGO_Modula_V7_3_VdcStep_maggio2020 by
Diff: main.cpp
- Revision:
- 13:d1030d4e51a8
- Parent:
- 12:b0fc1d313813
- Child:
- 14:e2b5efa06c41
--- a/main.cpp Mon Mar 25 11:32:34 2019 +0000 +++ b/main.cpp Mon Mar 25 15:42:04 2019 +0000 @@ -264,8 +264,16 @@ memoTimeHole = (double)timeHole; metalTimer.reset(); if (encoder==true) { - speedOfSeedWheel=((seedPerimeter/((SDreductionRatio*25.5f)))/memo_TimeHole)*1000000.0f; //mtS + speedOfSeedWheel=((seedPerimeter/seedWheelDcPulse)/memo_TimeHole)*1000000.0f; //mtS pulseRised2=1; + dcEncoderCnt++; + double sincronizza = frazioneImpulsi * dcEncoderCnt; + prePosSD=500+(uint32_t)sincronizza; // preposizionamento SD + #if defined(speedMaster) + if (quinconceActive==0) { + posForQuinc=500+(uint32_t)sincronizza; + } + #endif } #if defined(pcSerial) #if defined(checkLoop) @@ -420,8 +428,10 @@ K_WheelRPM = 60.0f/seedPerimeter; // calcola il K per i giri al minuto della ruota di semina K_WhellFrequency = (seedWheelMotorSteps*SDreductionRatio)/60.0f; // calcola il K per la frequenza di comando del motore di semina rapportoRuote = pickNumber/cellsNumber; // calcola il rapporto tra il numero di becchi ed il numero di celle - SDsectorStep = (double)fixedStepGiroSD / (double)pickNumber; + SDsectorStep = fixedStepGiroSD / pickNumber; TBsectorStep = (TBmotorSteps*TBreductionRatio)/cellsNumber; + seedWheelDcPulse=SDreductionRatio*dcPulseTurn; + frazioneImpulsi= (SDsectorStep/(seedWheelDcPulse/pickNumber)); #if defined(runner) #if defined(Zucca) KcorT = (SDsectorStep/TBsectorStep)*2.0f; @@ -1352,10 +1362,10 @@ if (speedFromMaster>0.0f) { if (enableSimula==0) { tractorSpeed_MtS_timed = speedFromMaster + percento; - if (tractorSpeed_MtS_timed > (oldLocalTractorSpeed*1.15f){ + if (tractorSpeed_MtS_timed > (oldLocalTractorSpeed*1.15f)){ tractorSpeed_MtS_timed = oldLocalTractorSpeed*1.15f; } - if (tractorSpeed_MtS_timed < (oldLocalTractorSpeed/1.15f){ + if (tractorSpeed_MtS_timed < (oldLocalTractorSpeed/1.15f)){ tractorSpeed_MtS_timed = oldLocalTractorSpeed/1.15f; } } @@ -1403,10 +1413,10 @@ if (speedFromMaster>0.0f) { if (enableSimula==0) { tractorSpeed_MtS_timed = speedFromMaster + percento; - if (tractorSpeed_MtS_timed > (oldLocalTractorSpeed*1.15f){ + if (tractorSpeed_MtS_timed > (oldLocalTractorSpeed*1.15f)){ tractorSpeed_MtS_timed = oldLocalTractorSpeed*1.15f; } - if (tractorSpeed_MtS_timed < (oldLocalTractorSpeed/1.15f){ + if (tractorSpeed_MtS_timed < (oldLocalTractorSpeed/1.15f)){ tractorSpeed_MtS_timed = oldLocalTractorSpeed/1.15f; } } @@ -1529,6 +1539,7 @@ wait_ms(500); dcVeri.attach(&controllaCorrente,2.0f); + delaySpeedCheck.start(); #if defined(runnerTos) thread.start(step_Reading); @@ -1724,6 +1735,7 @@ SDzeroDebounced=1; sincroQui=1; SDwheelTimer.reset(); + dcEncoderCnt=0; #if defined(speedMaster) if (quinconceActive==0) { posForQuinc=500; @@ -2014,7 +2026,14 @@ if(enableSpeed>=2) { if ((pulseSpeedInterval>=0.0f)) { //minIntervalPulse)&&(pulseSpeedInterval<maxInterval)){ if((quincCnt<3)||(speedFromMaster==0.0f)||(enableSimula==1)) { + //TODO: limite inferiore e superiore per non modificare la velocità selezionata + // serve un timer a 5 secondi dopo l'avviamento che fa partire il controllo tractorSpeed_MtS_timed = ((pulseDistance / pulseSpeedInterval)); // tractor speed (unit= Mt/S) from pulse time interval + if (delaySpeedCheck.read()>=5.0f){ + if ((tractorSpeed_MtS_timed<=(oldLocalTractorSpeed+hiLimitSpeed))&&(tractorSpeed_MtS_timed>=(oldLocalTractorSpeed-loLimitSpeed))){ + tractorSpeed_MtS_timed=oldLocalTractorSpeed; + } + } oldLocalTractorSpeed = tractorSpeed_MtS_timed; } if (checkSDrotation==0) { @@ -2370,6 +2389,7 @@ } //************************************************************* } else { // fine ciclo con velocita maggiore di 0 + delaySpeedCheck.reset(); if (cycleStopRequest==1) { SDwheelTimer.stop(); SDwheelTimer.reset();