gianlucanigro Inserito: 30 maggio 2012 Segnala Inserito: 30 maggio 2012 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: 30 maggio 2012 Segnala Inserita: 30 maggio 2012 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: 31 maggio 2012 Autore Segnala Inserita: 31 maggio 2012 (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: 31 maggio 2012 da gianlucanigro
Mauro Rubinetti Inserita: 31 maggio 2012 Segnala Inserita: 31 maggio 2012 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ù..... Saluti
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora