Iris _

Pixsys Forum

everybody's effort for the same goal

Uso funzioni libreria "MODBUS"

Post Reply
Marco
Posts: 22
Joined: 05/05/2019, 14:40

Uso funzioni libreria "MODBUS"

Post by Marco »

Buongiorno.

Volevo chiedere se è possibile avere un piccolo esempio su come usare le funzioni di libreria MODBUS (Ad esempio: "ModbusRTU_Readreg_RO","ModbusRTU_Writereg_M, o simili) su rete RS485 in un pannello TD810. Io ho provato a creare un programma main ed inserirlo sul Task Fast e con un Timer Blink abilito la funzione per ottenere un refresh ogni secondo. Sulla finestra Watch vedo che in EN la funzione riceve l'abilitazione dal timer ed in ENO la riporta in contemporanea. Purtroppo non riesco ad ottenere nessun dato sulla "res_dword" visualizzando sulla finestra Watch la variabile di destinazione associata. I tipi di dati sono definiti correttamente in Data_Type e anche per il tipo di variabile destinazione che è una Dword come richiesto. Il pannello è fisicamente collegato alla sonda e tramite le funzioni di risorsa "Modbus FC-03" riesco a leggere correttamante i registri.
Con l'occasione volevo chiedere se si può simulare una lettura dal modbus usando il simulatore di LogicLab senza avere il pannello fisicamente collegato.

Ringrazio per la cortesia!!
Pixsys tecnico 6
Moderatore
Posts: 1184
Joined: 12/09/2016, 14:49

Re: Uso funzioni libreria "MODBUS"

Post by Pixsys tecnico 6 »

Buongiorno,
per effettuare una lettura via modbus RTU deve necessariamente avere il pannello fisico collegato. Se deve consultare una serie di registri su un custom slave, può utilizzare la risorsa Generic Modbus di LogicLab, che permette tutte le funzioni standard Modbus.
Di seguito la procedura:

1. Selezioni a Catalogo il dispositivo "Generic Modbus".
generic_modbus.PNG
2. Aggiunga al dispositivo generic modbus (tasto destro del mouse sopra il dispositivo), la funzione che intende utilizzare per andare a leggere un registro, per esempio la FC03 per leggere un holding register.
read_holding_register.PNG
3.Associ una variabile al valore di lettura del registro che può utilizzare all'interno del suo applicativo. Per esempio lettura di holding register a indirizzo 1001 e assegnarlo alla variabile word "test".
var_test_read_holding_reg.PNG
Cordiali Saluti.
You do not have the required permissions to view the files attached to this post.
Marco
Posts: 22
Joined: 05/05/2019, 14:40

Re: Uso funzioni libreria "MODBUS"

Post by Marco »

Buongiorno.

La ringrazio molto della risposta, è che in realtà con questo metodo avevo già provato con successo.
Io volevo capire se posso usare le funzioni di libreria per ottenere lo stesso risultato aprendo manualmente la porta, comunicando ciò che mi serve per poi chiuderla dopo averla usata.
Io ho provato ma continua a darmi un errore -17 quando tento di aprire la porta per ottenere l'handle anche dopo aver disabilitato la risorsa del modbus su COM2.
Capisco che è un gran bel modo per complicarmi la vita, ma a volte mi piace capire se posso fare le cose gestendole ad un livello un po' più basso.

Grazie Comunque!!!!

Cordiali Saluti
Pixsys tecnico 6
Moderatore
Posts: 1184
Joined: 12/09/2016, 14:49

Re: Uso funzioni libreria "MODBUS"

Post by Pixsys tecnico 6 »

Buongiorno,
in teoria potrebbe fare la stessa cosa utilizzando le librerie di sistema cui accennava, ma per rispondere in dettaglio alla sua domanda, bisognerebbe analizzare il suo applicativo e identificarne l'origine dell'errore di compilazione nel codice del programma. In caso lo ritenga opportuno invii il suo applicativo a support@pixsys.net. I nostri tecnici le chiariranno il motivo dell'errore in essere.

Cordiali Saluti.
Marco
Posts: 22
Joined: 05/05/2019, 14:40

Re: Uso funzioni libreria "MODBUS"

Post by Marco »

Buongiorno,

Ho usato finora la comunicazione MODBUS tramite un oggetto costruito con il "Modbus custom Editor", ora però ho la necissità di dover usare le funzioni ModbusRTU_ReadReg_RO, ModbusRTU_ReadReg_RW ecc.. perchè in alcuni casi, devo poter cambiare da pannello l'indirizzo del nodo RTU Modbus senza dover ricompilare ogni volta tutto il programma.

Io sto tentando di usarle ma senza successo perchè la funzione mi restituisce sempre il valore "MB_E_NODENOTEXIST"...
eppure se ricarico il programma che usa l'oggetto predifinito il nodo RTU comunica correttamente.

Vi allego la schermata:
Test_MB_FUNCTION.png
e il listato dell'applicazione:
TestFunction.zip
vi ringrazio per la cortesia.

Cordiali Saluti
You do not have the required permissions to view the files attached to this post.
Pixsys tecnico 6
Moderatore
Posts: 1184
Joined: 12/09/2016, 14:49

Re: Uso funzioni libreria "MODBUS"

Post by Pixsys tecnico 6 »

Buongiorno,
abbiamo modificato leggermente il suo codice ST al fine di poter ottenere l'output della funzione cambiando dinamicamente il nodo da interrogare e ci risulta che la libreria dia l'outptu corretto (si veda risultati di seguito).
MBS_time_out.PNG
MBS_node_no_exist.PNG
Il risultato "MB_E_NODENOTEXIST" effettivamente indica che il nodo che cerca di interrogare non è nemmeno configurato nella parte di risorse del LogicLab.


Cordiali Saluti.
You do not have the required permissions to view the files attached to this post.
Marco
Posts: 22
Joined: 05/05/2019, 14:40

Re: Uso funzioni libreria "MODBUS"

Post by Marco »

Buongiorno,

il sistema così funziona ma non riesco ancora a cambiare in run-time dal pannello l'indirizzo del dsispositivo RTU da interrogare se non cambiandolo dalle risorse e ricompilando tutto ogni volta.

Grazie per la cortesia e cordiali saluti.
Post Reply