blocchi funzione

PLC, servomotori, inverter...robot

Moderatori: Foto Utentedimaios, Foto Utentecarlomariamanenti

Avatar utente
Foto Utentedep
0 2 5
Stabilizzato
Stabilizzato
Messaggi: 312
Iscritto il: 11 mag 2007, 11:03
0
voti

[1] blocchi funzione

Messaggioda Foto Utentedep » 19 feb 2008, 19:08

ciao
il titolo non dice niente se non viene spiegato...quindi arrivo subito al dunque
mi chiedevo se esiste nell'ambito dei plc un blocco funzione oppure un'operazione in grado di trasferire o meglio raggruppare 16 ingressi cioè 16 bit in una word
allo stesso modo as esempio sarà possibile raggruppare 32imput in una DW giusto?ma in che modo avvine tale operazione?spero di essere stato chiaro :oops:
ciao e grazie
é un mondo difficile!!!!!!!!!

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[2] Re: blocchi funzione

Messaggioda Foto UtenteIvan_Iamoni » 20 feb 2008, 20:06

Ciao Dep,
16 bit , sono una word , cosi' come 32 bit sono una doubleword "DW".
Per maggior chiarezza leggi questo articolo http://www.electroportal.net/vis_resource.php?section=RP&id=163.
Dipende da PLC e PLC , ognuno ha le sue piccole differenze di sintassi.

L oppure LOAD , significa caricare , rendere disponibile nella memoria accumulatore PLC , il valore oppure la word , doppia word ecc.
MOV oppure MOVE , significa spostare , ovvero prelevare il valore presente nell'accumulatore PLC , e trasferirlo in una area di memoria.

Messi insieme diventano:
L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MB 1 //trasferisci da il suo stato o valore , nel byte merker 1 ( da M1.0 a M1.7)

L EW 1 //carica il valore della word , canale ingressi 1 (da E1.0 a E2.7)
T MW 1 //trasferisci il suo stato o valore , nella word merker 1 ( da M1.0 a M2.7)

L ED 1 //carica il valore della Dword , canale ingressi 1 (da E1.0 a E4.7)
T MD 1 //trasferisci il suo stato o valore , nella Dword merker 1 ( da M1.0 a M4.7)

Questi sono esempi di caricamento e trasferimento , tra dimensioni di dato "omogenee" vale a dire , stessa grandezza di origine e stessa grandezza di destinazione, ma nei comandi LOAD e MOVE , non e' necessariamente obbligatorio.

Potrebbe essere:
L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MB 1 //trasferisci il suo stato o valore , nel byte merker 1 ( da M1.0 a M1.7)

L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MW 1 //trasferisci il suo stato o valore , nella word merker 1 ( da M1.0 a M2.7)

L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MD 1 //trasferisci il suo stato o valore , nella Dword merker 1 ( da M1.0 a M4.7)

Ovviamente , lo stato del byte di ingressi EB1 , verra' sempre scritto a partire da MSB , quindi i byte a seguire nella word o doppia word dove vengono scritti , hanno valore zero.

Ivan

Avatar utente
Foto Utentedep
0 2 5
Stabilizzato
Stabilizzato
Messaggi: 312
Iscritto il: 11 mag 2007, 11:03
0
voti

[3] Re: blocchi funzione

Messaggioda Foto Utentedep » 20 feb 2008, 20:45

ciao ivan
Per maggior chiarezza leggi questo articolo http://www.electroportal.net/vis_resour ... =RP&id=163.
Dipende da PLC e PLC , ognuno ha le sue piccole differenze di sintassi.

questo articolo veramente interessante alla quale ho dato una letturina lo approfondirò al più presto..complimenti per l'articolo =D>

comunque questo:
L oppure LOAD , significa caricare , rendere disponibile nella memoria accumulatore PLC , il valore oppure la word , doppia word ecc.
MOV oppure MOVE , significa spostare , ovvero prelevare il valore presente nell'accumulatore PLC , e trasferirlo in una area di memoria.

Messi insieme diventano:
L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MB 1 //trasferisci da il suo stato o valore , nel byte merker 1 ( da M1.0 a M1.7)

L EW 1 //carica il valore della word , canale ingressi 1 (da E1.0 a E2.7)
T MW 1 //trasferisci il suo stato o valore , nella word merker 1 ( da M1.0 a M2.7)

L ED 1 //carica il valore della Dword , canale ingressi 1 (da E1.0 a E4.7)
T MD 1 //trasferisci il suo stato o valore , nella Dword merker 1 ( da M1.0 a M4.7)

Questi sono esempi di caricamento e trasferimento , tra dimensioni di dato "omogenee" vale a dire , stessa grandezza di origine e stessa grandezza di destinazione, ma nei comandi LOAD e MOVE , non e' necessariamente obbligatorio.

Potrebbe essere:
L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MB 1 //trasferisci il suo stato o valore , nel byte merker 1 ( da M1.0 a M1.7)

L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MW 1 //trasferisci il suo stato o valore , nella word merker 1 ( da M1.0 a M2.7)

L EB 1 //carica il valore del byte , canale ingressi 1 (da E1.0 a E1.7)
T MD 1 //trasferisci il suo stato o valore , nella Dword merker 1 ( da M1.0 a M4.7)

Ovviamente , lo stato del byte di ingressi EB1 , verra' sempre scritto a partire da MSB , quindi i byte a seguire nella word o doppia word dove vengono scritti , hanno valore zero.


ottima spiegazione direi ho capito!come mai? :lol:

comunque vorrei chiederti forse sarà una stronz....comunque e se io volessi ad esempio raggruppare in un byte o word lo stato di 8 bit o 16 bit di uscita che sono attivate ad esempio da un 'interruttore rispettivamente nel byte o word
si può fare?
grazie
é un mondo difficile!!!!!!!!!

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[4] Re: blocchi funzione

Messaggioda Foto UtenteIvan_Iamoni » 20 feb 2008, 22:30

Ciao Dep, dunque.... :-k
se io volessi ad esempio raggruppare in un byte o word lo stato di 8 bit o 16 bit di uscita che sono attivate ad esempio da un 'interruttore rispettivamente nel byte o word

Sai che faccio fatica a capire cosa vorresti fare?
Forse ho un poco i pensieri annebbiati dai fumi dell'alcol, dopo una cena con il cliente Polacco. #-o
Secondo quanto ho capito io:

U E0.0 //Se e' presente l'ingresso 0.0
L AW2 // Carica il valore della word , canale uscite 2 (dalla Out 2.0 alla Out 3.7)
T MW2 // Trasferisci il valore nella word MW2 (da M2.0 a M3.7)
TDB1.DBW0 //Trasferisci il valore nella DB 1 DBW0 (da Db1.dbx0.0 a Db1.dbx1.7)

Mi sfugge sinceramente , il significato di ragggruppare , cosa intendi?
Hai un esempio pratico a cosa possa servire , tale "raggruppamento"?

Ivan

Avatar utente
Foto Utentedep
0 2 5
Stabilizzato
Stabilizzato
Messaggi: 312
Iscritto il: 11 mag 2007, 11:03
0
voti

[5] Re: blocchi funzione

Messaggioda Foto Utentedep » 20 feb 2008, 23:18

[quote][quote][/quote]
Sai che faccio fatica a capire cosa vorresti fare?[/quote]
e ti credo non riesco ad esprimere quello che vorrei...
[quote]Mi sfugge sinceramente , il significato di ragggruppare , cosa intendi?[/quote]
beh io intendo dire se con 8 bit d'ingresso o di uscita posso raggrupparli formando un unico ingresso in formato byte...
[quote]Hai un esempio pratico a cosa possa servire , tale "raggruppamento"?[/quote]
non mi viene in mente niente,probabilmente il mio discorso non ha alcuna valenza...
[quote]Forse ho un poco i pensieri annebbiati dai fumi dell'alcol, dopo una cena con il cliente Polacco.[/quote]
figurati io che a cena ho bevuto solo acqua e guarda un po' gli effetti :lol:
é un mondo difficile!!!!!!!!!

Avatar utente
Foto Utentedep
0 2 5
Stabilizzato
Stabilizzato
Messaggi: 312
Iscritto il: 11 mag 2007, 11:03
0
voti

[6] Re: blocchi funzione

Messaggioda Foto Utentedep » 20 feb 2008, 23:33

mi viene in mente sta cosa che forse ti aiuterà ad intuire...i merker di stato dei contatori veloci sono in formato byte quindi ad ogni bit è assegnata reset alto o basso
avvio alto-basso ed ecc c'è ne sono degli altri che però non ricordo adesso quindi diciamo che è quello che più o meno vorrei intendere come raggruppamento dei bit che formano un byte in questo caso ognuno dei quali ha una propria funzione
sto facendo un po' di confusione?
ciao comunque grazie per la tua disponibilità
é un mondo difficile!!!!!!!!!

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[7] Re: blocchi funzione

Messaggioda Foto UtenteIvan_Iamoni » 21 feb 2008, 23:26

Ciao Dep,
Ho capito a cosa ti riferisci parlando della parola di stato dei contatori , in questo caso credo che cio' che chiedi sia piu' riferito al byte di controllo , che al byte di stato che menzioni tu.
Ad esempio , nel Byte di controllo SMB47 , riferito ad HSC1:
SM47.0= Modo di funzionamento dell'ingresso di reset (0=reset con ingresso TRUE 1=reset con ingresso FALSE)
SM47.1= Modo di funzionamento dell'ingresso di start (0=reset con ingresso TRUE 1=reset con ingresso FALSE)
SM47.2= Modo di conteggio (0=conteggio 4X 1=conteggio 1X)
SM47.3= Controllo direzione (0=indietro 1=avanti)
SM47.4= Aggiornamento della direzione di conteggio (0=non aggiornare 1=aggiorna)
SM47.5= Aggiornamento del valore di impostazione (0=non aggiornare 1=aggiorna)
SM47.6= Aggiornamento del valore attuale di conteggio (0=non aggiornare 1=aggiorna)
SM47.7= Abilitazione del contatore (0=disattivo 1=attivo)

Ora in una normale impostazione dovresti scrivere una cosa del genere:

Codice: Seleziona tutto

LD     SM0.1
=      SM47.3
=      SM47.4
=      SM47.5
=      SM47.6
=      SM47.7


Mentre la maniera piu' elegante ( o forse quello che tu intendi per raggruppare) sarebbe:

Codice: Seleziona tutto

LD     SM0.1
MOVB   16#F8, SMB47

Dove scrivo nel byte SMB47 , il valore esadecimale "F8" che in binario sarebbe " 11111000" , considerando che l'ordine di scrittura inizia da destra verso sinistra , nei rispettivi Byte.

E' questo che chiedevi?

Ivan

Avatar utente
Foto Utentedep
0 2 5
Stabilizzato
Stabilizzato
Messaggi: 312
Iscritto il: 11 mag 2007, 11:03
0
voti

[8] Re: blocchi funzione

Messaggioda Foto Utentedep » 21 feb 2008, 23:44

ciao ivan
E' questo che chiedevi?

in effetti è quello che volevo esprimere...e se io ad eseMpio dovrei riunire dei bit di uscita che corrisponderebbero a diversi allarmi potrei fare la stessa cosa menzionata del tipo

Codice: Seleziona tutto
LD Q0.0
= Q0.1
= Q0.2
= Q0.3
= Q0.4
= Q0.7


oppure piu' elegante
LD sm0.0
MOVB 16#F8, QB0


è possibile una cosa del genere :?:
é un mondo difficile!!!!!!!!!

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[9] Re: blocchi funzione

Messaggioda Foto UtenteIvan_Iamoni » 22 feb 2008, 0:19

Con il PLC o i PIC , si possono fare tante cose e tutte in modi molto diversi, quasi tutto e' possibile :lol:
Nel tuo primo esempio , altro non fai che fare diventare TRUE , alcune uscite all'unisono , solo quando Q0.0 e' true , non so a cosa possa servirti , ma non obbietto.
Se facessi una tabella della verita' , sarebbe:

Codice: Seleziona tutto

Q0.0      .7   .6   .5   .4   .3   .2   .1
                        
0          0    0    0    0    0    0   0
1          1    0    0    1    1    1   1


Il secondo esempio , ti dara' un risultato molto diverso dal primo , cioe':

Codice: Seleziona tutto

Q0.0      .7   .6   .5   .4   .3   .2   .1
                        
0          0    0    0    0    0    0   0
1          1    1    1    1    0    0   0


Per ottenere con il comado MOVB 16#..., QB0 , lo stesso risultato del primo esempio devi scrivere:
MOVB 16#8F, QB0 , cioe' HEX esadecimale 8F.

Ivan

Avatar utente
Foto Utentedep
0 2 5
Stabilizzato
Stabilizzato
Messaggi: 312
Iscritto il: 11 mag 2007, 11:03
0
voti

[10] Re: blocchi funzione

Messaggioda Foto Utentedep » 22 feb 2008, 18:54

Con il PLC o i PIC , si possono fare tante cose e tutte in modi molto diversi, quasi tutto e' possibile :lol:

sicuramente

Nel tuo primo esempio , altro non fai che fare diventare TRUE , alcune uscite all'unisono , solo quando Q0.0 e' true , non so a cosa possa servirti

l'ho buttata nella mischia un po' cosi senza alcun ragionamento tipico...

comunque
mi sembra di capire che non ha senso mettere insieme bit di I/Q...ma ha un senso invece mettere insieme + bit special merker oppure locazioni di memoria variabile VB0 ad esempio..
credo di aver capito di base a cosa serve ma devo sempre leggere il tuo tutorial dei dati in modo tale da avere le idee più chiare..

inoltre volevo postare un allegato per farti vedere un programma che ho sviluppato per un'isola di paletizzazione però vorrei cancellarlo in un secondo momento perché non lo posso rendere visibile a tutti oppure si potrebbe inviare mediante messaggio privato?
sai se è possibile?
ciao ivan
é un mondo difficile!!!!!!!!!


Torna a “Automazione industriale ed azionamenti”