«

»

jan 26

La Fonction Bascule [CodeSys]

J’ai deja parlé a plusieur reprise de cette fonction, celle-ci est la fonction dont vous aurez sans doute le plus besoins

Son But

Permettre de changer l’etat d’un element par une simple impulsion

Simplement permettre d’allumer une lampe lorsque l’on appuie sur un poussoir, permettre d’éteindre  cette meme lampe lorsque l’on appuie sur ce même poussoir, en gros c’est l’équivalent d’un telerupteur

Realisation

Nous allons donc insérer un nouvel objet de type Bloc Fonctionnel et en langage Ladder LD

Voyon tout de suite a quoi va resembler votre petit morceau de programme

Clic pour zommer

Les declarations des variables

en VAR_INPUT vous avez un boolean « Interupteur: BOOL », c’est donc lui qui provoquera l’action

en VAR_OUTPUT vous avez un boolean  » Lampe: BOOL », c’est lui qui recevra l’action

en VAR vous avez « Front: R_TRIG » qui est la declaration de la fonction Front Montant et « A:BOOL », qui n’a d’autre utilité que d’eviter d’avoir des erreurs lors de la compilation

Fonctionnement

Reseau 1: lorsque interupteur passe a 1 on genere donc le front montant et R_Trig ce retrouve actionné

Reseau 2: on a le Font montant de l’interupteur Front.Q et si la lampe n’est pas actionner on va setter la lampe et sortir de la fonction (le return) le Front.Q retombe a 0

Comme on travaille avec un front montant vous pouvez laisser l’interrupteur actionner le Front.Q restera a 0 donc plus aucune action ne ce produira dans cette routine

Reseau 3 : comme pour le reseau 2 quand on a le front montant de l’interupteur mais que la lampe est allumé on viendra reseter la lampe (passage de 1 a 0) puis on sort de la fonction (return)

vous allez me dire que l’on aurez pu simplifier un peut en mettant l’interrupteur et la fonction R_Trig a la place du Front.Q sur les réseau 2 et 3, mais j’ai pris pour habitude de n’utiliser q »une seule fois le front montant ou descendant d’une donnée car sur certains automate (en particulier telemecanique) on rencontrait des problemes lorsque le front d’une même donnée était utilisé a plusieurs reprises

Integration de la fonction dans le programme

Pour ajouter la fonction a votre programme vous allez aller la chercher dans Bloc Fonctionnel puis routine définie
Dans le programme cette fonction va s’interger simplement dans vos routines sur l’entrée interupteur vous affecterer tout les interupteurs que vous souhaitez
Dans notre exemple pour l’eclairage du cellier nous allons avoir :
dint_cellier qui est l’interupteur physique a l’entrée du cellier
b_Lum_Cellier qui correspond a l’interupteur utilisé dans les visualisations codesys
PRG_ST_COM_MW1_ECLAIRAGE_RDC.b_pilote28 qui correspond a l’interupteur de wagoLink
Et en sortie nous avons doLampe_Cellier qui correspond a la lampe de mon cellier
Dans une même routine vous pouvez en mettre autant que vous le souhaitez du moment quelle ne porte pas le meme non