new

Dependencies:   mbed CANMsg

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers variables.hpp Source File

variables.hpp

00001 /*
00002     variabili generali di programma e set iniziali
00003 */
00004 
00005 // SET INIZIALI DI MACCHINA
00006 bool canDataCheckEnable=false;      // a true per attivare il controllo del quinconce anche con dati CAN
00007 int speedFromPick = 0;              // definisce se il controllo di velocità della ruota di semina è gestita dai becchi (set a 1) o dai fori sul disco (set a 0)
00008 bool encoder=true;                 // true quando montato motore DC con encoder incorporato
00009                                     // NOTA: SE ENCODER=TRUE ALLORA SPEEDFROMPICK DEVE ESSERE MESSO A 0
00010 int tamburoStandard=1;              // a 1 per tamburo parallelo alla ruota di semina, a 0 per zucca
00011 int cambiaStep=0;
00012 
00013 bool tankLevelEnable = false;
00014 bool seedSensorEnable=false;
00015 bool stendiNylonEnable=false;
00016 bool currentCheckEnable=false;
00017 uint8_t cellsCountSet=1;
00018 
00019 // VARIABILI DI PROGRAMMA
00020 int zeroRequestBuf=0;
00021 int runRequestBuf=0;
00022 
00023 // define cycle variable related to the external command
00024 int oldTractorSpeedRead=0;
00025 int startCycle=0;                   // activate motors and functions 
00026 int enableCycle=0;                  // enable regular cycle
00027 int zeroCycle=0;                    // azzeramento motori richiesto
00028 int OldStartCycle=0;                // use for triggering command change
00029 int OldEnableCycle=0;
00030 int oldZeroCycle=0;                 // memoria azzeramento motori su richiesta
00031 int zeroCycleEnd=0;                 // ciclo di azzeramento completato
00032 int zeroTrigger=0;
00033 int TBzeroPinInput=0;               // segnale invertito micro tamburo 
00034 int seedWheelZeroPinInput=0;        // segnale invertito sensore ruota di semina
00035 int SD_faultA=0;
00036 int SD_faultB=0;
00037 int DC_brake=1;                     // comando gestione frenatura motore DC
00038 int DC_forward=1;                   // comando gestione direzione motore DC
00039 
00040 int oldFaseLavoro=0;
00041 
00042 // define logic internal variables
00043 double tractorSpeed_MtS_timed=0.0f;   // tractor speed calculated from pulse interval time
00044 double speedForDisplay[5]={0.0f,0.0f,0.0f,0.0f,0.0f};
00045 double totalSpeed=0.0f;
00046 double OLDpulseSpeedInterval=1000.01f;   // tractor speed calculated from pulse interval time
00047 double pulseDistance=0.0f;            // linear space between pulse
00048 double pulseDistanceCalc=0.0f;
00049 double speedPerimeter=0.0f;           // perimeter of tractor speed wheel 
00050 double seedPerimeter=0.0f;            // perimeter of seed wheel 
00051 double mediaSpeed[5]={0.0f,0.0f,0.0f,0.0f,0.0f};
00052 int pntMedia=0;
00053 int actualPulseReadTimer=0;             // timer read at previous pulse
00054 double pulseSpeedInterval=0.0f;            // delta time of pulse
00055 int lastPulseRead=0;
00056 int oldLastPulseRead=0;
00057 int pulseRised=0;                    // pulse from speed wheel occured. Define when is possible to determine speed of up down motor. 
00058 int pulseRised1 = 0;
00059 int pulseRised2 = 0;
00060 
00061 double rapportoRuote = 0.0f;
00062 double TBrpm = 0.0f;
00063 double TBfrequency = 0.0f;
00064 double TBperiod = 0.0f;
00065 double oldPeriodoTB = 0.0f;
00066 int SDzeroCyclePulse=0;
00067 int TBzeroCyclePulse=0;
00068 int SDzeroed=0;
00069 int TBzeroed=0;
00070 int oldOnSDzero=0;
00071 int oldOnTBzero=0;
00072 int oldOffSDzero=0;
00073 int oldOffTBzero=0;
00074 int SDzeroPinTrig=0;
00075 int TBzeroPinTrig=0;
00076 int SDzeroDebounced=0;
00077 int SDrunZero=0;
00078 int TBrunZero=0;
00079 int syncroCheck=0;
00080 double memoStepTB=0.0f;
00081 double erroreSyncro=0.0f;
00082 double errorePercentuale=1.0f;
00083 int oldSeedWheelZeroPinInput=0;
00084 int oldTBzeroPinInput=0;
00085 int stopCicloTB = 0;
00086 int startCicloTB = 0;
00087 int cicloTbinCorso = 0;
00088 int beccoPronto =0;
00089 int memoIntraPick=0;
00090 
00091 double realSpeed = 0.0f;
00092 double realGiroSD = 0.0f;
00093 double tempoBecco = 0.0f;
00094 double frequenzaReale = 0.0f;
00095 double semiPeriodoReale = 0.0f;
00096 double tempoTraBecchi_mS = 0.0f;
00097 double tempoGiroSD = 0.0f;
00098 
00099 // variable for speed and step calculation
00100 uint32_t prePosSD=0;        // actual position of seed wheel (step of motor)
00101 uint32_t SDactualPosition=0;        // actual position of seed wheel (step of motor)
00102 uint32_t TBactualPosition=0;
00103 uint32_t posForQuinc=0;
00104 
00105 int cycleStopRequest=0;             // when cycle end request the zero of SD and UD
00106 
00107 double duty_DC=0.0f;
00108 double oldDuty_DC=0.0f;
00109 
00110 double dcActualDuty = 0.0f;  // valore di lavoro del duty cycle
00111 double olddcActualDuty = 0.0f;  // valore di lavoro del duty cycle
00112 double correzione = 0.0f;
00113 double periodo =0.0f;
00114 double ePpos = 0.0f;
00115 int aspettaStart=1;
00116 int countCicli=0;
00117 uint32_t fase = 0;
00118 
00119 int clocca=0;
00120 int enableSpeed=0;
00121 double speedOfSeedWheel =0.0f;
00122 int lowSpeed = 0;
00123 double valore=0.0f;
00124 //char val1[8]={0,0,0,0,0,0,0,0};
00125 
00126 uint8_t enableSimula=0;
00127 uint8_t speedSimula=0;
00128 uint8_t avviaSimula=0;
00129 double oldSimulaSpeed=0.0f;
00130 int selezionato =0;
00131 int simOk=0;
00132 
00133 float SD_CurrentAnalog=0.0f;                    // valore di corrente sull'ingresso
00134 float SD_CurrentScaled=0.0f;                    // valore di corrente convertito in scala
00135 float SD_CurrentFactor=40.0f;                   // fattore di scala sensore 40mV/A
00136 float SD_CurrentPeak=0.0f;                      // valore massimo corrente
00137 float SD_CurrentMid=0.0f;                       // valore medio corrente
00138 float SD_CurrentLast=0.0f;                      // valore precedente corrente
00139 float SD_CurrentStart=0.0f;                     // valore a vuoto corrente (circa il 50% della tensione di alimentazione del sensore)
00140 bool reduceCurrent=false;
00141 bool incrementCurrent=false;
00142 double boostDcOut=0.0f;
00143 
00144 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};
00145 int SD_analogIndex[11]={0,0,0,0,0,0,0,0,0,0};
00146 int frenata=0;
00147 int accensione=1;
00148 double SDsectorStep =0.0f;
00149 double TBsectorStep = 0.0f;
00150 double KcorT = 0.0f;
00151 
00152 int trigSD=0;
00153 int trigTB=0;
00154 int inhibit=0;
00155 int trigCicli=0;
00156 int avvicinamento=0;
00157 int lowSpeedRequired=0;
00158 
00159 uint8_t alarmHighRegister=0x00;
00160 uint8_t alarmLowRegister=0x00;
00161 double TBgiroStep=0.0f;
00162 int firstStart=1;
00163 int noSDzeroRequest=0;
00164 int timeHole=0;
00165 int memoTimeHole=0;
00166 int lockStart=0;
00167 
00168 uint8_t quincStart=0;
00169 uint8_t oldQuincIn=0;
00170 double scostamento = 0.0f;
00171 uint8_t quincEnable=0;
00172 uint8_t quincCnt=0;
00173 double percento=0.0f;
00174 uint32_t masterSinc=0;
00175 uint32_t mast2_Sinc=0;
00176 bool quincClock=false;
00177 double oldQuincTimeSD=0.0f;
00178 uint8_t sincroQui=0;
00179 uint8_t quincPIDminus=0;
00180 uint8_t quincPIDplus=0;
00181 uint8_t quincLIMminus=0;
00182 uint8_t quincLIMplus=0;
00183 double memoCorrCorr=0.0f;
00184 double speedFromMaster=0.0f;
00185 uint8_t quincSector=0;
00186 uint8_t canDataCheck=0;
00187 double tempoBecchiPerQuinc=0.0f;
00188 int countPicks=0;
00189 uint8_t quinconceActive=0;
00190 uint8_t oldQuinconceOut=0;
00191 
00192 double stepGrado = 0.0f;
00193 double TBfaseStep =0.0f;
00194 double angoloPh=7.0f;
00195 double angoloAv=0.0f;
00196 
00197 uint8_t checkSDrotation=0;
00198 uint8_t comandiDaCan=0;
00199 uint8_t azzeraDaCan=0;
00200 uint8_t loadDaCan=0;
00201 uint8_t loadDaCanInCorso=0;
00202 uint8_t cntCellsForLoad=0;
00203 uint8_t trigRepos=0;
00204 uint8_t forzaFase=0;
00205 uint8_t erroreTamburo=0;
00206 uint8_t cntCellsForReload=0;
00207 uint8_t cntTbError=0;
00208 
00209 uint8_t cellsCounterLow=0;
00210 uint8_t cellsCounterHig=0;
00211 uint8_t pickCounterLow=0;
00212 uint8_t pickCounterHig=0;
00213 uint8_t seedSee=0;
00214 
00215 uint8_t cntCellsCorrect=0;
00216 
00217 uint8_t all_semiFiniti = 0;     // semi finiti (generato dal relativo sensore)
00218 uint8_t all_pickSignal = 0;     // errore segnale becchi (generato dal tempo tra un becco ed il successivo)
00219 uint8_t all_cellSignal = 0;     // errore segnale celle (generato dal sensore tamburo )
00220 uint8_t all_lowBattery = 0;     // allarme batteria (valore interno di tritecnica)
00221 uint8_t all_overCurrDC = 0;     // sovracorrente motore DC  (generato dal sensore di corrente)
00222 uint8_t all_stopSistem = 0;     // sistema in stop (a tempo con ruota ferma)
00223 uint8_t all_upElements = 0;     // elementi sollevati   (generato dal relativo sensore)
00224 uint8_t all_noSeedOnCe = 0;     // fallanza di semina (manca il seme nella cella)
00225 uint8_t all_cfgnErrors = 0;     // errore di configurazione     (incongruenza dei parametri impostati)
00226 uint8_t all_noDcRotati = 0;     // ruota di semina bloccata (arriva la velocità ma non i becchi)
00227 uint8_t all_noStepRota = 0;     // tamburo di semina bloccato   (comando il tamburo ma non ricevo il sensore)
00228 uint8_t all_speedError = 0;     // errore sensore velocità  (tempo impulsi non costante)
00229 uint8_t all_noSpeedSen = 0;     // mancanza segnale di velocità (sento i becchi ma non la velocita)
00230 uint8_t all_no_Zeroing = 0;     // mancato azzeramento sistema (generato dal timeout del comando motore DC)
00231 uint8_t all_genericals = 0;     // allarme generico
00232 uint8_t resetComandi=0;
00233 
00234 uint32_t spazioCoperto=0;