Libreria per comunicazione tra sistemi su Internet

Attenzione !I messaggi sul forum potrebbero essere modificati dal nostro staff. La data e l'ora dei messaggi potrebbe non essere quella di invio ma quella di moderazione da parte dello staff. Grazie per l'attenzione.

Home Forum Programmazione IEC 61131 (LogicLab) Libreria per comunicazione tra sistemi su Internet

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Autore
    Post
  • #35941
    Sergio Bertana
    Amministratore del forum

    Abbiamo reso disponibile la libreria eLLabDataExchLib (Estratto manuale) che permette lo scambio dati tra sistemi con il protocollo TCP/IP sia su rete locale che tramite Internet. Il blocco funzione TCPDataExchServer in esecuzione su di un sistema agisce da server ed accetta connessioni da uno o più sistemi in cui è in esecuzione il blocco funzione TCPDataExchClient.

    E’ evidente che in questo scenario se il sistema che agisce da server è connesso ad Internet tramite una connessione che prevede l’IP pubblico (Anche dinamico), tanti sistemi che agiscono da client, connessi ad Internet tramite reti ad IP privato e/o NATtate possono scambiarsi dati tra loro triangolando sul sistema server.

    Ecco quindi che in uno scenario come quello delle public utilities esempio distribuzione acqua o gas dove abbiamo sistemi sparsi geograficamente sul teritorio e connessi ad Internet tramite connessioni ad IP NATtato possono scambiare con il server centrale e  tra di loro i dati. E’ anche possibile tramite il server riportare su di un pannello operatore od un sistema SCADA i dati dei vari sistemi client connessi.

    #39371
    Sergio Bertana
    Amministratore del forum

    Ho realizzato un programma dimostrativo per testare il funzionamento della nuova libreria (La libreria è inclusa nel dimostrativo), il programma si compone di due progetti TCPDEServer (Stampa) da trasferire sul sistema che agisce da server e TCPDEClient (Stampa) da trasferire sul sistema (Uno o più) che agisce da client.

    Come si vede il programma server accetta fino a due connessioni client, nel programma client è definito un indirizzo IP per il sistema server ma accetta anche un URL come si vede dalla linea commentata. Entrambi i programmi che possono funzionare su di un sistema Compact ethernet sono disponibili per il download (Download TCPDataExchange).

    #39470
    Sergio Bertana
    Amministratore del forum

    Per chi non ha molta dimestichezza con i programmi testuali ho modificato l’esempio del post precedente realizzandolo utilizzando il linguaggio ladder. Per la valorizzazione della struttura dati TCPDEXCHNODEDEFS di definizione dei parametri dei nodi in comunicazione ho realizzato la funzione DataExchSet (Stampa) che ne permette la valorizzazione da linguaggio ladder.

    Il programma dimostrativo per testare il funzionamento della nuova libreria (La libreria è inclusa nel dimostrativo), si compone di due progetti TCPDEServer (Stampa) da trasferire sul sistema che agisce da server e TCPDEClient (Stampa) da trasferire sul sistema (Uno o più) che agisce da client.

    Come si vede il programma server accetta fino a due connessioni client, nel programma client è definito un indirizzo IP per il sistema server ma accetta anche un URL. Nell’esempio per comodità è gestito lo scambio di una sola variabile BOOL ma è possibile definire array di variabili.

    Il FB BufferModified controlla eventuali variazioni nel buffer dati in trasmissione verso l’altro sistema e quando vi è una variazione comanda immediatamente la trasmissione del buffer, in questo modo si ha l’invio in tempo reale dello stato.

    Entrambi i programmi che possono funzionare su di un sistema Compact ethernet sono disponibili per il download (Download TCPDataExchange).

    #40076
    Sergio Bertana
    Amministratore del forum

    L’argomento è trattato in modo più dettagliato in questa knowledge.

    #53926
    Alberto
    Partecipante

    Sul  sistema che abilita le uscite come si può (se si può) fare per settare delle variabili di appoggio al posto delle uscite tra i due sistemi?

     

    #53946
    Sergio Bertana
    Amministratore del forum

    I vari sistemi scambiano un’area di memoria, stà poi al programma che viene fatto a decidere se appoggiare la memoria su I/O fisici o su gestire variabili interne.

    Ad esempio si potrebbe comunicare variabili acquisite e/o impostare variabili su altri sistemi connessi in Modbus.

    #54304

    Sto testando la libreria con un PLC master e 1 Slave (per ora), perche dovrei realizzare un programma di un macchinario (master) che trasferisce e riceve informazioni da qualche slave, per ora saranno un paio poi aumenteranno a circa 10. Mi servirebbero però alcuni chiarimenti a dei dubbi che mi sono venuti e che non sono riuscito a chiarirmi da solo.

    1) Nel manuale allegato all’ultima versione di logiclab nella pagina dedicata a TCPDEXCHNODEDEFS si evidenziano ingressi e uscite che in realtà nel programma dimostratico non sono riuscito a trovare ad esempio AutoTxD, TxHeartbeat, RxHeartbeat. Nonostante abbia provato a eseguirlo.

    Inoltre trovo un’incongruenza nella descrizione di RxOk | BOOL | R | Rx data Ok. Settato su ricezione dati dall’altro sistema, i dati sono stati trasferiti in RxBuffer. Deve essere resettato da programa utente.

    Poi sotto si legge che

    I campi RW devono essere impostati dal programma utente, i campi R non devono essere modificati da programma utente, possono solo essere letti. siccome RxOk fa parte del gruppo “R” non capisco se bisogna resettarlo oppure no, in caso affermativo come?

    2) Nel FB TCPDataExchClient cè una variabile ingresso Heartbeat, impostata a 5 (s) da quello che ho capito è un atutomatismo per mandare un pacchetto per controllare la connessione giusto? in ogni caso ho provato a cambiare il valore, se provo a mettere un valore minore di 5 il TCPDEXCHNODEDEFS va in errore, 5 secondi è il tempo minimo?

    3) Sempre nel manuale nella pagina riguardante TCPDataExchClient non riporta come variabili Heartbeat come se non ci fosse, ma in realta nel fb è presente.

    4) Non mi è chiaro come si potrebbe gestire un controllo sulla comunicazione, l’unica cosa che mi è venuta in mente è controllare la variabile Active di TCPDEXCHNODEDEFS, in true quando connessione stabilita e false quando connessione non riuscita è esatto? ci sono altri metodi?

    5) In caso i parametri da passare ai PLC fossero di size diverse (word, doppie word e real) come dovrei gestire il trasferimento dati a txbuffer. dovrei istanziare un altro FB TCPDataExchClient e TCPDEXCHNODEDEFS, ma non avendo un’uscita done non saprei.

    Per adesso direi basta vediamo se mi vengono altri dubbi.

    #54349
    Sergio Bertana
    Amministratore del forum

    Questa libreria è in evoluzione, ora la documentazione ufficiale la trovi nel manuale sul sito di supporto, vedi questi articoli (TCPDEXCHNODEDEFS, TCPDataExchServer, TCPDataExchClient). Ti consiglio di coipiare ed incollare gli esempi riportati, come vedi utilizzando il localhost puoi testare il funzionamento eseguendo sia il server che il client (1 o più) su di  un unico sistema.

    Il bit RxOk non và resettato da programma, in realtà si attiva per un loop di programma ad ogni ricezione dei dati.

    La variabile Heartbeat ora è definita nella struttura dati di configurazione.

    La variabile Active presente nelle struttura dati di configurazione se è attiva indica che la connessione tra ia sistemi è attiva.

    Non capisco la domanda sulla trasmissione dai dati, occorre definire un’area da inviare all’altro sistema, poi in quell’area puoi mettere tutti i tipi di dato che vuoi. Nel mio esempio ho usato per semplicità un array, ma nel caso reale conviene utilizzare una struttura dati in modo da poter raggruppare dati disomogenei.

Stai visualizzando 8 post - dal 1 a 8 (di 8 totali)
  • Devi essere connesso per rispondere a questo topic.