Plus de 10 ans d’expérience dans l’automatisation, les API et les IHM. Travailler avec la plupart des principaux fournisseurs d’automatisation et d’instrumentation
À propos de la logique à relais
Ladder Logic, généralement appelé simplement « Ladder », est le langage le plus couramment utilisé dans la programmation d’un PLC (Programmable Logic Controller). Il est utilisé depuis des décennies et les fondamentaux n’ont pas beaucoup changé au fil du temps.
La raison pour laquelle il est si populaire est qu’il se lit comme un schéma, de gauche à droite, de haut en bas. Il était et est toujours relativement facile pour les ingénieurs électriciens d’obtenir une copie du logiciel et de lire la logique.
Dans cet article d’introduction, nous examinerons Ladder en utilisant CoDeSys 3.5 (qui est gratuit, vous pouvez trouver un lien de téléchargement sur le centre de téléchargement CoDeSys 3.5). Si vous avez besoin d’aide avec CoDeSys 3.5, vous trouverez de nombreuses aides en ligne. Je pourrais même écrire un article ou deux sur les premiers pas avec CoDeSys à l’avenir, faites-moi savoir dans les commentaires ce qui manque, et je mettrai à jour l’article
Environnement de programmation
Chaque éditeur est différent (Allen Bradley, Mitsubishi, CoDeSys, Siemens par exemple) ; cependant, ils suivent tous les mêmes directives de base.
L’environnement Ladder est composé de réseaux (ou échelons) et d’éléments logiques qui reposent sur le réseau de gauche à droite. La logique « s’écoule » de gauche à droite jusqu’à ce que l’échelon soit complet, puis se déplace vers le bas jusqu’à l’échelon suivant.
Considérez cet exemple :
Le premier réseau se compose d’un contact, suivi d’un contact inversé et enfin d’une bobine (ou indicateur/sortie—à ne pas confondre avec une sortie physique)
Le deuxième réseau est constitué d’un contact et d’une autre bobine.
Dans Ladder, le nom du contact, de la bobine ou d’autres éléments est la variable assignée ou « Tag » qui est référencée. Ainsi, « Coil » apparaît deux fois, une fois en tant que bobine et une fois en tant que contact. Si une bobine est définie sur True, un contact portant le même nom sera également true.
Pour qu’une bobine soit vraie, tout ce qui se trouve à gauche de la bobine doit également être dans un état vrai. Considérez cela comme un circuit électrique, où votre V-Supply est le rail vertical à gauche et à droite votre masse, une bobine est un appareil qui nécessite de l’alimentation et les contacts sont des relais. Certains environnements affichent également un rail latéral droit.
! IMPORTANT !
N’oubliez pas que le flux logique est traversant puis descendant. Si une bobine sur le réseau 5 est définie sur True et qu’un contact portant le même nom se trouve sur les réseaux 3 et 7, seul 7 sera True jusqu’à ce que le programme revienne en boucle vers le haut.
Exemple de flux
L’image ci-dessus montre le « flux logique » lorsque l’automate est en mode exécution. Les contacts/bobines qui sont bleus sont VRAI, s’ils ne sont pas bleus, ils sont FAUX.
Faites défiler pour continuer
(Toutes les variables sont définies sur false dans l’image ci-dessus, notez que le contact inversé est bleu)
Pour définir une bobine sur TRUE (bleu), tous les contacts et conditions à gauche de la bobine doivent également être TRUE, permettant au chemin bleu d’atteindre la bobine :
Dans la logique ci-dessus, « Contact » (le premier élément sur le réseau 1) a été défini sur TRUE. Étant donné que « Negated Contact » est un contact inversé, FALSE = TRUE. Comme les deux conditions sont satisfaites à gauche de « Coil », la bobine est maintenant définie sur TRUE.
Le contact « Coil » du deuxième réseau est maintenant vrai. Comme toutes les conditions à gauche de Coil_2 sont maintenant TRUE, Coil_2 est défini sur TRUE.
Blocs fonctionnels et fonctions
Ladder Logic utilise largement les blocs fonctionnels et les fonctions. Aux fins de cette introduction, nous supposerons que tous les blocs fonctionnels et fonctions sont construits à l’aide de Ladder.
Alors, quelle est la différence entre une fonction et un bloc fonctionnel ? Cela se résume aux « instances ». Une fonction est simplement une fonction, des entrées sont transmises et une sortie est donnée, rien n’est conservé en mémoire. Un bloc de fonction, cependant, est défini dans la logique du programme, une instance lui est attribuée et de la mémoire est allouée à ce bloc.
Considérez que vous voulez faire le calcul mathématique suivant :
X + Y = Z
un Fonction fournirait les moyens de transmettre les valeurs X et Y et de renvoyer la valeur Z.
Supposons que vous souhaitiez effectuer le calcul mathématique suivant :
X + Y + Z = Z
un Bloc de fonction permettrait z être défini comme une sortie, mais parce que le bloc est donné une instance, la valeur de z est stocké à l’intérieur du bloc, il n’a donc PAS besoin d’être retransmis pour être utilisé dans le calcul. Un bloc fonction reçoit une instance en le nommant de la même manière qu’un contact ou une bobine est nommé :
Dans l’exemple ci-dessus, un Bloc de fonction a été placé sur le réseau. Le bloc fonctionnel a été défini comme un TONNE (Timer On Delay) et a reçu le nom Timer_1. Ceci a maintenant été alloué de la mémoire, Timer_1 est une instance de TON. Cela permet à Timer_1 d’utiliser les fonctions fournies par TON, tout en gardant une trace de Timer_1 dans sa propre instance, indépendamment de tout autre bloc de fonction TON.
Ceci n’est qu’une brève introduction aux blocs fonctionnels, ils sont très puissants et nécessitent des explications supplémentaires pour comprendre leur utilisation complète.
Envelopper le tout
Ladder Logic est un langage simple, propre et efficace pour programmer des systèmes de contrôle simples et complexes. Il est également facile à lire, à imprimer et à suivre. C’est la chute, à mon avis, c’est qu’il est très tentant de simplement continuer à ajouter à la fin d’un POU ou d’un fichier échelle, créant un code long et difficile à suivre.
La meilleure utilisation de l’échelle est pour la logique directe, le mappage de base et les petits blocs fonctionnels.
Cet article est exact et fidèle au meilleur de la connaissance de l’auteur. Le contenu est uniquement à des fins d’information ou de divertissement et ne remplace pas un conseil personnel ou un conseil professionnel en matière commerciale, financière, juridique ou technique.
© 2018 Liam