Vai al contenuto

Protocollo Modbus master per applicazione domotica

Home Forum Discussioni su problematiche generali Protocollo Modbus master per applicazione domotica

Stai visualizzando 9 post - dal 1 a 9 (di 9 totali)
  • Autore
    Post
  • #35591
    Mauro
    Partecipante

    Un 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.

    #38315
    Sergio Bertana
    Amministratore del forum

    Se 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.

    #38316
    Sergio Bertana
    Amministratore del forum

    Aggiungo 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.

    #38323
    Mauro
    Partecipante

    Grazie 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.

    #38324
    Sergio Bertana
    Amministratore del forum

    Sul 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.

    #38602
    Mauro
    Partecipante

    Ho 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 ?

    #38603
    Sergio Bertana
    Amministratore del forum

    Leggo 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).

    #38604
    Mauro
    Partecipante

    Ho 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.

    #38605
    Sergio Bertana
    Amministratore del forum

    A 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.

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