samedi 23 novembre 2019

State machine in C using Plecs

Hello I've been programming a State Machine in a C-script in Plecs and I'd Had the issue that at the time I compile it, it says that there is an error in all the lines that I used an if statement saying "expected expression". I tried using sublime text to be sure that I put right all the brackets and used sublimeLintern to review if I had some syntax errors.

//Definicion de variables
 enum States{INIT,REG,CON_CAR,CV_FAST,CC_FAST,CC_SLOW,CV_SLOW,CC_BOOST,CV_BOOST,TRANS}
 enum States Charger_State_Machine = INIT;

//Maquina de estados
  switch(Charger_State_Machine){

   case INIT:
//Inicio de operación 
    if(start_carga==1){
     Charger_State_Machine = CON_CAR;
    }
    if(start_carga==0){ 
     Charger_State_Machine=CC_BOOST;
    }
    break;

    case CON_CAR:
//Auto conectado
    if(start_carga==0){
        Charger_State_Machine=TRANS;
        }   
    if(Charger_voltage>= trigger_voltage){
    Charger_State_Machine= CC_FAST;
    }
    else{
    Charger_State_Machine=CC_SLOW;
    }
break;
//Corriente constante en carga rapida
case CC_FAST:
    if(start_carga==0){
        Charger_State_Machine=TRANS;
    }   

    if(EV_VOLT>=EV_VOLT_TRIGGER){
        Charger_State_Machine=CV_FAST;
    }
//Tensión constante en carga rápida 
break;  
case CV_FAST:

    if(start_carga==0){
        Charger_State_Machine=TRANS;
    }

    if(EV_CUR<EV_CUR_TRIGGER){
        Charger_State_Machine=REG;
    }

break;
//Corriente constate en carga lenta
case CC_SLOW:

    if(start_carga==0){
        Charger_State_Machine=TRANS;
    }
    if(EV_VOLT>=EV_VOLT_TRIGGER){
        Charger_State_Machine=CV_SLOW;
    }

break;
//Tensión constante en carga lenta
case CV_SLOW_SLOW:
    if(start_carga==0){
        Charger_State_Machine=TRANS;
    }
    if(EV_CUR<=EV_CUR_TRIGGER){
        Charger_State_Machine=CC_BOOST;
    }

break;
//Estado transitorio
case TRANS:
if(start_carga==1){
    Charger_State_Machine=CON_CAR;
}
if(start_carga==0){
    Charger_State_Machine=CC_BOOST;
}
break;
//Corriente constante modo Boost
case CC_BOOST:
if(start_carga==1){
    Charger_State_Machine=CON_CAR;
}
if(CHARGER_VOLT>=CHARGER_VOLT_TRIGGER){
    Charger_State_Machine=CV_BOOST;
}

break;
//Tensión constante modo Boost
case CV_BOOST_BOOST:
if(start_carga==1){
    Charger_State_Machine=CON_CAR;
}
if(CHARGER_CUR<=CHARGER_CUR_TRIGGER){
    Charger_State_Machine=INIT;
}

break;
//En caso de que todo falle vuelvo al estado inicial
default:
    Charger_State_Machine=INIT;
    break;
 }

Aucun commentaire:

Enregistrer un commentaire