Vai al contenuto

Rispondi a: Comunicazione tra due SlimLine via Ethernet

Home Forum Controllori SlimLine e Netsyst (LogicLab) Comunicazione tra due SlimLine via Ethernet Rispondi a: Comunicazione tra due SlimLine via Ethernet

#39239
Sergio Bertana
Amministratore del forum

Il modo più semplice di scambiare dati tra diversi dispositivi SlimLine è utilizzare il FB UDPDataTxfer. Il FB utilizza il protocollo UDP per lo scambio dati ed è possibile definire la dimensione in bytes dell’area da scambiare tra i dispositivi (Topic, Topic). Naturalmente trattandosi di connessione in UDP non si parla di Client/Serrver ma di comunicazione peer to peer, però il concetto non cambia, i due sistemi si scambiano dati.

Se invece la tua domanda è più didattica, cioè vuoi capire come sfruttare le nuove caratteristiche del firmware che permettono di realizzare connessioni Client/Server TCP occorre fare alcune premesse. Il file pointer delle FBs SysTCPClient e SysTCPServer è uno stream di comunicazione tutto quello che invii (Funzioni Sysfputc, Sysfwrite) da un lato lo puoi leggere dall’altro con le funzioni Sysfgetc, Sysfread.

Ora per inviare dati da un sistema all’altro devi costruirti un protocollo, il mio consiglio è utilizzare ad esempio il Modbus che è già pronto, puoi usare il FB ModbusMaster, su di un sistema, mentre dall’altro il supporto del protocollo Modbus slave è già nativo. Ti posto una cartella con due progetti uno TCPModbus è la gestione del master modbus (Vedi stampa), l’altro SlaveSystem è il progetto da caricare sul sistema slave.

Nello slave mi sono limitato a copiare la word MW100.32 sulla MW100.0, il sistema master legge 16 words dallo slave ad indirizzo 40000 (Address reale 100.0) ed invia 16 words ad indirizzo 40016 (Address reale 100.32). Con il sistema master in debug come vedi dallo screenshot puoi forzare uin valore nella MdbWr e te lo ritrovi dopo un po nella MdbRd. Il programma esegue una comunicazione modbus ogni secondo MMdb.Delay:=1000; (* Communication delay *) ma tu puoi modificare il valore (Download progetto).