/******************************************************************************/
/* Files to Include                                                           */
/******************************************************************************/

#include "Process.h"


void Pes_AttenteDCY(void)
{
sortiesTOR(DO_BdC_OuvVanneInferieure, 0);                                       // Commande fermeture vanne vidange
sortiesTOR(DO_CycleEnCours, 0);                                                 // Cycle en cours
sortiesTOR(DO_CycleSuspendu, 0);                                                // Cycle suspendu

// Gestion DCY
if ((EXP.Command1 & 0x0001)                                                     // DCY
        || (EXP.Profibus_Command & 0x0001)                                      // DCY
        || (ValEntTOR(DI_DCY)))
{
    EXP.Command1 = EXP.Command1 & 0xFFFE;                                       // DCY
    EXP.Profibus_Command = EXP.Profibus_Command & 0xFFFE;                       // DCY Profibus
    EXP.Etat1 = EXP.Etat1 & 0xFFFE;                                             // Bit installation à l'arrêt
    EXP.Etat1 = EXP.Etat1 & 0xFFFB;                                             // Bit installation suspendu
    EXP.Etat1 = EXP.Etat1 | 0x0002;                                             // Bit installation en marche

    EXP.Dep_PoidsCumul = 0;
    EXP.Dep_PoidsDebut = EXP.PoidsMoyen;
    EXP.Dep_PoidsFin = 0;
    EXP.Dep_FinCycle = 0;

    sortiesTOR(DO_CycleEnCours, 1);                                             // Cycle en cours

    EXP.Dep_PosCycle = 2;
}
}


void Pes_AttenteStabilite1(void)                                                // EXP.Dep_PosCycle = 2
{
EXP.Dep_PoidsEnCours = EXP.Dep_PoidsCumul + EXP.Dep_PoidsDebut - EXP.PoidsMoyen;

if (EXP.PoidsStable)
    EXP.Dep_PosCycle = 3;
}


void gestion_cycle_PeseEssieu(void)
{
GestionCyclePesage();

switch (EXP.Dep_PosCycle)
{
    case   0 : Pes_AttenteDCY();
               break;
    case   2 : Pes_AttenteStabilite1();
               break;
}

// Gestion des seuils pesage bigbag
sortiesTOR(DO_BdC_SeuilHaut, (EXP.PoidsMoyen > PAR.Dep_SeuilHaut));             // Poids supérieur au seuil haut
sortiesTOR(DO_BdC_SeuilBas, (EXP.PoidsMoyen < PAR.Dep_SeuilBas));               // Poids inférieur au seuil bas

// Test du retour marche vis vidange
//if ((PAR.Dep_Options & 0xFFFB) == 0x0040)                                       // Présence vis vidange
{
    switch (EXP.Dep_PosCycle)
    {
//        case   5 :                                                              // Attente avant ouverture vanne
        case  10 :                                                              // Chargement
            if (!ValEntTOR(DI_ChoixProduit2, 1))
            {
                sortiesTOR(DO_CycleEnCours, 0);                                 // Cycle en cours
                sortiesTOR(DO_CycleSuspendu, 1);                                // Cycle suspendu
                sortiesTOR(DO_BdC_CommVidange, 0);                              // Commande organe de vidange du vide bigbag
                sortiesTOR(DO_BdC_CommVibrant, 0);                              // Commande ouverture vanne vidange
                sortiesTOR(DO_BdC_OuvVanneInferieure, 0);                       // Commande fermeture vanne vidange

                EXP.Etat1 = EXP.Etat1 & 0xFFFD;                                 // Bit installation en marche
                EXP.Etat1 = EXP.Etat1 | 0x0004;                                 // Bit installation en suspension
            
                EXP.Defaut2 = EXP.Defaut2 | 0x0080;                             // Défaut retour marche vis vidange

                EXP.Dep_PosCycle = 57;                                          // Attente stabilite2
            }
    }
}

// Acquittement défauts
if ((EXP.Command1 & 0x0008)                                                     // Acquittement défauts
        || (EXP.Profibus_Command & 0x0008))                                     // Acquittement défauts
{
    EXP.Command1 = EXP.Command1 & 0xFFF7;
    EXP.Profibus_Command = EXP.Profibus_Command & 0xFFF7;

    EXP.Defaut1 = 0;
    EXP.Defaut2 = 0;

    T100[timer_Dep_VerifEvolutionPoids] = PAR.Dep_TempsVariationPoidsBigBagVide;
}
}

