Vai al contenuto
PLC Forum


Comunicazione Modbus: Messaggi Nello Stesso Ciclo


setecastronomy

Messaggi consigliati

setecastronomy

Salve,

sto provando a comunicare con un inverter Vacon via modbus. La rete Modbus ha al momento il Plc come master ed un solo inverter con indirizzo slave 1.

Utilizzo l'istruzioni read_var e write_var che come ultimi parametri hanno 4 word per i parametri di gestione, per esempio %MW200:4.

Da documentazione il primo bit della prima parola (%MW200:x0) è ad uno finchè l'operazione è attiva. Il buon senso suggerisce di non fare altre operazioni su modbus finchè quella è attiva, ma sempre da documentazione sembra che nello stesso ciclo si possano operare più letture/scritture contemporanee.

Nelle mie prove ho però incontrato diversi problemi effettuando contemporaneamente read_var e write_var verso lo stesso slave. Sono d'accordo che potrebbe non essere una buona idea, ma se non è esplicitamente proibito dovrebbe essere lecito, mentre invece la comunicazione in qualche modo si blocca e lo stato del bit di attività rimane incantato ad uno. Preciso subito che ogni comando di comunicazione ha un set dedicato di parametri di gestione.

Qualcuno ha ossservato comportamenti simili ?

Quali sono gli accorgimenti necessari e sufficienti per non incorrere in problemi di comunicazione ? Effettuare una sola operazione alla volta ed attendere che il bit di attività torni basso ?

Si possono o no mandare più messaggi contemporaneamente ? Ed in caso affermativo devono necessariamente essere diretti a slave diversi ?

Grazie

Filippo

Link al commento
Condividi su altri siti


puoi aprire se non erro fino a 8 comunicazioni contemporaneamente... il problema è però più di logica.

Non è logico inviare richieste multiple cotemporaneamente allo stesso slave poichè quello può rispondere solo ad una richiesta per volta!!

Quindi devi inviare le tue richieste una per volta (allo stesso slave) aspettando sempre che il primo bit di comunicazione sia =0.

Il fatto che ti si blocchi la comunicazione potrebbe essere dato dal fatto che non hai configurato un time out che dovrebbe essere la terza word delle 4 di report. Prima di lanciare una richiesta metti questa word (per esempio =5) diversa da 0 sapendo che 1 equivale a 100millisecondi 2 equivale a 200 ms etc. etc. Quando è =0 non c'è time out e la comunicazione rimane in attesa di risposta valida.

Se fossi in ethernet con un gateway 485/ethernet avresti potuto sfruttare I/O scanning ma è tutta un'altra storia.

Link al commento
Condividi su altri siti

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