Vai al contenuto
PLC Forum


comunicazione con cavo ethernet tra 2 plc s7-300


cali

Messaggi consigliati

Salve, per la mia tesi di laurea in ingegneria devo scambiare dei dati tra due plc s7-300 cpu 314c-2 pn/dp tramite cavo ethernet. Leggendo varie guide ufficiali e non, vedendo vari video su youtube passo passo, ho capito che il metodo più semplice è utilizzare i blocchi Get per leggere e Put per inviare. 

Il problema è che poi quando vado a verificare il funzionamento noto che non sta inviando proprio niente...Ho visto per esempio che nel s7-1200 c'è un bottone da spuntare dove dice esplicitamente di abilitare le funzioni GET e PUT nelle opzioni di protezione nelle proprietà del plc, nell's7-300 invece non ho trovato nulla di simile, quindi presumo debba già funzionare, oppure non sia possibile questo scambio tra s7-300. Ditemi un po' voi se è possibile! Vi schematizzo cosa faccio:

Creo due diversi plc all'interno dello stesso progetto, assegno nell'interfaccia profinet due indirizzi IP diversi. Ipotizzando che lo SLAVE debba leggere i dati del MASTER, inserisco nel plc SLAVE il blocco GET, preso dalla sezione comunicazione s7, all'interno dell'OB1, premo sulla "cassettina blu" e indico che voglio fare il collegamento col plc partner MASTER e in automatico mi compila tutto e crea il collegamento S7 attivo. Ho visto che ora posso fare due cose: o inserire direttamente gli indirizzi, per esempio leggi dal plc MASTER a partire da I0.0 per la lunghezza di 1Byte e inserisci i dati letti nel PLC SLAVE a partire Q0.0 per la lunghezza di 1 byte, oppure creare un database o diversi database dove salvare i dati scambiati. Ho visto nei video che devo disabilitare l'accesso ottimizzato al blocco database nel caso fosse attivo. Alcuni poi disabilitavano le variabili a ritenzione, non so cosa cambi, ditemi voi.

Faccio quindi tutte queste cose qui, abilito il merker di clock, per esempio assegnando il byte 0 e lo inserisco nell'entrata REQ, per esempio usando M0.5 se voglio 1Hz di frequenza.

Fatto ciò compilo e carico tutto nei PLC, provo a scrivere una di queste variabili e non succede nulla nell'altro PLC... Noto che da me sotto la scritta PUT si legge Any- Any, mentre nei video che vedo solitamente c'è scritto Remote- Variant...come si fa a modificare? Sto sbagliando qualcosa?

Quindi vi chiedo: devo fare qualche ulteriore passaggio? Ho anche controllato nella sezione protezione e risulta senza protezione quindi non penso ci siano vincoli che bloccano la lettura scrittura. Sto diventando matto con questa cosa, spero sappiate aiutarmi, se vi servono altri dettagli son a disposizione, vi ringrazio in anticipo!!!

P.S. Io in facoltà uso i PLC reali, mentre a casa simulo con PLCSIM, leggevo che una persona non riusciva a simulare lo scambio di dati e gli è stato detto se usava PUT/GET da fb o da sfb...e usandoli da sfb era riuscito a simulare correttamente...

fb sono i blocchi funzionali, ma gli sfb cosa sono? nella lista dei blocchi leggo solo OB, FB, FC e DB

 

Link al commento
Condividi su altri siti


Rispondo alla tua ultima parte della domanda , perchè sul get e put non sono ferrato....:(

 

Gli SFB sono dei blocchi creati da Siemens per eseguire determinate operazioni , e diciamo per facilitarti questo compito e per inquadratri per bene le cose .

Un esempio :  devi leggere un ingresso analogico , che so , da  0 a 10 volt ti corrispondono pressioni dell'ordine da 0 a 10 bar , esempio molto semplice .

Nelle librerie che trovi nello step 7 cerchi li gli sfb e vedrai ce ne sono una marea  ( SFB , OB, ecc, ecc )  :  logicamente prima ci cercarli non li troverai ne nella CPU vedendola on line, ne nel tuo programma creato in step 7

Lo copi e lo incolli nel tuo progetto : se provi ad aprilo ti dice che è protetto , e in genere non vedi  nulla se non alcuni commenti o i nomi del blocco .

In un FB qualunque ( qualunque nel senso..dedicato a determinate operazioni )  tu puoi richiamare quel blocco semplicemente con CALL SFB 105 :  ti apparirà una maschera che cambia da sfb a sfb , ma che appunto ti inquadra il problema e ti quida .   Nel caso del sfb105  ti chiede quale ingresso analogico leggere  ( fisicamente avrà una posizione tipo PEW768 , tanto per dire ), con che scalatura  ( nel nostor esempio  limite inferiore 0 e limite superiore 10 ) , se  il segnal gira anche in negativo  ( variabili true o false ) e la posizione del blocco di memoria dove vorrai appoggiar eil risultato ( esempio  blobbo dati DB4.DBD10 )  ed un appoggio di una word dove lui mette il risoltato ed eventuali errori .

Vado a memoria....non arabbiatevi..

 

CALL sfb105

 

PEW :.....

.....

HI LIM

LO LIM

Bipolar  true

out :---

 

sto scrivendo amemoria, non ho aprto lo step 7....

 

nel tuo programma, se dovessi leggere 10 ingressi analogici diversi , richiami SFB105 quante volte vuoi .

Hai trovato la lista dei blocchi ?  nell'archivio dei progetti o nella standard libriry ?   premi F1 dovrebbe dirti ogni singolo sfb a cosa serve

 

Buon lavoro !

Link al commento
Condividi su altri siti

Ah, ok, ti ringrazio per la risposta, quindi le SFB sarebbero in pratica le funzioni "già pronte" tipo quelle che sto usando io, GET, PUT, oppure per esempio CONT_C per i PID ecc. ? Allego la foto per capirci meglio!

A parte questa cosa non c'è qualcuno che sa dirmi almeno se è possibile comunicare col cavo ethernet inserito nella porta PN tra due PLC S7-300? Perché magari non è manco possibile e io mi sto ammattendo per nulla...

Mi aiuterebbe capire nel caso voi facciate questo collegamento se fate qualche passaggio in più rispetto a me o se magari c'è la necessità di inizializzare qualcosa, oppure togliere qualche protezione o scrivere su variabili diverse... spero qualcuno che se ne intenda mi possa aiutare, grazie in anticipo!

SFB.jpg

Link al commento
Condividi su altri siti

  • 1 month later...

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