Partage
  • Partager sur Facebook
  • Partager sur Twitter

grafcet avec Arduino

Utilisation de tableau

17 mai 2013 à 15:47:41

Bonjour,

je souhaiterais programmer un grafcet avec le langage Arduino en utilisant des tableaux.

Ainsi,je dois traduire l'ensemble des éguations logiques du grafcet en langage Arduino.

La carte arduino est relié à une platine fonctionnant en liaison I2C et comportant un port d'entrée et un port de sortie.

Je souhaiterais savoir si le code que j'ai fais est juste.

Voici le grafcet:

Le code :

boolean T[6]={false,false,false};  //tableau transition
boolean A_E[3]={false,false,false}; // tableau etape
boolean M_E[4]={true,false,false};  //tableau mise à '1' etape


/* La carte dispose d'un port d'entrée et d'un port de sortie,
la varible input_register enregistre les entrée(les transitions)
*/

void loop()
{
 
  input_register=I2Cread(addMCP,GP1,1); //lecture port entrée
  delay(50);
 
  if(input_register & 1==1)            
    T[0]=true;                        //transition vraie(=1)
    else T[0]=false;
    if(input_register & 2==2)
    T[1]=true;
    else T[1]=false;
    
    if(input_register & 4==4)
    T[2]=true;
    else T[2]=false;
    
  A_E[0]= M_E[2] && T[2];
  A_E[1]= M_E[1] && T[0];
  A_E[2]= M_E[0] && T[1];
  
  M_E[0] = (A_E[0] || M_E[0]) && !T[0];
  M_E[1] = (A_E[1] || M_E[1]) && !T[1];
  M_E[2] = (A_E[2] || M_E[2]) && !T[0];
  
  
  
  if(M_E[0]) output_register=0;
  if(M_E[1]) output_register=1;
  if(M_E[2]) output_register=2;
   
  if(output_register!=output_old_register)
  
  {
     I2Cwrite(addMCP,GP0,output_register); // écriture sortie
     
     output_old_register=output_register;
     delay(5);
  }

}  



Merci

  • Partager sur Facebook
  • Partager sur Twitter
Si ton code marche pas réessaye puis recompile!
17 mai 2013 à 16:02:17

Ton lot de if au début risque de ne pas fonctionner (car tu fais une opération booléennes bit à bit que tu compares ensuite à une constante. Si ton op booléennes est vrai ca fera 1 sinon ca fera 0, mais jamais une constante supérieur).

Sinon, sur ce sujet on parle un peu des grafcets, de comment on peut les coder grâce à une machine à état. Qu'en penses-tu ?

  • Partager sur Facebook
  • Partager sur Twitter

Retrouvez moi sur mon blog et ma chaine Youtube !

17 mai 2013 à 23:45:42

en fait les if permettent de tester l'état des transitions.(j'ai utilisé un masque).Sinnon j'ai jeté un coup d'oeil sur la méthode avec machine à état.c'est vrai que cela marche aussi mais ça correspond pas à ce que je veux faire.

Merci quand même

  • Partager sur Facebook
  • Partager sur Twitter
Si ton code marche pas réessaye puis recompile!