Vai al contenuto
PLC Forum


Esa Codesys: Elaborare Stringa Ascii In Arrivo Da Modulo Ip


odx

Messaggi consigliati

Devo utilizzare i nuovi pannelli ESA Crew con modulo I/O integrato e plc integrato in codesys.

Il mio problema è quello di leggere un valore ASCII da un modulo remoto, del tipo ABC1234567, dal quale devo estrapolare il solo valore numerico, per poi compararlo in un range.

Premesso che compararlo non è un problema, come faccio a estrarre la parte numerica da una stringa ASCII ? Esiste un comando ?
So che lo troverei cercando a fondo nei manuali, ma sono a corto di tempo :( e magari qualcuno conosce le due righe di codice.

Grazie

Link al commento
Condividi su altri siti

  • 4 weeks later...

111 visitatori e zero risposte ... siccome devo ancora decidere se prendere il lavoro o meno, provo a riformulare la domanda, rendendola più generica:

utilizzando Codesys ( purtroppo non l'ho ancora usato bene e non conosco le sue potenzialità ), posso recuperare un dato numerico da una stringa ASCII, semplicemente rimuovendo le lettere ?

Link al commento
Condividi su altri siti

ma chiamare quelli della ESA e cheiderlo a loro , visto che devi prendere i loro panneli , invece di aspettare quelli del plcforum e magari rischiare di perdere il lavoro ? No eh ?

Di solito con un linguaggio o sistema di programmazione puoi fare anche di piu , si tratta di studiare i manuali o fare un corso

Modificato: da walterword
Link al commento
Condividi su altri siti

Il lavoro consisterebbe nel leggere una stringa ASCII da un barcode e fare un confronto di valore.

Se devo inserire 8 ore di lavoro per capire come togliere i numeri dalla stringa ASCII .... diventa troppo costosa la progettazione.

Non è il nostro core business, era un lavoro extra e non posso realizzarlo alla pari o in perdita ( sono un dipendente ok, ma alla fine questa sarebbe la risposta che mi darebbe ... quindi faccio prevenzione ;) ) . Inoltre si tratta di un lavoro a se stante, non realizzabile in serie, e quindi non recupero niente nemmeno a lungo termine.

Ci sono altre ragioni per cui sto cercando di farlo, ma esulano dal discorso ...

Saprei far tutto .. comunicazione, pagine del pannello, confronti ... ma non so, se e come scomporre la stringa .... tutto qua. Ho provato a mandare una mail a Diego B. di Esa ... vediamo che mi risponde. Mi sembrava una cosa semplice per chi usa Codesys quotidianamente .... ci ho provato.

Link al commento
Condividi su altri siti

ciao,

un esempio:

string_test è un stringa di caratteri

carattere è un byte

array di numeri è un array di byte dove vengono depositati i numeri estratti dalla stringa

IF indice < 255 THEN
FOR indice:=0 TO 255 DO
carattere := string_test[indice];
// valori numeri ca 0 a 9 16#30 / 16#39
IF (carattere = 16#30) OR (carattere = 16#31) OR (carattere = 16#32) OR
(carattere = 16#33) OR (carattere = 16#34) OR (carattere = 16#35) OR
(carattere = 16#36) OR (carattere = 16#37) OR (carattere = 16#39) OR
(carattere = 16#39) THEN
array_di_numeri[conta] := carattere;
conta := conta +1;
END_IF
END_FOR
END_IF

saluti da Valvolina

Link al commento
Condividi su altri siti

Grazie :)

In pratica, posso alleggerirlo mettendo al posto di 255 il valore massimo della stringa in arrivo dal mio barcode.

Nel frattempo mi è arrivato un esempio da ESA, che non posso aprire ... in quanto serve Crew 1.5 in uscita domani ^_^.

Settimana prossima provo e inserisco i risultati appena riesco, e se ho successo li posto.

Link al commento
Condividi su altri siti

ciao

si puoi allegerirlo come dici tu,

volevo dirti che nel mio codice c'è un piccolo errore,

ho scritto due volte il valore 16#39, uno dei due va corretto in 16#38 (che manca e quindi non estrarresti il numero 8)

saluti

Valvolina

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...