Vai al contenuto
PLC Forum


Siemens S7-1200 - Dichiarazione BOOL e INT


EP-Automation

Messaggi consigliati

EP-Automation

Ciao a tutti! E' da un po' di tempo che giro sul forum e più di una volta mi avete aiutato a togliermi dai pasticci (grazie mille!!!) ma è la prima volta che apro una discussione.

Questa è la mia situazione:

 

Sto lavorando su un S7-1200 e sono obbligato ad utilizzare blocchi di dati non ottimizzati perché devo comunicare con una supervisione esterna. All’interno della mia DB vado a dichiarare una variabile di tipo BOOL ed una variabile di tipo INT. Quando vado a compilare, la prima variabile viene assegnata all’indirizzo 0.0 mentre invece la seconda all’indirizzo 2.0 (andando a “mangiarmi” 2 byte dato che ho dichiarato prima il booleano). Purtroppo non posso modificare l’ordine di dichiarazione delle variabili perché devo rispettare una configurazione che mi è stata data.

Detto questo, io avrei bisogno (se possibile) di fare in modo che il dato booleano non vada a rubarmi 2 byte ma soltanto 1, cioè far in modo che l’unita minima di memoria allocata sia il byte e non la word. È possibile modificare questa impostazione da qualche parte all'interno delle impostazioni del plc oppure avete qualche idea per ovviare al problema?

 

Grazie mille in anticipo a tutti

Link al commento
Condividi su altri siti


No, non è possibile. E risulta anche comodo (e consigliato) dare sempre un indirizzo pari alle variabili Int.
Ma sei sicuro che risparmiare un byte sia così importante?
I tempi in cui era importante (motivo, per esempio, all'origine delle vecchioe date con due sole cifre per l'anno) sono lontani.
Pensa che ci sono anche PLC dove una variabile booleana occupa 32 bit, dove le variabili da 16 bit devono tassativamente partire da indirizzo pari, e quelle a 32 bit devono tassativamente avere indirizzo multiplo di 4.

Link al commento
Condividi su altri siti

EP-Automation

Purtroppo non è un problema di spazio o di risparmio di un byte...

 

L'applicazione andrà installata su una linea pallettizata con la quale mi interfaccio tramite delle memorie RFID.

Leggo un array di byte che vado a "convertire" in una memoria formattata per poter lavorare e aggiungere i miei dati; dopodichè "converto" nuovamente la memoria formatta in un array di byte e riscrivo sulla memoria.

 

Il problema sta nel fatto che chi ha mappato la memoria ha inserito nel primo byte (byte 0) l'identificazione del pallet (che non posso modificare) e dal secondo (byte 1) partono già i dati del pezzo in costruzione...

Link al commento
Condividi su altri siti

EP-Automation

Forse sono riuscito a risolvere, o più che altro ad aggirare il problema...

 

Nel momento in cui vado a copiare la memoria da "array di byte" a "formattata" e viceversa shifto l'array di byte in su e in giù ripetto a quello che mi serve...

Non è proprio una soluzione splendida ma non mi vengono in mente altre strade per andare dietro ad una configurazione chiamiamola...particolare??? 😒

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