Programma demo modbus TCP/IP slave
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Programma demo modbus TCP/IP slave
-
AutorePost
-
Gennaio 20, 2015 alle 2:42 pm #35717
Luciano
PartecipanteAvete una semplice demo per slimline mps046a100 che faccia da modbus TCP/IP slave ?
Gennaio 22, 2015 alle 7:40 am #38675Sergio Bertana
Amministratore del forumTi ricordo cher il Modbus TCP/IP slave è nativo nei moduli CPU SlimLine, sono gestibili fino a 3 connessioni sulla porta standard 502. Indirizzo di nodo di default è 1. Dalla pagina web di configurazione è possibile modificare questi parametri (Screenshot).
Se invece l’esigenza è di sviluppare un tuo protocollo di comunicazione TCP/IP puoi dare una occhiata a questo topic. Va da sè che utilizzando il programma postato nel topic, una volta che hai il FILEP del socket TCP/IP puoi inserire nel programma il FB ModbusSlave ed utilizzare il FB in alternativa alla gestione Modbus nativa.
Gennaio 22, 2015 alle 12:47 pm #38678Luis
PartecipanteEsiste la posibilità di leggere variabili di altri PLC SlimLine tramite modbus TCP/IP, utilizzando una funzione simile al ModbusSlave.
Gennaio 22, 2015 alle 1:33 pm #38679Sergio Bertana
Amministratore del forumPer leggere variabili da altri PLC devi utilizzare il FB ModbsMaster che è utilizzabile su uno stream di comunicazione in questo topic trovi un esempio di comunicazione in RS485 tra un master e molti slaves. Purtroppo però allo stato attuale del sistema operativo è possibile aprire connessioni TCP/IP solo in modalità server e non è possibile aprire connessioni in modalità client. Quindi non è possibile aprire uno stream di comunicazione TCP/IP da collegare alla FB ModbusMaster.
Per il dialogo tra diversi sistemi SlimLine in TCP/IP è disponibile il FB UDPDataTxfer (Topic).
Gennaio 23, 2015 alle 6:38 am #38680Luciano
PartecipanteMolto interessante… se invece volessi leggere la memoria (variabili globali mi pare) quale è il comando ?
Gennaio 23, 2015 alle 8:12 am #38681Sergio Bertana
Amministratore del forumIl modbus slave nativo gestito dal sistema operativo opera sulla memoria della DB 100, pui accedere da Modbus con indirizzi a partire da 40000. Ti consiglio di leggere attentamente il capitolo relativo al protocollo Modbus sul Manuale programmazione IEC61131-3.
Se invece non utilizzi il modbus slave nativo e vuoi implementare una tua gestione modbus slave puoi realizzare un tuo programma con il FB ModbusSlave. In questo caso il range di indirizzi Modbus e l’area di memoria su cui i comandi operano lo decidi parametrizzando opportunamente il FB.
Stessa cosa vale per il FB UDPDataTxfer in cui è gestito lo scambio di una area di memoria definita nella parametrizzazione del FB.
Gennaio 23, 2015 alle 2:11 pm #38684Luciano
PartecipanteHo fatto le prove con un simulatore di Modbus TCP/IP e mi va bene con il modbus slave nativo… Mi confermi che posso accedere allo stesso PLC con 3 master contemporaneamente ?
Gennaio 23, 2015 alle 4:20 pm #38685Sergio Bertana
Amministratore del forumSi come puoi vedere da questo topic i sockets disponibili per il protocollo Modbus (Standard sulla porta 502) sono 3. Quindi puoi avere 3 connessioni Modbus TCP/IP contemporanee.
Ti ricordo che l’ambiente di sviluppo LogicLab si connette in Modbus TCP/IP con il modulo CPU e quindi se vuoi connetterti con LogicLab devi lasciare una delle connessioni libera.
Gennaio 23, 2015 alle 4:55 pm #38686Luciano
PartecipanteBenissimo… ho provato anche col del codice php e risponde egregiamente…
Oltre ad interrogare valori interi è possibile interrogare anche valori a virgola mobile ?Gennaio 24, 2015 alle 8:42 am #38687Sergio Bertana
Amministratore del forumCerto tramite il protrocollo Modbus puoi leggere sia numeri a 32 bits DINT e UDINT che numeri REAL. Naturalmente dovrai leggere due registri modbus a 16 bit per ogni numero con il comando Modbus Read Holding Registers (16#03).
Ti ricordo che siccome il protocollo Modbus non indica l’endianness dei dati a 32 bits dovrai stare attento alla compatibilità con l’endianness del stuo sistema eventualmente eseguendo uno swap MSB/LSB dei due registri a 16 bits letti/scritti con Modbus. Questo topic tratta l’endianness dei sistemi SlimLine.
In questo topic è trattato il formato IEEE-754 utilizzato per la rappresentazione dei numeri REAL nei sistemi SlimLine.
Febbraio 13, 2015 alle 7:18 am #38723Luciano
PartecipanteHo uno SlimLine MPS046A100 posso usarlo come unità slave Modbus RTU su COM1 e contemporaneamente come slave Modbus TCP/IP ?
in poche parole devo appoggiarci delle variabili da una unita master Modbus RTU (trattasi di schedina zbasic che già utilizzo) cosi facendo posso esporre sul web le variabili e interrogarle col Modbus TCP/IP…
Febbraio 13, 2015 alle 7:21 am #38724Sergio Bertana
Amministratore del forumCerto che è possibile, naturalmente dovrai agire sulle stesse variabili da entrambe le istanze Modbus, in pratica da Mobus RTU la tua schedina scrive/legge le stesse variabili che sono scritte/lette da Modbus TCP/IP.
Se prendiamo ad esempio la variabile UINT DB 100.16 (Address Modbus 40008) potrai scrivere il valore da Modbus RTU e leggerlo da Modbus TCP/IP e viceversa.
Se la tua schedina può operare come slave Modbus RTU puoi anche utilizzare l’FB ModbusTCPGateway (Topic) per accedervi da Modbus TCP/IP.
Febbraio 14, 2015 alle 3:00 pm #38733Luciano
PartecipanteHo fatto le prove e funziona, posso aggiungere che in più funziona contemporaneamente anche come slave sulla COM0 con
parametri di velocita anche diversi (baud rate)…Si la mia schedina può funzionare anche da slave e quando avrò un pò di tempo proverò anche la soluzione con il FB ModbusTCPGateway…
Aprile 22, 2021 alle 2:28 pm #59716Giovanni
PartecipanteÈ possibile in qualche modo accedere da HMI direttamente tramite Modbus TCP/IP agli ingressi e uscite del PLC e dei Moduli (es. %IX255.5, %QX255.3)?
Aprile 22, 2021 alle 2:31 pm #59723Sergio Bertana
Amministratore del forumTramite Modbus è possibile accedere solo all’area di memoria mappata in DB100, non è possibile agire direttamente sugli I/O.
Paer acquisire gli ingressi digitali e per gestire le uscite digitali ti consiglio di mappare in DB100 variabili BOOL di appoggio degli I/O. Poi con un semplice programma in ladder o ST potrai copiare gli ingressi reali sulle varibili BOOL di appoggio e lo stato delle uscite dalle variabili BOOL di appoggio sulle uscite reali.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.