/*
 * File:   Process.h
 * Author: David
 *
 * Created on 20 août 2014, 16:27
 */

#ifndef PROCESS_H
#define	PROCESS_H

#ifdef	__cplusplus
extern "C" {
#endif




#ifdef	__cplusplus
}
#endif

#endif	/* PROCESS_H */

#define KT100           30;

typedef enum
{
    TY_BI,
    TY_Doseur,
    TY_BI_Preselection,
    TY_Doseur_Preselection,
    TY_BasculeCircuit,
    TY_Depeseur,
    TY_PeseEssieux,
    TY_PerteDePoids,
} TYPE_PROGRAMME;

typedef enum
{
    COM_RS232,
    COM_UART2,
    COM_RS485_1,
    COM_RS485_2,
    COM_PROFIBUS,
    COM_CAN,
} TYPE_COMM;

typedef enum
{
    COMM_NonUtilise,
    COMM_IMPRIMANTE,                                                            // 01
    COMM_REPETITEUR,                                                            // 02
    COMM_AFFICHEUR_BASIA4,                                                      // 03
    COMM_ADAM_4024,                                                             // 04
    COMM_DEBUG,                                                                 // 05
    COMM_PC,                                                                    // 06
    COMM_ANA_BASIA4,                                                            // 07
    COMM_ADAM_4021,                                                             // 08
    COMM_SPW,                                                                   // 09 Emission poids en continu style SMCBUS
    COMM_IE,                                                                    // 10 Intelligence electronique
} TYPE_COMM_SERIE;

typedef enum
{
    DI_NonUtilise,                                                              // 00
    DI_DCY,                                                                     // 01
    DI_Tarage,                                                                  // 02
    DI_AcqDefauts,                                                              // 03
    DI_ModeDistant,                                                             // 04
    DI_SuspensionCycle,                                                         // 05
    DI_AbandonCycle,                                                            // 06
    DI_07,                                                                      // 07
    DI_08,                                                                      // 08
    DI_09,                                                                      // 09
    DI_10,                                                                      // 10
    DI_11,                                                                      // 11
    DI_12,                                                                      // 12
    DI_13,                                                                      // 13
    DI_14,                                                                      // 14
    DI_15,                                                                      // 15
    DI_16,                                                                      // 16
    DI_AutorisationReglage,                                                     // 17
    DI_VitesseMene,                                                             // 18
    DI_VitesseMenant,                                                           // 19
    DI_ImpressionTotPartiel,                                                    // 20
    DI_ImpressionTotGlobal,                                                     // 21
    DI_RAZ_TotPartiel,                                                          // 22
    DI_RAZ_TotGlobal,                                                           // 23
    DI_ChoixProduit1,                                                           // 24
    DI_ChoixProduit2,                                                           // 25
    DI_26,                                                                      // 26
    DI_27,                                                                      // 27
    DI_28,                                                                      // 28
    DI_29,                                                                      // 29
    DI_30,                                                                      // 30
    DI_31,                                                                      // 31
    DI_32,                                                                      // 32
    DI_33,                                                                      // 33
    DI_34,                                                                      // 34
    DI_35,                                                                      // 35
    DI_36,                                                                      // 36
    DI_37,                                                                      // 37
    DI_38,                                                                      // 38
    DI_39,                                                                      // 39
    DI_40,                                                                      // 40
    DI_41,                                                                      // 41
    DI_42,                                                                      // 42
    DI_43,                                                                      // 43
    DI_44,                                                                      // 44
    DI_45,                                                                      // 45
    DI_46,                                                                      // 46
    DI_47,                                                                      // 47
    DI_48,                                                                      // 48
    DI_BdC_FdcVanneSupOuverte,                                                  // 49
    DI_BdC_FdcVanneSupFermee,                                                   // 50
    DI_BdC_FdcVanneInfOuverte,                                                  // 51
    DI_BdC_FdcVanneInfFermee,                                                   // 52
    DI_BdC_RMarcheMoteurVis,                                                    // 53
    DI_BdC_AutorisationVidange,                                                 // 54
    DI_55,                                                                      // 55
    DI_56,                                                                      // 56
    DI_57,                                                                      // 57
    DI_58,                                                                      // 58
    DI_59,                                                                      // 59
    DI_60,                                                                      // 60
    DI_61,                                                                      // 61
    DI_62,                                                                      // 62
    DI_63,                                                                      // 63
    DI_64,                                                                      // 64
    DI_PdP_RemplissageEnCours,                                                  // 65
    DI_66,                                                                      // 66
    DI_67,                                                                      // 67
    DI_68,                                                                      // 68
    DI_69,                                                                      // 69
    DI_70,                                                                      // 70
    DI_71,                                                                      // 71
    DI_72,                                                                      // 72
    DI_73,                                                                      // 73
    DI_74,                                                                      // 74
    DI_75,                                                                      // 75
    DI_76,                                                                      // 76
    DI_77,                                                                      // 77
    DI_78,                                                                      // 78
    DI_79,                                                                      // 79
    DI_80,                                                                      // 80
} AFFECTATION_ETOR;

typedef enum
{
    DO_NonUtilise,                                                              // 00
    DO_DefGeneral,                                                              // 01
    DO_ReglageEnCours,                                                          // 02
    DO_DefPoidsMax,                                                             // 03
    DO_DefAfficheur,                                                            // 04
    DO_CycleEnCours,                                                            // 05
    DO_CycleSuspendu,                                                           // 06
    DO_FeuVert,                                                                 // 07
    DO_FeuRouge,                                                                // 08
    DO_DefautCapteur,                                                           // 09
    DO_10,                                                                      // 10
    DO_11,                                                                      // 11
    DO_12,                                                                      // 12
    DO_13,                                                                      // 13
    DO_14,                                                                      // 14
    DO_15,                                                                      // 15
    DO_16,                                                                      // 16
    DO_Totalisateur,                                                            // 17
    DO_CommandeBande,                                                           // 18
    DO_DefDebitMax,                                                             // 19
    DO_DefDebitMin,                                                             // 20
    DO_DefVitesseMin,                                                           // 21
    DO_DefGlissement,                                                           // 22
    DO_SimulateurVitesse,                                                       // 23
    DO_ImagevitesseINT1,                                                        // 24
    DO_ImagevitesseINT2,                                                        // 25
    DO_TotalisateurAB,                                                          // 26
    DO_TotalisateurBA,                                                          // 27
    DO_28,                                                                      // 28
    DO_29,                                                                      // 29
    DO_30,                                                                      // 30
    DO_31,                                                                      // 31
    DO_32,                                                                      // 32
    DO_DefDeviationPlus,                                                        // 33
    DO_DefDeviationMoins,                                                       // 34
    DO_35,                                                                      // 35
    DO_36,                                                                      // 36
    DO_37,                                                                      // 37
    DO_38,                                                                      // 38
    DO_39,                                                                      // 39
    DO_40,                                                                      // 40
    DO_41,                                                                      // 41
    DO_42,                                                                      // 42
    DO_23,                                                                      // 43
    DO_44,                                                                      // 44
    DO_45,                                                                      // 45
    DO_46,                                                                      // 46
    DO_47,                                                                      // 47
    DO_48,                                                                      // 48
    DO_BdC_OuvVanneSuperieure,                                                  // 49
    DO_BdC_OuvVanneInferieure,                                                  // 50
    DO_BdC_CommVidange,                                                         // 51
    DO_BdC_CommVibrant,                                                         // 52
    DO_BdC_SeuilHaut,                                                           // 53
    DO_BdC_SeuilBas,                                                            // 54
    DO_55,                                                                      // 55
    DO_56,                                                                      // 56
    DO_57,                                                                      // 57
    DO_58,                                                                      // 58
    DO_59,                                                                      // 59
    DO_60,                                                                      // 60
    DO_61,                                                                      // 61
    DO_62,                                                                      // 62
    DO_63,                                                                      // 63
    DO_64,                                                                      // 64
    DO_PdP_SeuilTH,                                                             // 65
    DO_PdP_SeuilH,                                                              // 66
    DO_PdP_SeuilB,                                                              // 67
    DO_PdP_SeuilTB,                                                             // 68
    DO_PdP_DemandeRemplissage,                                                  // 69
    DO_PdP_CommandeExtracteur,                                                  // 70
    DO_71,                                                                      // 71
    DO_72,                                                                      // 72
    DO_73,                                                                      // 73
    DO_74,                                                                      // 74
    DO_75,                                                                      // 75
    DO_76,                                                                      // 76
    DO_77,                                                                      // 77
    DO_78,                                                                      // 78
    DO_79,                                                                      // 79
    DO_80,                                                                      // 80
} AFFECTATION_STOR;

typedef enum
{
    AI_NonUtilise,                                                              // 00
    AI_Consigne,                                                                // 01
    AI_02,                                                                      // 02
    AI_03,                                                                      // 03
    AI_04,                                                                      // 04
    AI_05,                                                                      // 05
    AI_06,                                                                      // 06
    AI_07,                                                                      // 07
    AI_08,                                                                      // 08
} AFFECTATION_EANA;

typedef enum
{
    AO_0,
    AO_DEBIT,
    AO_POIDS,
    AO_03,
    AO_04,
    AO_05,
    AO_06,
    AO_07,
    AO_08,
    AO_09,
    AO_10,
    AO_11,
    AO_12,
    AO_13,
    AO_14,
    AO_15,
    AO_16,
            
    AO_VITESSE,
    AO_DIFFERENCE_AB,
    AO_DIFFERENCE_BA,
    AO_POIDS_METRE_CARRE,
    AO_21,
    AO_22,
    AO_23,
    AO_24,
    AO_25,
    AO_26,
    AO_27,
    AO_28,
    AO_29,
    AO_30,
    AO_31,
    AO_32,

    AO_REGUL,
    AO_REGUL_AB,
    AO_REGUL_BA,
    AO_36,
    AO_37,
    AO_38,
    AO_39,
    AO_40,
} TYPE_ANA;

typedef struct
    {
    char                Debut;
    char                Init;

// Informations sur l'indicateur Basia4
    char                TypeProgramme[4];
    char                Version[2];
    char                Metrologie;
    char                NumSerie[6];
    char                CodeBalancier[4];
    char                CodeAleatoire[4];
    char                CodeValidation[4];
    char                CodeMetrologiqueOK;
    unsigned int        Options;
    unsigned char       OP_Doseur;
    unsigned char       CategorieProgramme;

// Données de production
// Voir EXP

// Informations diverses sur installation
    char                InfosClient[100];
    char                TechnicienPLCD[20];
    char                TechnicienClient[20];
    char                TypeCapteurs[50];
    char                ProduitPese[40];
    char                DateMiseEnService[8];
    char                DateVerification[8];
    unsigned long       AdresseIP[4];
    unsigned long       MasqueIP[4];
    unsigned int        PortIP;
    
// Paramètres pesage général
    int                 UnitePoids;
    long                PoidsMax;              //
    char                NbChiffreVirgPoids;
    int                 EchelonPoids;
    float               EchelonPoidsVal;
    char                FiltrePoids;
    int                 FrequencePoids;
    long                TareMetrologie;
    long                TareInc;
    long                TarePoids;
    int                 ToleranceTarage;
    int                 NbPointsEtalonnage;
    int                 NumPointEtalonnage;
    float               Pente[6];
    float               SeuilPente[6];
    long                SensibiliteMoyCapteurs;
    long                SensibiliteCapteur[11];
    long                DefautCapteurPlus;
    long                DefautCapteurMoins;
    long                BandeFiltrePoids;
    int                 NbEchelonsStabilite;
    int                 TempsStabilite;
    
// Paramètres généraux bascule sur bande
    int                 EchelonTotalisation;
    float               EchelonTotalisationVal;
    int                 EchelonSortieTot;
    int                 EchelonSortieTotVal;
    int                 UniteTotalisation;
    int                 NbChiffreDecimaleVitesse;
    float               VitesseMax;
    int                 NbChiffreDecimaleDebit;
    float               DebitMax;
    float               DebitMin;
    float               VitesseMin;
    float               DebitNominal;
    float               Correction1;
    float               Correction2;
    float               Correction3;
    float               Correction4;
    float               LongueurBande;
    float               LongueurPesage;
    float               CirconfTambMene;
    float               CirconfTambMenant;
    int                 ImpTambMene;
    int                 ImpTambMenant;
    int                 NbPulsesAvantReglage;
    int                 NbTourBandesReglage;
    float               ZoneMorte;
    float               LimZeroAuto;
    float               LimiteTotalisation;
    float               VitesseNominale;
    unsigned long       RapportEtalonnage;
    int                 FiltreDebit;
    int                 LargeurBande;
    
// Paramètres doseurs
    unsigned int        TolerancePlus;
    unsigned int        ToleranceMoins;
    float               PID_Kp;
    float               PID_Kd;
    float               PID_Ki;
    unsigned int        Calage10;
    unsigned int        Calage100;
    unsigned int        TempsFonctVolumetrique;
    unsigned long       ConsigneAnaMax;
    unsigned int        TypeConsigne;
    char                MemorisationSortieAna;
    unsigned int        SeuilHautRegul;
    unsigned int        SeuilBasRegul;
    unsigned int        ModeRegul;
    unsigned long       ValeurMaxRegul;
    
// Liaisons séries
    char                CommVitesse[6];
    char                CommParite[6];
    char                CommNbBits[6];
    char                CommNbbitsStop[6];
    char                CommCtrlFlux[6];
    char                CommMode[6];
    char                CommNumEsclave[6];
    char                CommType[6];
    char                CommTypeImprimante[6];

    float               VitesseManu;

// Défauts
    int                 TempoDefaut;
    unsigned int        AffectTempoDefaut1;
    unsigned int        AffectTempoDefaut2;
    unsigned int        AffectDefautDefautGeneral1;
    unsigned int        AffectDefautDefautGeneral2;
    char                AcqAutoDefauts;
    unsigned int        ActivationDefaut1;
    unsigned int        ActivationDefaut2;
    
// Paramètres généraux
    int                 LongPulseSortie;
    char                TypeCommande;
    char                CommandeTOR;
    char                CommandeSerie;
    
// Paramètres entrées / sorties
    int                 EntreeTOR[11];
    int                 SortieTOR[9];
    int                 EntreeANA[3];
    int                 ValSortieANA[3];
    int                 TypeSortieANA[3];
    int                 OrigineSortieANA[3];
    int                 CoeffSortieAna[3];
    int                 OrigineEntreeANA[3];
    int                 CoeffEntreeAna[3];
    int                 TypeEntreeANA[3];

// Paramètres communications
// Modbus RS
    char                cRSNumEsclave;          //
    char                cRSVitesse;             //
    char                cRSParite;              //

    float               TotalPartiel1;
    unsigned long       TotalPartiel2;
    float               TotalGlobal1;
    unsigned long       TotalGlobal2;

// Rajouts
    int                 TempsTourBande;
    unsigned int        LongueurBandeControle;
    int                 InversionSortiesTOR;
    char                InversionSortieTOR[11];
    int                 InversionEntreesTOR;
    char                InversionEntreeTOR[11];
    long                LimiteConsigneNulle;
    char                DateDerniereRAZ[16];
    float               TotDebitMoyen;
    unsigned int        NbTotDebitMoyen;
    unsigned long       DebitMaxLot;
    unsigned long       TempsMarche;
    unsigned long       TempsMarcheVide;
    unsigned long       TempsMarcheTotalisation;
    unsigned long       TempsArret;
    unsigned int        CorrectionTimer;
    int                 Reserve11;
    int                 Reserve12;
    int                 Reserve13;
    int                 Reserve14;
    int                 Reserve15;

// Imprimante
    char                Impr_EnteteLigne1[41];
    char                Impr_EnteteLigne2[41];
    char                Impr_EnteteLigne3[41];
    char                Impr_PiedPageLigne1[41];
    char                Impr_PiedPageLigne2[41];
    char                Impr_PiedPageLigne3[41];
    char                Impr_NbLignesVides;
    char                Impr_MotCommande;
    unsigned int        Impr_NumTicket;
    unsigned int        Impr_TypeTicket;
    char                Impr_Produit[21];
    char                Impr_Client[21];
    char                Impr_Destination[21];
    char                Impr_Camion[21];

// Régulation
    float               Consigne;
    unsigned long       ConsigneAff;
    unsigned long       ConsigneSerie;
    unsigned long       ConsigneAna;
    
// Bascule de circuit
    unsigned long       BdC_PorteeMin;
    unsigned long       BdC_TotalisationMin;
    unsigned long       BdC_CptTremiePesee;
    unsigned long       BdC_SeuilPV;
    unsigned long       BdC_ErreurJeteeGV;
    unsigned long       BdC_ErreurJeteePV;
    unsigned int        BdC_ErreurJeteeAuto;
    unsigned int        BdC_TempsCalculDebit;
    unsigned int        BdC_TempsVidangeTremieVide;
    unsigned int        BdC_TpsMaxOuvFermVannes;
    unsigned int        BdC_PourcTremieVide;
    char                BdC_ImpressionTousBatchs;
    unsigned int        BdC_TempsPauseVibrant;
    unsigned int        BdC_TempsMarcheVibrant;
    
// Depesage
    char                Dep_CalculErreurJeteeAuto;
    int                 Dep_TpsMaxOuvFermVannes;
    int                 Dep_Options;
    int                 Dep_TempoDemVidangeVanne;
    int                 Dep_TempoArretVidangeVanne;
    int                 Dep_TempsPauseVibrant;
    int                 Dep_TempsMarcheVibrant;
    float               Dep_VariationPoidsBigBagVide;
    int                 Dep_TempsVariationPoidsBigBagVide;
    float               Dep_SeuilHaut;
    float               Dep_SeuilBas;
    float               Dep_ErreurJetee;

// Pese essieux
    unsigned long       PEs_SeuilDeclenchement;
    unsigned int        PEs_TempoHorsCycle;
    unsigned int        PEs_TempoApresStabilite;
    unsigned int        PEs_ModeStatique;
    unsigned int        PEs_LargeurPlateforme;
    unsigned int        PEs_TolMaxVariationVitesse;
    unsigned int        PEs_VitesseMax;
    unsigned int        PEs_TempsAcquisitionPoids;

// Perte de poids
    unsigned int        PdP_TempsRechargeMax;
    unsigned int        Pdp_SeuilNiveauTH;
    unsigned int        Pdp_SeuilNiveauH;
    unsigned int        Pdp_SeuilNiveauB;
    unsigned int        Pdp_SeuilNiveauTB;
    unsigned int        Pdp_TempoRepriseRegulation;
    char                Fin;
} PARAM_STRUCT;


typedef struct
    {
    float               DebitTR;               // Débit temps réel
    float               DebitMoyen;            // Débit moyen
    unsigned long       PoidsPoints;
    float               PoidsTR;
    float               PoidsMoyen;
    float               PoidsMetre;
    float               PoidsMoyenAff;
    char                NouveauPoids;
    float               Vitesse;
    float               TotalPartiel1;
    unsigned long       TotalPartiel2;
    float               TotalGlobal1;
    unsigned long       TotalGlobal2;
    float               CptTotalPartiel1;
    unsigned long       CptTotalPartiel2;
    float               CptTotalGlobal1;
    unsigned long       CptTotalGlobal2;
    unsigned long       CptTotalPartiel;
    int                 TotSortie;
    float               T_FiltrePoids[501];
    int                 indiceFiltrePoids;
    char                tableauFiltrePoidsPlein;
    int                 indiceNbValMoyenne;
    float               TotalValMoyenne;
    int                 PulseTotal;
    char                ControlEnCours;
    char                ControlAvecAbandon;
    int                 ChargCPUafficheur;
    
    char                ReglEnCours;
    char                ReglAutoEnCours;
    unsigned long       TotalReglage;
    float               TotalReglageFloat;
    long                NbMesureReglage;
    float               TotIncReglageFloat;
    unsigned int        TotPulseReglage;
    unsigned int        TotPulseVitesse;
    char                Debug;
    char                ModeLocal;

    unsigned int        Command1;
    unsigned int        Command2;
    unsigned int        Command3;
    unsigned int        Command4;
    unsigned int        NbPulsesRestantReglage;
    float               TotalReglage1;
    unsigned long       TotalReglage2;

    unsigned int        Etat1;
    unsigned int        Etat2;
    unsigned int        Etat3;
    unsigned int        Etat4;
    unsigned int        Defaut1;
    unsigned int        Defaut2;
    unsigned int        Defaut3;
    unsigned int        Defaut4;
    char                DefAddress;

    int                 posTarageStatique;
    int                 posTarageDynamique;
    int                 posEtalonnageStatique;
    int                 posEtalonnageDynamique;
    int                 posControleDynamique;
    int                 posMesureTempsTourBande;
    int                 PosCycle;
    
// Calcul vitesse
    unsigned long       TempsMemVitesse;
    unsigned long       TempsVitesse;
    float               TempsPulse;
    char                ValInt1;
    int                 CptInt1;
    unsigned long       TempsVitesse1;
    char                ValInt2;
    int                 CptInt2;
    unsigned long       TempsVitesse2;
    char                AttenteCalculVitesse;
    
// Consignes
    char                CommandeTOR;
    char                CommandeSerie;
    char                CommandeProfibus;
    char                DCY;
    
// Profibus
    unsigned int        Profibus_Command;

// Réglage
    char                ReglageMetrologique;
    float               TareNew;

// Sortie Ana
    char                NumSortieAna;
    unsigned long       SortieAna[3];
    int                 PourcSortieAna[3];
    
// Régulation
    float               PID_ITerm;
    float               PID_DebitMoyenMem;
    int                 PosCycleRegulation;
    unsigned long       SortieRegul;
    unsigned long       SortieRegulMem;
    float               ErreurMem;
    float               PID_Integrale;
    
// Ethernet
    int                 CompteurSOCK[5];
    
 // Test
    int                 TestCompteur1;

// Impression
    char                DI_ImpressionTotPartielMem;
    char                DI_ImpressionTotGlobalMem;
    char                Date[10];
    char                Heure[8];
    unsigned long       DateNum;
    unsigned long       HeureNum;
    
// Rajouts
    unsigned int        LongueurBandeRestanteControle;
    char                EtatSocket[3];
    int                 Forcage0SortiesTOR;
    char                Forcage0SortieTOR[11];
    int                 Forcage1SortiesTOR;
    char                Forcage1SortieTOR[11];
    int                 EtatEntresTOR;
    int                 EtatSortiesTOR;
    float               DebitBascule2;
    unsigned long       TotalPartielB;
    unsigned long       DebitMoyenLot;
    long                PoidsMetreCarre;
    unsigned int        CorrectionTimersMoyenneLot;

// Doseur
    float               CptTotalPartiel1B;
    unsigned long       CptTotalPartiel2B;
    float               CptTotalPartielB;
    float               TotalPartiel1B;
    unsigned long       TotalPartiel2B;
    
// Calcul poids statique
    float               PoidsMemStabilite;
    char                PoidsStable;
    
// Bascule de circuit
    int                 BdC_pos_cycle;
    int                 BdC_pos_cycleMem;
    char                BdC_derniere_pesee;
    float               BdC_cumul_cons;
    float               BdC_cumul;
    float               BdC_poids_cons;
    int                 BdC_Defaut;
    float               BdC_ErreurJetee;
    float               BdC_PoidsPlein;
    float               BdC_PoidsVide;
    float               BdC_PoidsDernierBatch;
    char                BdC_EnVidange;
    char                BdC_EnFinVidange;
    char                BdC_FdcVanneSupFermee;
    char                BdC_FdcVanneSupOuverte;
    char                BdC_FdcVanneInfFermee;
    char                BdC_FdcVanneInfOuverte;
    unsigned int        BdC_NbBatchProduit;

// Depeseur
    float               Dep_Consigne;
    float               Dep_PoidsCumul;
    float               Dep_PoidsEnCours;
    float               Dep_PoidsDebut;
    float               Dep_PoidsFin;
    int                 Dep_PosCycle;
    char                Dep_FinCycle;
    float               Dep_PoidsMemEvolutionPoids;
    
// Pese essieux
    unsigned int        PEs_PosCycle;
    unsigned int        PEs_NbEssieuxPeses;
    unsigned long       PEs_PoidsTotalEssieux;
    float               PEs_PoidsTotalEssieuxReel;
    unsigned int        PEs_NumeroEssieu[100];
    unsigned long       PEs_PoidsEssieu[100];
    unsigned int        PEs_VitessePassage[100];
    unsigned int        PEs_TempsPassage[100];
    float               PEs_CumulPoidsEssieu;
    unsigned int        PEs_NbMesurePoids;

// Perte de poids
    unsigned int        PdP_PosCycle;
    unsigned int        PdP_PosCycleMem;
    unsigned char       PdP_NiveauTH;
    unsigned char       PdP_NiveauH;
    unsigned char       PdP_NiveauB;
    unsigned char       PdP_NiveauTB;
    unsigned char       PdP_PremierRemplissage;
    float               PdP_Tab_Poids[100];
    int                 PdP_IndiceTabPoids;
    
}EXPL_STRUCT;


/*---- Numerotation des timers 100ms ----*/
typedef enum
    {
    timer_stabilite,                                                            // 0
    timer_LED1,                                                                 // 1
    timer_Donnees_LS,                                                           // 2
    timer_VitesseManu,                                                          // 3
    timer_TarageStatique,                                                       // 4
    timer_EtalonnageStatique,                                                   // 5
    timer_VitesseNulle,                                                         // 6
    timer_DefautPoidsMax,                                                       // 7
    timer_DefautDebitMax,                                                       // 8
    timer_DefautDebitMin,                                                       // 9
    timer_DefautVitesseMin,                                                     // 10
    timer_DefautCapteur,                                                        // 11
    timer_SauvegardeFRAM,                                                       // 12
    timer_SauveFRamCycle,                                                       // 13
    timer_RegulationPID,                                                        // 14
    timer_Volumetrique,                                                         // 15
    timer_Debug,                                                                // 16
    timer_DefautDeviationPlus,                                                  // 17
    timer_DefautDeviationMoins,                                                 // 18
    timer_TarageDynamique,                                                      // 19
    timer_FinTarageAuto,                                                        // 20
    timer_CloseSocket1,                                                         // 21
    timer_CloseSocket2,                                                         // 22
    timer_CloseSocket3,                                                         // 23
    timer_CloseSocket4,                                                         // 26
    timer_CloseSocket5,                                                         // 27
    timer_BdC_VanneSup,                                                         // 28
    timer_BdC_VanneInf,                                                         // 29
    timer_BdC_TempoFinVidangeTremie,
    timer_BdC_PauseVibrant,                                                     // 32
    timer_BdC_MarcheVibrant,                                                    // 33
    timer_Dep_TempoDemVidangeVanne,                                             // 30
    timer_Dep_TempoArretVidangeVanne,                                           // 31
    timer_Dep_PauseVibrant,                                                     // 32
    timer_Dep_MarcheVibrant,                                                    // 33
    timer_Dep_VerifEvolutionPoids,                                              // 34
    timer_Pes_AttenteApresStabilite,                                            // 35
    timer_Pes_TempoFinDeCycle,                                                  // 36
    timer_Pes_TempsMesurePoids,                                                 // 37
    timer_Pes_TempoDernierEssieu,                                               // 38
    timer_TempsMarche,                                                          // 39
    timer_PdP_TempoRepriseRegul,                                                // 40
} liste_timers;

    /*---- Numerotation des timers 10ms ----*/
typedef enum
    {
    timer_SimulateurVitesse,                                                    // 0
    timer_NivHautTot,                                                           // 1
    timer_NivBasTot,                                                            // 2
    timer_EcritSortieAna,                                                       // 3
    timer_NivHautTotB,                                                          // 4
    timer_NivBasTotB,                                                           // 5
    timer_PdP_AcqPoids,                                                         // 6
    } liste_timers10;

/*---- Numerotation des vannes ----*/
typedef enum
    {
    vanne_Sup,                                                                  // 0
    vanne_Inf,                                                                  // 1
    } liste_vannes;
    
extern  PARAM_STRUCT        PAR;
extern  EXPL_STRUCT         EXP;
extern  char                AD7190_PoidsPret;

extern unsigned int         T100[50];
extern unsigned int         T10[10];

extern char                 debugUart2;

extern char                 sorTOR[10];
extern char                 entTOR[10];

extern unsigned int         Compteur;

void LecFRAM(int addrFram, int nbBytes);
void LecFRAM_Param(void);
void EcrFRAM(int adresse, int longueur);
void EcrFRAM_Param(void);
int etatSortieTOR(int numFonction);
void sortiesTOR(char numFonction, char etat);
int  RegulationPID(void);
void lecture_entrees_TOR(void);
