Vai al contenuto
PLC Forum


ISTRUZIONI S7 PUT-GET


IlFincoITA

Messaggi consigliati

Ciao! Ho l'esigenza di scrivere e leggere dati da una CPU 1200. Mi si chiede di comandare un avvitatore che si trova nell'impianto di un'altra macchina e di leggerne i risultati sempre dalla mia macchina. Posso usare la comunicazione in PN e pensavo di utilizzare appunto le istruzioni PUT e GET. L'unica cosa è che mentre per avviare l'avvitatore posso decide io il "quando" per vedere che l'avvitatura sia andata a buon fine e trarne i dati, ad esempio di coppia... dovrei per così dire rimanere in ascolto. Essendo l'istruzione eseguita su un fronte di salita pensavo di usare il clock di sistema per fare ciclicamente questa l'ettura. In tutto andrei a leggere 26 Bytes ogni ciclo. Come vi sembra come idea?

Link al commento
Condividi su altri siti


io in genere metto un timer quando tutto è zero parte, quindi setto il flag di comando che si resetta col DONE o ERROR.

Il timer di ritardo quindi definisce il tempo fra una operazione e l'altra. 

Mi sembra la soluzione più pulita.

Link al commento
Condividi su altri siti

Ciao,

non vorrei dire castronerie, ma, andando a memoria, le istruzioni PUT e GET fanno parte del set di istruzioni per comunicazione S7; se l'avvitatore non è Siemens (S7, appunto), non credo possa funzionare.

Sto facendo una cosa simile con Weber e Desoutter: entrambi hanno la possibilità di comunicazione in Profinet (attenzione, non Ethernet che è una cosa diversa) e mi sono stati forniti dai costruttori i file GSD XML da integrare nella configurazione hardware; a questo punto mi sono letto il manuale del Fieldbus di entrambi,  ho impostato l'I/O che mi serviva sia sul dispositivo che nella configurazione hardware ed ho terminato (quasi ...).

Se l'avvitatore che devi utilizzare non ha il Profinet (quindi non esiste un file GSD XML da importare), ma solo l'Ethernet, sarai costretto ad utilizzare TSEND e TREC (vado sempre a memoria ed è facile che i nomi delle istruzioni non siano corretti); il problema che dovrai scriverti tutto il protocollo di comunicazione a mano.

Questo è quello che so ...

Link al commento
Condividi su altri siti

Ciao, ho provato entrambe le istruzioni e tutto funziona. Riesco a dare lo start all'avvitatore e leggere il fine avvitatura o il timeout con l'avvitatura Not OK più i parametri dell'avvitatura stessa. Per quanto ho capito dentro l'avvitatore c'è proprio un PLC SIEMENS. É per questo che riesco a parlarci utilizzando le istruzioni per la comunicazione su profinet di SIEMENS. La cosa che mi lasciava perplesso erano proprio le istruzioni. Normalmente, come dice drugo66, anch'io ho sempre utilizzato i file di descrizione del dispositivo (GSD XML) che bastava inserire nella configurazione Hardware e poi la comunicazione ciclica era praticamente fatta da sola. Per queste istruzioni invece ci vuole un fronte di salita per andare a leggere e scrivere... quindi sarebbero pensate più per un'interrogazione ad evento. Che però per me non va bene perché come faccio a sapere quando ha finito di avvitare se non glie lo chiedo? e quindi quando glie lo chiedo? Ho semplicemente pensato... ogni 500ms... per esempio. Poi non so... leggere 25 bytes ogni 500ms è troppo pesante come compito?

Modificato: da IlFincoITA
Link al commento
Condividi su altri siti

Dovrei andare a vedere dei progetti vecchi, ma sono in consegna ed il tempo è poco ...

In ogni caso, se ricordo bene, mi sembra di aver usato quelle istruzioni per la comunicazione con un PLC S7-300 (quello "dalla mia parte" era un 1200), da cui ricevevo i comandi classici di marcia, stand-by e reset e a cui dovevo inviare una word di stato; in pratica il 1200 era sempre in ricezione, tranne quando lo stato macchina cambiava (word di appoggio per memorizzare lo stato precedente, confronto e se sono diverse lo stato è cambiato), allora trasmettevo la word, poi si tornava alla ricezione; in pratica, utilizzando l'NDR o il DONE (vado a memoria con i nomi, ma potrei sbagliare ...) dell'istruzione stessa, ottenevo il fronte per il REQ (comando di ricezione sempre alto se non devo trasmettere con in serie il suo NDR o DONE che sia), in modo da eseguire una istruzione a scansione; ovviamente se dovevo scrivere, in quella scansione il GET non veniva eseguito.

L'idea era quella di provare e, in caso di problemi di scansione troppo alta oppure che la comunicazione inficiasse il ciclo vero e proprio, di utilizzare un clock ritardato o inserire il blocco di comunicazione nell'OB a tempo: è finita che non ho avuto problemi ed è rimasto tutto così, con l'esecuzione di un GET o PUT ad ogni scansione.

Link al commento
Condividi su altri siti

Stamattina ho sbirciato nel vecchio progetto: sono passate un po' di ore, ma vediamo se mi ricordo ancora ...

- La variabile che avvia il REQ del GET ha in serie un'altra variabile negata che memorizza NDR sempre del GET e quella, sempre negata, del REQ del PUT

- Nel segmento successivo resetto sempre la variabile di memoria di NDR del GET

- Dopo c'è l'istruzione GET; con NDR alto setto la variabile di memoria

Questo perchè l'NDR (ma anche il DONE del PUT, mi sembra) dura una sola scansione, quindi occorre memorizzarlo; scritto così, esegue una lettura ogni 2 scansioni del PLC, si ottiene un fronte per il REQ e, ripeto, non mi ha dato nessun problema.

Ci avevo ancora aggiunto un ritardo all'accensione del PLC e gestito gli eventuali allarmi e status.

Link al commento
Condividi su altri siti

elettromirko85

Ciao a tutti aggiungo una piccola considerazione, occorre anche verificare che la trasmissione tra i due partner sia attiva, normalmente implemento nella area di memoria di scambio un life bit che viene settato dal partner a e resettato dal partner b, se questo giochino non avviene entro un tempo filtro genero allarme. Comunque se i plc in questione sono siemens vedo molto funzionale la funzione di i device.

 

buona serata a tutti

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