Vai al contenuto
PLC Forum


Comunicazione Modbus Tcp - Esempio di comunicazione tra S7 1200 e Zelio


baltimora

Messaggi consigliati

Sperando di fare cosa gradita, posto un piccolo esempio di come gestire uno zelio dotato di modulo ethernet modbus tramite un pannello operatore KTP 400, sfruttando come master un S7 1200.

La comunicazione avviene mediante prootcollo modbus TCP.

Le potenzialità dello zelio, sono purtroppo molto limitati, è possibile leggere e scrivere solo 8 reggistri word. (4 in scrittura e 4 in lettura).

Tale soluzione può essere però utilizzata per la realizzazione di piccoli e semplici automazioni e/o impiantini domotici sfruttando l'eventuale rete ethernet esistente.

Il progetto di esempio può essere scaricato Qui

Mentre un video di dimostrazione è visibile

Link al commento
Condividi su altri siti


Da master.

L'esempio non è per gestire lo zelio mediante KTP400, ma come realizzare un sistema di scambio dati tra master e slave modbus.

Link al commento
Condividi su altri siti

  • 10 months later...

Da master.

L'esempio non è per gestire lo zelio mediante KTP400, ma come realizzare un sistema di scambio dati tra master e slave modbus.

Ciao giuseppe,praticamente in questo caso il 1200 fa il master e lo zelio slave?cioè tu con il ktp in realtà programmi il 1200 che poi comanda lo zelio?

Link al commento
Condividi su altri siti

Si, esatto :thumb_yello: , ma lo zelio potresti comandarlo anche senza l'S7 1200, direttamente da un qualunque pannello operatore impostato come master modbus.

L'esenpio da me postato e per far funzionare il 1200 come master modbus TCP. Ovviamente per tale esempio ho utilizzato le apparecchiature che avevo a disposizione in quel momento. Esattamente come dici tu con il KTP invio le informazioni al S7 1200 e poi S7 1200 le invia e legge dallo zelio.

Modificato: da baltimora
Link al commento
Condividi su altri siti

Si, esatto :thumb_yello: , ma lo zelio potresti comandarlo anche senza l'S7 1200, direttamente da un qualunque pannello operatore impostato come master modbus.

L'esenpio da me postato e per far funzionare il 1200 come master modbus TCP. Ovviamente per tale esempio ho utilizzato le apparecchiature che avevo a disposizione in quel momento. Esattamente come dici tu con il KTP invio le informazioni al S7 1200 e poi S7 1200 le invia e legge dallo zelio.

Bel lavoro. Ho notato però che il modulo di comunicazione viene montato sulla dx dello zelio,esattamente dove io ora ho montato un espansione I/O. Cio significa che io non potrei montarlo?o possono essere montati entrambi contemporaneamente?

Ps:non c entra niente,ma qualcuno sa se si possono inserire le faccine scrivendo da iphone?

Link al commento
Condividi su altri siti

Complimenti baltimora !!!! :thumb_yello:

Grazie

Si il modulo di comunicazione viene inserito al lato dello zelio. Possono essere inseriti anche altri moduli in uno all'interfaccia modbus sia se RTU (seriale) che TCP (ethernet). In una precedente applicazione ho anche condiviso oltre l'espanzione RTU anche quella GSM senza alcun problema.

L'espanzione modbus per lo zelio è simpatica per la realizzazione di qualche semplice interfaccia grafica in visual basic.

Unica pecca che le espansioni per il modbus dello zelio sono limitate a solo 8 reggistri (4 in scrittura e 4 in lettura) pertanto molto limitati.

Modificato: da baltimora
Link al commento
Condividi su altri siti

Grazie

Si il modulo di comunicazione viene inserito al lato dello zelio.

Perdona la mia eterna ignoranza,ma lo slave zelio tu dove lo vedi?sul tia?cioè fisicamente come riesci a comunicarci?

Link al commento
Condividi su altri siti

Qui la cosa si complica nel riuscire a farti capire come funziona un protocollo di comunicazione.

Senza entrare troppo nel merito per non far confusione, ma restando nel tema dell'esempio, tu nel tia non vedrai mai lo zelio, come ad esempio vedi il KTP 400 e lo inserisci nel programma. Nel tuo progetto integri delle librerie di conunicazione che in questo caso sono già presenti nel tia, ma potrebbero provenire da terze parti o scriverle tu, che si preoccupano di gestire la comunicazione con un oggetto remoto e quindi di andare a leggere e scrivere delle variabili che gli indichi tu ed il quale tu sai quel valore che riceverai cosa indica.

In alcuni casi, ad esempio se devi comunicare con un driver per motori stepper, è il costruttore dell'apparecchio che ti dice registro per registro a cosa servono e quale è il significato del valore che ti viene restituito.

Ad esempio registro 1 valore della velocità rampa di acc, registro 2 velocità rampa decel. registro 3 velocità nominale di lavoro regostro 4 1° bit enable, 2° bit direzione ecc. ecc

In altri casi ad esempio quando comunichi tra due PLC nei registri metti il valore e gli attribuisci il significato che vuoi tu.

Ciao

Modificato: da baltimora
Link al commento
Condividi su altri siti

Salve a tutti

sono nuova del Forum. E' da poco che mi sono avvicinata ai plc.

Ho provato a far comunicare Plc e computer. Fin qui tutto ok, riesco a farli comunicare correttamente. Se per caso va via la comunicazione (ad esempio, se tolgo il cavo di rete oppure si spegne il plc) e il plc sta leggendo i dati dal plc, l'applicazione si blocca per circa 20 secondi.

Premium = New TcpClient()

Dim result As IAsyncResult = Premium.BeginConnect(IP_Plc, 502, Nothing, Nothing)

Dim success As Boolean = result.AsyncWaitHandle.WaitOne(150, True)

if (success) Then

Dim Master As Device.ModbusIpMaster = Modbus.Device.ModbusIpMaster.CreateIp(Premium)

Try

Word_uscita = Master.ReadHoldingRegisters(20, 4)

Word_Orario = Master.ReadHoldingRegisters(32, 3)

Catch ex As InvalidOperationException

'Richiamo timer per far ripartire la comunicazione

End Try

Label1.Text = Word_uscita(0)

Label2.Text = Word_uscita(1)

Label3.Text = Word_uscita(2)

Label4.Text = Word_uscita(3)

Else

'Riprovo la connessione

End if

L'applicazione si blocca su questa istruzione : Word_uscita = Master.ReadHoldingRegisters(20, 4)

Come posso intercettare l'errore per non farlo bloccare?? Nonostante ci sia l'eccezione va in blocco lo stesso.

Grazie.

Link al commento
Condividi su altri siti

Un'idea veloce sarebbe quella di fare un ping sull'indirizzo IP del PLC e leggi il risultato del ping. Con il risultato del ping gestisci l'errore.

Un metodo veloce per fare il ping è quello di langiare il comando PING dal dos con Shell e fai la redirezione del risultato in un file da cui leggi il risultato.

Se fai una ricerca su google trovi comunque diversi modi di come fare un ping da VB.

Spero di esserti stato utile.

Modificato: da baltimora
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...