Vai al contenuto

Codici modbus utilizzati per la comunicazione dal pannello

Home Forum Terminali operatore (Weintek) Codici modbus utilizzati per la comunicazione dal pannello

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

    Stò utilizzando un vostro pannello Weintek con porta ethernet connesso in Modbus TCP/IP con un PLC Panasonic, per eseguire un test di connessione ho inserito nella pagina iniziale del pannello un oggetto di Introduzione Numerica che fà riferimento al registro 399 del PLC. Ho definito nel menù a tendina il codice 3x seguito dall’indirizzo del registro ma collegandomi al PLC con il programma in simulazione su PC mi viene ritornato errore di comunicazione.

    Ho provato a catturare i pacchetti Modbus TCP con Wireshark ed ho visto che il pannello invia il pacchetto di interrogazione Modbus con il codice 04 pur avendo definito 3x nel menù a tendina. Il PLC non gestisce il comando Modbus 04. Come posso risolvere ?

    #37917
    Sergio Bertana
    Amministratore del forum

    I codici riportati nel menù a tendina delle impostazioni oggetto sul terminale (Screenshot) sono solo una convenzione non corrispondono ai reali codici Modbus utilizzati nel protocollo di comunicazione. Come riportato nel manuale connessioni PLC ecco una tabella con le corrispondenze tra il codice definito nell’oggetto ed il relativo codice Modbus.

    (0x) Codici Modbus: Lettura 0x01 Read coil, Scrittura 0x05 write single coil
    (0x_multi_coils) Codici Modbus: Lettura 0x01 Read coil, Scrittura 0x0F Write multiple coils
    (1x) Codici Modbus: Lettura 0x02 Read discrete input, Non gestisce scrittura
    (3x) Codici Modbus: Lettura 0x04 Read input register, Non gestisce scrittura
    (4x) Codici Modbus: Lettura 0x03 Read holding register, Scrittura 0x10 Write multiple registers
    (5x) Codici Modbus: Lettura 0x03 Read holding register, Scrittura 0x10 Write multiple registers (Swap valore)
    (6x) Codici Modbus: Lettura 0x03 Read holding register, Scrittura 0x06 Write single register (Solo un registro)
    (3xbit) Equivalente al comando 3x
    (4xbit) Equivalente al comando 4x

    #48595
    Manuel
    Partecipante

    Riprendo questa discussione visto sto cercando di comunicare con un MT8070iE con un dispositivo modbus TCP/IP, devo utilizzare il comando 0x05 write single coils e scrivere sull’indirizzo 10010 metterlo ad uno. Se uso un software free esterno funziona se uso il pannello non riesco o meglio non capisco il comando  da usare come pulsante a bit.

    In teoria ho impostato modbus zero address imposto bit con un pulsante e uso il comando 0x ma come faccio dirgli di usare il 0x05 e di puntare il 10010.

    PS: Ho acquistato diversi pannelli da voi e mi trovo benissimo.

    #48598
    Sergio Bertana
    Amministratore del forum

    Se guardi il post precedente vedrai che usando il comando 0x il pannello utilizzerà in automatico il codice Modbus 01 per leggere il valore del bit ed il codice 05 per scrivere il valore, quindi l’utilizzo del codice 0x è corretto.

    Ma solleverei dei dubbi intanto sull’utilizzo dello Zero-based Addressing sicuro che non sia meglio usare modbus TCP standard ? prova con entrambi perchè se il tuo dispositivo è Modbus compliant devi usare Modbus TCP standard.

    Sicuro che l’indirizzo da usare sia 10010, in molti application node (Ed in emulatori di Modbus) si aggiunge il codice modbus in testa all’indirizzo, e 10010 indica di usare il comando Modbus 01 per leggere l’indirizzo 10. Quindi proverei ad usare comando 0x con indirizzo 10.

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