Probleme concernant calcul dans automate TSX 5722

Forum traitant des automates industriels de marque Schneider - Telemecanique
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Probleme concernant calcul dans automate TSX 5722

Message par andala »

bonjour,
je souhaite avoir un calcule avec une virgule afin d’être précis dans mon résultat j'ecris donc
donnée :
%MW200=6500 (Est modifier par un magelis)

|--------------------------------------------------------------------------------------------------------------[%MW100:=26666]---|
|------------------------------------------------------------------------------------[%MF0:=INT_TO_REAL(%MW100/10000)]---|
|-------------------------------------------------------------------------[%MW120:=REAL_TO_INT(%MF0*(%MW200-1000))]---|

Ce que je souhaite faire c'est avoir une valeur precise du calcul suivant :
a = 10 000 / 3600
b = 6500
c = (b - 1000) x a

Mais la programmation réalisé ne fonctionne pas.
pouvez-vous "pointer" mon erreur ?
merci cordialement
Modifié en dernier par andala le 05 févr. 2025, 11:43, modifié 3 fois.
Une bonne action en entraine toujours une autre
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Probleme concernant calcul dans automate TSX 5722

Message par Cyril93 »

Salut,

Tu convertis REAL en INT donc forcément il y a arrondi à l'entier le plus proche (au revoir la virgule :? )
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Probleme concernant calcul dans automate TSX 5722

Message par andala »

mon probleme ne vien pas du fait que je n'ai plus la virgule mais que PL7 refuse la syntaxe
Une bonne action en entraine toujours une autre
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Probleme concernant calcul dans automate TSX 5722

Message par Cyril93 »

j'imagine que %MW200 est un INT donc oui tu mélanges les types dans ta formule

déclarer
a,b,c : REAL;

a := 10000.0/3600.0;
b := int_to_real(%MW200);
c := (b - 1000.0) * a;

Ou bien resultat:=(int_to_real(%MW200)-1000.0) * (10000.0/3600.0); avec resultat en REAL bien sur pour la virgule
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Probleme concernant calcul dans automate TSX 5722

Message par andala »

suivant tes instructions, j'ai mis en oeuvre tout sa mais sa ne fonctionne pas
avec ma calculatrice je trouve environ 1800 mais lui il trouve 0
explication please ? :?
Nouveau Image bitmap.JPG
Une bonne action en entraine toujours une autre
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Probleme concernant calcul dans automate TSX 5722

Message par Cyril93 »

Jolie le chevauchement ;)

les flottants ont une longueur de 32bit

%MF190 contient %MW190 et %MW191 donc pour ne pas recouvrir il faut se servir des %MF de deux en deux %MF190, %MF192, %MF194 ils ne doivent pas être utilisés en %MD et %MW aussi. On dit que les zones mémoire se recouvrent les unes avec les autres sauf pour les bit (%M0) eux ils sont à part.
Avatar du membre
andala
Créateur de langage
Créateur de langage
Messages : 505
Enregistré le : 19 déc. 2016, 10:24
Localisation : Atlantide

Re: Probleme concernant calcul dans automate TSX 5722

Message par andala »

Merci beaucoup; j'ignorai qu'ils utilisaient les mot pour les flottants
Une bonne action en entraine toujours une autre
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Probleme concernant calcul dans automate TSX 5722

Message par Cyril93 »

Oui et tu peux pas l'inventer :)

tu aurais pu aussi écrire dans un unique bloc OPERATE
%MF192:=(INT_TO_REAL(%MW200)-1000.0) * (10000.0/3600.0)

mais là tu n'aurais pas appris les règles d'adressage de la mémoire dans PL7
Adwonaa
Apprend le binaire
Apprend le binaire
Messages : 9
Enregistré le : 21 déc. 2016, 09:48

Re: Probleme concernant calcul dans automate TSX 5722

Message par Adwonaa »

Bonjour,

Pour t'éviter de faire des chevauchements, il existe une option sur pl7-pro.

Option > Éditeur variables > coche Chevauchement
Image

Ça te permettra de voir les variables en rouge dans l'éditeur de variable si elles sont déjà utilisées dans un autre type de variable.

Exemple :

Ici j'utilise %MF0 dans mon programme : Image

Et bien si je vais dans les Mots par exemple je vois ceci : Image

En espérant que cela puisse t'être utile.
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: Probleme concernant calcul dans automate TSX 5722

Message par Cyril93 »

Salut Adwonaa,

Superbe astuce j'avoue je ne connaissais même pas cette option, très pratique en tout cas.
Répondre