Vai al contenuto

Conversione Modbus RTU Modbus TCP

Home Forum Programmazione IEC 61131 (LogicLab) Conversione Modbus RTU Modbus TCP

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #44140
    Giovanni
    Partecipante

    Dovremmo gestire una conversione di Protocolli Modbus da RTU a TCP, ovvero leggere dei dati da uno slave Modbus in seriale e metterli a disposizione in modbus TCP perchè vengano letti dal un supervisore.

    Non potendo sostituire la tabella modbus del supervisore, dovremmo allocare i nostri dati a partire dall’indirizzo 1800h ovvero 6144 in decimale, tuttavia mi sembra di capire che l’indirizzo massimo è  42048 operando sulla memoria DB100.

    #44143
    Sergio Bertana
    Amministratore del forum

    Se vuoi eseguire la lettura diretta dal tuo slave Modbus RTU puoi utilizzare il FB ModbusTCPGateway (Topic), in questo caso le richieste Modbus TCP saranno indirizzate direttamente al sistema slave via Modbus RTU. Naturalmente dovrai utilizzare gli indirizzi che il tuo sistema slave RTU pubblica.

    La seconda strada invece è di istanziare un FB ModbusMaster che legge i dati dallo slave Modbus RTU, trasferisce i dati in memoria dello SlimLine da cui potrai poi acquisirli in Modbus TCP, ecco alcuni topics utili (Topic, topic, topic). In questo caso se trasferisci i dati nella DB100 la gestione Modbus del sistema operativo mappa i dati nel caso di comandi coils dall’indirizzo 40000 a 44095, nel caso di comandi registers dall’indirizzo 40000 a 42047.

    Ma tu puoi istanziare una FB ModbusSlave ed a questo punto potrai decidere  da programma a che range di indirizzi mappare i dati. Naturalmente se vorrai agganciare il FB alla porta 502 dovrai da pagina web spostare la gestione del Modbus del sistema operativo su di un’altra porta.

    #44233
    Giovanni
    Partecipante

    Grazie per la celere risposta.

    Ho risolto l’interrogazione dello slave Modbus seriale configurando il blocco SysSerialPort e il blocco ModbusMsCore al quale ho fatto seguire i blocchi SAModbusCmd (uno per ogni variabile, poiché gli indirizzi da interrogare non sono contigui).

    Per quanto riguarda invece l’utilizzo del FB ModbusSlave , l’esempio riportato sul manuale, riguarda l’utilizzo di una porta seriale , mentre nel mio caso devo utilizzare la porta TCP, per cui ho provato a configurare il blocco SysTCPServer a cui far seguire il blocco ModbusSlave con parametro type a 2.

    Il blocco  SysTCPServer sembra funzionare (se mi connetto con un programma che simula un master modbus vedo anche il numero di connessioni passare da zero a uno), mentre non riesco a leggere la variabile indirizzata e vedo attraverso la finestra di watch che blocco ModbusSlave è in  il fault e sono presenti  errori.

    #44246
    Sergio Bertana
    Amministratore del forum

    Mettendo nella finestra di Watch la variabile SysLastError, oppure connettendoti in Telnet con il comando SysLog potrai vedere che errore hai, seguendone il numero nel manuale troverai le indicazioni per risolvere il problema. Puoi anche indicarmi l’errore e/o inviare il file Logs.txt con i logs di sistema alla nostra mail di supporto.

    Il FB ModbusSlave ha anche l’ingresso SpyOn che se attivo permette di spiare dalla console di spionaggio cosa succede, ti consiglio di attivarlo e magari anche questo ti aiuterà a capire il problema.

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