Vai al contenuto
PLC Forum


Comunicazione Tra Cpu 319


abbmarco

Messaggi consigliati

salve a tutti

sono un programmatore junior

sto realizzando un impianto con 3 cpu siemens 319-3 PN/DP che comunicheranno tra di loro via ethernet!!!

il motivo per cui scrivo è per sapere informazioni su come configurare, implementare e gestire la comunicazione tra le cpu!

Link al commento
Condividi su altri siti


Gianmario Pedrani

Non sono sciruro, ma credo che con step7 5.4 tu debba mettere in mezzo alle 3 cpu in pn/pn couple perche non penso che si possano collegare 3 cpu pn tra di loro cosi senza niente.

So che qualcosa però è cambiato con la nuova versione di step7 5.5

Link al commento
Condividi su altri siti

Beh, le porte integrate non saranno come le CP, ma non sono poi così sguarnite...

direi che hai qualche alternativa:

1 - PN/PN coupler: se il tempo di reazione è tutto. In pratica è un oggetto visto come device su entrambi i lati, molto simile al DP/DP coupler. Il vantaggio sta nella comunicazione deterministica. Lo svantaggio nel fatto che hai bisogno di un oggetto in più (per ogni coppia di CPU, per cui ne servono 3).

2 - PROFINET CBA: se parametrizzare è meglio che programmare. E' un metodo per mettere in comunicazione diversi oggetti di cui si definiscono dei DB di interfaccia. La comunicazione è solo parametrizzata, non programmata, è gestita in toto dal sistema operativo. L'unico difetto è che serve una licenza di iMAP.

3 - S7 protocol: è sicuramente l'opzione più semplice. Si progetta un collegamento con NetPro e ci si parla sopra con i blocchi GET e PUT (FB14 e 15): GET preleva dati da una CPU remota, PUT scrive dati in una CPU remota.

Ovviamente servirà un collegamento per ogni coppia di CPU.

C'è una FAQ: http://support.automation.siemens.com/WW/view/it/18610307

E anche questa: http://support.automation.siemens.com/WW/view/it/18924842

4 - Open IE: per i feticisti dell'ethernet. In questo caso si parla in TCP o ISO-on-TCP puro. E' l'opzione più complessa da programmare perchè oltre a gestire SEND e RECEIVE va gestita anche la connessione e disconnessione dalla CPU remota. Ma se il partner di comunicazione è un partner generico, non SIMATIC, è la strada obbligatoria. Nulla di impossibile, per carità, ma l'S7 è più facile.

Anche per questo esistono FAQ.

TCP: http://support.automation.siemens.com/WW/view/it/29737950

ISO-on-TCP: http://support.automation.siemens.com/WW/view/it/29737976

Comunque ti torna comodo il wizard per generare i dati di sistema:

http://support.automation.siemens.com/WW/view/it/25209116

sicuro di averti confuso le idee, ti auguro buon lavoro!

p.s.: focalizzati sull'S7 e tieni il resto come "cultura generale"

Link al commento
Condividi su altri siti

dimenticavo ancora due cose

1) tutto quello che ho detto nel post di prima prescinde dalla versione di STEP 7, che sia 5.4 o 5.5, le opzioni sono valide lo stesso.

2) con le 319 nuove (8EL01) e lo STEP 7 5.5 (obbligatorio), c'è anche l'opzione iDevice, in pratica puoi battezzare una CPU controller, e le altre device in modo da farle parlare come in master-slave in profibus. Con la differenza che l'iDevice può essere contemporaneamente Controller di una rete locale, un po' come la IM308C.

Attenzione: il controller deve prevedere espressamente il funzionamento in abbinata all'iDevice.

ciao!

Link al commento
Condividi su altri siti

  • 5 months later...

Ciao turbineboost, scusa se mi intrometto, ma sto avendo anche io qualche rogna con la comunicazione tra stazioni. Ho predisposto tutti i collegamenti ma le CPU non vogliono parlarsi, ho un paio di domande, spero mi risponderai:

(considera cjhe nel mio caso devo usare la funzione PUT solo per scrivere nell'altra CPU, non ho bisogno di leggere, ma solo di compiere operazioni di scrittura.)

1- in netpro bisogna per forza inserire la presenza dell'altra CPU e collegarle in ethernet (col la linea verde per intenderci?) ? mi ha detto un mio amico che non c'è bisogno di esplicitare graficamente che esiste un altra CPU, ma indicando solo il collegamento dovrebbe funzionare.

2- Mi puoi spiegare meglio l'indirizzamento, ovvero i vari puntatori? io dovrei semplicemente copiare una intera DB in un altra, dello stesso identico formato. (DB405 nella DB 407 della macchina precedente.)

3- per quanto riguarda l'ID, devo ovviamente mettere nel PUT quello della macchina in cui voglio scrivere giusto?

arrivo a chiamare la PUT ma mi da error=1 e status=1, le cpu sono collegate fisicamente in ethernet e hanno diversi indirizzi.

ciao ti rignrazion in anticipo.

Link al commento
Condividi su altri siti

Ciao,

in realtà non c'è effettiva necessità di avere entrambe le CPU nello stesso progetto.

Con le funzioni GET e PUT non c'è nemmeno necessità di caricare dati di connessione nella CPU partner.

In altre parole: nella CPU "attiva" configuri la connessione definendo ovviamente l'indirizzo IP del partner, mentre nella partner non ci va nulla. Queste si chiamano connessioni S7 unilaterali. In pratica è come usare delle X_GET e X_PUT su ethernet! Sono comodissime se devi accedere a dati di una CPU che non hai programmato tu!

Per fare questo devi inserire un collegamento S7 in NETPRO verso un partner non specificato.

Nella maschera che segue specifica l'indirizzo IP e clicca su Dettagli indirizzi

Se la CPU partner è un 300 seleziona:

Rack=0

Slot=2

Risorse collegamento = 03

Nella tua CPU programmi poi i blocchi GET e PUT.

L'ID è ovviamente quello della connessione cui fa capo la CPU in cui vuoi leggere/scrivere.

Per i puntatori:

ADDR_1: è l'area della CPU partner. Se vuoi puntare alla DB405 scriverai: P#DB405.DBX0.0 BYTE 40, dove 40 è la lunghezza in byte della DB

RD_1: è l'area in cui accogliere i dati della CPU partner. Se vuoi scrivere nella DB406 scriverai: P#DB406.DBX0.0 WORD 20, dove 20 è la lunghezza in word della DB

SD_1: è l'area dove stanno i dati da scrivere nella CPU partner. Se vuoi pescare dalla DB407 scriverai: P#DB407.DBX0.0 DWORD 10, dove 10 è la lunghezza in doppie word della DB

ciao!

davide

Link al commento
Condividi su altri siti

Ciao davide, scusami c'è un modo per dargli l'indirizzo di una intera DB, senza per forza dover specificare il numero di BYTE? in pratica devo usare la funzione PUT per scrivere una intera DB dentro un'altra nel partner, le DB hanno esattamente la stessa dimensione.

grazie

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