Vai al contenuto
PLC Forum


St Testo Strutturato - trasferimento bit digit con testo strutturato


Commander

Messaggi consigliati

Salve a tutti

ho incontrato dei problemi a gestire il trasferimento a bit o a digit (funzioni tipo MOVB o MOVD in ladder)

di variabili (area CIO, A, W) con il testo strutturato, qualcuno sa dirmi se conosce una soluzione.

Grazie

Link al commento
Condividi su altri siti


Immagina di usare in ladder la funzione MOVD per estrapolare da una word

una specifica digit e appoggiarla su un'altra word, una cosa abbastanza comune.

Nel liguaggio ST non ho trovato niente che mi permette di fare questo...

Un saluto e Grazie

Link al commento
Condividi su altri siti

ciao

ho dato un'occhiata ai manuali di Omron

ha prima vista ritengo che non puoi usufruire di tutte le istruzioni disponibili in ladder anche in linguaggio leterale strutturato

per cui ho cercato una soluzione alternativa

esempio banale:

prima di tutto ho creato dei simbolici legati alla sezione in linguaggio testo strutturato

dato_bool_16 -->> come tipo bool array di 16 elementi (legato alla variabile W120.0 per cui essendo un array w120.0 fino a w120.15)

dato_bool_1 -->> come tipo singolo bool variabile w110.0

dato_1 -->> come intero variabile w112 (serve come indice)

poi ho scritto la seguente istruzione

dato_bool_1 := dato_bool_16[dato_1]; (*dato_1 serve come indice per l'array ad esempio se ci metti valore 4 nel dato_bool_1 verra trasferito il valore di del relativo bit della w120)

l'ho provato e funziona

se ti serve il manuale di riferimento fammelo sapere

un saluto

Link al commento
Condividi su altri siti

Ho provato anch'io a trovare una soluzione alternativa

ma penso che quella a matrice che proponi tu sia la più semplice,

senza complicarsi troppo la vita.

Il manuale di riferimento che hai potrebbe essere interessante

Grazie

Saluti

Link al commento
Condividi su altri siti

ciao

nel frattempo ho fatto qualche altro test e funziona anche indicizzando la destinazione

esempio

dato_bool_1[dato_2] := dato_bool_15[dato_1];

penso che in questo modo sia come esguire l'istruzione movb di cui parlavi

scrivendo poi

dato_bool_1[dato_2] := dato_bool_15[dato_1];

dato_bool_1[dato_2+1] := dato_bool_15[dato_1+1];

dato_bool_1[dato_2+2] := dato_bool_15[dato_1+2];

dato_bool_1[dato_2+3] := dato_bool_15[dato_1+3];

potresti trasferire il digit avendo realizzato l'istruzione movd

per il manuale ti consiglio di visitare il sito Omron.it andare al downloads center e mettere la sigla w447 nel motore di ricerca ti potrai scaricare il manuale del linguaggio

un saluto

Link al commento
Condividi su altri siti

Si ho provato ma alla fine è troppo macchinoso

e poi la conversione da BCD>INT non è possibile in ST e visto che la mia variabile sorgente è in BCD

diventerebbe inutile gestire il tutto.

La mia soluzione è stata quella di creare un FB in ladder per gestire questa parte e nidificare al suo interno

un FB in ST; le conclusioni sono che l'utilizzo del linguaggio strutturato o Pascal è ideale per sviluppare complessi calcoli matematici

e gestione di dati o ricette ma diventa macchinoso in particolari situazioni come nel mio caso sopra elencato.

Grazie per la collaborazione

PS

Il manuale è molto ben illustrato.

Link al commento
Condividi su altri siti

ciao

la funzione di conversione bcd to int in effetti è disponibile,

la questione forse è che è un pò macchinoso cercare e capire.

il linuaggio testo strutturato di Omron non è ancora al massimo delle potenzialità (aspettiamo nuove versioni?)

comunque la funzione si scrive cosi

dato_12 :=WORD_BCD_TO_INT(dato_10);

dove il dato_12 è dichirato come int mentre il dato_10 è dichiarato come uint_bcd

se guardi nel sommario dell'. del cx programmer trovi una sezione dedicata al linguaggio structured text con

un sotto capitolo dedicato alle funzioni di conversione disponibili

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