WORD ou INT ?

Forum traitant des automates industriels de marque Siemens.
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1683
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

WORD ou INT ?

Message par Béryl »

Une fois n'est pas coutume, un petit souci sous Step7 :

Je crée un compteur Z1. Je sors sa valeur (DUAL) dans un mot MW0.
Je prend ce mot et je le compare à une constante avec un cmp>=I.
Ca marche.

Maintenant, tout content et travaillant sérieusement, je me décide à commenter mon code.
Un petit tour dans la table des mnémoniques et c'est parti : MW0 déclaré en WORD.
Gag : sur le compteur, impec, sur le bloc compare, erreur de type.
Normal, le cmp_I attend un entier.
Oui, mais pourquoi ça ne pose pas de problème tant que je ne déclare pas implicitement ma variable dans les mnémoniques ?
Changer un WORD en INT ? Euh...

Bref, pour l'instant, ma variable n'est pas documentée, mais ça tourne.
Et ça me plait pas...
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: WORD ou INT ?

Message par Cyril93 »

Bonjour,

Je crois qu'il faut décocher la case "vérification du type de l'opérande"

Tu ouvres un bloc puis onglet outils ensuite paramètres la case est sous CONT/LOG.

Dis moi si cela marche car j'ai pas vérifié.
Avatar du membre
ProfnovA
Créateur de langage
Créateur de langage
Messages : 528
Enregistré le : 21 oct. 2015, 08:21

Re: WORD ou INT ?

Message par ProfnovA »

dans unity les %MW sont les adresses qui pointent vers les variables. Celles-ci peuvent prendre tous les types : int, word, dint, real, etc...
Ainsi un real à comme adresse (de départ) un %MW0, ce qui peut paraitre déroutant pour ceux qui ont pratiqué pl7...
Quand tu mets directement l'adresse, unity se charge de convertir la valeur au type correspondant. Si tu veux un word, il faut préciser word dans ta table des variables en mettant le %MW souhaité.
Les %MW sont des adresses qui permettent d'accéder aux variables de l'extérieur de l'automate si elles doivent l'être (afficheur, supervision, etc...). Pour toutes les variables ne nécessitant pas d'être jointes par l'extérieur (variables intermédiaires, compteurs, etc...), il n'y a pas d'obligation de les adresser.
philou77
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 2085
Enregistré le : 21 oct. 2015, 10:00
Localisation : Ile de France

Re: WORD ou INT ?

Message par philou77 »

Salut !

sur 16 bits
un int est signé et va de -32 768 à 32 767
un word n'est pas signé et va donc de 0 à 65 535
les comparaisons peuvent donc avoir des résultats.. inattendus

même si les deux sont sur 16 bits, c'est leur évaluation qui est différente.
sur un mot signé, dès que le bit 15 est à 1 c'est un nombre négatif (d'où la limitation de plage) !

si je ne me trompe pas...
Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: WORD ou INT ?

Message par Cyril93 »

Béryl j'ai essayé sur STEP7 V5.5 et c'est bien ça :D
décoche la case "vérification du type d'opérande" tu n'auras plus l'erreur sur ton bloc compare. Et utilise seulement la plage de 0 à 32767
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1683
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: WORD ou INT ?

Message par Béryl »

Je confirme, ça bronche plus une fois cette option désactivée.
Merci Cyril93 !
Cela dit, ça me chagrine de devoir me passer d'une sécurité pour ça...

/mode troll on
Heureusement, demain, je retourne sous Unity :P
/mode troll off
Avatar du membre
Cyril93
Maître du binaire
Maître du binaire
Messages : 484
Enregistré le : 29 oct. 2015, 14:22
Localisation : IDF

Re: WORD ou INT ?

Message par Cyril93 »

Et bien il faut utiliser la sortie DEZ et une conversion BCD TO INT pour ne pas décocher l'option.
Moi perso la case est toujours decoché :D et je n'utilise jamais le compteur de base car la valeur max de comptage est 999 j'utilise mon propre FB pour cela avec un mot double et c'est beaucoup mieux.
Avatar du membre
Béryl
Mi homme - Mi automate
Mi homme - Mi automate
Messages : 1683
Enregistré le : 20 oct. 2015, 12:00
Localisation : localhost

Re: WORD ou INT ?

Message par Béryl »

Cyril93 a écrit :Et bien il faut utiliser la sortie DEZ et une conversion BCD TO INT pour ne pas décocher l'option.
C'est une solution, en effet, mais ça utilise une variable de plus...
Pierre3188
Première mise en service
Première mise en service
Messages : 51
Enregistré le : 20 oct. 2015, 15:30
Localisation : Toulouse

Re: WORD ou INT ?

Message par Pierre3188 »

Sinon un front montant avec un simple ADD_I pour incrémenter fonctionne aussi (faire simple c'est compliqué ^^).

A noter que sous TIA Portal les instructions "CMP_I", R ... ont disparus pour laisser la place à ">", "<" plus de notion de type dans le choix de l'instruction cela dépend des entrées affectées au bloc qui doivent être du même type
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 802
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes

Re: WORD ou INT ?

Message par djé »

Salut à tous,

A l'époque sur l'ancien forum j'avais posté une petit test qui résume bien, je crois, le choix de cette option:
http://automatica.clicforum.com/t8893-U ... est.htm?q=
Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
Répondre