Scambio dati tra diversi sistemi SlimLine
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Scambio dati tra diversi sistemi SlimLine
- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 12 anni, 2 mesi fa da
Maurizio Conti.
-
AutorePost
-
Aprile 16, 2012 alle 6:25 am #35199
Roberto
PartecipanteDevo mettere in piedi la comunicazione tra sistemi SlimLine. Ho 3 CPU nella stessa rete, e devo fare in modo che ogni CPU possa inviare un certo numero di word alle altre CPU in modo da avere una copia delle memoria scambiata tra tutte le CPU. In pratica per tutte le CPU avrò ad esempio:
Da word DB100.0 a DB100.99 i dati del PLC 1
da word DB100.100 a DB100.199 i dati del PLC 2
da word DB100.200 a DB100.299 i dati del PLC 3Creerò se non esiste un FB che controlla la variazione dei suoi canali ed in caso di evento invia il suo pacchetto agli altri plc della rete allocandoli negli spazi definiti. In pratica ogni PLC sa tutto degli altri partecipanti della rete.
Esiste per caso già qualche esempio di qualcosa di simile alla mia necessità da poterlo modificare ?
Aprile 16, 2012 alle 7:40 am #37206Sergio Bertana
Amministratore del forumLo scambio di memoria tra sistemi SlimLine tramite connessione UDP è gestito dal blocco funzione UDPDataTxfer (Vedi post). Con questo blocco funzione è possibile scambiare un blocco di memoria tra due sistemi, l’FB gestisce sia la trasmissione che la ricezione dei dati. I dati sono trasmessi con i controlli di CRC ed è gestito un acknowledge sulla ricezione, nel caso in cui il pacchetto UDP venga perso viene eseguita automaticamente la ritrasmissione.
L’FB per minimizzare il traffico di dati sulla rete, invia il pacchetto dati verso gli altri sistemi solo se vi è variazione dei dati nel buffer in scambio.
Seguendo le tue richieste ho realizzato un programma LogicLab che prevede la gestione dello scambio tra i 3 sistemi. Per semplicità ho realizzato un solo progetto con 3 programmi.
DataTxFerPLC0:
Invia verso PLC1 (192.168.0.101) da DB100.0 a DB100.99 e riceve da DB100.100 a DB100.199
Invia verso PLC2 (192.168.0.102) da DB100.0 a DB100.99 e riceve da DB100.200 a DB100.299
DataTxFerPLC1:
Invia verso PLC0 (192.168.0.100) da DB100.100 a DB100.199 e riceve da DB100.0 a DB100.99
Invia verso PLC2 (192.168.0.102) da DB100.100 a DB100.199 e riceve da DB100.200 a DB100.299
DataTxFerPLC2:
Invia verso PLC0 (192.168.0.100) da DB100.200 a DB100.299 e riceve da DB100.0 a DB100.99
Invia verso PLC1 (192.168.0.101) da DB100.200 a DB100.299 e riceve da DB100.100 a DB100.199Ti ricordo che puoi esportare ogni programma (Tasto destro del mouse sul programma Export program to Library) dal mio progetto in una libreria ed importarlo poi nel tuo progetto. Allego stampa del progetto e file sorgente per download.
Febbraio 7, 2013 alle 9:05 am #37555Maurizio Conti
PartecipanteMi trovo nella necessità di remotare i 2 inputs presenti sullo SlimLine verso un altro SlimLine connesso in rete col precedente. Consultata la documentazione ho pensato che una soluzione potrebbe essere utilizzare il blocco UDPDataTxfer (ho tralasciato il Modbus perchè mi è sembrato di capire che ModbusRTUMaster non è disponibile su TCP/IP).
Ho implementato in ST l’esempio presente sul manuale ma non riesco a farlo funzionare, in quanto l’uscita UDPDataTxfer.Done che attesta la comunicazione tra i due apparati è sempre FALSE. Potrei avere qualche suggerimento (premetto che la rete non ha problemi, due apparati rispondono al ping) ? Magari un esempio in ST ?
Febbraio 8, 2013 alle 9:41 am #37557Sergio Bertana
Amministratore del forumHo ripreso l’esempio del messaggio precedente e l’ho modificato per gestire lo scambio degli I/O del modulo CPU, il programma era il LD e l’ho mantenuto tale. Così come è il programma funziona l’ho testato personalmente, basta caricare il programma nei due sistemi SlimLine.
Attenzione devi modificare l’indirizzo IP del sistema con cui scambiare i dati definendo in ogni sistema l’IP dell’altro. Ti conviene provarlo così in LD e poi vedi se modificarlo in ST (Stampa programma, download sorgente).
Febbraio 8, 2013 alle 11:49 am #37558Maurizio Conti
PartecipanteGrazie per la risposta. Ho fatto come suggerito: ho caricato il programma LD, con gli IP opportunamente incrociati, ma non è cambiato nulla.La variabile UDPDataTxfer.Done è sempre FALSE, il contatore UDPDataTxfer.Errors si incrementa di continuo e i DI non vengono remotati.
Per sgombrare eventuali dubbi i due PLC risultano comunque tra loro reciprocamente pingabili (ho fatto la prova con la console Telnet di SlimLine). Il parametro UDPDataTxfer.Port deve essere lo stesso sui entrambi i PLC, vero ?
Febbraio 8, 2013 alle 1:06 pm #37559Sergio Bertana
Amministratore del forumProbabilmente hai una versione non aggiornata del sistema operativo di SlimLine, dovresti aggiornarlo all’ultima vedi FAQ relativa.
Febbraio 8, 2013 alle 3:58 pm #37564Maurizio Conti
PartecipanteHo allineato i PLC alla versione SFW167D170 (uno in realtà era già aggiornato sull’altro girava la SFW167D160) e ora il programma LD funziona alla perfezione. Mi cimento ora con la scrittura del codice ST. Mille grazie per la collaborazione.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.