max81 Inserito: 15 dicembre 2010 Segnala Inserito: 15 dicembre 2010 Ciao a tutti,dato che vorrei imparare qualcosa di nuovo, volevo cimentarmi con i protocolli di comunicazione, in particolare vorrei far comunicare il mio FP0R-C16CP con un programma scritto in C# tramite Modbus su seriale (RS232), così da creare una sorta di mini SCADA, poi prendendo spunto da dei vecchi post sul forum, mi piacerebbe far comunicare il PLC con un PIC, ma questo è un passo sucessivo che esula dalla sezione in cui posto.Innanzitutto, ho dato una letta alle specifiche del Modbus sul sito Modbus.org, ed ho visto che ci sono due modalità, il Modbus RTU e ASCII, il pdf dice che è meglio utilizzare RTU perchè è più prestante, e questo è chiaro.Passando al lato pratico, lato PC con C# non ci sono problemi ho già abbastanza materiale, mentre lato PLC ho qualche perplessità, in particolare ho dato un'occhiata al manuale ed ho visto che ci sono le funzioni: F145F146_MODBUS_COMMAND, F145_WRITE_DATA, F146_READ_DATA; ma non ci sono esempi su come combinarle insieme per fa funzionare il PLC come slave, quindi vorrei chiedere se qualcuno può darmi una dritta.Grazie
RESNIC Inserita: 15 dicembre 2010 Segnala Inserita: 15 dicembre 2010 Buongiorno,Nel PLC FP0R la porta Com può essere sia Modbus Master sia Modbus Slave, basta selezionare la giusta opzione nel FPWINPRO.Una volta scaricato il programma, senza l'utilizzo delle citate funzioni, è in modalità Modbus Slave, e quindi da PC con apposito programma puoi tranquilamente interrogare il PLC. Se con il PLC vorresti interrogare dei dispositivi Modbus Slave, allora devi utilizzare le funzioni F145_F146 opportunamente parametrizzate.
max81 Inserita: 15 dicembre 2010 Autore Segnala Inserita: 15 dicembre 2010 Ciao Resnic,ti ringrazio per la risposta chiara e veloce, nei prossimi giorni faccio qualche prova.Nell . online c'è questa tabella per gli indirizzi, ma riferita solo al FP-X, sai dirmi se è valida anche per FP0R, va bene che basta fare qualche prova.Tabella indirizzi:Reference number => Device name on FP-X000001 to 002048 => Y0 to Y127F002049 to 009999 => R0 to R496E100001 to 109999 => X0 to X624E400001 to 432765 => DT0 to DT32764300001 to 300128 => WL0 to WL127302001 to 302256 => LD0 to LD256 Grazie
Rapido Inserita: 16 dicembre 2010 Segnala Inserita: 16 dicembre 2010 Io sto facendo anche un sistema con Moduli propri che comunicano attraverso ModBus RTU con il PLC.Come Master ho una FP0R C14.guarda la mia soluzione momentanea nelle mie risposte.http://www.plcforum.it/forums/index.php?showtopic=74219I miei moduli elettronici sono con un AVR ATMega 168 a 4 MHz. (pero 8kB sono piu che sufficienti)
max81 Inserita: 17 dicembre 2010 Autore Segnala Inserita: 17 dicembre 2010 Ciao ragazzi,vi ringrazio per le info, oggi ho provato a fare delle prove e funziona, però ho problemi con l'indirizzamento, in particolare ho utilizzato un simulatore modbus su pc (Modbus Poll), ma utilizzando gli indirizzi dell'h-elp di FPWinPro, ancuni funzionano e altri no.In pratica, se voglio scrivere una coil, invio il comando (05) con indirizzo da 0 a 15 per i registri Y0 a Y15, poi uso gli indirizzi 2048-2057 per R0-R9, e qui tutto ok, ma quando voglio mettere a 1 R10, invio l'indirizzo 2058 e non funziona, neanche per i registri R sopra al 10, secondo voi cosa sbaglio?Mentre per i registri DT, tutto funziona.GrazieP.S.: Panasonic indica l'indirizzo 2049 per R0, ma nel mio caso va a scrivere su R1.
Rapido Inserita: 17 dicembre 2010 Segnala Inserita: 17 dicembre 2010 sei sicuro di non avere il problema tra 0 e 1 come primo dato?Nel modbuspoll si puó cambiare velocemente. (lo uso anchio come Master)FPWIN pro lavora peró sempre da zero, per quanto ne so io.Fai una prova all inizio e alla fine dell ´array.
Rapido Inserita: 17 dicembre 2010 Segnala Inserita: 17 dicembre 2010 mi viene un´altra idea...nel ModBusPoll c´é la possibilitá di visionare i telegrammi.Prova a decodare i telegrammi se gli indirizzi che inposti sono gli stessiche vengono spediti in linea.
max81 Inserita: 18 dicembre 2010 Autore Segnala Inserita: 18 dicembre 2010 Ciao Rapido,grazie per l'aiuto, finalmente ci sono riuscito, infatti ragionavo in decimale, ma invece dovevo ragionare in esadecimale.R0 indirizzo 2048 (16#0800), mentre il registro con indirizzo 2058 (16#080A) non è R10 ma RA, invece R10 avra indirizzo 2064 (16#0810)Prossimamente provo a buttare giù un piccolo programma in C# con le librerie NModbus, se poi funziona provo a mettere mani anche ai database con mysql.
max81 Inserita: 21 dicembre 2010 Autore Segnala Inserita: 21 dicembre 2010 Ciao ragazzi,sono ancora qui a chiedere lumi.Finora sono riuscito leggere con un programmino C# via modbus RTU, il valore di un sensore analogico ogni 1 s (intervallo regolabile), poi a salvarlo in un database mysql e infine a plottare i risultati con un grafico tramite una pagina web con script in PHP richiamata dal browser.Ora volevo chiedervi, anche se forse va al di fuori della sezione in cui posto, come posso fare ad aggiornare il grafico generato dal PHP in maniera automatica ogni volta che si aggiunge un valore nel database, senza dover aggiornare con F5?Grazie
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