Modélisations de solutions séquentielles destinées à piloter une chaîne d'énergie publié le 20/07/2020

La simulation d'un système réel ne s'arrête pas à la chaîne d'énergie. Pour l'animer, il convient de créer des stimuli adaptés et, si cela ne suffit pas, de réaliser des systèmes séquentiels chargés de commander la chaîne d'énergie

Cinquième volet d’une série de 6 articles amenant à maîtriser la modélisation de composants de la chaîne d’énergie et de la chaîne d’information dans le but d’effectuer la simulation d’un asservissement numérique de position la plus précise possible afin que le comportement réel soit totalement prévisible.

L’animation réaliste d’un système, demande à connaître les méthodes de création de stimuli adaptés aux besoins, et, si nécessaire, de réalisation de solutions séquentielles, soit à l’aide de composants (pour des séquences très simples), soit à l’aide de scripts (bien plus souples, plus puissants et théoriquement plus faciles à mettre au point).

Cet article va aborder, en s’appuyant sur des exemples, les différentes solutions permettant d’animer une chaîne d’énergie, en partant des plus simples pour arriver aux plus abouties (l’utilisateur pourra ainsi choisir son type de solution selon le contexte ou son goût pour la programmation) :

  1. Soit à partir d’un Curseur paramétrable, dont la valeur peut être modifiée à la souris ou imposée en saisissant une valeur au clavier (l’utilisation des curseurs est essentielle lors de la phase de mise au point de la chaîne d’énergie afin de valider ses performances ou de rechercher ses limites en modifiant, par exemple, la consigne et/ou la charge)
  2. Soit à partir d’une Formule permettant de définir rapidement un stimulus simple à l’aide d’une équation, linéaire ou pas, fonction du temps (accessible par la variable t)
  3. Soit à partir d’une Courbe ou d’une Loi graphique permettant d’obtenir un stimulus de forme complexe (par exemple, le résultat obtenu lors d’une simulation précédente ou des données tirées d’une documentation constructeur) afin de reproduire une consigne ou une information issue d’un capteur, conforme(s) à ce que le système réel est censé recevoir (le but étant alors de visualiser le comportement du système dans son environnement).
  4. Soit à partir d’un Composant permettant de compléter la bibliothèque par un nouveau stimulus, ou de réaliser entièrement un séquenceur basique (structure séquentielle généralement limitée à un cas simple, nécessaire et suffisante pour pouvoir commander une chaîne d’énergie en tenant compte d’une consigne, d’ordres ou de capteurs binaires)
  5. Soit à partir d’un Script (écrit généralement en Python 2.7, à installer sur la machine ou dans le langage de script LUA, intégré à Sinusphy) permettant de réaliser un séquenceur suffisamment évolué (les scripts permettent, généralement, de réaliser très facilement tous les traitements nécessaires en n’utilisant que quelques équations et quelques tests comme cela va être montré à la fin de cet article)
    outilssinusphy

En complément des diverses démonstrations et explications de cet article, sont fournis en archive zip :

  • Les schémas enregistrés en Sinusphy V2 (pour être compatibles avec toutes les versions postérieures),
  • Les composants modifiés ou créés avec l’éditeur de composants (compatibles avec toutes les versions),
  • Les scripts Python utilisés (dotés de commentaires et compatibles avec toutes les versions),
  • Toutes les copies d’écran en qualité originale,
  • Quelques modèles et schémas de simulation supplémentaires.
ressourcesarticlesinusphyn6 (Zip de 1.4 Mo)

1- Utilisation de stimuli simples, prédéfinis, avec une seule sortie

L’outil Curseur, avec, ici, son paramétrage expliqué :

proprietecurseur
  • Nom : jusqu’à 21 carac. si l’option "Labels externes" est cochée dans Sinusphy, sinon 11 carac. maxi,
  • Alias : facultatif, lettres et chiffres uniquement !,
  • Unité : optionnelle dans une chaîne d’information,
  • Valeur initiale, Minimum, Maximum, Incrément, Nbre de pas : ⚠ cohérence de mise !,
  • Mode élastique : à enlever en général car ramène automatiquement la valeur du curseur à 0,
  • Filtre : Le filtrage numérique (à la manière d’une moyenne) permet de lisser (atténuer) les variations brusques de la valeur (gérée à la souris ou au clavier) afin de d’obtenir un signal lentement variable plus conforme à la réalité (constante exprimée par un entier correspondant au nombre de pas de calculs nécessaires : 100 maxi).
     

On voit, ci-dessous, les résultats obtenus, soit sans filtre, soit en choisissant un type de filtre et sa constante. Les 3 échelons ont été créés par la saisie directe de valeurs au clavier. Il est à remarquer que le filtrage n’entraîne aucun dépassement.

_1-teststimuli-curseurs

 
L’outil Formule, avec, ici, son utilisation expliquée sur 2 exemples :

Zone "Sortie" : Peut généralement suffire pour définir entièrement la formule mais on y perd en lisibilité

  • Alias : nom facultatif ne devant comporter que des lettres et des chiffres,
  • Formule f(t) : t est la variable d’entrée. On peut également définir une sortie constante,
  • Unité : optionnelle dans une chaîne d’information
proprieteformule

Zone "Paramètres" : Des constantes et un test if (les tests sont toujours des alternatives complètes) :

  • tdelay = 0.5 (tdelay représente ici un temps en secondes),
  • vhigh = 3.3 (vhigh représente ici une tension en volts),
  • echelon = if(t>tdelay,1,0) signifie : si la variable système, notée t, est supérieure à tdelay, alors echelon=1 sinon echelon=0
proprieteformuleheaviside

Zone "Paramètres" : Des constantes et la fonction Heaviside, notée H, peu connue mais très pratique (Heaviside, également appelée fonction échelon unité) :

  • tdelay = 1 (temps en secondes),
  • twidth = 0.1 (durée en secondes),
  • vpulse = 5 (tension en volts),
  • pulse = H(t,tdelay) * !H(t,tdelay+twidth) signifie : si la variable système, notée t, est comprise entre tdelay et tdelay+twidth, alors pulse = 1 sinon pulse = 0.

On voit, ci-dessous, les formes des 4 signaux obtenus : 2 échelons et 2 impulsions. Seul le premier échelon est défini par un test if(t>tdelay,1,0). En effet, la syntaxe peut être vite illisible si on associe plusieurs tests, c’est pour cela que l’on utilisera plus volontiers la fonction Heaviside, conçue pour réaliser un échelon.

_2-teststimuli-formules

A retenir :

  • un échelon d’amplitude high = une alternative complète ou une fonction Heaviside :
    if(t>tdelay, high, 0) <=> high * H(t, tdelay)
  • une impulsion = 2 tests imbriqués ou le produit de 2 fonctions Heaviside complémentaires :
    if(t>tdelay,if(t<=tdelay+twidth,high,0),0) <=> high*H(t, tdelay)* !H(t, tdelay+twidth)
    A noter que le ! réalise la négation, ce qui signifie que lorsque t > tdelay+twidth alors H(t,tdelay+twidth) passe à 1 et !H(t,tdelay+twidth) passe à 0.

Les outils Courbe et Loi Graphique, expliqués :

proprietecourbe

Nom (Courbe) : C’est automatiquement celui du fichier .crb. Il ne peut pas être modifié !
Sortie : Il est conseillé de compléter le champ alias sinon on y perd en lisibilité
Fichier courbe : Un fichier .crb, respectant la syntaxe et judicieusement placé dans le même dossier que le fichier Sinusphy.

proprieteloigraphique

Nom (Loi Graphique) : Champ modifiable. S’il est vide, ce sera celui du fichier .crb utilisé.
Entrées/Sorties : Par défaut, il n’y a qu’une sortie. On peut y ajouter ses dérivées en cochant sur Première et/ou Seconde (exemple : si le fichier .crb définit la position, on obtient directement la vitesse et l’accélération). Il est donc recommandé de compléter les champs alias.
Fichier courbe : Un fichier .crb, respectant la syntaxe et judicieusement placé dans le même dossier que le fichier Sinusphy.

_3-teststimuli-fichierscrb

 

Quelques explications sur le format courbe .crb (lisible par tout éditeur de texte car c’est un simple fichier texte au standard de codage ANSI, classique sous Windows) :

Sinusphy intègre un outil nommé Editeur de courbes issu des logiciels de la même société : Mecaplan SW, Meca 3D...
Il est ainsi possible de définir graphiquement des signaux non périodiques ou périodiques.
Mais deux autres possibilités existent :

  • L’enregistrement d’une courbe obtenue lors d’une simulation précédente
  • La modification d’un fichier .crb existant à l’aide de tout éditeur de textes
explication_format_crb

Que ce soit avec l’éditeur de courbes ou à l’aide d’un éditeur de textes, il est ainsi possible de créer toutes formes de signaux (périodiques ou non) pour simuler des variations d’une consigne ou de l’état d’un capteur en se passant de toute mise en équation.