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