Vai al contenuto
PLC Forum


Convertire Stringa In Array Di Word


alessandro

Messaggi consigliati

ciao a tutti

sto testando un pannello weintek serie i collegato a un s7-1200

come da manuale weintek il pannello non visualizza le strighe ma solo array di word

come faccio a convertire le stringhe che ho nel programma del 1200 ???

ho trovato la funzione string to array of char, ma word è possibile ??

Modificato: da alessandro
Link al commento
Condividi su altri siti


Prima di tutto bisognerebbe vedere se questa visualizzazione di stringhe è veramente necessaria oppure no.

Dico questo perché, nella maggior parte dei casi, per visualizzare messaggi su pannelli operatore si creano delle liste di messaggi nel pannello operatore stesso, e poi basta impostare nel PLC un numero per visualizzare il messaggio corrispondente.

Io non conosco weintek ma, questa funzione, gestita in modo leggermente diverso secondo la marca, io l'ho sempre trovata.

Se poi hai veramente la necessità di visualizzare sul pannello operatore stringhe gestite nel PLC, non credo ci siano problemi, visto che 2 CHAR corrispondono ad 1 WORD.

Al massimo, se il pannello non permette di fare cose un po' più evolute, dovrai mettere in fila tutte le word, ognuna delle quali conterrà due caratteri.

Link al commento
Condividi su altri siti

  • 2 weeks later...

grazie della risposta

la visualizzazione è necessaria

ho riscritto parte del programma e ho sostituito le stringhe in array di word

se in un array all'interno del testo volessi inserire il valore di una variabile, come posso fare??

ho provato a convertire una variabile dint in word ma il risultato penso me lo dia in esadecimale

Link al commento
Condividi su altri siti

se in un array all'interno del testo volessi inserire il valore di una variabile, come posso fare??

Se il valore della variabile lo vuoi proprio integrare nel testo, devi convertire le cifre 0-9 e il punto decimale nei corrispondenti caratteri, con codifica ASCII.

Per fare un esempio, il valore 1234.5 deve essere convertito nella stringa "1234.5", ovvero 31 32 33 34 2E 35 (in esadecimale).

Probabilmente ti conviene creare un testo con un numero di spazi vuoti nel posto dove vuoi visualizzare il valore e, in quel punto, sovrapporre la variabile in formato decimale.

Link al commento
Condividi su altri siti

E' proprio quello che non riesco a fare.

ho una variabile dint (che varia da 0 a 90)

ho un db con un array di word (nr 10 word) con un messaggio preimpostato, esempio 'temperatura ':

word[0] = 'ET'

word[1] = 'PM'

word[2] = 'RE'

word[3] = 'TA'

word[4] = 'RU'

word[5] = '$00A'

word[6] = '$00$00'

word[7] =

word[8] =

converto la variabile dint in word

e poi copio la word ottenuta nella word[8] dell'array

ma facendo così mi copia il valore esadecimale e non il valore decimale

Link al commento
Condividi su altri siti

converto la variabile dint in word

e poi copio la word ottenuta nella word[8] dell'array

Questo non è quello che tio ho suggerito nel precedente post.

Convertire una DINT in WORD non serve a nulla.

Devi prendere ogni singola cifra decimale e convertirla nel codice ASCII corrispondente:

"0" = 48 = 30 Hex

"1" = 49 = 31 Hex

"2" = 50 = 32 Hex

...

...

"9" = 57 = 39 Hex

"." = 46 = 2E Hex

Per ogni digit ti serve un byte.

Se devi visualizzare "1234.5" ti servono 6 byte.

A me sembra strano che non ci sia un sistema più semplice per visualizzare testi e numeri.

Non ho ancora capito perché queste stringhe debbano per forza essere gestite nel PLC.

Se è un limite del pannello operatore, forse era meglio spendere un po' di più per il pannello operatore e risparmiare ore di sviluppo software.

E, comunque, come suggerito nel post #4, se devi visualizzare: "Temperatura = 10 °C", potresti fare una stringa "Temperatura = .... °C" e sovrapporre a questa stringa la variabile contenente il valore 10, senza conversione alcuna.

Link al commento
Condividi su altri siti

grazie per i suggerimenti batta

ho capito che convertire in word non serve

purtoppo il pannello è questo e mi sto accorgendo che ha molte limitazioni

una di queste è proprio l'impossibilità di leggere le stringhe

ho risolto così

converto la variabile in una stringa con il comando VAL_STRG

poi copio le cifre della stringa che mi interessano all'interno dell'array di word del messaggio

con il comando poke_blk

Link al commento
Condividi su altri siti

Non avevo mai usato la funzione VAL_STRG e, devo dire, è molto comoda.

Per quanto riguarda poi la gestione di queste stringhe, secondo me, nel PLC le potresti trattare come STRING, e non come array di variabili.

Così facendo potresti evitare di usare l'istruzione POKE_BLK, e scrivere il valore direttamente nel punto desiderato della variabile STRING usando solo VAL_STRG.

Per quanto riguarda il pannello operatore poi, ti basta tenere presente che una variabile STRING di diverso da un array di variabili ha solo che i primi due byte contengono rispettivamente la lunghezza massima e la lunghezza reale della stringa.

Dovrebbe quindi essere sufficiente configurare le variabili del pannello operatore come array di word (o di char, se possibile), spostando l'indirizzo di inizio dell'array avanti di due byte rispetto l'indirizzo di inizio della stringa.

Io continuo però a considerare strano questo dover lavorare con le stringhe. A meno ché non si tratti di un pannello estremamente economico.

Link al commento
Condividi su altri siti

  • 3 months later...

Ciao a tutti

Il pannelllo weintek ha la funzione lista di segnalazioni in modo che gli passi un numero e lui ti fa apparire la scritta che ti serve , certo che sapere di che pannello stiamo prlando aiuterebbe ,immagino che t u stia usando EB8000 per la programmazione , puoi definire una libreria label , in varie lingue , poi usando una word per il numero di allarme fare apparire il testo desiderato.

spero di esserti stato utile

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...