Lucos68 Inserito: 19 dicembre 2014 Segnala Inserito: 19 dicembre 2014 Ciao a tutti, PLC 1214C CM1241 (RS232) TIA Portal V12 SP1 Devo inviare una stringa composta da una serie di caratteri speciali che leggo da un DB. I caratteri sono: ASCII=(CTRL+A) o (SOH); DEC=1; HEX=01 ASCII=('G'); DEC=71; HEX=47 ASCII=(CTRL+B o (STX); DEC=2; HEX=02 ASCII=(CTRL+C) o (ETX); DEC=3; HEX=03 ASCII=(CTRL+M) o (CR); DEC=13; HEX=0D Non riesco in nessun modo a comporre la stringa corretta Grazie
Giuseppe Signorella Inserita: 19 dicembre 2014 Segnala Inserita: 19 dicembre 2014 (modificato) Le stringhe non sono altro che degli array di byte Infatti se in un DB ti crei una stringa, puoi accedere hai singoli byte che formano la stringa. Creati un DB con indirizzamento assoluto (quindi non ottimizzato). All'interno del DB ti definisci una variabile di tipo stringa con la lunghezza da te definita,(esempio "dati_TX[4]" ) e poi trasferisci con l'istruzione MOVE nella stringa i singoli caratteri ascii, ognuno all'interno della posizione che serve a te per comporre la tua stringa. Per non crearti istruzioni ripetitive, ti consiglio di crearti un LOOP che incrementi di una unità fino al raggiungimento della lunghezza della stringa , utilizzando l'indice del''array. Fai però attenzione a non mandare in stop la CPU Non solo, il TIA portal mette a disposizione anche alcuni strumenti molto utili per lavorare con le stringhe, come ad esempio l'istruzione CONCAT che serve a raggruppare più stringe secondo le tue esigenze, oppure l'istruzione INSERT che inserisce all'interno di una stringa uno o più caratteri. Insomma a te la scelta su come crearti la tua stringa. Visto che comunque utilizzi un modulo CM1241 (RS232), puoi trasferire i dati sulla seriale anche in esadecimale creandoti sempre un array. (in tal modo fai fare meno lavoro alla CPU) Buon lavoro Modificato: 19 dicembre 2014 da Giuseppe Signorella
Lucos68 Inserita: 22 dicembre 2014 Autore Segnala Inserita: 22 dicembre 2014 Grazie Giuseppe, il mio problema è proprio quello di "scrivere" i caratteri ASCII speciali; se riesco a scriverli come byte, poi TIA portal non mi lascia manipolare la stringa dichiarata perchè mi dice che il tipo di dati non è corretto. Inoltre alcune istruzioni con le stringhe mi chiedono di inputare indirizzi simbolici che non posso fare con un DB con indirizzamento assoluto. Nel frattempo ho risolto così: Ho creato un DB con indirizzamento ottimizzato con tante variabili String quanti sono i caratteri speciali da iiserire nell stringa da trasmettere. Variabili String con lunghezza non definita e ritentive. In OB 100, per sicurezza e per non ripeterlo inutilmente ma solamente all'accensione, ho usato l'istruzione S_CONV (Char to String) per trasferire il valore decimale del carattere speciale alla Stringa corrispondente. Ho usato CONCAT per formare la stringa risultante che poi trasmetto.
Giuseppe Signorella Inserita: 22 dicembre 2014 Segnala Inserita: 22 dicembre 2014 Secondo me ti stai solo complicando la vita. Utilizzando il metodo che ti ho descritto sopra, e cioè utilizzando l'istruzione move, puoi trasferire i singoli caratteri in formato chars all'interno della variabile stringa. Poi la variabile che stringa era e stringa resta, la puoi utilizzare all'interno del programma senza alcun problema. Dai un'occhiata all'immagine allegata. Poi se ho compreso male io ciò che vuoi fare, be all'ora spiegati meglio. Ciao
del_user_155042 Inserita: 22 dicembre 2014 Segnala Inserita: 22 dicembre 2014 Giuseppe , sei Mirko Ceronti dei PLC .. Complimenti .!
Lucos68 Inserita: 20 gennaio 2015 Autore Segnala Inserita: 20 gennaio 2015 Ok Giuseppe, effettivamente la tua soluzione è ottima, grazie mille! Nell'ottica del "grammaticamente corretto" però non sarebbe più giusto e "facilmente comprensibile" ai più una soluzione come la mia? Nel senso che se il tutto deve essere dato "in pasto" ad un cliente o usato didatticamente o semplicemente ripreso dopo un lungo periodo, non sarebbe più di facile comprensione? Non è una critica, non fraintendermi, sono autodidatta con una base tecnica e voglio solo cercare di migliorarmi grazie ai consigli di chi ne sa di più. Ciao
Giuseppe Signorella Inserita: 20 gennaio 2015 Segnala Inserita: 20 gennaio 2015 In programmazione ognuno programma come meglio crede/riesce. Lo stesso programma, 10 programmatori differenti lo farebbero in 10 modi differenti. Non c'è una vera e propria regola in merito. L'importante che funziona, e funziona bene. Però esistono alcuni concetti fondamentali da rispettare. Fondamentali per effettuare una buona programmazione. Ne cito solo alcune. 1) Il programma deve essere il più semplice possibile. 2) deve essere il più corto possibile. 3) Deve essere il essere il più comprensibile possibile. Quindi meno istruzioni utilizzi e meglio è. Per tutto il resto...............ci sono i commenti.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora