new_2019

Dependencies:   mbed CANMsg

Committer:
francescopistone
Date:
Thu Jan 31 07:32:31 2019 +0000
Branch:
BOX_ARGENTO_2019
Revision:
4:8c64ea251890
Parent:
3:36da019e6bb6
BOX_ARGENTO_2019

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nerit 3:36da019e6bb6 1 int zeroRequestBuf=0;
nerit 3:36da019e6bb6 2 int runRequestBuf=0;
nerit 3:36da019e6bb6 3
nerit 3:36da019e6bb6 4 // define cycle variable related to the external command
nerit 3:36da019e6bb6 5 int oldTractorSpeedRead=0;
nerit 3:36da019e6bb6 6 int startCycle=0; // activate motors and functions
nerit 3:36da019e6bb6 7 int enableCycle=0; // enable regular cycle
nerit 3:36da019e6bb6 8 int zeroCycle=0; // azzeramento motori richiesto
nerit 3:36da019e6bb6 9 int OldStartCycle=0; // use for triggering command change
nerit 3:36da019e6bb6 10 int OldEnableCycle=0;
nerit 3:36da019e6bb6 11 int oldZeroCycle=0; // memoria azzeramento motori su richiesta
nerit 3:36da019e6bb6 12 int zeroCycleEnd=0; // ciclo di azzeramento completato
nerit 3:36da019e6bb6 13 int zeroTrigger=0;
nerit 3:36da019e6bb6 14 int TBzeroPinInput=0; // segnale invertito micro tamburo
nerit 3:36da019e6bb6 15 int seedWheelZeroPinInput=0; // segnale invertito sensore ruota di semina
nerit 3:36da019e6bb6 16 int SD_faultA=0;
nerit 3:36da019e6bb6 17 int SD_faultB=0;
nerit 3:36da019e6bb6 18 int DC_brake=1;
nerit 3:36da019e6bb6 19 int DC_forward=1;
nerit 3:36da019e6bb6 20
nerit 3:36da019e6bb6 21
nerit 3:36da019e6bb6 22 int oldFaseLavoro=0;
nerit 3:36da019e6bb6 23
nerit 3:36da019e6bb6 24 // define logic internal variables
nerit 3:36da019e6bb6 25 double tractorSpeed_MtS_timed=0.0f; // tractor speed calculated from pulse interval time
nerit 3:36da019e6bb6 26 double speedForDisplay[5]={0.0f,0.0f,0.0f,0.0f,0.0f};
nerit 3:36da019e6bb6 27 double totalSpeed=0.0f;
nerit 3:36da019e6bb6 28 double OLDpulseSpeedInterval=1000.01f; // tractor speed calculated from pulse interval time
nerit 3:36da019e6bb6 29 double pulseDistance=0.0f; // linear space between pulse
nerit 3:36da019e6bb6 30 double pulseDistanceCalc=0.0f;
nerit 3:36da019e6bb6 31 double speedPerimeter=0.0f; // perimeter of tractor speed wheel
nerit 3:36da019e6bb6 32 double seedPerimeter=0.0f; // perimeter of seed wheel
nerit 3:36da019e6bb6 33 double mediaSpeed[5]={0.0f,0.0f,0.0f,0.0f,0.0f};
nerit 3:36da019e6bb6 34 int pntMedia=0;
nerit 3:36da019e6bb6 35 int actualPulseReadTimer=0; // timer read at previous pulse
nerit 3:36da019e6bb6 36 double pulseSpeedInterval=0.0f; // delta time of pulse
nerit 3:36da019e6bb6 37 int lastPulseRead=0;
nerit 3:36da019e6bb6 38 int oldLastPulseRead=0;
nerit 3:36da019e6bb6 39 int pulseRised=0; // pulse from speed wheel occured. Define when is possible to determine speed of up down motor.
nerit 3:36da019e6bb6 40 int pulseRised1 = 0;
nerit 3:36da019e6bb6 41 int pulseRised2 = 0;
nerit 3:36da019e6bb6 42 // Set from interrupt routine and Reset from main after up down motor speed calculated
nerit 3:36da019e6bb6 43 double rapportoRuote = 0.0f;
nerit 3:36da019e6bb6 44 double TBrpm = 0.0f;
nerit 3:36da019e6bb6 45 double TBfrequency = 0.0f;
nerit 3:36da019e6bb6 46 double TBperiod = 0.0f;
nerit 3:36da019e6bb6 47 double oldPeriodoTB = 0.0f;
nerit 3:36da019e6bb6 48 int SDzeroCyclePulse=0;
nerit 3:36da019e6bb6 49 int TBzeroCyclePulse=0;
nerit 3:36da019e6bb6 50 int SDzeroed=0;
nerit 3:36da019e6bb6 51 int TBzeroed=0;
nerit 3:36da019e6bb6 52 int oldOnSDzero=0;
nerit 3:36da019e6bb6 53 int oldOnTBzero=0;
nerit 3:36da019e6bb6 54 int oldOffSDzero=0;
nerit 3:36da019e6bb6 55 int oldOffTBzero=0;
nerit 3:36da019e6bb6 56 int SDzeroPinTrig=0;
nerit 3:36da019e6bb6 57 int TBzeroPinTrig=0;
nerit 3:36da019e6bb6 58 int SDzeroDebounced=0;
nerit 3:36da019e6bb6 59 int SDrunZero=0;
nerit 3:36da019e6bb6 60 int TBrunZero=0;
nerit 3:36da019e6bb6 61 int syncroCheck=0;
nerit 3:36da019e6bb6 62 double memoStepTB=0.0f;
nerit 3:36da019e6bb6 63 double erroreSyncro=0.0f;
nerit 3:36da019e6bb6 64 double errorePercentuale=1.0f;
nerit 3:36da019e6bb6 65 int oldSeedWheelZeroPinInput=0;
nerit 3:36da019e6bb6 66 int oldTBzeroPinInput=0;
nerit 3:36da019e6bb6 67 int stopCicloTB = 0;
nerit 3:36da019e6bb6 68 int startCicloTB = 0;
nerit 3:36da019e6bb6 69 int cicloTbinCorso = 0;
nerit 3:36da019e6bb6 70 int beccoPronto =0;
nerit 3:36da019e6bb6 71 int memoIntraPick=0;
nerit 3:36da019e6bb6 72
nerit 3:36da019e6bb6 73 double realSpeed = 0.0f;
nerit 3:36da019e6bb6 74 double realGiroSD = 0.0f;
nerit 3:36da019e6bb6 75 double tempoBecco = 0.0f;
nerit 3:36da019e6bb6 76 double frequenzaReale = 0.0f;
nerit 3:36da019e6bb6 77 double semiPeriodoReale = 0.0f;
nerit 3:36da019e6bb6 78 double tempoTraBecchi_mS = 0.0f;
nerit 3:36da019e6bb6 79 double tempoGiroSD = 0.0f;
nerit 3:36da019e6bb6 80
nerit 3:36da019e6bb6 81 // variable for speed and step calculation
nerit 3:36da019e6bb6 82 uint32_t prePosSD=0; // actual position of seed wheel (step of motor)
nerit 3:36da019e6bb6 83 uint32_t SDactualPosition=0; // actual position of seed wheel (step of motor)
nerit 3:36da019e6bb6 84 uint32_t TBactualPosition=0;
nerit 3:36da019e6bb6 85
nerit 3:36da019e6bb6 86 int cycleStopRequest=0; // when cycle end request the zero of SD and UD
nerit 3:36da019e6bb6 87
nerit 3:36da019e6bb6 88 double duty_DC=0.0f;
nerit 3:36da019e6bb6 89 double oldDuty_DC=0.0f;
nerit 3:36da019e6bb6 90
nerit 3:36da019e6bb6 91 double dcActualDuty = 0.0f; // valore di lavoro del duty cycle
nerit 3:36da019e6bb6 92 double correzione = 0.0f;
nerit 3:36da019e6bb6 93 double periodo =0.0f;
nerit 3:36da019e6bb6 94 double ePpos = 0.0f;
nerit 3:36da019e6bb6 95 int aspettaStart=1;
nerit 3:36da019e6bb6 96 int countCicli=0;
nerit 3:36da019e6bb6 97 uint32_t fase = 0;
nerit 3:36da019e6bb6 98
nerit 3:36da019e6bb6 99 int clocca=0;
nerit 3:36da019e6bb6 100 int enableSDcontrol=0;
nerit 3:36da019e6bb6 101 int enableSpeed=0;
nerit 3:36da019e6bb6 102 double speedOfSeedWheel =0.0f;
nerit 3:36da019e6bb6 103 int lowSpeed = 0;
nerit 3:36da019e6bb6 104 double valore=0.0f;
nerit 3:36da019e6bb6 105 //char val1[8]={0,0,0,0,0,0,0,0};
nerit 3:36da019e6bb6 106
nerit 3:36da019e6bb6 107 uint8_t enableSimula=0;
nerit 3:36da019e6bb6 108 uint8_t speedSimula=0;
nerit 3:36da019e6bb6 109 uint8_t avviaSimula=0;
nerit 3:36da019e6bb6 110 double oldSimulaSpeed=0.0f;
nerit 3:36da019e6bb6 111 int selezionato =0;
nerit 3:36da019e6bb6 112 int simOk=0;
nerit 3:36da019e6bb6 113
nerit 3:36da019e6bb6 114 float SD_CurrentAnalog=0.0f; // valore di corrente sull'ingresso
nerit 3:36da019e6bb6 115 float SD_CurrentScaled=0.0f; // valore di corrente convertito in scala
nerit 3:36da019e6bb6 116 float SD_CurrentFactor=40.0f; // fattore di scala sensore 40mV/A
nerit 3:36da019e6bb6 117 float SD_CurrentPeak=0.0f; // valore massimo corrente
nerit 3:36da019e6bb6 118 float SD_CurrentMid=0.0f; // valore medio corrente
nerit 3:36da019e6bb6 119 float SD_CurrentLast=0.0f; // valore precedente corrente
nerit 3:36da019e6bb6 120 float SD_CurrentStart=0.0f; // valore a vuoto corrente (circa il 50% della tensione di alimentazione del sensore)
nerit 3:36da019e6bb6 121
nerit 3:36da019e6bb6 122 float SD_analogMatrix[21]={0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f,0.0f};
nerit 3:36da019e6bb6 123 int SD_analogIndex[11]={0,0,0,0,0,0,0,0,0,0};
nerit 3:36da019e6bb6 124 int frenata=0;
nerit 3:36da019e6bb6 125 int accensione=1;
nerit 3:36da019e6bb6 126 double SDsectorStep =0.0f;
nerit 3:36da019e6bb6 127 double TBsectorStep = 0.0f;
nerit 3:36da019e6bb6 128 double KcorT = 0.0f;
nerit 3:36da019e6bb6 129
nerit 3:36da019e6bb6 130 int trigSD=0;
nerit 3:36da019e6bb6 131 int trigTB=0;
nerit 3:36da019e6bb6 132 int inhibit=0;
nerit 3:36da019e6bb6 133 int trigCicli=0;
nerit 3:36da019e6bb6 134 int avvicinamento=0;
nerit 3:36da019e6bb6 135 int lowSpeedRequired=0;
nerit 3:36da019e6bb6 136
nerit 3:36da019e6bb6 137 uint8_t alarmHighRegister=0x00;
nerit 3:36da019e6bb6 138 uint8_t alarmLowRegister=0x00;
nerit 3:36da019e6bb6 139 double TBgiroStep=0.0f;
nerit 3:36da019e6bb6 140 int firstStart=1;
nerit 3:36da019e6bb6 141 int timeHole=0;
nerit 3:36da019e6bb6 142 int memoTimeHole=0;
nerit 3:36da019e6bb6 143 int lockStart=0;
nerit 3:36da019e6bb6 144
nerit 3:36da019e6bb6 145 uint8_t quincStart=0;
nerit 3:36da019e6bb6 146 uint8_t quincStop=0;
nerit 3:36da019e6bb6 147 uint8_t oldQuincIn=0;
nerit 3:36da019e6bb6 148 double scostamento = 0.0f;
nerit 3:36da019e6bb6 149 double quincError = 0.0f;
nerit 3:36da019e6bb6 150 uint8_t quincEnable=0;
nerit 3:36da019e6bb6 151 uint8_t quincCnt=0;
nerit 3:36da019e6bb6 152 double memoDutyStop=0.0f;
nerit 3:36da019e6bb6 153 uint8_t trigStop=0;
nerit 3:36da019e6bb6 154 double propoQuinc=0.0f;
nerit 3:36da019e6bb6 155 uint8_t accelera=0;
nerit 3:36da019e6bb6 156 uint8_t decelera=0;
nerit 3:36da019e6bb6 157 double percento=0.0f;
nerit 3:36da019e6bb6 158 double memoDuty=0.0f;
nerit 3:36da019e6bb6 159 uint32_t masterSinc=0;
nerit 3:36da019e6bb6 160 uint8_t quincVerify=0;
nerit 3:36da019e6bb6 161 // se indefinito utilizza il tamburo ortogonale per i semi di zucca
nerit 3:36da019e6bb6 162 double stepGrado = 0.0f;
nerit 3:36da019e6bb6 163 double TBfaseStep =0.0f;
nerit 3:36da019e6bb6 164 int tamburoStandard=1; // tamburo parallelo alla ruota di semina
nerit 3:36da019e6bb6 165 int speedFromPick = 1; // definisce se il controllo di velocità della ruota di semina è gestita dai becchi (set a 1) o dai fori sul disco (set a 0)
nerit 3:36da019e6bb6 166 double angoloPh=7.0f;
nerit 3:36da019e6bb6 167 double angoloAv=0.0f;
nerit 3:36da019e6bb6 168
nerit 3:36da019e6bb6 169 uint8_t checkSDrotation=0;
nerit 3:36da019e6bb6 170 uint8_t comandiDaCan=0;
nerit 3:36da019e6bb6 171 uint8_t azzeraDaCan=0;
nerit 3:36da019e6bb6 172 uint8_t loadDaCan=0;
nerit 3:36da019e6bb6 173 uint8_t loadDaCanInCorso=0;
nerit 3:36da019e6bb6 174 uint8_t cntCellsForLoad=0;
nerit 3:36da019e6bb6 175 uint8_t trigRepos=0;
nerit 3:36da019e6bb6 176 uint8_t forzaFase=0;
nerit 3:36da019e6bb6 177 uint8_t erroreTamburo=0;
nerit 3:36da019e6bb6 178 uint8_t cntCellsForReload=0;
nerit 3:36da019e6bb6 179 uint8_t cntTbError=0;
nerit 3:36da019e6bb6 180
nerit 3:36da019e6bb6 181 uint8_t cellsCounterLow=0;
nerit 3:36da019e6bb6 182 uint8_t cellsCounterHig=0;
nerit 3:36da019e6bb6 183 uint8_t pickCounterLow=0;
nerit 3:36da019e6bb6 184 uint8_t pickCounterHig=0;
nerit 3:36da019e6bb6 185
nerit 3:36da019e6bb6 186 uint8_t all_semiFiniti = 0; // semi finiti (generato dal relativo sensore)
nerit 3:36da019e6bb6 187 uint8_t all_pickSignal = 0; // errore segnale becchi (generato dal tempo tra un becco ed il successivo)
nerit 3:36da019e6bb6 188 uint8_t all_cellSignal = 0; // errore segnale celle (generato dal sensore tamburo )
nerit 3:36da019e6bb6 189 uint8_t all_lowBattery = 0; // allarme batteria (valore interno di tritecnica)
nerit 3:36da019e6bb6 190 uint8_t all_overCurrDC = 0; // sovracorrente motore DC (generato dal sensore di corrente)
nerit 3:36da019e6bb6 191 uint8_t all_stopSistem = 0; // sistema in stop (a tempo con ruota ferma)
nerit 3:36da019e6bb6 192 uint8_t all_upElements = 0; // elementi sollevati (generato dal relativo sensore)
nerit 3:36da019e6bb6 193 uint8_t all_noSeedOnCe = 0; // fallanza di semina (manca il seme nella cella)
nerit 3:36da019e6bb6 194 uint8_t all_cfgnErrors = 0; // errore di configurazione (incongruenza dei parametri impostati)
nerit 3:36da019e6bb6 195 uint8_t all_noDcRotati = 0; // ruota di semina bloccata (arriva la velocità ma non i becchi)
nerit 3:36da019e6bb6 196 uint8_t all_noStepRota = 0; // tamburo di semina bloccato (comando il tamburo ma non ricevo il sensore)
nerit 3:36da019e6bb6 197 uint8_t all_speedError = 0; // errore sensore velocità (tempo impulsi non costante)
nerit 3:36da019e6bb6 198 uint8_t all_noSpeedSen = 0; // mancanza segnale di velocità (sento i becchi ma non la velocita)
nerit 3:36da019e6bb6 199 uint8_t all_no_Zeroing = 0; // mancato azzeramento sistema (generato dal timeout del comando motore DC)
nerit 3:36da019e6bb6 200 uint8_t all_genericals = 0; // allarme generico
nerit 3:36da019e6bb6 201 uint8_t resetComandi=0;
nerit 3:36da019e6bb6 202