Protocollo Modbus master per applicazione domotica
Home › Forum › Discussioni su problematiche generali › Protocollo Modbus master per applicazione domotica
- Questo topic ha 8 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 10 anni, 4 mesi fa da
Sergio Bertana.
-
AutorePost
-
Luglio 9, 2014 alle 11:56 am #35591
Mauro
PartecipanteUn saluto a tutti sono alla ricerca di un Master modbus per mettere in comunicazione il mio inverter fotovoltaico con il PLC che gestisce quasi tutta casa, vorrei sapere se questo và bene SlimLine Modulo CPU Compact ARM7 Relé (Full RS485). Io ho un Crouzet millenium3 con scheda Modbus slave XN06 e l’inverter è un Santerno Sunway M XS, al PLC ho collegato un trasduttore di corrente della Seneca ad un ingresso 0-10v che mi riporta a display il consumo attuale della casa. Ora vorrei prendere anche i dati di produzione dall’inverter per poter avere sempre sott’occhio l’energia prodotta e consumata in modo da creare una sorta di gestione carichi solo visiva ma che poi evolverà col tempo cerco la soluzione più economica possibile.
Luglio 10, 2014 alle 6:03 am #38315Sergio Bertana
Amministratore del forumSe ho ben capito vorresti un modulo in grado di gestire il protocollo Modbus RTU in modalità master per acquisire i dati dall’inverter e per scriverli nel tuo PLC Crouzet ?
Se è così puoi sicuramente utilizzare il modulo che hai citato, ricordati che è comunque un PLC che si programma con LogicLab un tool compatibile IEC61131 completamente gratuito. Dovrai sviluppare un programma per gestire la comunicazione modbus RTU utilizzando il blocco funzione ModbusMaster. Nella sezione del forum che tratta i dispositivi SlimLine troverai alcuni esempi, ti mando a questo topic dove c’è un esempio che potrebbe interessarti.
Essendo un PLC lo SlimLine poteva effettuare le stesse operazioni del Crouzet, e comunque puoi sempre espandere il modulo CPU con altri moduli di I/O per aggiungere funzioni che possono operare in parallelo a quelle già svolte dal tuo PLC Crouzet.
Luglio 10, 2014 alle 6:10 am #38316Sergio Bertana
Amministratore del forumAggiungo a quanto detto precedentemente che puoi aggiungere al tuo PLC anche un pannello operatore touch screen che con il VNC server può essere visualizzato nel tuo smartphone (Topic).Inoltre il modulo CPU SlimLine ha un web server integrato, quindi se utilizzi una versione con ethernet puoi creare pagine web con i dati di casa che puoi visualizzare ed impostare tramite un browser (Topic).Riporto come esempio lo screenshot della pagina web gestita da un modulo CPU SlimLine con l’impostazione degli orari accensione e spegnimento dell’impianto di climatizzazione aziendale.
Luglio 10, 2014 alle 8:26 pm #38323Mauro
PartecipanteGrazie mille per le info. Avevo pensato alla sostituzione del Crouzet ma tutto quello che ho trovato costava parecchio Siemens, Omron ecc…. E ormai ho acquistato la scheda Modbus quindi mi serve un server ed il vostro prodotto è l’ideale, inoltre ormai lo programmo ad occhi chiusi.
La programmazione in ladder non è un problema è il modbus che non conosco e devo capire con prove pratiche. Avevo pensato anche ad un pannello come master modbus ma l’intenzione era di appoggiarmi ad uno scada e anche qui è una sfida nuova. Con calma imparerò tutto, intanto grazie e appena sono pronto a fare prove magari disturbo ancora.
Luglio 11, 2014 alle 7:12 am #38324Sergio Bertana
Amministratore del forumSul Modbus troverai moltissime informazioni nel forum, usa la ricerca e vedrai che c’è veramente una miniera di infos, ti rimando comunque alla lettura della Modbus Protocol Reference Guide che ti spiega tutto sul protocollo. Puoi dare una occhiata anche a questo topic.
Dicembre 18, 2014 alle 9:20 am #38602Mauro
PartecipanteHo fatto un cavo e mi sono collegato direttamente sulla scheda, fino ad ora mi dava timeout adesso con questo cavo il timeout è sparito ma non riesco a leggere nulla utilizzo sia ModbusPool che Modbus simulator non capisco come vanno convertiti, posto il foglietto illustrativo della scheda Crouzet.
La mia esigenza è leggere il contenuto dell’uscita O2XT1 in teoria un HR 40026 giusto ?
Dicembre 18, 2014 alle 9:24 am #38603Sergio Bertana
Amministratore del forumLeggo il manuale che hai postato e mi sembra di capire che l’uscita O2XT1 è mappata all’indirizzo 4001+25 quindi indirizzo 4026. Siccome gli ingressi sono mappati in un registro word (16 bit) per leggerlo devi utilizzare il comando modbus 0x03 Read multiple register.Se usi semplicemente il nostro programma Toolly puoi gestire semplicemente tramite l’emulazione terminale la stringa Modbus di interrogazione e verificare il ritorno. Leggo dal manuale che i parametri di default sono Default setting: 2 wires, RTU, even parity, Address No.1, 19200 bauds.Quindi la stringa di interrogazione è del tipo 01 03 0F BA 00 01 A6 FB. Dove 01 indirizzo di nodo, 03 il codice funzione, 0FBA indirizzo variabile (4026), 0001 Numero di registri da leggere, A6FB CRC pacchetto modbus (Vedi anche questo topic).
Dicembre 18, 2014 alle 4:10 pm #38604Mauro
PartecipanteHo provato ho immesso questa stringa in Toolly
03 03 40 26 00 01 FA F1 (nodo – funzione – variabile – registri – crc)Toolly non fa nulla, provo a verificare ancora il cavo! intanto dimmi se ho sbagliato qualcosa.
Dicembre 18, 2014 alle 4:16 pm #38605Sergio Bertana
Amministratore del forumA parte il capire cosa vuol dire “ho messo questa stringa in Toolly e non fà nulla”, adesso ti darò due dritte ulteriori… l’indirizzo 4026 và scritto in esadecimale 4026 -> 0x0FBA (Modbus ha un offset di 1 ed a volte devi sottrarre 1) ma questo lo scopriremo quando comunicherai e potrai verificare se il dato letto dal comando è quello del registro oppure quello del registro dopo.
Ma l’errore ancora più grave che hai commesso è che il CRC non è un numero casuale ma è un codice di controllo e và calcolato con un algoritmo sul valore dell’intero frame. Quindi se al posto di 0x0FBA scrivi 0x4026 il CRC cambia completamente.
Ecco come devi configurare Toolly (Screenshot), come vedi l’intero frame di comando l’ho inserito in un command e viene inviato premendo Cmd1. Il Modbus RTU è un protocollo time oriented e non puoi inviare i dati uno alla volta da tastiera ma devi inviare l’intero frame.
Poi i valori indicati 01 03 ecc.. sono dati esadecimali, inviando 01 dalla seriale esce un solo carattere ascii (Codice 0x01) e non due caratteri 0x30, 0x31 come se fossero due numeri.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.