Jump to content
PLC Forum


Siemens S7-1200 - Dichiarazione BOOL e INT


EP-Automation
 Share

Recommended Posts

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 to comment
Share on other sites


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 to comment
Share on other sites

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 to comment
Share on other sites

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 to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...