Vai al contenuto

Modbus RTU READ/WRITE


Messaggi consigliati

Inserito:

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 

Inserita:

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.

Inserita:

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?

Inserita:
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

 

Inserita:

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 

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...