Vai al contenuto
PLC Forum


Nb E Modbus


Gervinho

Messaggi consigliati

Ciao a tutti

Avrei bisogno del vostro prezioso aiuto...

Mi trovo a dover collegare un pannello NB in Modbus con un inverter MX2 (ma credo che il problema sia uguale per ogni modello) e, essendo i canali modbus in doppia lunghezza sul' inverter swappati (invertiti) rispetto a quelli che invio dal pannello operatore mi chiedevo come risolvere il mio problema.

Ricordo che su pannelli differenti (NQ) era presente una opzione per invertire i canali in modo automatica ma qui non riesco a trovarla... pensavo di risolvere con una macro, ma è una strada su cui non ho grande esperienza e preferirei evitare...

Qualcuno mi può dare qualche consiglio??

Grazie

G.

Link al commento
Condividi su altri siti


Ciao Gervinho,

effettivamente anche io qualche tempo fa mi ero imbattuto in un problema simile.

Effettivamente ricordo anche io che su Nq- designer esisteva un'impostazione per effettuare lo swap delle word, ma su NB Designer attualmente questa possibilità è pregiudicata.

Io me la sono cavata con una macro effettuando uno scambio di posizione delle word (facendo quindi uno swap); è una strada più scomoda ma al momento non avrei altri suggerimenti da proporti.

Ciao

C.

Link al commento
Condividi su altri siti

Ciao Claubo

non è che riesci a darmi un idea della macro, ero abituato agli altri pannelli e con NB Designer faccio ancora un po fatica con le Macro.

Saluti

Ge.

Link al commento
Condividi su altri siti

Ciao Gervinho,

prima di tutto ho dichiarato le 3 variabili che sono state utilizzate e cioè Foutlow, Fouthigh_sw e Foutlow_sw all'interno della sezione dedicata alle macro di NB-Designer;

Foutlow è stata dichiarata come variabile unsigned integer lunga 2 word (32bit) con indirizzo 4x e 4097 ( e occupa sia 4097 che 4098);

Foutlow_sw è stata dichiarata come variabile unsigned short lunga 1 word con indirizzo LW 100;

Fouthigh_sw è stata dichiarata come variabile unsigned short lunga 1 word con indirizzo LW 101;

Il codice che ho scritto nella macro è il seguente:

int Temp;

Temp=Foutlow*65536;
Fouthigh_sw=Temp/65536;

Foutlow_sw=Foutlow/65536;

Dove temp è una varibile temporanea di appoggio dichiarata come tipo intero (int).

Inizialmente mi sono servito di una variabile di appoggio (temp) in cui è stato fatto il prodotto di Foutlow con 65536, in questo modo si shifta verso sinistra di una word il dato;

se infatti Foutlow=22223333 (2word)---->temp=33330000 (2word)

Poi scrivendo Fouthigh_sw=Temp/65536 ho shiftato a destra di una word.

Quindi temp=33330000 (2word)----> Fouthigh_sw=3333 (1word) che si trova in LW101

Poi scrivendo Foutlow_sw=Foutlow/65536 significa shiftare a destra di una word.

Quindi Foutlow=22223333 (2word)----> Foutlow_sw=2222 (2word) che si trova in LW100

A questo punto usando un'oggetto di visualizzazione e attribuendo il l'indirizzo Lw100 e usando doppia word come lunghezza del dato, dovresti vedere il dato 'swappato'

Spero di essere stato chiaro e che ti possa essere di aiuto.

buon lavoro!

ciao

claubo

Link al commento
Condividi su altri siti

Ciao Claubo

grazie mile, in pratica hai risolto tutto a livello "matematico", ingegnoso ma abbastanza chiaro.

Cercherò di repliacare con i miei canali e nel caso disturbo ancora un po'

G.

Link al commento
Condividi su altri siti

  • 3 months later...

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