affichage liste defaut - Unity

Forum traitant des automates industriels de marque Schneider - Telemecanique
md42
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 116
Enregistré le : 22 mars 2016, 08:54

affichage liste defaut - Unity

Message par md42 »

Bonjour à tous,

Mon M340 communique en canopen avec une radiocommande.
Pour afficher des messages de défaut de la machine sur la radiocommande, le fabriquant utilise une variable de type Byte.
Pour afficher le défaut N°1 le Byte vaut 1, pour afficher le défaut N°2 le Byte vaut 2, etc... jusqu'à 255

Le problème est que si j'ai 2 défauts simultanés, ex le défaut 1 + le défaut 2, alors mon Byte vaut 3 (2 + 1) et l'afficheur de la radiocommande indique le défaut N°3 au lieu du défaut 1 + 2.

Pouvez vous m'aider à résoudre ce problème.
Merci. :D
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2085
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: affichage liste defaut - Unity

Message par philou77 »

Salut !

Il suffit d'envoyer les défauts 1 par 1, de manière cyclique...
par exemple toutes les 5 secondes, on envoie un défaut...
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
md42
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 116
Enregistré le : 22 mars 2016, 08:54

Re: affichage liste defaut - Unity

Message par md42 »

As tu un petit exemple pour réaliser cela?
Merci
Avatar du membre
itasoft
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 7162
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

Re: affichage liste defaut - Unity

Message par itasoft »

philou77 a écrit : 28 mai 2021, 14:53 Salut !
Il suffit d'envoyer les défauts 1 par 1, de manière cyclique...
par exemple toutes les 5 secondes, on envoie un défaut...
----------
oui je ferais via un FIFO
Automaticien privé (de tout)
itasoft@free.fr
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2085
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: affichage liste defaut - Unity

Message par philou77 »

Re !

en général, mes défauts sont dans des bits de mots...
l'idée est de parcourir les bits de mots 1 par 1 afin de savoir si il y en a à 1
auquel cas, on affiche son numéro...

Le parcours se fait sans faire de boucle, pour ne pas pénaliser le temps de cycle.
il faudra autant de cycles automate que de défauts pour les parcourir tous...
et autant de fois la tempo que de défauts à 1 pour les afficher..

si init= 0 -> initialiser un compteur à 1
si init= 0 -> charger le mot de défaut 0 dans mot test
si init= 0 -> init =1
si AffichageDéfaut = 0 - > si bit 0 du Mot Test = 1 -> SET AffichageDéfaut
Si Affichage défaut = 1 -> Charger Compteur dans Byte défaut
Si Affichage défaut = 1 - > Lancer Tempo
Si Tempo Finie -> RessetAffichageDéfaut
Si Affichage défaut = 0 -> décalage de 1 position vers la droite du mot test ..
Si Affichage défaut = 0 -> incrémenter le compteur de 1

si le compteur est =17 -> charger le mot 1 dans le mot de test
si le compteur est =33 -> charger le mot 2 dans le mot de test
etc..
si compteur > nombre de défauts - > init = 0


Ce n'est qu'un principe bien sûr, facile a faire en ladder, dans n'importe quel automate...

autre solution suggérée par Itasoft
1 - parcourir tous les défaut en une boucle -> renseigner une pile FIFO des numéros de défauts actif -> Charger 0 dans byte de défaut
2 - dépiler la pile 1 par 1 tous les x secondes (charger la valeur dans byte de défaut) si elle contient des éléments.
3 - une fois la pile vide, recommencer au point 1

elle a l'avantage d'avoir tous les défauts actifs de suite et de connaitre leur nombre
elle a l'inconvénient de ralentir de temps de cycle de l'automate
Modifié en dernier par philou77 le 28 mai 2021, 16:11, modifié 2 fois.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
md42
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 116
Enregistré le : 22 mars 2016, 08:54

Re: affichage liste defaut - Unity

Message par md42 »

allez je vais essayé ta méthode.
Merci
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2085
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: affichage liste defaut - Unity

Message par philou77 »

je viens d'updater mon post
et bien sûr il y a plein d'autres méthodes (toutes meilleures les unes que les autres, ou mieux adaptées à un environnement donné)
Modifié en dernier par philou77 le 08 juin 2021, 11:07, modifié 2 fois.
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
DurandO
Maître du binaire
Maître du binaire
Messages : 403
Enregistré le : 21 mars 2021, 15:31

Re: affichage liste defaut - Unity

Message par DurandO »

Bonjour,
autre solution suggérée par Itasoft
1 - parcourir tous les défaut en une boucle -> renseigner une pile FIFO des numéros de défauts actif -> Charger 0 dans byte de défaut
2 - dépiler la pile 1 par 1 tous les x secondes (charger la valeur dans byte de défaut) si elle contient des éléments.
3 - une fois la pile vide, recommencer au point 1

elle a l'avantage d'avoir tous les défauts actifs de suite et de connaitre leur nombre
elle a l'inconvénient de ralentir de temps de cycle de l'automate
C'est à peu près ainsi que j'aurai fait également la méthode est bonne.

Cependant, tout dépend de ce que veut faire
Md42
. Je comprends qu'il souhaite afficher le défaut à son apparition. Sinon, il aurait fallu un bit associé indiquant l'état du défaut en même temps que le n°.

Ses défauts se trouvant dans des bits de mots (c'est ainsi que le bon sens nous incite à faire), plutôt que de se palucher tous les bits un par un, il est préférable de tester les mots de défaut et mieux encore détecter l'apparition de défaut dans ces mots.
Ainsi si pas de nouveau défaut dans le premier mot, on passe au suivant (sans tester les bits inutilement).
Pour détecter l'apparition de défaut:
Faire les opérations suivantes :
1) Mx := Mot_Défaut et (Complément à 1 de Mot_antérieur)
2) Si Mx <> 0, des défauts sont apparus.
3) Il suffit alors d'initialiser notre index de bit à 0, scruter les 16 bits de MX.
Pour chaque bit à 1, on stock en FIFO le numéro de défaut
4) On met à jour le mot antérieur.
On procède de la même manière pour le mot de défaut suivant index numéro défaut commençant à 16.


Cette technique a l'intérêt d’alléger le traitement en l'absence de défaut : ce qui sur une installation en bonne santé est plutôt courant!
md42
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 116
Enregistré le : 22 mars 2016, 08:54

Re: affichage liste defaut - Unity

Message par md42 »

Pour le moment je n'ai que 10 défauts donc 1 mot me suffit.
Cependant je n'arrive pas à faire ce code.
Qqun peut m'aider SVP?
DurandO
Maître du binaire
Maître du binaire
Messages : 403
Enregistré le : 21 mars 2021, 15:31

Re: affichage liste defaut - Unity

Message par DurandO »

Bonjour,
par exemple :
La comparaison activant defpres (defaut present ) étant : [ (MotDef and %MW2) >0 ]
%MW2 est un masque qui prend le valeur 1, 2, 4, etc... permettant de masquer en ayant le bit 0, 1, 2, etc....
Fichiers joints
Prog2.png
Prog1.png
var.png
Répondre