Vai al contenuto
PLC Forum


Dp/dp Coupler


Messaggi consigliati

Inserito:

Buonasera a tutti,

avrei bisogno di qualche dritta da un programmatore AWL. Ho collegato 2 PLC Master tramite un DP/DP coupler. Il bus in questione è ovviamente Profibus DP. Il mio scopo consiste nel fare in modo che venga copiato il contenuto di una DB di uno dei due PLC in una predefinita DB all'interno dell'altro PLC. In parole povere, quando il primo PLC aggiorna la DB in questione contemporaneamente o comunque con un delay accettabile viene aggiornata la sua copia sul secondo PLC. Il secondo PLC dovrebbe funzionare come un PLC concentratore di diversi PLC master (in realtà uno solo). Collegandomi al concentratore potrei monitorare lo stato di quella particolare DB che risiede sul primo PLC.

Mi interesserebbe sapere quali sono i comandi AWL che dovrei inserire nel software del PLC concentratore per fare in modo che quest'ultimo vada periodicamente a copiare in una sua DB il contenuto della DB da monitorare.

Grazie mille


Matteo Montanari
Inserita:

nelle libreire standard di Step 7, più precisamente nella "Communication Blocks" hai tutti i blocchi standard creati da Siemens per quanto riguarda la comunicazione con altre CPU, o altri sistemi.

selezionando la funzione e premendo F1 hai l'. in linea, che comunica un corretto utilizzo della funzione stessa.

attenzione che alcuni blocchi funzionano solamente con determinate schede, oppure non funzionano con determinate schede.

un altra cosa da tenere presente è la quantità di dati da trasferire, se supera il limite, ti conviene effettuare due trasferimenti.

Inserita:

L'accoppiatore DP/DP non ha bisogno di utilizzare blocchi particolari. Si aggiunge il modulo in configurazione hardware. Nel modulo possono essere inseriti dei moduli (mi pare max 11). Ogni modulo occupa un certo numero di byte di ingressi od uscite di periferia. Per quanto riguarda il numero massimo di byte che possono essere gestiti, guarda la documentazione. Credo cambi a seconda del codice dell'accoppiatore DP/DP usato.

I singoli moduli possono essere configurati come dati "consistenti" o meno. Se sono configurati come consistenti, si ha la garanzia che tutto il singolo blocco è aggiornato.

Il DP/DP deve essere configurato nell'ardware di entrambe le cpu. Per scrivere dati da cpu1 a cpu2 bisogna configurare i due lati del DP/DP in modo che ci sia corrispondenza tra i moduli con byte di uscita ed i moduli nella posizione corrispondente con byte in ingresso.

Poi, si legge e si scrive come normale periferia.

Non so se sono riuscito ad essere abbastanza chiaro. Caso mai chiedi, e vedrò di fare un esempio concreto.

Inserita:

Vi ringrazio per la vostra disponibilità.

Vi faccio un esempio di ciò che vorrei realizzare:

PLC1 e PLC2 sono due master collegati tra loro con il DP/DP Coupler. Vorrei che alcune word della DB21 del PLC1 siano copiate in una DB22 del PLC2. Inoltre vorrei che la copia delle word in questione nella DB22 venga aggiornata ogni volta che cambia il contenuto delle word di origine sulla DB21 del PLC1.

Ipotizzo che per fare ciò, io debba creare una opportuna FC o FB nel progetto della PLC2. In questa FC o FB devo scrivere delle linee di codice opportune. Mi potreste fare un esempio dei comandi che devo usare?

KEOSSM accennava che è possibile ricorrere alle librerie standard. L'ho fatto ed ho trovato la SFB/FB 14 "GET". Secondo voi potrebbe essermi utile?

Grazie mille

Inserita:

Non ho mai usato il DP/DP coupler ma mi sembra di aver letto che serva a far comunicare due reti profibus distinte, in pratica lo vedi come nodo di tutte e due le reti con una sua area di periferia in cui scrivi e leggi dei valori (PEW e PAW). Penso che sia sufficente andara trasferire i valori delle DB21 del plc 1 sulla periferia di uscita dell'accoppiatore ed andare a leggere i dati dalla periferia del PLC2 e trasferirli sulla DB22.

Facendo un collegam,ento MPI tra le CPU che sono sotto lo stesso progetto puoi usare direttamente i dati globali etrasferire direttamente i valori di un'area di dati del PLC 1 su un'area di dati del PLC2 anche se questo tipo di connessione non è chiaro quanto sia sicura.

Inserita:

Grazie per l'aiuto.

Tuttavia non mi è ancora chiaro quali sono le funzioni AWL che devo usare per leggere dal DP/DP Coupler i byte che mi interessano in una rete e quali sono le funzioni che devo usare nell'altra rete per trasferire i byte di interesse nel DP/DP Coupler.

C'è qualcuno che mi può aiutare o mi può indicare dove reperire queste informazioni?

Grazie mille

Inserita:

Esempio :

Devo scambiarmi in totale 20 bytes con un altro sistema DP X ( devo scrivergli 10 bytes e ne devo leggere 10 bytes di risposta ).

Configuro ( in HW config. ) un'area di scambio nel DP coupler nel seguente modo :

Lettura ingressi ( segnali inviati da DP X, suoi output ) : da EB 0 a EB 7

Scrittura uscita ( segnali che invio a DP X, suoi input ) : da AB 0 a AB 7

Ora se voglio inviare delle informazioni contenute in un byte del mio DB 10 :

L DB10.DBB xx

T AB 0

In questo modo invio al DP X tramite il primo byte discambio il contenuto di DB10.DBB xx

Devo leggermi un informazione inviata dal DP X ( primo byte ) :

L EB 0

T DB10.DBB xx

Ovviamente configuri l'area scambio DP / DP in funzione della quantità dati che ti serve scambiare in contemporanea.

Inserita:

Scusa per la fretta :

l'esempio non è per 10 bytes, ma 8 + 8

Inserita:

Voglio ricordare che se è importante essere sicuri che i dati che si leggono (scrivono) con il DP/DP coupler non vengano "spezzati" in più cicli di lettura (scrittura) si devono usare dati coerenti (a volte definiti consistenti).

Attenzione: anche se in configurazione hardware si sono usati solo moduli di input/output coerenti, si ha la garanzia di avere una lettura completa durante lo stesso ciclo esclusivamente del singolo modulo.

Quindi non si deve dividere uno stesso dato (esempio una dword) su due moduli differenti di input/output. Questo per evitare di leggere, per esempio, la parte alta della variabile durante un ciclo, e la parte bassa in un ciclo successivo. Il valore del dato potrebbe essere, ovviamente, non corretto.

Esempio: sulla cpu A configuro il DP/DP Coupler come segue:

Ingresso coerente 16 byte (indirizzo 512..527)

Ingresso coerente 16 byte (indirizzo 528..543)

Uscita coerente 16 byte (indirizzo 512..527)

Sulla cpu B la configurazione sarà:

Uscita coerente 16 byte (indirizzo 256..271)

Uscita coerente 16 byte (indirizzo 272..287)

Ingresso coerente 16 byte (indirizzo 256..271)

Gli indirizzi, volutamente diversi per le due cpu, sono ovviamente solo di esempio.

Se dalla cpu B alla cpu A si inviassero 7 word e poi una doppia word, la doppia word verrebbe spezzata. Occuperebbe infatti gli indirizzi 270-271 (primo modulo) e 272-273 (secondo modulo.

Questa situazione è assolutamente da evitare.

Inserita:

Grazie mille sia a Murissio che a Batta.

Siete stati chiari e semplici.

Di nuovo grazie.

:)

Inserita: (modificato)

dp / dp coupler e' come una periferica decentrata dalla quale leggi e srivi PEWxx e PAWxx

se vuoi averi i dati su DBxx non devi fare altro che usare L (load) e T (transfer) per copiare o leggere

tali indirizzi su db.

La cosa che invece mi incuriosisce sempre , visto che anche n questa M.I.S. ho un dp/dp, sono i vari

pacchetti che si possono scegliere in conf. hw relativi al coupler .

Di solito se devo copiare o leggere da un db dei bit uso OUTPUT32 o viceversa , se invece di tratta

di aree contigue di interi piuttosto che reali o altro uso un buffer i bytes di numero totale come i dati

e non ho mai avuto problemi , ma nella cartella dp/dp ci sono diverse scelte che non ho ancora capito

cosa significhino

ciao

Modificato: da walterword
  • 2 weeks later...
Inserita:

Il DP coupler non consente di trasferire DB da un PLC all'altro (direttamente) , ma solo un certo numero di words.

Più che altro è come collegare tutti gli output di un modulo di uscita di una rete DP a tutti gli inputs di un modulo di ingresso di un'altra rete DP e viceversa (almeno dal punto di vista funzionale).

Se vuoi inviare dati (Qualsiasi tipo di dato DB comprese) da un PLC all'altro, devi gestirti un trasferimento word a word (o dword a dword) con relativi strobe e ack come se tu lo facessi tramite gli I/O.

Ciao

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