Page 1 sur 2

Affichage IHM

Posté : 15 oct. 2021, 08:20
par tomjea
Bonjour à tous,

J'ai un projet où je dois afficher une vitesse de rotation d'un moteur en pourcent (jusque là aucune problème pour moi) ce que je souhaite c'est d'afficher la vitesse de rotation en pourcent MAIS qu'elle s'affiche en arrondi tout les 5% donc par exemple : 10% vitesse max ou 85% vitesse max. Avez vous une idée de comment faire ?

Ensuite second problème plus simple à résoudre je pense, je souhaite afficher le nom d'une recette via un affichage de chaîne, j'ai donc créer une variable pour mais je ne sais pas où l'entrer pour qu'elle affiche le nom que je donnerai à ma recette

J'utilise les logiciels vijeo et machine expert controle

Je vous remercie d'avance :lol:

Re: Affichage IHM

Posté : 15 oct. 2021, 09:35
par itasoft
slts,
pour le nom
STRING_NOM.write(_RecipeControlDefault.RecipeLabel.getStringValue());
pour le % pas compris

Re: Affichage IHM

Posté : 15 oct. 2021, 09:38
par philou77
Salut !

Une simple division modulo 5 de ta valeur affichera cette valeur tous les 5 ….

Re: Affichage IHM

Posté : 15 oct. 2021, 09:41
par itasoft
slts,
OK
j'avais compris arrondir à +/- 5%

Re: Affichage IHM

Posté : 15 oct. 2021, 09:56
par tomjea
D'accord
je vous remercie

Re: Affichage IHM

Posté : 15 oct. 2021, 10:14
par AC23
Si j'ai bien compris l'histoire des 5 %. c'est plutôt une mise à l'échelle de l'entrée mais avec des pas de 5 %, avec une limite haute et basse (je ne suis pas sûr d'avoir bien compris la dernière partie).

J'ai fait donc un FB :

Code : Tout sélectionner

FUNCTION_BLOCK Mise_A_Echel_5_perc
VAR_INPUT
	INPUT: REAL;
	max_input: REAL;
	Limite_haute : INT;
	Limite_basse : INT;
END_VAR
VAR_OUTPUT
	percentl_value: INT;
END_VAR
VAR
	result_inter : INT;
END_VAR

result_inter := REAL_TO_INT(INPUT/max_input*100/5)*5;

IF result_inter < Limite_basse THEN
	percentl_value := Limite_basse;
ELSIF result_inter > Limite_haute THEN
	percentl_value := Limite_haute;
ELSE
	percentl_value := result_inter;
END_IF
C'est un FB qui prend comme entrée :
- Ta valeur à convertir (la valeur que tu veux afficher en 5% 10% 15% ....)
- la valeur maximum possible de l'entrée.
- la limite haute de l'affichage (ça c'est ce que j'ai cru comprendre) si ton pourcentage dépasse la limite haute (Exemple : la conversion donne 95 % alors que la limite haute est de 85 %, en sortie tu aura 85 %).
- la limite basse de l'affichage (comme la limite haute).

La sortie:
- le résultat de la conversion, 5, 10, ... 85, 90, 95, 100.

après le reste du code ST est assez simple je pense.

PS un modulo te donne le reste d'une division, un modulo de 5 va te donner donc les résultats suivant 0, 1, 2, 3 ou 4.

Bonne chance

Re: Affichage IHM

Posté : 15 oct. 2021, 10:42
par philou77
Re !

Oups oui, sorry pour le modulo.
La division toute bête d’un entier par 5 fait cela.
Le bornage d’une valeur par vijeo fait le job aussi puisqu’il ne parle que d’affichage (edit - pas sûr que l'on puisse borner un simple affichage...)

Re: Affichage IHM

Posté : 17 oct. 2021, 14:33
par itasoft
Slts,
Si c’est pour sauter par quanta de 5 façon physique quantique :
Ex :
INT_Affichage := INT_Vitesse_de_rotation_en_pourcent / 5*5

Re: Affichage IHM

Posté : 18 oct. 2021, 09:48
par AC23
philou77 a écrit : 15 oct. 2021, 10:42 Re !

Oups oui, sorry pour le modulo.
La division toute bête d’un entier par 5 fait cela.
Le bornage d’une valeur par vijeo fait le job aussi puisqu’il ne parle que d’affichage (edit - pas sûr que l'on puisse borner un simple affichage...)
Ah d'accord, je suis désolé je ne connais pas vijeo. j'ai essayé de faire un FB qui s'applique à toute situation, en partant du principe qu'il est en entré une valeur REAL. (a bien y réfléchir j'aurai du peut-être prévoir une entrée WORD pour une lecture direct de la carte AI, mais cela impliquerait de prévoir un décalage vers la droite suivant le nombre de bits non utilisés...etc).
itasoft a écrit : 17 oct. 2021, 14:33 Slts,
Si c’est pour sauter par quanta de 5 façon physique quantique :
Ex :
INT_Affichage := INT_Vitesse_de_rotation_en_pourcent / 5*5
C'est ce que j'ai fait dans le FB, sauf que j'ai rajouter la partie calcul du "INT_Vitesse_de_rotation_en_percent". avec : "REAL_TO_INT(INPUT/max_input*100)".

Bien cordialement;

Re: Affichage IHM

Posté : 18 oct. 2021, 10:42
par itasoft
slts,
que viennent faire les REAL dans cette affaire ?