[Frage] LibNoDave-Verbindung aktualisieren?

marcengbarth

Level-1
Beiträge
226
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen!

Bin gerade dabei ein kleines Programm zu basteln, um Werte aus DB zu lesen und auch um welche reinzuschreiben.
Schreiben funktioniert sehr gut, Lesen fast sehr gut :ROFLMAO:

Folgendes ist mir aufgefallen: Wenn ich eine Verbindung aufbaue und den DB auslese, dann bekomme ich alle Werte, schreibe ich nun Werte in den DB, dann werden die auch korrekt geschrieben. Lasse ich jetzt erneut den DB auslesen, dann stehen die neu geschriebenen Werte nicht drin. :???:

Beobachte ich den DB unter STEP7, dann sieht man auch die neuen Werte drin stehen.

Hab dann versucht, beim Lesen die Verbindung jedes mal zu trennen und neu aufzubauen, dass funktioniert aber auch nicht. Wobei das auch nur für ein Test gut wäre, im laufenden Betrieb andauernd, die Verbindung beenden und neu herstellen kann ja so gut auch nicht sein.

Achso, ich benutze Delphi 7 Enterprise, LibNoDave 0.8.4 und Methode GetInt(x)

Danke schon mal im Voraus!
 
Bist du sicher, daß das 2. Auslesen auch tatsächlich ausgeführt wird?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab jetzt den Code nicht da, aber auf meiner Form gibt's nen Button "lesen", im OnClick des Buttons wird dann per WHILE-Schleife eingelesen (ich weiß, ist nicht sehr elegant, ist ja auch nur ein Test :))

etwa so:

Code:
i := 0;  // Schleifenzähler
j := 10;// Ende

while i < j do
begin
  data := noDave.GetInt(i);
  ListBox1.AddItem(IntToStr(data),nil);
  i := i +2;
end;

Ich gehe jetzt einfach mal davon aus, dass GetInt(i) jedes Mal auch den neuen Int-Wert anfragt.

Allerdings muss ich dazu sagen, dass es mein erstes ernsthaftest Projekt mit LibNoDave ist. Die Schleife hab ich gewählt, da es zum Testen einfach der simpelste Weg war, wobei das doch schon schnell ist... ;)
 
Loop ???

Hallo,

Mit der Schleife 10x nacheinander auslesen, vergess das mal lieber ...
Du musst der LibNoDave und der SPS auch eine Chance lassen, Deine Aufträge auszuführen :confused:

Versuche doch erstmal nur einen Auftrag abzusenden, werte das Ergebnis und dann schau mal weiter.

Gruß
Question_mark
 
Ich gehe jetzt einfach mal davon aus, dass GetInt(i) jedes Mal auch den neuen Int-Wert anfragt.
Nein, GetInt liest aus dem internen Puffer der Komponente. Der wird nur durch erneuten Aufruf der Methode ReadBytes aktualisiert.

Wenn in der Eigenschaft Interval ein Wert ungleich 0 steht, dann ist das die Zykluszeit in ms für den Thread, der das Lesen des in den anderen Eigenschaften angegebenen Datenbereichs durchführt. Steht 0 in der Eigenschaft Interval, dann wird jedesmal, wenn sich die Eigenschaften für die Adressierung ändern, nur einmal von der SPS gelesen. Die Methode ReadBytes mußt Du in dem Fall in Deinem eigenen Code aufrufen.


Gruß Axel
 
Zurück
Oben