Vai al contenuto
PLC Forum


Struttura dati.


Elettro79

Messaggi consigliati

Una volta messo insieme tutto e fatte le prime prove con TIA portal devo iniziare il mio primo programma con S7-300.

Per organizzare le variabili ho cercato un po' di informazioni in merito, ma non ho trovato molto....

Ho trovato che i merker ritentivi sono impostabili sulla config. della CPU e di default sono 16 byte: Da M0.0 a M16.7.

La variabile M0 si può aggangiare a varie frequenze leggendone i vari bit.

Per quanto riguarda le MW dovrebbero essere composte da 2 byte e ciò implica che le word si sovrappongono?

La MW100 se int occupa sia i bit della MW100 che della MW101?

Se DINT 3 byte e 3MW in cascata occupate, è giusto?

 

grazie a chi mi vorrà aiutare.

Link al commento
Condividi su altri siti


Lasciando l'impostazione di default sono ritentivi da m0.0 a m15.7.

Se guardi la guida in linea ti dice che i clock sono 8, hañno diverse frequenze e li puoi attivare nel byte di tua scelta: di default è mb0 (da m0.0 a m0.7). Siccome mb0 è usato dal sistema tu non puoi scriverci ma solo leggere lo stato logico dei sigoli bit.

Le word sono formate da 2 byte.

 Una word prende il numero del  byte indicato con il numero più piccolo che comprende:avrai mw0 (byte0 e 1); mw2 (mb2  e 3). Come vedi non si sovrappongono.

Mw100 comprende 2 byte: mb100  e mb101. Sono 16 bit. Mb101 è a destra (posizione meno significativa) e mb100 a sinistra (posizione piu significativa). Se 16 bit li definisci word puoi scriverci numeri in esadecimale da 0000 a  FFFF. Se li definisci INT puoi scriverci numeri in decimale da -32768 a +32767.

DINT è un dato scritto in 32 bit e può andare da-2 milardi e qualcosa a +2 miliardi e qualcosa.

Md200, ad esempio, è una doppia word (32bit) formata dai byte (letti da sinistra a destra) mb100, mb101,b102 e mb103. Una doppia word è formata da 4 byte e prende il numero del byte indicato con  il nero più piccolo. Se 32 bit li definisci doppiaword (D) puoi scriverci numeri in esadecimale da 0000 a FFFF. Ciao

Link al commento
Condividi su altri siti

Grazie amed, ho capito, ma non mi è ancora tutto chiaro oppure è come avevo capito ma magari mi ero espresso male...

 

Quindi se io uso ma MW0 (MB0+MB1) non posso usare la MW1 (che sarebbe composta da MB1, già usata, e MB2).

Posso usare MW0, MW2, MW4 ecc ecc ?

 

MB0 è uguale ai bit contenuti in M0 (M0.0, m0.1, m0.2...ecc)?

Link al commento
Condividi su altri siti

Va bene. Se hai un foglio a quadretti una  riga di 8 quadretti è un byte e ogni quadretto è un bit. Ogni bit lo devi immaginare un condenstore microscopico realizzato elettronicamente. Aggiungo , per chiarire, che in un programma nulla ti vieta di usare MW51  che sarà  formato MB51 e MB52. È importante che tu immagini i 2 byte uno accanto all'altro con il byte di numero maggiore a destra (mb52) e quello di numero minore a sinistra (mb51). Se i bit li leggi da destra a sinistra trovi da m52.0.. a ..m52.7, e da m51.0...a..m51.7.

Link al commento
Condividi su altri siti

Ancora una domanda....

Per salvare le WORD, cioè le mie MW devo strutturarle in modo che rientrino in quelle famose 16 (M0.0 - M15.7 e cioè MW0 - MW14) oppure posso salvare anche un indirizzo diverso. Ero sicuro con Step7 che bastava una spunta in fase di dichiarazione, ma forse mi sbaglio.....

Link al commento
Condividi su altri siti

Tutte le word mantengono il loro valore fino a che non vengono sovrascritte, se sono nel campo delle retentive rimangono in memoria anche se la CPU viene spenta. altrimenti puoi sfruttare i blocchi dati, che sono retentivi per definizione.

Link al commento
Condividi su altri siti

certo che mettersi a programmare un plc senza sapere cosa sia un byte e cosa siano i bit ...la vedo dura :(

Esistono dei tutorial su youtube , si google etc .Almeno capire con cosa hai a che fare , non credi sia indispensabile?

Link al commento
Condividi su altri siti

Caro walterword sono 20 anni che lavoro nell'elettronica industriale, microcontrollori, PLC, linguaggi di programmazione ecc ecc. Purtroppo non posso passare sopra alla tua offesa. Vabbè, mi arrangio in altro modo.

Grazie a tutti

Link al commento
Condividi su altri siti

nessuna offesa,le mie erano solamente considerazioni personali , non leggo ne parolacce ne insulti Per cui prima di sentirti offeso cerca di leggere meglio e di ragionare ..leggevo che chiedevi  cose abbastanza elementari nel mondo simatic ed ho pensato . che fossi alle prime armi .

comunque se vuoi lavorare bene , con coerenza , correttezza , nitidezza etc , ti consiglio di lavorare con i Data Block  ossia i DB .

Puoi crearne quanti ne vuoi , in base alla cpu ci sono dei limiti numerici ovviamente .

Creare un DB , in forma grafica o scritta come sorgente , è come progettare e creare una struttura dati che può contenerne altre.

Ci sono poi gli UDT , che altro non sono che la direttiva typedef del C . 

L'esempio riporta TIA portal ma copo cambia con Step 7 

 

Link al commento
Condividi su altri siti

con i DB puoi copiare , incollare, rinominare .Se crei un blocco FC100 con relativo DB100 e li sui per gestire le logiche di un nastro trasportatore, se hai piu nastri copi ed incolli FC e DB piu volte , li rinomini e all'interno trovi e sostituisci il n# del DB opportuno e via .

Io preferisco fare cosi che creare un FB con db di istanza , nel FC faccio debug e modifico quello che voglio .Il concetto di "libreria" per le macchine o parti di impianto non ha mai funzionato . Funziona per calcoli , comunicazione etc ma per le macchine preferisco avere il 100% di libertà .

Con i merker ....devi copiare ed incollarli , non puoi gestirli come strutture dati piu o meno complesse etc.

Poi come SEMPRE , dipende da cosa devi fare , se devi fare una pompetta che bagna l'orto allora vanno bene anche i merker. 

Spero di essere stato chiaro , piu di cosi non saprei cosa dirti .

Per rispetto dei tuoi 20 anni di esperienza, se hai qualche domanda mirata fammela pure che vedro ' di accontentarti .

ciao

Link al commento
Condividi su altri siti

Ok, sono alle prime armi con Siemens, ma non con il resto! Grazie delle info....

Purtroppo chi ci lavora e ci è dentro non si rende conto delle grosse differenze tra l'ambiente Siemens e tutti gli altri....la domanda iniziale di questo post era perchè mi sembrava molto strano che una variabile MW0 in realtà andasse ad accupare anche la MW1....da qui poi le varie risposte hanno divagato su struttura byte ecc ecc che io non avevo chiesto...

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