Iris _

Pixsys Forum

everybody's effort for the same goal

Utilizzo libreria Modbus

user7490
Posts: 50
Joined: 21/01/2014, 8:23

Utilizzo libreria Modbus

Post by user7490 »

Buongiorno
Stò utilizzando un TD410 con una espansione ETD1644 che lavorava correttamente collegata e configurata in CanBus. Ora volevo utilizzare lo stesso dispositivo collegato e configurato in Modbus , ho cambiato collegamento, spostato il dip_switch sulla ETD1644, alla accensione si illumina brevemente il led di comunicazione, ma poi in effetti non c'è comunicazione tra Plc e ingressi/uscite dell'espansione stessa.
Come parametrizzazione della ETD ho utilizzato la stessa configurazione sia degli ingressi / uscite analogici che digitali, che sta funzionando correttamente su altri due TD710 con associata la ETD1644, quindi non riesco a capire quale possa essere il problema.
So che utilizzando la libreria Modbus è possibile controllare il funzionamento del nodo, ma non mi è chiaro come inserire la libreria nel progetto e come utilizzarla, esiste un tutorial che ne illustri l'utilizzo ?
Grazie.
Pixsys tecnico 1
Moderatore
Posts: 1659
Joined: 29/10/2010, 10:09
Contact:

Re: Utilizzo libreria Modbus

Post by Pixsys tecnico 1 »

Salve,
per usare nel codice PLC, dalla libreria Modbus\Modbus RTU master\ inserisce l'array "sysMbMRtuNodeStatus" indicando il numero del nodo, ad esempio:
sysMbMRtuNodeStatus[1]
aggiungendo poi il "punto", va a vedere i singoli membri di quella struttura.

Trascinando sysMbMRtuNodeStatus nella watch window può vedere l'intera struttura del nodo interessato. Quello che può essere utile è il membro "State" per capire l'errore di comunicazione e poi il MissCNT per capire il numero di pacchetti che sta perdendo quel nodo.
La descrizione completa della struttura è comunque visibile facendo click destro su "sysMbMRtuNodeStatus" direttamente dalla libreria.
user7490
Posts: 50
Joined: 21/01/2014, 8:23

Re: Utilizzo libreria Modbus

Post by user7490 »

Pixsys tecnico 1 wrote:per usare nel codice PLC, dalla libreria Modbus\Modbus RTU master\ inserisce l'array "sysMbMRtuNodeStatus" indicando il numero del nodo, ad esempio:
sysMbMRtuNodeStatus[1]
aggiungendo poi il "punto", va a vedere i singoli membri di quella struttura.
Il dubbio è proprio questo, come si inserisce l'array ? Se si clicca due volte sulla libreria Modbus, si apre , ma di fatto non risulta inserita nel progetto. E' già attiva così ? Bisogna richiamarla in qualche Pou specifica ? Si può richiamare in qualsiasi linguaggio ?
Pixsys tecnico 1
Moderatore
Posts: 1659
Joined: 29/10/2010, 10:09
Contact:

Re: Utilizzo libreria Modbus

Post by Pixsys tecnico 1 »

Salve,
l'array è di fatto una variabile di sistema, basta usarla nel codice.
facendo click destro sul nome, c'è "copy name" e poi nel proprio codice PLC basta fare "incolla" nel campo per assegnare una variabile ad un oggetto, tipo un BOOL e aggiungere solo " [numero slave].membro da verificare.

Ad esempio in ST:

IF NOT(sysMbMRtuNodeStatus[1].PRES) THEN
codice per nodo non presente/fuori linea;
ELSE
....;
END_IF;

In Ladder:
Ladder.PNG
You do not have the required permissions to view the files attached to this post.
user7490
Posts: 50
Joined: 21/01/2014, 8:23

Re: Utilizzo libreria Modbus

Post by user7490 »

Ok, grazie.
Ora sono riuscito a interrogare il nodo , ma sia con sysMbMRtuNodeStatus[1].state , sia con sysMbMRtuNodeStatus[1].pres, la risposta è sempre 0 e False.
Allora ho caricato il progetto su un TD710 con ETD1644 che uso come test e tutto funziona.
Quindi ho fatto la verifica incrociata, mettendo la ETD1644 che funziona con TD710 sul TD410 , ma non funziona.
quindi è chiaro che è il TD410 che non comunica con l'espansione.
Visto che fino a poco tempo fa , il TD410 comunicava in CanBus, da cosa può dipendere il problema che in Modbus non riesce più a comunicare, visto che non è un problema software di configurazione ?
Può dipendere dalla posizione dei dip-switch a bordo del TD410 ? (sono tutti Off)
Può dipendere da una configurazione CanBus che è rimasta attiva come softawre e inibisce la comunicazione Modbus?
E' possibile fare un reset del TD410 senza compromettere il runtime o altro di vitale ?
Grazie
Pixsys tecnico 1
Moderatore
Posts: 1659
Joined: 29/10/2010, 10:09
Contact:

Re: Utilizzo libreria Modbus

Post by Pixsys tecnico 1 »

Salve,
non è necessario fare alcun reset software, in quanto la configurazione PLC viene scritta (o aggiornata) se serve allo scaricamento del codice.
I dip switch interni al TD410 devono essere messi in questa posizione:
dip1 : ON
dip2 : ON
dip3 : ON
dip4 : ON
dip5 e 6 : non modificare
così da avere polarizzazioni e terminazioni attive (sia per modbus che per CAN).
user7490
Posts: 50
Joined: 21/01/2014, 8:23

Re: Utilizzo libreria Modbus

Post by user7490 »

Buonasera
Ho messo i dip-switch interni al TD410 come segue:
dip1 : ON
dip2 : ON
dip3 : ON
dip4 : ON
i dip-switch 5 e 6 sono entrambi Off , ma non sono sicuro che questa sia la loro posizione che dovrebbero avere, dato che non è dato sapere qual'è la loro funzione e quale posizione devono avere.
Comunque anche con i dip-switch nella posizione indicata , il TD410 non comunica con l'espansione ETD1644.
Quindi a questo punto quale può essere la causa e quale il rimedio ?
Grazie.
Pixsys tecnico 1
Moderatore
Posts: 1659
Joined: 29/10/2010, 10:09
Contact:

Re: Utilizzo libreria Modbus

Post by Pixsys tecnico 1 »

Salve,
se la corrispondenza segnale B+ e A- è corretta e la scheda ETD1644 mantiene sempre il led verde fisso mentre quello arancio non lampeggia mai, a questo punto il pannello potrebbe essere danneggiato (in quanto a detta sua la ETD1644 comunica correttamente in modbus con un TD710).
user7490
Posts: 50
Joined: 21/01/2014, 8:23

Re: Utilizzo libreria Modbus

Post by user7490 »

Buonasera
Ho ripetuto per scrupolo le prove, ho preso la ETD1644 che è sul TD410 e non da segni di vita, senza staccare i collegamenti dai morsetti e l'ho messa sul TD710 su cui ho caricato lo stesso software Plc , qui funziona perfettamente, quindi presumo che il TD410 abbia un problema sul collegamento modbus.
Ora mi ripropongo di caricare il software che c'era in precedenza e che utilizzava il CanBus , per verificare se il problema è unanime o è localizzato al solo Modbus.
A questo punto però, se parametrizzato con il CanBus dovesse funzionare, la domanda è:
Per pubblicare delle variabili sullo Status Variables che poi devono essere lette da remoto, la procedura è la stessa o ci sono degli accorgimenti di cui tenere conto, differenti ? Ed eventualmente, come si deve operare ?
Grazie
Pixsys tecnico 1
Moderatore
Posts: 1659
Joined: 29/10/2010, 10:09
Contact:

Re: Utilizzo libreria Modbus

Post by Pixsys tecnico 1 »

Salve,
se il PLC/HMI sarà Modbus TCP-IP slave, sarà sufficiente abilitare tale protocollo e modalità nella scheda "Ethernet" e poi, dalla scheda "Status variables" assegnare agli indirizzi aggiunti le variabili che desiderate rendere disponibili.

L'unica accortezza è nella eventuale condivisione di variabili automatiche con l'attributo RETAIN. Per standard IEC, una variabile pubblicata come slave non potrebbe essere ritentiva sul dispositivo slave stesso, perchè si ritiene che dovrebbe ricevere il valore dal proprio master. Per ovviare a questo limite ci sono due strade:
- condividere nelle "Status variables" una variabile di appoggio che prende il proprio valore dalla variabile interna RETAIN (in questo caso si dovrà gestire anche una logica per aggiornare tale variabile interna nel caso il master possa modificare il valore della pubblicata)
- creare una variabile già mappata nel datablock RETAIN, in modo che una volta pubblicata, questa mantenga tale indirizzo e quindi di fatto rimanga RETAIN pur essendo condivisa nelle "Status Variables". Per fare ciò seguire quanto segue:
1-togliere la variabile dalle "Status variables"
2-copiarsi il nome della variabile
3-eliminare la variabile dal gruppo variabili
4-salvare il progetto
5-fare click destro sul gruppo variabili e selezionare "nuova variabile -> variabile mappata"
6-dalla finestra che appare dare un nome alla variabile, selezionare dalla voci in basso la locazione di memoria "Retain Datablock for user data mapping", selezionare a destra il tipo di variabile, confermare con OK.
7-salvare il progetto
8-a questo punto passare alla scheda "Status Variables" e associare la variabile appena creata al registro Modbus desiderato.

NB: dopo aver fatto tale operazioni, è necessario compilare il progetto e aggiornare le variabili "lato Movicon" in quanto la variabile modificata ha ovviamente cambiato posizione in memoria e movicon dovrà essere di nuovo allineato.
Post Reply