Programmation automates

De Wiki Automatisme et Informatique.


Généralités

La programmation d'un automate programmable peut-être réalisée de différentes manières. Historiquement, chaque constructeur avait son propre langage de programmation (qui ressemblait ou non à celui d'un autre constructeur). Depuis quelques années, une norme est en vigueur concernant les langages de programmation. C'est la CEI_61131-3[1].

Cette norme régit la manière dont les constructeurs doivent construire leurs interfaces de programmation afin que les automaticiens puissent programmer. Elle ne régit en rien la manière de programmer.

Les principaux langages de programmation d'un automate sont :

  • langage Ladder (schéma à relais)
  • Sequential function chart (SFC) proche du langage Grafcet
  • Boîtes fonctionnelles (FBD), sous forme de diagramme
  • Texte structuré (ST)
  • Liste d'instructions (IL), un pseudo-assembleur

On les retrouve chez tous les grands constructeurs tels que Siemens, Rockwell, Schneider, Omron, Mitsubishi ...

Rien ne régit donc la manière dont l'automaticien va construire et architecturer son programme, si ce ne sont des standards en vigueur dans certaines société (telles que l'automobile).

Il existe (en fait, comme en informatique) autant de façon de programmer qu'il existe de programmeurs. Ce qui découle directement de cette constatation, n'est pas un problème de fonctionnement des installations, mais un problème de maintenabilité de ces installations. En effet,si chaque intervenant au niveau programme gère une partie de cette installation à sa manière, il est impossible de retrouver un raisonnement cohérent et un fil conducteur dans le programme global. C'est souvent ce qui arrive lors de modifications, d'améliorations et de reconditionnements de lignes de production. D'où la nécessité de standardiser le plus possible.

   

Standardisation

La standardisation de la programmation peut intervenir sur différents éléments.

  • Les mnémoniques utilisés et la manière de les construire.
Il existe dans l'industrie des process continus (pétrochimie, chimie, gaz ....) une règle de construction des références de tous les éléments présents sur l'installation vu d'un point de vue "instrumentation"[2]. Cette règle ne peut être adaptée à 100% suivant les process, mais une adaptation peut être effectuée. Suivant les habitudes, les secteurs d'activité et les origines des programmeurs, cette adaptation sera plus ou moins délicate.
Cette règle découle de deux normes ISO [3] : [4],[5]
  • les fonctions utilisés.
En utilisant le concept d'analyse descendante et de programmation objet, bon nombre de fonctions primaires peuvent être développées, testées, validées et considérées comme standard pour d'autres installations. C'est le principe des blocs fonctionnels systèmes fournis avec divers automates.
Cette méthode permet aussi de standardiser la manière de travailler et d'organiser son programme.
  • Ne pas "réinventer la roue" à chaque programme.
Toujours en rapport avec la notion de fainéantise, ce qui est fait et éprouvé est un gain de temps immense. Certes, cela peut sans doute être améliorer, modifier, mais on ne réinvente pas les bases !
 

Simplification et Ecoute

La simplification d'un programme ou l'art d'écrire une fonction en 3 lignes au lieu de 50 ! Cette simplification ne peut être réalisée que si les points précédents ont été mis en place, si une vision globale de l'installation est appréhendée lors de l'initialisation du projet. Cette vision globale peut dépasser le cadre technique, puis qu'elle doit englober :

  • L'installation mécanique, électrique, pneumatique ...
  • Le personnel de production (les personnes, leur façon de travailler, leurs attentes, ...)
  • Le personnel de maintenance (mêmes problématiques que pour la production)

Une machine qui aura été construite et développée (d'un point de vue mécanique et automatisme) avec les utilisateurs (production, maintenance, ...) fonctionnera toujours mieux que si ces utilisateurs n'ont pas pris part au changement de leur outil de travail. De même, en intégrant ce personnel lors du développement, certaines zones d'ombres tomberont naturellement lors de la mise en service, car un point difficilement automatisable sera réalisé de plein gré par l'utilisateur. Ce point semble souvent oublié de bon nombres de concepteurs qui se contentent de réaliser un programme ou une interface opérateur réalisant les fonctions requises.


La simplification, passe aussi par la simplification de dépannage, de compréhension de la part du personnel de maintenance. Il existe plusieurs points en dehors de ceux déjà cités pour y arriver tels que :

  • Une bonne lisibilité du programme (éviter les équations à rallonge, simplifier les équations, éviter les indexages,incrémentations sur des parties de code non éprouvées ...)
  • Pour tout fonctionnement séquentiel, utiliser de préférence une structure type "graphcet" afin d'éviter des états inattendus et permettre une analyse des problèmes plus rapide.
  • Ne pas hésiter à paramétrer les instructions, éviter les valeurs écrites en "dur" dans le programme, sauf lors des initialisations de variable. Toutes ces valeurs sont sans doutes amenées à évoluer dans le temps, et les utilisateurs doivent être capables de les modifier sans toucher au code.


Exemples

Les exemples de code fournis dans ce paragraphe sont fonctionnels (dans leurs contextes), ils peuvent donc être repris et utilisés après modification de certains paramètres. Ces exemples sont principalement tirés du domaine d'activité actuel, c'est à dire la transitique[6], mais le principe a déjà été utilisé dans d'autres domaines tels que le textile, le traitement d'eau, les process pharma ....