Vai al contenuto

Comunicazione con dispositivi Modbus UDP

Home Forum Terminali operatore (Weintek) Comunicazione con dispositivi Modbus UDP

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

    Devo gestire con un pannello alcuni carrelli, questi carrelli montano una scheda di controllo proprietaria di una azienda che non sono riuscito a rintracciare. Le specifiche che ho mi dicono che la scheda si connette ad una rete Wifi predefinita e ascolta su MODBUS UDP.

    – Settando i bit di un determinato registro posso accendere e spegnere alcune luci,
    – Scrivendo un valore diverso da zero in un secondo registro il carrello si blocca,
    – Scrivendo un valore in un terzo registro il carrello si blocca se non riceve un comando qualsiasi entro x ms
    – Leggendo da un quarto registro ho lo stato di carica della batteria.

    La scrittura dei registri può avvenire mandando un pacchetto direttamente all’IP assegnato oppure mandando un pacchetto all’indirizzo broadcast della rete.

    Nel pannello devo, per ogni carrello, poter gestire le luci, il blocco e leggere il livello batteria. Fin qui nessun problema. Devo poi avere un tasto a video che blocca immediatamente tutti i carrelli.

    La mia idea era di definire un PLC per ogni carrello e poi un PLC settato sull’indirizzo IP broadcast della rete. Quando attivo il comando di blocco generale, una macro scrive in loop su questo ultimo PLC fino alla disattivazione del comando.

    Il mio dubbio è che in questo ultimo caso il pannello mostri l’errore “PLC No Response” visto che non riceverebbe mai l’ACK del comando di scrittura.

    #39948
    Sergio Bertana
    Amministratore del forum

    Non mi dici quanti carrelli hai, ma visto che ti fai una macro puoi anche inviare il comando ad uno ad uno ai vari carrelli anzichè in broadcast. Se vuoi proprio usare il broadcast, puoi usare il Free Protocol e costruire il pacchetto Modbus direttamente, in questo modo non ti aspetti alcuna risposta.

    Ultima possibilità è utilizzare un modulo SlimLine che gestisce la comunicazione in UDP e poi il pannello dialoga con lo SlimLine.

    #36290
    Stefano
    Partecipante

    Dopo un pò di pausa per altre urgenze stò tornando sul progetto dei carrelli. Devo gestire 10 carrelli, quindi la mia interfaccia avrà 10 riquadri uguali, ognuno che legge e scrive gli stessi registri su 10 PLC diversi.

    C’è una possibilità di creare un oggetto custom, contenente tutti gli oggetti che mi interessano, che possa essere trattato come gli oggetti di sistema o come libreria? In modo che in caso di modifiche debba toccare solo l’oggetto originale e non tutti i 10 i riquadri.

    #36291
    Sergio Bertana
    Amministratore del forum

    Dipende dal tipo di PLC usato e connessione, se fossero PLC in connessione seriale si puo fare un unica pagina e modificare a seconda del riquadro selezionato il numero di nodo PLC tramite la variabile LW-9300÷9331 (16bit) : driver ID of local PLC 0÷31.

    Ma visto che nel tuo caso la connessione è Ethernet attualmente non mi viene in mente un modo per bypassare il dover puntare oggetto per oggetto. Però se utilizzi uno SlimLine da gateway potresti delegare al programma sullo SlimLine la commutazione dei nodi. Il terminale gestisce sempre le stesse variabili, ma informa lo SlimLine della pagina visualizzata (O meglio del carrello indirizzato) e il programma provvederà a mappare sulle variabili gestite dal terminale il corretto carrello.

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