Jump to content
PLC Forum


raw

CODIFICA DIAGRAMMI DI STATO,SONO CONFUSO AIUTO

Recommended Posts

raw

Ciao a tutti,sto studiando la codifica dei diagrammi di stato,e quello descritto nell'immagine mi lascia un po perplesso,ho capito come funziona ma non mi spiego il perché,a parte l'inversione del Byte dei plc Siemens,mi spiego meglio,se voglio porre a 1 il bit 101.2,dovrei scrfivere move 4 in MW100,perche non scrivere move 1 in bit 101.2,invece di usare i multipli?,inoltre cosa succede se scrivo move 0 in MW100,pone tutta la word a 0?,grazie a chi mi aiuta a capire meglio.image.thumb.png.e0c9e0af4652446fb53008a2bd7e6b69.png

Share this post


Link to post
Share on other sites

84paolo

Ciao.

se utilizzi il move scrivi il valore in tutta la word. Se vuoi semplicemente mettere a 1 o a 0 il singolo bit devi utilizzare le istruzioni di Set e Reset sul singolo bit. Il fatto che siemens utilizza i byte invertiti rispetto a altre marche di PLC quello è così e basta. Il fatto di usare il move o il set/reset quello dipende da cosa devi fare. Se usi il set/reset modifichi solo il singolo bit e tutto il resto della word rimane inalterata. Se usi il move invece vai a modificare tutta la word.

Share this post


Link to post
Share on other sites
raw

Ciao,grazie per essere intervenuto,mi stai dicendo una cosa nuova per me,nel senso che da quello che so io,lo dice in un corso che sto seguendo,da cui ho estratto l'immagine,muovendo con l'istruzione move per esempio il valore 4,pongo ad 1 solo il bit 101.2 della word,usando i multipli per tutti gli altri bit,ancora un esempio,move 8 per porre ad 1 il bit 101.3,se guardi l'immagine è chiaro,tu però mi stai dicendo il contrario,potresti essere più chiaro,grazie.

Share this post


Link to post
Share on other sites
max.bocca

Quello che dici è vero, se tu usi move con valore 7 per esempio troverai alti i tre bit con peso 4,2,1 e tutti gli altri a zero.

Se vuoi toccare solo bit devi agire con set e reset.

Share this post


Link to post
Share on other sites
raw

Ciao,grazie anche a te,sto facendo prove con simulatore,ed è vero quello che dicevo nel post,per porre ad uno un bit qualsiasi di una word,con l'istruzione move, bisogna spostare il valore dei multipli corrispondente alla tabella da me postata,se sposto il valore 0,ho tutta la word a 0.Non capisco il perché però, di quello che dici tu,infatti o provato a spostare il 7,come dal tuo esempio,in MW6,ed i bit ad uno sono 7.0 ,7.1 ,7.2.Potresti spiegarmi bene come funziona il discorso?,magari con qualcosa da leggere,grazie ancora.

Share this post


Link to post
Share on other sites
84paolo

ma state dicendo la stessa cosa. il valore 7 in binario é 111 perciò é normale che se valorizzi la mw6 trovi a 1 il bit 7.0 7.1 e 7.2

Share this post


Link to post
Share on other sites
Marco Fornaciari

Una considerazione sorge spontanea, per usare il 95% delle istruzionei di un PLC bisogna conoscere la matenatica binaria, diversamente ci si perde, quindi anche la domanda è sponatanea: quanto si conosce della matematica binaria.

...

Poi in realtà per modificare lo stato di singoli bit all'interno di word o byte è meglio imparare ad usare le istruzioni di logica binaria.

Share this post


Link to post
Share on other sites
batta
Quote

muovendo con l'istruzione move per esempio il valore 4,pongo ad 1 solo il bit 101.2 della word,usando i multipli per tutti gli altri bit,ancora un esempio,move 8 per porre ad 1 il bit 101.3,se guardi l'immagine è chiaro,tu però mi stai dicendo il contrario,potresti essere più chiaro

No, nell'esempio è dimostrato esattamente il contrario.
Del resto, direi che non c'è nulla di più logico: se scrivo un valore in una word, scrivo tutta la word, non un solo bit.
Per settare un solo bit di tutta la word dovresti fare un OR, non un MOVE. MOVE significa che scrivo tutta la variabile, non un solo bit.
Puoi usare una qualsiasi calcolatrice che supporti anche operazioni in binario (va benissimo quella di Windows), e fare le conversioni da un qualsiasi valore in decimale in binario e viceversa. Ricordati poi di scambiare tra di loro i primi 8 bit con gli ultimi 8 bit.
Come dice Marco, non ci si può avvicinare ad un PLC senza avere un minimo di basi di cosa sia un sistema binario. Quello che succede nell'esempio di codifica infatti non è una caratteristica specifica dei PLC, ma è semplicemente una conversione da decimale a binario.

Share this post


Link to post
Share on other sites
raw

Adesso è tutto chiaro,l'autore della tabella sfrutta diciamo un escamotage,spostando con il move i multipli,è vero che setta ad uno un singolo bit,ma in realtà scrive tutta la word,il bit ad uno è semplicemente perché fa parte della sequenza di 0 ed 1 corrispondenti in binario del multiplo in decimale,è giusto?

Edited by raw

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...