Page 1 sur 2
convertion String en Word (et inversement) sous TIA V14
Posté : 09 nov. 2017, 14:29
par neonavy
Bonjour,
J'ai une chaine de caractère (String [24]) que je cherche à convertir en Word ou en DWord (sur TIA V14) pour les stocker sur une puce RFID (qui n'accepte que les octets => je sais extraire chaque octet d'un Word mais ça ne marche pas sur un String!), connaitriez vous la "formule magic" qui m'autoriserait une telle opération?
Merci d'avance.
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 09 nov. 2017, 15:06
par djé
Salut,
il existe une fonction sous S7 (FC38-STRNG_I) dans la bibliothèque "stdlibs\iec", j'imagine quelle doit exister sous TIA dans une forme ou une autre.
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 09 nov. 2017, 16:35
par neonavy
Merci pour votre réponse (rapide),
De votre piste de recherche j'ai trouvé les fonctions STRG_VAL et VAL_STRG (mais elles suppriment les lettres), ATH et HTA (mais elles n'acceptent pas les lettres audelà du F), et S_CONV (mais elle n'accepte que les chiffres)!... ;-(
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 09 nov. 2017, 16:51
par djé
neonavy a écrit : ↑09 nov. 2017, 14:29
J'ai une chaine de caractère (String [24]) que je cherche à convertir en Word ou en DWord (sur TIA V14)
Que cherches tu à faire exactement? Quel est le probleme?
Essaye de travailler en CHAR sinon.
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 09 nov. 2017, 17:30
par neonavy
djé a écrit : ↑09 nov. 2017, 16:51
Que cherches tu à faire exactement? Quel est le probleme?
Essaye de travailler en CHAR sinon.
Mon problème est de pouvoir enregistrer un String[24] en octets (car la fonction gérant le RFID n'accepte que des bytes) hors si j'essaie de faire un MOVE de mon "String[24].%B1" vers mon "Array of Byte[1]" le TIA me le refuse! A noter que le String est un mot composé de lettres et de chiffres.
(j'ai simplifié lpour dire que je vise l'octet 1 de mon "Array [0..1999] of Byte")
Pour les CHAR le problème est le même car ce sont les mêmes fonctions qui sont utilisées (avec donc les mêmes problèmes au final).
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 09 nov. 2017, 17:45
par dehell
Bonjour,
Sur quel automate?
Sur les S7-1200 et S7-1500 il existe des instructions toutes faites (dans les 2 sens).
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 09 nov. 2017, 17:45
par itasoft
slts,
comment tu écris sur ta puce RFID ? via une COM ?
Le RFID il attends une suite d’octets codés ASCII , une chaîne de caractères c’est une suite d’octets codés ASCII donc il faut envoyer ton String directement sur le RFID via une communication du type Texte .
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 10 nov. 2017, 10:04
par neonavy
itasoft a écrit : ↑09 nov. 2017, 17:45
slts,
comment tu écris sur ta puce RFID ? via une COM ?
Le RFID il attends une suite d’octets codés ASCII , une chaîne de caractères c’est une suite d’octets codés ASCII donc il faut envoyer ton String directement sur le RFID via une communication du type Texte .
Utilisant un lecteur IOLink et n'y connaissant rien, je suis parti de l'exemple fournit par SIEMENS (
https://support.industry.siemens.com/cs ... 0&lc=fr-WW ) que j'essaye de faire coller à mon besoin.
dehell a écrit : ↑09 nov. 2017, 17:45
Bonjour,
Sur quel automate?
Sur les S7-1200 et S7-1500 il existe des instructions toutes faites (dans les 2 sens).
Je suis sur S7-1500, mais mon but n'est pas de transformer du String en Char (ou l'inverse), mon but c'est de transformer du String (ou du Char) en une succession d'octets et de faire l'opération inverse.
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 10 nov. 2017, 10:39
par djé
neonavy a écrit : ↑10 nov. 2017, 10:04
Je suis sur S7-1500, mais mon but n'est pas de transformer du String en Char (ou l'inverse), mon but c'est de transformer du String (ou du Char) en une succession d'octets et de faire l'opération inverse.
Salut,
Ce qu'il faut comprendre c'est que un STRING, CHAR, WORD, INT peut importe le type c'est avant tout une valeur binaire qui ne elle ne change pas; c'est l'interprétation (représentation dans le type) que tu en fais qui change.
Un chaine de cararctère n'est n'y plus n'y moins qu'une succession d'octet. De même un tableau de caractère.
Re: convertion String en Word (et inversement) sous TIA V14
Posté : 10 nov. 2017, 10:49
par djé
Si on prend les valeurs binaires des 4 octests successifs de DB1.DBB0 à DBB3:
DB1.DBB0 BIN 2#0000_1100
DB1.DBB1 BIN 2#0110_0001
DB1.DBB2 BIN 2#0110_0010
DB1.DBB3 BIN 2#0110_0011
Voila ce que cela donne pour un double mot par exemple:
DB1.DBD0 en HEXA : DW#16#0C616263
DB1.DBD0 en DEC : L#207708771
DB1.DBD0 en REAL: 1.736298e-031
et pour chaque octet:
DB1.DBB0 en CARACTERE '$p'
DB1.DBB1 en CARACTERE 'a'
DB1.DBB2 en CARACTERE 'b'
DB1.DBB3 en CARACTERE 'c'
DB1.DBB0 en DEC : 12
DB1.DBB1 en DEC : 97
DB1.DBB2 en DEC : 98
DB1.DBB3 en DEC : 99
DB1.DBB0 en HEXA: B#16#0C
DB1.DBB1 en HEXA: B#16#61
DB1.DBB2 en HEXA: B#16#62
DB1.DBB3 en HEXA: B#16#63