Fainéantise

De Wiki Automatisme et Informatique.


Notion de Fainéantise en automatisme

Contexte

L'automatisation ayant pour principe de remplacer des taches répétitives (dans la majorité des installations), ces taches se retrouveront sur d'autres installations, d'autres process, mais peut regrouper les mêmes éléments et donc une manière de gérer ceux-ci identique ou quasi identique. La notion de fainéantise apparait alors dans le simple but de ne pas refaire ce qui a déjà été fait. Si une tache a déjà été automatisée, moyennant quelques menues modifications, cet automatisme peut sans doute être adapté ailleurs.

Prenons l'exemple d'un vérin double effet. Ce vérin peut être utilisé dans différents process afin de réaliser des taches diverses (Electrovanne, Vanne, Butée, Bloqueur, Volet ...). Tous ces contextes paraissent de premier abord totalement différents, mais intègre tous le même élément de base (le vérin). Le pilotage et le contrôle de ce vérin peut donc être réutilisé dans tous ces domaines, si et seulement si on s'affranchit du contexte.

C'est aussi une manière de raisonner que l'on retrouve en analyse descendante[1].


Utilisation et Principes

L'analyse descendante est intimement liée à la notion de programmation objet[2]. Cette notion de programmation objet est couramment utilisée en informatique, mais que trop rarement en automatisme.

   

Programmation Objet

Deux notions découlent de ce principe de programmation:

  • Notion de Parent-Enfant
  • Notion de Fonction et Procédures

Ces deux notions étant intégrées, on se concentrera sur :

  • Comment réutiliser les codes déjà crées et validés
  • Comment ne pas réécrire deux fois la même chose

Il faut donc se focaliser sur :

  • Le plus petit élément pilotable et l'intégrer comme une fonction
  • Construire son installation avec une hiérarchie de fonctions (composées d'autres fonctions, composées de fonctions de bases)
  • Établir son programme en suivant cette hiérarchie.

Ceci est valable aussi bien pour les lignes de programme que pour les données associées.

Si nous reprenons l'exemple du vérin, nous aurions par exemple :

  • installation1.machine1.fonction1.vérin
  • installation1.machine1.fonction2.vérin
  • ...
  • installation2.machine1.fonction1.vérin

Dans tous les cas nous retrouvons donc la même fonction "vérin". Celle-ci étant déja programmée, testée et validée, cette manière de programmer apporte donc un gain de temps inestimable, et ce, aussi bien au niveau du développement, des tests et des mises en service. Ce type de programmation apporte aussi un gain au niveau de l'utilisation mémoire puisque le nombre de variables déclarées est moindre.

Ce type de programmation entraine aussi un portage des mnémoniques associés aux éléments, et donc une homogénéité de dénomination sur différentes installations.

 

Exemples d'utilisation

Imaginons deux machines (A et B) ayant deux fonctions identiques, mais ne servant pas le même process.

  • La machine A est composée de 4 vérins
  • La machine B est composée de 6 vérins

La structure mémoire de la machine A sera par exemple :

:*Machine A
::*verin1
:::*sortir
:::*rentrer
:::*...
::*verin2
:::*sortir
:::*rentrer
:::*...
::*verin3
:::*sortir
:::*rentrer
:::*...
::*verin4
:::*sortir
:::*rentrer
:::*...

Et de même pour la machine B (avec vérin5 et 6)

:*Machine B
::*verin1
:::*sortir
:::*rentrer
:::*...
::*verin2
:::*sortir
:::*rentrer
:::*...
::*verin3
:::*sortir
:::*rentrer
:::*...
::*verin4
:::*sortir
:::*rentrer
:::*...
::*verin5
:::*sortir
:::*rentrer
:::*...
::*verin6
:::*sortir
:::*rentrer
:::*...

L'utilisation de la notion d'objet va permettre de définir une seule fois la structure "Vérin" et de l'utiliser pour les différents éléments. Un des avantages lors des études est que la modification de l'élément "Vérin" est reportée immédiatement sur tous les éléments utilisant cette structure. Dans notre exemple, il existera une donnée (composée de plusieurs informations) appelée "Verin".

::*verin
:::*sortir
:::*rentrer
:::*...

Chaque élément de type vérin (vérin1,2,3,4,5,6) utilisera ce type de donnée.

Définition Vérin1 de Type Vérin
Définition Vérin2 de Type Vérin
...
Définition Vérin6 de Type Vérin

Il en sera fait de même avec le programme gérant l'élément vérin. Une seule fonction vérin sera écrite et utilisée tout au long des programmes.

Cette manière de programmer se rapproche vraiment d'une programmation type informatique avec des langages tels que VBasic, C++, Java, Python ... Elle permet aussi une collaboration et un partage de la programme très aisée.