Daten lesen aus DB mit libnodave

Proxy

Level-1
Beiträge
316
Reaktionspunkte
39
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,


hätte da einen frage zu libnodave in Verbindung mit DB's.

Code:
          int s = dc.readBits(libnodave.daveDB, 710, 1, 1, null);
                    a = dc.getS8(); 
                    Console.WriteLine("FD0: " + a);
                    dc.readBytes(libnodave.daveDB,710,200,4,null);
                    float ds = dc.getFloat();

Das ist was ich programmiert habe, ein teil davon. Jetzt bekomm ich bei ds einen richtigen wert raus so weit so gut. Also verbindung funktioniert. Jedoch ist meine frage bei readBits. Was liest er da? Ein ganzes Byte? Oder liest er hier nur das erste Bit also 0.1?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du meinst das hier?
readBits(libnodave.daveDB, 710, 1, 1, null)
Wenn ich das richtig lese bzw. verstehe steht da ja DBX1.0 oder? Brächte ein Beispiel wie die adressierung genau ist.
 
Bei libnodave ist in irgendeiem Unterordner nee doku dabei, in der sind alle funktionen beschrieben. Kann aber sein das Readbits hier fehlt, wenn das so ist, schau bei readbytes nach, Ich glaub der unterschied war nur, das man die Byteadresse mal 8 nehmen muss (da man ja noch die bits adressieren können muss!)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du meinst das hier?
readBits(libnodave.daveDB, 710, 1, 1, null)
Wenn ich das richtig lese bzw. verstehe steht da ja DBX1.0 oder? Brächte ein Beispiel wie die adressierung genau ist.

so wie ich das sehe adressierst du hier bit 0.1, bit 1.0 wäre eine 8 statts eine 1!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hier mal der auszug aus der doku:


4.1.1 ReadBits-Methode​
Die ReadBits-Methode dient dem Auslesen einzelner Bits aus der S7-CPU. Sobald mehr als ein Bit
gelesen werden soll, ist von dieser Methode abzuraten. Es dauert relativ lange, für jedes Bit eine einzelne
Anfrage an die SPS zu senden.
Schneller geht es, ein ganzes Byte oder mehrere Bytes mittels​
daveReadBytes auszulesen und die
einzelnen Bit-Werte dann in VB zu ermitteln (siehe unten).
Allgemein:

res = daveReadBits(dc, Speicherbereich, DB-Nummer, Bitadresse,
Länge in Bytes, Lesepuffer(0))​
Beispiel:
Der Wert des Merker M37.5 soll gelesen werden. Die absolute Bitadresse = 37 * 8 + 5 = 301. Der
Wert wird zunächst in den Puffer​
buf(0) geschrieben und anschließend in die TextBox. Nach dem
Schreibvorgang steht der Wert 0 oder 1 in der TextBox.

Dim buf(0) As Byte
res = daveReadBits(dc, daveFlags, 0, 301, 1, buf(0))​
txtM37_5Wert.Text = buf(0)

ich sehe das so, daß hier aus db710 das bit 0.1 gelesen wird.
 
wofür gibts Google?
Code:
daveReadBits(daveConnection * dc, int area, int DB, int start, int len, void * buffer);
 
Zurück
Oben