Comment apprendre la programmation des automates ? Les différences entre les différentes marques d'automates sont-elles importantes ? La programmation ladder est-elle la même que la programmation automate ?
Réponses
Trop de publicités?J'ai fait beaucoup de programmation d'automates et je fais maintenant pas mal de programmation .NET. Il est très dangereux de passer de l'un à l'autre, car une grande partie des compétences que vous pensez être transférables (modèles et autres) vous mènent très loin.
La plus grande différence que je dis aux gens est que le code de programme PC doit être écrit comme si les autres programmeurs étaient le public, mais les programmes PLC (logique ladder) doivent être écrits comme si les personnes de maintenance étaient le public. Dans la plupart des installations (en particulier dans le secteur de la fabrication), le personnel de maintenance se connecte souvent directement aux automates et, en mode en ligne, il peut observer l'exécution du code sous forme graphique pour comprendre ce qui ne va pas.
Par exemple, si une sortie n'est pas activée, ils saisiront l'ID du dispositif électrique de sortie dans la fonction de recherche du logiciel de programmation, trouveront la bobine de sortie et commenceront à remonter à partir de là pour rechercher les problèmes. L'une des erreurs fréquentes que font certains programmeurs d'automates est de "mapper" leurs E/S dans une structure (dans les automates, on les appelle des types définis par l'utilisateur), et ils utilisent une instruction de copie pour déplacer toutes les entrées ou sorties vers la structure en une seule fois. C'est logique du point de vue de la programmation PC, mais cela donne envie au personnel de maintenance de vous tuer. En général, le logiciel de programmation fournit une fonction de référence croisée qui permet de spécifier cette bobine de sortie et qui indique partout dans le programme qu'elle est utilisée. Si vous utilisez une instruction de copie pour déplacer 10 mots d'E/S dans une structure de données de 10 mots, il doit s'asseoir et compter les bits pour déterminer quel bit de la source de la copie correspond à quel bit du côté de la destination de la copie. Il est vrai que les commentaires peuvent aider, mais il y a un problème avec cela aussi... Les PLC stockent l'ensemble du programme et vous permettent de télécharger le programme à partir de celui-ci en cas d'urgence si vous avez besoin de dépanner et que vous n'avez pas de copie du programme original. Le problème est que, pour des raisons d'espace, l'automate ne stocke pas les commentaires. Ainsi, si la ligne est en panne et que le temps d'arrêt coûte 5 000 dollars par minute, et qu'une personne se rend sur place avec un ordinateur portable, elle devra peut-être effectuer un téléchargement rapide sans commentaires et essayer de résoudre le problème. La présence de ces instructions de copie, qui lui font perdre 10 minutes de son temps, vient de coûter à l'entreprise 50 000 dollars de temps d'arrêt. Ce sont les choses dont vous devez être conscient lorsque vous écrivez des programmes PLC.
Quelques autres conseils : certains automates ont un support pour les boucles FOR. Jamais les utiliser. Pour la même raison que ci-dessus, ils rendent le code très difficile à dépanner pour une personne chargée de la maintenance. En effet, si un élément de code de l'automate est analysé plus d'une fois par analyse (comme le contenu d'une boucle), lorsque vous passez en mode de débogage en ligne, le logiciel ne peut pas vous montrer les valeurs de chacune des 10 boucles qui ont exécuté cette analyse, et vous n'avez donc aucune idée de la valeur que vous regardez. Vous devez ensuite écrire tout ce code délicat pour extraire les valeurs de boucle pour un index de boucle spécifique dans d'autres balises (variables) que vous pouvez surveiller. C'est un obstacle de plus à la résolution du problème en cas d'urgence. L'utilisation d'une sous-routine plus d'une fois par analyse souffre du même problème.
L'adressage indirect (ce que nous appellerions des tableaux) est très difficile à comprendre pour les personnes chargées de la maintenance. Il n'y a généralement pas de problème à les utiliser pour la gestion des recettes (stockage et récupération des valeurs pour la construction de votre pièce), mais vous devriez essayer de ne pas les utiliser dans la partie contrôle du programme.
En programmation PC, nous cherchons bien sûr à réutiliser le code autant que possible. Cependant, dans les automates et les systèmes de contrôle, les temps d'arrêt sont extrêmement coûteux, et le matériel coûte cher. La mémoire est bon marché, et les programmeurs d'automates sont bon marché. Par conséquent, on s'attend à ce que si vous avez 10 choses identiques sur votre machine (comme des entraînements de convoyeur ou autre), vous aurez 10 fichiers différents (sous-routines), un pour chaque entraînement, et chaque entraînement aura ses propres variables associées à eux : par exemple Drive1_Run, Drive2_Run, Drive3_Run, etc. Cela va vous sembler très "faux" si vous venez d'un milieu de programmation PC, mais tout cela est dû aux points que j'ai soulevés ci-dessus. Lorsque vous êtes dans une situation de temps d'arrêt, et que quelqu'un vous dit que le lecteur 3 ne fonctionne pas, vous ouvrez l'ordinateur portable, vous allez dans le fichier du lecteur 3 et vous regardez l'ordre de sortie Run. Vous commencez à dépanner à partir de là, pendant que le programme s'exécute. Il n'y a pas de points d'arrêt (le programme ne s'arrête jamais).
Bonne chance dans votre entreprise. J'ai écrit un peu plus des informations tirées de mes années de programmation d'automates. si vous voulez les consulter.
Vous pouvez apprendre la programmation PLC à partir de différentes sources sur Internet, dont l'une est this(wikibooks) o ce
Le programme que vous écrivez sera à peu près le même pour les différentes marques d'automates pour les LLD (Ladder Logic Diagrams), sauf si vous utilisez des fonctions spécifiques à l'automate. Mais il y aura beaucoup plus de différences si vous utilisez un langage comme l'IL (Instruction List). Mais une fois que vous avez écrit le programme, le format de stockage et d'exécution diffère largement selon les marques.
La logique Ladder est l'un des 5 langages de programmation pour les PLC, les autres étant le FBD (Function block diagram), le ST (Structured text, similaire au langage de programmation Pascal), le IL (Instruction list, similaire au langage d'assemblage) et le SFC (Sequential function chart). Il s'agit simplement de diverses représentations du langage de programmation, de diverses saveurs si vous voulez. Mais généralement, une marque donnée ne prend en charge qu'un seul de ces langages. Aux États-Unis, les LLD sont largement utilisés, tandis qu'en Europe, les IL sont plus populaires.
Ladder, souvent appelé LD, est l'un des différents styles de langage définis dans la norme de programmation d'automatisation ISO 61131. Les autres sont le SFC (organigramme séquentiel), le FBD (schéma fonctionnel), le ST (texte structuré) et le IL (liste d'instructions). IL est similaire à l'assembleur et très peu de gens l'utilisent. ST est une programmation basée sur le texte, un peu comme les premières versions de BASIC. Il n'est pas souvent utilisé non plus. LD est conçu pour ressembler aux contacts de relais d'un panneau de commande électrique (que beaucoup de PLC ont remplacé). FBD ressemble plus à un schéma de circuit. SFC est essentiellement un organigramme.
Certains automates supportent tout, d'autres seulement certains, ou même un seul. Si LD est le plus courant, FBD et SFC gagnent en popularité.
Les différentes marques utilisent des langages de programmation légèrement différents. Ils sont généralement suffisamment similaires pour qu'une fois que vous comprenez une marque, vous puissiez travailler avec n'importe laquelle d'entre elles, mais vous ne pouvez pas prendre directement le code d'un automate pour l'utiliser sur une autre marque.
Les réponses données jusqu'à présent sont assez bien ciblées. J'ai découvert que les automates ont une double personnalité en ce qui concerne leur langage et leur configuration. Leur conception de base est de donner aux électriciens un moyen flexible de mettre en place une logique de contrôle pour leur conception globale. Les PLC sont essentiellement un groupe d'entrées et un groupe de sorties et la façon dont ils sont connectés est contrôlée par le logiciel que vous chargez dans le dispositif.
L'un des points forts des langages utilisés pour les automates programmables est qu'ils sont accessibles aux personnes issues du milieu électrique. Les idiomes et les structures semblent donc contre-indiqués pour une personne habituée aux langages de haut niveau ou même aux langages d'assemblage. La logique Ladder, par exemple, est très accessible aux électriciens.
Cependant, ces dernières années, les API ont pris en charge une multitude de langues pour une flexibilité maximale. Cependant, à mon avis, la poignée d'automates sur lesquels j'ai travaillé ne sont pas du tout des environnements de programmation. Des choses simples comme l'assignation de noms de variables à des emplacements de mémoire ne sont souvent pas conçues dans le langage utilisé. Ceux qui sont faciles à utiliser ne sont souvent pas les plus rentables pour le travail.
Malgré ces handicaps, ils sont excellents pour simplifier les systèmes électriques complexes. Si vous travaillez avec d'autres personnes sur un projet, vous constaterez que votre connaissance de la programmation aidera le projet à résoudre des programmes épineux. J'ai pu prendre un programme de logique en échelle de 100 échelons et le réécrire en un tiers des échelons. Une fois que j'ai pu apprendre le langage de la logique en échelle, j'ai pu mettre en œuvre diverses optimisations qui ont réduit la complexité du programme.
Un conseil : vous devrez vous familiariser avec le verrouillage. Parfois, vous aurez besoin de stocker ou de conserver une sortie et si vous n'avez pas de verrouillage, le résultat disparaîtra au cycle suivant. Une fois que vous comprenez le problème, cela devient clair, mais au début, c'était une grande source de frustration pour moi.
La programmation d'un automate doit être considérée comme une activité de mise en œuvre des résultats de l'ingénierie logicielle de l'automate, à moins que vous n'utilisiez l'automate comme une simple composante alternative aux solutions mécaniques ou électriques.
Sur cette base, l'environnement de programmation des automates est typiquement basé sur la norme IEC61131, le temps de cycle garanti, le temps réel "préemptif", pas besoin de gérer les problèmes liés au système d'exploitation en temps réel, le balayage continu du code, le non-pointeur de programme, un concept différent du multi-tâches typique des ordinateurs. L'exécution du code est naturellement atomique, pas besoin d'utiliser des moniteurs entre les tâches.
Chacun des langages a sa proximité avec la manière dont votre code est concevable par rapport au modèle logique que vous voulez mettre en œuvre.
-
L'échelle a son concept de base sur le style de verrouillage du flux d'énergie électrique. La résolution du code dans un réseau unique est soit un balayage horizontal, soit un balayage vertical (vous pouvez trouver des ressources à ce sujet auprès du fabricant ou sur d'autres sites). Si votre code a une résolution de balayage unique et se trouve dans un seul réseau, certains comportements inconcevables peuvent être dus au type de balayage (il est important de se rappeler que le ladder n'est qu'une émulation de circuit électrique, son exécution est toujours séquentielle).
-
Le FBD ou diagramme de bloc fonctionnel était un flux de signaux électroniques, mais aujourd'hui, il peut s'agir d'un flux de données, selon le type d'automate. Le FBD montre une séquence d'exécution plus claire, assez similaire à l'échelle de balayage horizontal dans la séquence de balayage. Aujourd'hui, le FBD est généralement utilisé comme conteneur pour les blocs fonctionnels objets, bien que l'implémentation de la dépendance et la similarité visuelle avec le modèle de processus dépendent du type d'API.
-
Literal est très similaire à BASIC, mais uniquement au niveau de la syntaxe ; l'exécution se fait toujours par balayage. Le langage littéral convient bien aux calculs mathématiques. Pour une mise en œuvre de haut niveau, les méthodes ou la dérivation d'attributs au sein d'un objet peuvent être plus faciles à utiliser en langage littéral. La programmation par machine à états utilisant une représentation d'état ou des constantes de type anglais rend le programme très lisible.
-
La liste des instructions ressemble aux mnémoniques de l'assemblage, mais l'exécution se fait toujours par balayage et non par pointeur de programme. Il est fort dans les opérations sur les bits et les logiques discrètes de type parenthèses. Il peut être un langage très efficace à utiliser avec une structuration et des commentaires appropriés.
-
Le SFC ou organigramme séquentiel est un langage complémentaire pour la mise en œuvre de séquences. Le SFC possède des règles inhérentes sur l'activation des blocs d'action, les transitions d'état, l'activation et la fusion de séquences parallèles. Cependant, les branchements d'exceptions complexes ou la gestion des actions concurrentes peuvent rendre l'implémentation compliquée et le diagramme de flux difficile à lire.
La gestion du système PLC sur la manipulation des E/S, la communication, la mise en veille est un effort de configuration matérielle, et dépend du produit. En général, elle peut être traitée séparément du génie logiciel. Cependant, les données liées à la gestion du système PLC sont de type "localisé" (zone d'adressage de données indépendante), une bonne approche de modélisation des données dans l'ingénierie logicielle peut aider à gérer les données du système.
- Réponses précédentes
- Plus de réponses