Mircovolpe Inserito: 3 aprile 2015 Segnala Inserito: 3 aprile 2015 Salve a tutti sto cercando di comunicare attraverso protocollo modbus rtu con un driver SMC (lec6p). Premetto che ho già realizzato la stessa cosa con un plc allen/bradley e il tutto funziona correttamente: leggo e scrivo registri sul driver. Con siemens s7 1200, riesco a scrivere e a leggere i registri con indirizzi tra 400001...465535 aggiungendo 1 e mettendo il 4 davanti al valore decimale dell'indirizzo dato dal fornitore ( funzioni modbus 03;16) , ma non riesco a scrivere ed a leggere i bit ingressi e di uscita del driver (funzione modbus 1;5) . In dettaglio dovrei impostare ad '1' il registro con indirizzo 0030 hex, ma la funzione [MB_MASTER] restituisce sempre il codice d'errore 8383. Ho provato anche ad aggiungere 1 all'indirizzo come faccio per i registri di mantenimento ma in errore il driver e la funzione restituisce 0 come codice d'errore. Qualcuno può aiutarmi? Ringrazio anticipatamente.
Giuseppe Signorella Inserita: 3 aprile 2015 Segnala Inserita: 3 aprile 2015 (modificato) riesco a scrivere e a leggere i registri con indirizzi tra 400001...465535 aggiungendo 1 e mettendo il 4 davanti al valore decimale Per la precisione anche se il risultato finale non cambia, non devi mettere il 4 davanti al registro ed aggiungere poi 1, come da manuale, i registri vanno per il codice funzione 03, 06 e 16 da 40001 a 49999 oppure da 400001 a 465535. Questo significa che al valore di 40001, oppure 400001, devi sommare il valore del registro. Quindi se vuoi leggere il registro 412, devi sommare 40001+412=4413. Oppure 400001+412=40413 Sempre da manuale, i i registri per i codice funzioni 01 e 05 vanno da 1 a 9999. Modificato: 3 aprile 2015 da Giuseppe Signorella
Mircovolpe Inserita: 4 aprile 2015 Autore Segnala Inserita: 4 aprile 2015 Grazie per la risposta... e la precisazione.... Facendo diverse prove con il manuale della funzione MD_Master sono arrivato alla conclusione che per la lettura dei flag di out del driver devo sommare al registro il valore 10001, quindi se devo leggere lo stato del flag con indirizzo 64 gli devo sommare 10001: 10001+64=10065. Il problema è quando devo scrivere il flag degli ingressi del driver, se uso la stessa formula (10001+reg) mi va in errore la funzione MD_MASTER per valore errato del parametro MODE, mentre se indirizzo il flag aggiungendo 1, la funzione non mi da errori ma il driver va in Allarme.
biros66 Inserita: 4 aprile 2015 Segnala Inserita: 4 aprile 2015 prova con Modscan..funziona sempre. In questa maniera sei sicuro della correttezza degli indirizzi.. ..il famoso Modbus teutonico..
Mircovolpe Inserita: 7 aprile 2015 Autore Segnala Inserita: 7 aprile 2015 (modificato) Problema risolto.... ........un errore sul collegamento del cavo...... In pratica l'indirizzamento con la funzione MD_Master è il seguente: 1+ REG per i Flag di ingresso del drive 100001 + REG per i Flag d'uscita del drive 400001 + REG per i registri dati del drive Modificato: 7 aprile 2015 da Mircovolpe
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora