Vai al contenuto
PLC Forum


Libnodave - Davereadbytes E Davewritebytes Offset Di 20 Rispetto Al Primo Carattere Del Db


Messaggi consigliati

gianlucanigro
Inserito:

ciao,

sto scrivendo una piccola utility sotto Linux 64bit utilizzando la libreria libnodave per leggere/scrivere dei dati su S7-300.

un primo programma realizzato basandomi sul programma dimostrativo in c++ mi fa correttamente il dump del DB che mi interessa, mentre un altro programma che usa direttamente le due funzioni nell'oggetto funziona correttamente sia in lettura che in scrittura però se indico 0 come indirizzo di inizio dell'operazione relativamente al DB su cui sto lavorando in realtà va a leggere/scrivere a partire dal 21esimo carattere.

Sto dissezionando il programma dimostrativo per cercare di capire cosa manca nel mio, ma mi chiedevo se qualcuno potesse aver incontrato la cosa e se sì come l'ha risolta.

TIA

p.s. sono un informatico... non un esperto di PLC ;-))


Mauro Rubinetti
Inserita:

Io ho scritto diverse applicazioni con le LibNoDave, ma non ho mai incontrato questo problema, l'unica cosa che mi viene in mente è che tu possa aver applicato un OFFSET.

Per far leggere una DB ad un componete LibNoDave devi dargli alcuni parametri:

Numero della DB a cui punti

Tipo di dati se è un Byte, un Integer un real ecc.... (occhio che qui i a seconda del tipo di dato vengono allocate aree differenti )

Offset da quale punto della DB vuoi partire

Count che indica quante aree della DB voi leggere.

gianlucanigro
Inserita: (modificato)

ciao,

grazie per la risposta...

è una cosa veramente strana..il programma è banalissimo..

1) apro connessione

2) chiamo la daveWriteBytes specificando DB2 posizione di start 0 e scrivo tre caratteri

3) chiamo la daveReadBytes specificando DB2 posizione di start 0 e leggo byte per byte... ritrovando i caratteri cghe ho scritto

Se dopo la scrittura faccio il dump del DB2 con il programmino che avevo ricavato da testISO_TCP vedo i caratteri che ho scritto nel blocco ma spostati di 20... tra l'aktro il programmino che fa il dump usa le posizioni corrette perché lo uso per recuperare altri dati e li trovo nelle posizioni concordate con chi programma il PLC... ergo sbaglio qualcosa, ma non sono ancora riuscito a capire cosa...

Modificato: da gianlucanigro
Mauro Rubinetti
Inserita:

Scusa ma quanto hai impostato di valore nel campo BufLen?

Il BufLen si dovrebbe calcolare Word lette per Byte o Word oppure Duble Word (32)

Se non Sbaglio dovrebbe essere Byte (8), Word (16), Duble Word (32), sto andando a memoria, è un po che non programmo più..... :blink:

Saluti

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