Vai al contenuto

Comando uscite logiche da Modbus TCP

Home Forum Controllori SlimLine e Netsyst (LogicLab) Comando uscite logiche da Modbus TCP

Taggato: 

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #57444
    f.lenti
    Partecipante

    Vorrei gentilmente sapere se fosse possibile accendere i led “Digital Output” (DO00, DO01, DO02, DO03) dello SlimLine MPS053B110 utilizzando i comandi Modbus TCP e sfruttando la gestione Modbus Slave già presente nel firmware degli SlimLine.

    Ho testato il corretto funzionamento del protocollo Modbus TCP usando l’applicazione Toolly sulla porta 502 e lo scenario ottenuto è il seguente:

    Comando inviato: 00 00 00 00 00 0D 01 10 A0 3F 00 03 06 FF FF FF FF FF FF

    Risposta ricevuta: 00 00 00 00 00 06 01 10 A0 3F 00 03

    Le impostazioni dello SlimLine (nodo, Over IP, …) sono quelle di default.

    #57450
    Sergio Bertana
    Amministratore del forum

    Vediamo di fare un pò di chiarezza, intanto hai utilizzato il comando Modbus 16#10 Preset multiple registers che, anche se corretto, è più adatto alla scrittura di registri a 16 bits piuttosto che variabili bit. Nel tuo comando hai settato a 16#FFFF 3 variabili WORD allocate nella DB100 agli indirizzi 512, 514, 516. Cito un estratto del manuale MNL151.

    Per la scrittura delle variabili si utilizza il comando Preset multiple registers (Codice 0x10). Ipotizzando di dover accedere in scrittura ad una variabile WORD allocata in memoria all’indirizzo MX100.64 calcoleremo l’indirizzo di scrittura nel modo:

    ((Indirizzo variabile/2)+Offset)-1 → ((64/2)+40000)-1=40031 → 0x9C5F

    Ora se vuoi utilizzare il comando 16#10 puoi utilizzare anche una sola variabile a 16 bits utilizzando solo 4 bits per gestire le 4 uscite. Molto meglio però è allocare 4 variali BOOL in  moemoria DB100 e gestirle con i comandi 16#05 Force single coil e 16#0F Force multiple coils.

    Ma detto questo la cosa più importante da ricordare è che i comandi Modbus accedono solo alla memoria dello SlimLine se vuoi gestire gli I/O fisici devi realizzare un semplice programma che trasferisca le variabili dalla memoria sulle uscite, o che trasferisca gli ingressi in memoria se vuoi acquisire gli ingressi.

    Il programma lo puoi realizare nel linguaggio che preferisci (Il più semplice è LD), nel forum troverai sicuramente esempi di gestione I/O da programma, in questo topic c’è un esempio di connessione ad un pannello Weintek.

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