Introduzione al protocollo Modbus

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ธ.ค. 2024

ความคิดเห็น •

  • @nisiobass
    @nisiobass 2 ปีที่แล้ว +2

    Ciao Marco, ti ringrazio infinitamente per questo tutorial. Molto esaustivo e fatto da un grande genio come te! Mi hai risposto a molte lacune. Spero di ascoltarti ancora per altri tutorial .

    • @marcoboschiniofficial
      @marcoboschiniofficial  2 ปีที่แล้ว

      Grazie Andrea!
      Sono felice di averti aiutato!
      Se vuoi ascoltarmi, tutte le mattine alle 7 pubblico una nota audio di 5 minuti sul mio canale Telegram -> t.me/tutorialdomotica

  • @Lucino76
    @Lucino76 ปีที่แล้ว +1

    Ciao Marco , grazie per questo tutorial e per la condiviisone...spero di scoltarti ancora

    • @marcoboschiniofficial
      @marcoboschiniofficial  ปีที่แล้ว

      Grazie Luca! se ti interessano altri miei contenuti puoi iscriverti sul mio sito boschini.org
      ogni mese organizzo un evento gratuito in cui parlo di tecnologia, protocolli standard e automazione di edifici!

  • @MANFERO
    @MANFERO 3 ปีที่แล้ว +3

    Gran bel tutorial e pure in italiano, veramente un buon lavoro, non vedo l'ora di seguire la parte successiva.
    Continua così e porta un poco di luce.

    • @corsimikrotik
      @corsimikrotik 3 ปีที่แล้ว +2

      Ciao Maurizio, hai centrato l’obbiettivo: portare un po’ di luce su questi argomenti spesso “non facili”.
      E cerco di farlo superando le stesse difficoltà che ho incontrato io.
      Presto farò un evento workshop, pratico su modbus.
      Continua a seguirmi!

  • @fabriziocatello621
    @fabriziocatello621 2 ปีที่แล้ว +1

    Gran bel video, ottimo aver creato i capitoli

  • @micheleporcu2287
    @micheleporcu2287 ปีที่แล้ว +1

    Grazie per il video ! utilissimo

  • @matteorossi5128
    @matteorossi5128 หลายเดือนก่อน

    Cia Marco, volevo chiederti l'interfaccia che hai creato e solo un semplice simulatore o puoi inviare realment comandi sulla RTU, e giusto per chiedere si puo downloadare da qualche parte?, un altra cosa se si puo scaricare ed e open source con il codice , mi piacerebbe implementarlo per communicare con RSlinx per vedere cosa I master AB PLC trasmette e vedere le risposte, Grazie!.

  • @alessandroromanini5779
    @alessandroromanini5779 3 ปีที่แล้ว +2

    ok grazie mille della risposta, allora se ho ben capito quando io mi trovo un oggetto fabbricato dal costruttore come ad esempio il sentron pack 3200 siemens ,sul manuale i dati iniziano dalla locazione 4002, mentre se lo devo fare io con arduino posso utilizzare qualsiasi indirizzo a mio piacimento da 1 a 50000, basta che il master sappia come sia fatta la mappa di memoria vero? grazie mille di nuovo .

    • @marcoboschiniofficial
      @marcoboschiniofficial  3 ปีที่แล้ว

      Ho guardato il datasheet del modulo "sentron pack 3200 siemens" e l'offset è 64002, pertanto il registro è quello.
      Puoi leggerlo con function 03 o 04, quindi sia holding register che input register.
      I registri puoi indirizzarli da 0 a 65535 (o 1 -65536 se vuoi vederlo come Address), in quanto l'indirizzo è a 16 bit.

  • @leonardomelia92
    @leonardomelia92 4 ปีที่แล้ว +2

    Ciao e grazie per il bel lavoro, spiegazione molto chiara e utile a chi voglia iniziare a capire qualcosa di comunicazione industriale o comunque elettronica. Ho una domanda, a 30:14 dici che ogni costruttore fa un pò come vuole nel protocollo, ma se appunto come all'inizio del video si vuole far comunicare costruttori diversi quale dev'essere il criterio? cioè in quel caso quale dei protocolli tra i vari componenti di marche diverse usare? quello che mi dice per esempio di mettere 1000 oppure quello che dice 41000 come registro? oppure si crea una qualche funzione per cui c'è una conversione al volo in qualche dispositivo? Grazie

    • @marcoboschiniofficial
      @marcoboschiniofficial  4 ปีที่แล้ว

      Ciao Leonardo, sono felice che il video ti sia stato utile. Per identificare come il costruttore utilizza gli indirizzi, sarebbe utile avere sempre un esempio dei byte che vengono inviati sulla seriale.
      Se il costruttore si riferisce al registro, questo può iniziare da 1 (senza offset funzione) o da 40000 (con offset funzione, in questo caso funzione 4).
      Se invece indicano indirizzo, quello è il valore a 2 byte che va messo dentro il frame modbus.
      Capito quello, ti adegui di conseguenze
      Se usano i registri senza offset (es: 1 per il primo registro), virtualmente possono avere 65.535 registri per ogni funzione (1-65535)
      Se usano i registri con offset (es: 40000 per il primo registro), allora si possono avere solo 10.000 registri per ogni codice funzione (40000-49999)

    • @leonardomelia92
      @leonardomelia92 4 ปีที่แล้ว

      @@marcoboschiniofficial si ma se gli slave sono di costruttori che utilizzano due sistemi diversi per indicare il registro? Grazie :)

    • @marcoboschiniofficial
      @marcoboschiniofficial  4 ปีที่แล้ว

      @@leonardomelia92 devi avere la documentazione dei rispettivi costruttori.
      poi, quando devi leggere i registri dai dispositivi, inserisci i registri come li definiscono loro.
      Farò un nuovo tutorial a riguardo.
      Se vuoi rimanere aggiornato con i tutorial, puoi registrarti gratis qui --> tutorial.hbe-system.com/tutorial-info/tutorial-registrazione/

  • @DomenicoCozzolino
    @DomenicoCozzolino ปีที่แล้ว +1

    Salve bel lavoro, la utility che hai costruita (in visual studio) e possibile comparla?

    • @marcoboschiniofficial
      @marcoboschiniofficial  ปีที่แล้ว

      Attualmente no in quanto non sono gestiti bene tutti gli errori, ed nata come utility ad uso interno.
      Mandami una email a marco@boschini.org così ti avviso appena sarà disponibile per l’acquisto!
      Ciao Marco

  • @savinogiovannimuscio2953
    @savinogiovannimuscio2953 ปีที่แล้ว +1

    salve, video molto interessante e educativo. Complimenti. Potrebbe dirmi come mai ha scelto VISUAL STUDIO anzi chè Eclipse o Neatbeans gentilmente?

    • @marcoboschiniofficial
      @marcoboschiniofficial  ปีที่แล้ว

      Semplicemente perché era lo strumento che conoscevo più a fondo è più veloce per crearmi quell’utility.
      Sicuramente ci sono strumenti più moderni per farlo, ma come strumento di laboratorio per test fa comunque il suo lavoro!
      Grazie per la domanda interessante.

  • @GiuseppeTesta-n1h
    @GiuseppeTesta-n1h 3 หลายเดือนก่อน

    buongiorno Marco molto interessante in tuo tutorial... ho visto che nell'ultima parte del tutorial hai affrontato il l'argomento delle connessioni in rete. Volevo chiederti se hai dei tutorial di approfondimento e se puoi darmi dei suggerimenti affinché riesca a ricevere dati da un sensore di pressione collegato a un convertitore modbus/tcp.
    Sul mio pc tento di collegarmi al sensore attraverso ip e porta del convertitore usando la libreria pymodbus.client di python ma come risultato ricevo il DEBUG logging:103..... Very short frame (NO MBAP): 0x0 0x81 0x1 0xd0 0x50 wait for more data. ti ringrazio in anticipo.

  • @alessandroromanini5779
    @alessandroromanini5779 3 ปีที่แล้ว +2

    grazie in anticipo

  • @alessandroromanini5779
    @alessandroromanini5779 3 ปีที่แล้ว +1

    Salve a tutti ma la mappa di memoria del mod bus questa e uguale per tutti i dispositivi cioeì anche arduino ad esempio? oppure la devo definire io su arduino?

    • @corsimikrotik
      @corsimikrotik 3 ปีที่แล้ว

      La mappa del modbus la definisce il produttore del dispositivo e la allega solitamente come documentazione.
      Nel tuo caso di Arduino, se crei un dispositivo slave nello sketch dovrai configurare quali registri vuoi rendere disponibili al master che interroga gli slave.

  • @gianlucavalente8303
    @gianlucavalente8303 2 ปีที่แล้ว

    Per la connessione si possono utilizzare dei connettori di derivazione a T opporre é sconsigliato?

    • @marcoboschiniofficial
      @marcoboschiniofficial  2 ปีที่แล้ว +1

      Nella rete RS485 è sconsigliata la stella, ovvero la derivazione a T.
      Tuttavia, per mia esperienza personale diretta, posso dirti che molto dipende dalla velocità di comunicazione (velocità basse sono più permissive) e dalla distanza dei dispositivi su bus.

    • @gianlucavalente8303
      @gianlucavalente8303 2 ปีที่แล้ว

      @@marcoboschiniofficial Mi sono spiegato male. Praticamente c'è una dorsale e lungo queste ci sono le derivazioni a T. Su ognuna di questa c'è il collegamento dello Slave (con ultimo ovviamente chiuso con la resistenza) . Chiedevo se è possibile per semplificare il cablaggio.

  • @thomasscaccabarozzi2340
    @thomasscaccabarozzi2340 3 ปีที่แล้ว +1

    Grazie per il worshop.
    Io ho una Wallbox che per erogare l'energia di ricarica comunica tramite un bus RS485 Modbus RTU ad un lettore di corrente casalingo, in modo da non far mai scattare l'impianto di casa. Visto che non posso connettere fisicamente il cavo BUS in modalità wired, ho pensato di prendere un Adapter Elfin EW11 per trasformare il ModBus RTU vs ModBus TCP. Purtroppo non sono riusciti a farli parlare correttamente con questa modalità. Sei esperto anche di questa modalità di comunicazione?

    • @marcoboschiniofficial
      @marcoboschiniofficial  3 ปีที่แล้ว

      Ciao Thomas,
      Bisogna capire sulla rete bus RS485 chi è il master.
      Credo che sia il wallbox, in quanto gli analizzatori di rete solitamente sono slave e vengono solo interrogati.
      In questo caso non puoi interrogare anche tu lo strumento in quanto in modbus RTU può esistere solo un master.
      Quello che puoi fare è metterti in ascolto sul bus e “sniffare” i byte e analizzarli per prendere le informazioni che passano.
      Per fare questo credo che il convertitore che hai preso vada bene, devi aprire una sessione terminal via socket TCP, quando sul bus transita qualcosa dovrebbe arrivarti tutto via rete come pacchetto dati sul socket.
      Ovviamente devi scrivere del software custom, ad esempio in .net / Python / C / Java.
      Un’altra strada è capire se la wallbox fornisce delle API di interfaccia via HTTP.

    • @thomasscaccabarozzi2340
      @thomasscaccabarozzi2340 3 ปีที่แล้ว

      @@marcoboschiniofficial O mamma mia mi sa che è un po' troppo tecnico per le mie competenze attuali. Non scrivo una linea di codice da 20 anni non credo che sarei più in grado di farlo. Io ho provato a collegare quel dispositivo al lettore di corrente e creare un Server TCP. Con un client da Pc scritto da altri, interrogavo i registri e dei risultati per me non comprensibili mi venivano restituiti. Quando però sullo stesso device collegato alla wallbox ho creato un tcp client che puntava a quel server appena creato ed ho acceso la wallbox la comunicazione non avveniva e le lettere sul display del lettore di corrente non si accendevano (tr ed rx). Vedevo pochi byte all'accensione della wallbox sulla Serial Port, ma queste poi non venivano passate all'interfaccia Client che doveva chiamare il server.

    • @marcoboschiniofficial
      @marcoboschiniofficial  3 ปีที่แล้ว

      @@thomasscaccabarozzi2340 puoi provare a giocare con Node-Red.
      Anche li devi usare i socket, ma è tutto più semplice e trovi moltissimi tutorial.

    • @thomasscaccabarozzi2340
      @thomasscaccabarozzi2340 3 ปีที่แล้ว

      @@marcoboschiniofficial Da quanto viene riportato sul manuale del Gavazzi EM112, il lettore di consumo sembra proprio essere uno Slave.
      Dei seguito infatti tutte le caratteristiche.
      Porta Seriale: RS485 con connessione a vite.
      Funzione: Per comunicazione di dati misurati, parametri di programmazione
      Protocollo: Modbus RTU (funzione slave)
      Baud rate: 9,6; 19,2; 38,4; 57,6; 115,2 kbaud, parità o nessuna parità
      Indirizzo: da 1 a 247 (valore predefinito: 1)
      Impedenza: di carico unità 1/8. Al massimo 247 ricetrasmettitori sullo stesso bus.
      Tempo aggiornamento dati: 1s
      Comando lettura: 50 parole disponibili in 1 comando lettura
      Indicazione Rx/Tx:
      Il segmento Rx viene mostrato sul display quando un comando Modbus valido viene inviato a quello specifico contatore;
      Il segmento Tx viene mostrato sul display quando una risposta Modbus valida viene inviata indietro al master.
      Lo schema che vorrei ottenere è questo: ibb.co/6y6F6w5

  • @albertoconte-8715
    @albertoconte-8715 2 ปีที่แล้ว +2

    Veramente prezioso... mi sto cercando di disbrigare con home automation e pompa di calore..grazie

    • @marcoboschiniofficial
      @marcoboschiniofficial  2 ปีที่แล้ว

      Alberto, sono felice che ti sia stato utile.
      Ogni giorno pubblico una nota audio sul mio canale telegram, su argomenti di Home Automation e Building automation.
      Se vuoi ascoltarle, il canale telegram è qui --> t.me/tutorialdomotica
      Marco Boschini

  • @alessandroromanini5779
    @alessandroromanini5779 3 ปีที่แล้ว +1

    scusate di nuovo non ho capito perche' quando io comunico con un sentron pack 3200 siemens e vado a configurare la funzione client su una cpu 1214 devo dare come indirizzo 4002 e sul manuale offset parte da 1a 25 come indirizzi quindi si fa 4001+1= 4002 e questo l'ho capito. mentre con arduino se io faccio un master con indirizzi che partono da zero posso scrivere sulla funzione client del plc un indirizzo iniziale 0. e non 4001, in parole povere che differenza c'è tra i due indirizzi? per caso uno e' l'indirizzo logico del protocollo e l'altro l'indirizzo remoto? ecco io ho un po' di confusione.grazie ancora per tutto.

    • @marcoboschiniofficial
      @marcoboschiniofficial  3 ปีที่แล้ว +1

      Ciao Alessandro, qui succede spesso la confusione in quanto alcuni costruttori interpretano l'indirizzo a loro modo.
      La cosa migliore è collegarsi in parallelo alla seriale RS485, usare un software tipo Hercules della HW Group, sniffare i pacchetti che passano e analizzare l'indirizzo usato a livello binario.
      Un altra strada è quella di usare dei tool modbus (tipo quelo che hai visto nel video, che però deve ancora uscire pubblicamente) con cui provare i singoli registri e vedere come risponde.
      Appena possibile farò un video a riguardo.

    • @alessandroromanini5779
      @alessandroromanini5779 3 ปีที่แล้ว +1

      ok grazie mille io ho usato il tool radzio gratuito ed ho provato con quello e sono riuscito a capire molte cose come ad esempio che gli indirizzi 40001 sono indirizzi stardard del modbus e l'offset che parte ad esempio da 100 oppure altri partono da 0 e l'offset dei partner di comunicazione poi bisogna fare la somma dei due e quello e' l'indirizzo che punta alla locazione di memoria del partner.io ho capito cosi .
      grazie di nuovo ancora

  • @giuseppecastaldo9999
    @giuseppecastaldo9999 3 ปีที่แล้ว +2

    Complimenti per la chiarezza d'esposizione e rigorosità teorica.
    Una domanda: Sarebbe possibile avere la tua presentazione?
    Grazie.

    • @marcoboschiniofficial
      @marcoboschiniofficial  3 ปีที่แล้ว

      Grazie Giuseppe, mi fa piacere che la presentazione sia apprezzata.
      Le slide si possono scaricare da qui:
      tutorial.hbe-system.com/modbus-2/modbus-facciamo-amicizia/
      richiede la registrazione al sito.
      Prossimamente pubblicheremo anche il software di test modbus che si vede nel video.
      Marco Boschini

  • @project75youtube
    @project75youtube 2 ปีที่แล้ว

    Ciao, complimenti, un tutorial con esempio collegamento modbus tra logo siemens e inverter modbus TCP, ti viene difficile postarlo? Grazie......

  • @peppealfano65
    @peppealfano65 4 ปีที่แล้ว +2

    grazie molto esaustivo

  • @pollyste77
    @pollyste77 4 ปีที่แล้ว +4

    Dirti grazie è sufficiente?

  • @cciccarelli509
    @cciccarelli509 4 ปีที่แล้ว

    Buon Giorno Baschini e possibile scaricare il tuo programma da qualche sito ?

    • @corsimikrotik
      @corsimikrotik 4 ปีที่แล้ว

      Buongiorno!
      Il programma attualmente non è scaricabile, ma se mandi una mail a mboschini AT hbe-system.com possiamo metterci in contatto e capire meglio come poterti aiutare!
      MB

  • @tacconeimpianti
    @tacconeimpianti 2 ปีที่แล้ว

    complimenti ottimo video

  • @duolabsitaly2687
    @duolabsitaly2687 ปีที่แล้ว

    Sarei curioso di provare la RS232 a 15 metri di distanza.... NON FUNZIONA! SCORDATELO. La distanza ragionevole è di 2/3 max e senza esagerare con la velocità.
    Per inciso in RS232 il Modbus non prevede velocità superiori a 19.2Kbps!
    Se avete disturbi in mezzo (motori a spazzola o altro) non funziona nulla.
    Bello il video ma un sacco di imprecisioni.
    Grazie per la buona volontà.

    • @marcoboschiniofficial
      @marcoboschiniofficial  ปีที่แล้ว

      Grazie per il commento Duolabs.
      Il valore di 15 metri in effetti è impreciso, in quanto lo standard EIA/TIA-RS232-D e E definiscono la capacità massima del cavo in 2500pF, circa tra 15 e 20 metri.
      Essendo la RS232 una linea sbilanciata, soffre i disturbi.
      Qui è possibile trovare quando evidenziato, a pagina 4:
      www.ti.com/lit/an/slla037a/slla037a.pdf?ts=1700511288493&ref_url=https%253A%252F%252Fwww.google.it%252F

    • @marcoboschiniofficial
      @marcoboschiniofficial  ปีที่แล้ว

      Per tutte le altre inesattezze puoi elencarmele qui sotto e cercherò di portarti le risposte.
      Potrebbe nascere un bel confronto.

  • @Zurenio
    @Zurenio 3 ปีที่แล้ว +1

    Senza condividere il codice... il video non serve a nulla... non mi suscribo e manina giù....!

    • @marcoboschiniofficial
      @marcoboschiniofficial  3 ปีที่แล้ว +2

      Ciao Daniel, che codice dovrei condividere?
      Il protocollo modbus è open source

    • @Zurenio
      @Zurenio ปีที่แล้ว

      @@marcoboschiniofficial Il codice del Master ...!!!

    • @marcoboschiniofficial
      @marcoboschiniofficial  ปีที่แล้ว +1

      @@Zurenio quello non c'è l'ho, non è un mio prodotto il master che vedi nelle slide.
      Sono apparecchiature prodotte da altre aziende.
      Ad ogni modo, il video è gratuito, le slide sono disponibili.
      Questo è ciò che è disponibile.
      Spero possa esserti di aiuto, e se non trovi qualcosa, scava a fondo e vai a cercarlo.
      È così che si cresce e si imparano le cose, o perlomeno io ho fatto così.
      Buona giornata!