abbio90 Posted September 30 Report Posted September 30 Buongiorno, ho un PLC collegato ad un azionamento Schneider ATV320 in modbus RTU. Dal S7/1200 con versione 4.2 e CB1241 v.1.0 ho configurato i blocchi "Modbus_comm_load" e "Modbus_Master con mode 0. Ho creato un DB disabilitando l'accesso ottimizzato e leggo correttamente i vari valori dell' azionamento. Se volessi creare anche una logica per avviarlo, quindi non solo lettura ma anche scrittura, devo creare un secondo blocco modbus master con mode 1 e indicare con il puntatore l'offset del DB che uso per la scrittura? E il REQ dei due blocchi come lo gestisco? Essendo l'RS485 half duplex non credo possa lanciare il REQ sia al blocco di lettura che di scrittura contemporaneamente. Qualcuno saprebbe darmi qualche consiglio su come gestire la cosa. Grazie Sarebbe inoltre interessante, capire come gestite i blocchi e la loro abilitazione quando si hanno più slave su cui leggere i dati
pigroplc Posted October 1 Report Posted October 1 Parametrizzi lo stesso blocco e ti crei una catena sequenziale che vada a leggere e scrivere in alternativa. Idem per altri componenti sempre con lo stesso blocco. Viene cervellotico? SI, infatti è uso comune mettere la schda profinet e si risparmia tempo, codice e nervoso.
abbio90 Posted October 1 Author Report Posted October 1 Quindi te dici di cambiarli: mode, indirizzo registro e puntatore gestiti da una catena ciclica che cambia i dati e lancia successivamente il REQ? Il puntatore come lo gestisco? Posso dichiararlo come variabile?
pigroplc Posted October 1 Report Posted October 1 18 ore fa, abbio90 ha scritto: Il puntatore come lo gestisco? Posso dichiararlo come variabile? Al posto di dichiarare un parametro fisso dichiari una variabile che aggiorni di volta in volta: passo 1 dichiari prima operazione aggiornando variabili + comando di esecuzipasso 5 come passo 2 per altro comando di esecuzioneone passo 2 attendi completamento operazione bit "done" o altra diavoleria passo 3 magari attendi un tempo di 100 msec che potrai togliere in fututo, ma in debug lo allunghi per vedere i tag aggiornati e gevolarti il debug passo 4 come passo 1 per altro comando di esecuzione passo 5 come passo 2 per altro comando di esecuzione passo 6 come passo 3 per altro comando di esecuzione ecc. ultimo segmento metti la call del modbus
abbio90 Posted October 2 Author Report Posted October 2 Questo l'ho capito. Non ho capito però il puntatore come gestirlo. Se devo cambiare puntatore come lo dichiaro nelle variabili? C'è un data type apposito? Oppure come faccio? Cioè nel campo DATA PTR se metto una variabile che data type deve avere? I dati che scrivo sono in un offset differente rispetto a quelli che leggo
pigroplc Posted October 2 Report Posted October 2 Sono in cantiere e non ho tempo di far prove e controllare, ma guarda che formati accetta il parametro. Se gli metti il mouse sopra dovrebbe apparirti il tooltip...
abbio90 Posted Tuesday at 09:56 PM Author Report Posted Tuesday at 09:56 PM Ho fatto svariate prove ma non ho trovato la quadra. Intanto ho risolto temporaneamente usando due blocchi db master della stessa istanza e attivandoli in maniera sequenziale. Uno per la lettura e uno per la scrittura. Ci sono molti video su internet che usano questa configurazione.
pigroplc Posted Wednesday at 12:00 AM Report Posted Wednesday at 12:00 AM 2 ore fa, abbio90 ha scritto: Uno per la lettura e uno per la scrittura. Facile che io non abbia mai avuto questa necessità perché se ricordo bene ho sempre letto e mai scritto (ma è passato del tempo e il mio buffer di memoria è limitato). Di sicuro coi Sentron leggevo e basta, con altre diavolerie tipo regolatori di temperatura boh....
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now