WORD ou INT ?
- Béryl
- Mi homme - Mi automate
- Messages : 1683
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
WORD ou INT ?
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...
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...
Re: WORD ou INT ?
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é.
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é.
Re: WORD ou INT ?
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.
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.
-
- Mi homme - Mi automate
- Messages : 2087
- Enregistré le : 21 oct. 2015, 10:00
- Localisation : Ile de France
Re: WORD ou INT ?
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...
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 !
Re: WORD ou INT ?
Béryl j'ai essayé sur STEP7 V5.5 et c'est bien ça
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
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
- Béryl
- Mi homme - Mi automate
- Messages : 1683
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Re: WORD ou INT ?
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
/mode troll off
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
/mode troll off
Re: WORD ou INT ?
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é 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.
Moi perso la case est toujours decoché 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.
- Béryl
- Mi homme - Mi automate
- Messages : 1683
- Enregistré le : 20 oct. 2015, 12:00
- Localisation : localhost
Re: WORD ou INT ?
C'est une solution, en effet, mais ça utilise une variable de plus...Cyril93 a écrit :Et bien il faut utiliser la sortie DEZ et une conversion BCD TO INT pour ne pas décocher l'option.
-
- Première mise en service
- Messages : 51
- Enregistré le : 20 oct. 2015, 15:30
- Localisation : Toulouse
Re: WORD ou INT ?
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
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
- djé
- Dieu du process
- Messages : 806
- Enregistré le : 20 oct. 2015, 09:55
- Localisation : Bretagne, Pays de la Loire, Nantes
Re: WORD ou INT ?
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=
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 ...
Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...