Vai al contenuto
PLC Forum


Variabili String E Dtl In Tabella Variabili


PinokkioPLC

Messaggi consigliati

Buonasera, ho notato che le variabili di tipo "String" cosi come quelle di tipo "DTL" non possono essere dichiarate nella tabella delle variabili globali, ma necessitano della dichiarazione di un DB dove conservarle, oppure possono essere dichiarate senza problemi in una FB a cui ovviamente è stato associato un DB.

Da principiante/curioso perchè questa cosa?

GRAZIE, ciao.

Link al commento
Condividi su altri siti


Faccio una ipotesi: una String è composta da un tot di byte che contengono caratteri, quindi in "PinokkioPLC" sono almeno 11 caratteri (premetto che nel 1200 le stringhe non ho ancora usate, quindi non mi sono letto nulla), quindi 11 byte (non so se c'è il carattere di fine stringa, altrimenti sono 12); è una variabile un po' grande per essere contenuta in una serie di merker (con variabili globali intendevi i merker ? - Anche un DB globale contiene variabili globali, però ...), senza contare il fatto che si potrebbero facilmente introdurre errori: assegni da MB0 a MB11 alla tua stringa, e poi te ne dimentichi e utilizzi da una altra parte il M10.3 - figurati che accade spesso anche con le dword; anche per questo motivo che di solito i "valori" io non li assegno mai ai merker, ma solo nei DB.

Link al commento
Condividi su altri siti

(con variabili globali intendevi i merker ?

Ciao drugo, intendevo tabella delle variabili globali, cioè come in questa tabella posso dichiarare un DINT a 32 BIT perchè non posso dichiarare anche una variabile String?

Però dopo il tuo msg mi sono andato un pò a leggere delle cose sulla guida dell'S7-1200, e qui come grandezza/BIT della varibile String è riportato "Variabile" dunque il tuo ragionamento fila :) perchè se dovessi dichiarare una String nella tabella delle variabili e subito dopo un INT, se poi la String mi diventa bella grande e mi sconfina negli indirizzi della INT, succede il casino..... dunque siccome String come grandezza può variare, per evitare casini non la fanno proprio mettere nella tabella delle variabili.

Penso che un ragionamento simile si possa allora anche fare per le variabili DTL.

Link al commento
Condividi su altri siti

Giuseppe Signorella

Sia le stringhe che le variabili DTL (DATA_AND_TIME) non sono vere e proprio variabili, ma strutture di dati. (Ipotizziamoli come contenitori che al loro interno contengono più variabili)

Ad esempio la stringa (string) è un array di byte, dove il primo byte contiene la lunghezza massima della stringa, il secondo byte contiene la lunghezza reale della stringa e dal terzo byte in poi i singoli caratteri (char) che compongono la stringa.

Possiamo immaginare (più che immaginare è proprio così) ogni singolo byte della stringa come una singola variabile dove tutte le variabili hanno il medesimo nome e sono identificate univocamente dall'indice dell'array.

Se clicchi sulla variabile di tipo DTL che hai dichiarato nel blocco, vedrai che essa si espande, mostrandoti tutte le altre variabili contenute al suo interno. (Anno, mese, giorno ecc.ecc.)

La tabella delle variabili, è in grado di contenere singole variabili e non strutture di dati, che per quello occorre un DB (Blocco Dati).

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

Perfetto, adesso mi è tutto più chiaro :) , inoltre che la variabile DTL fosse una struttura dati l'avevo capito, in quanto con la funzione "." ho anche utilizzato le sue variabili interne "Ore" "Giorno" etc. però che lo fosse anche la variabile String non lo avevo capito, dunque adesso tutto torna ;)

GRAZIE ad entrambi per l'aiuto/spiegazione.

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