Libnodave Daten lesen/schreiben

Acidic

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Ich bin blutiger Anfänger in SPS programieren und auch Hochsprachen programieren. Ich möchte gerne ein Lagerprojekt realisieren.

Ich möchte von meinem Computer Variablen in die SPS schreiben und lesen. Ich bin beim Suchen auf Libnodave gestoßen und denke, dass ich damit am besten die Daten lesen und schreiben kann.
Ich habe auch schon das Testprogramm von Libnodave ausprobiert. Die Kommunikation funktioniert einwandfrei.

Den nächsten Schritt den ich nun machen will ist:
Mit Exel, einen Dateinbaustein von meiner S7 lesen. Dazu habe ich das bei libnodave mitgelieferte Exelbeispiel abgeändert und zunächst mit Step7 einen Datenbaustein erstellt und einen wert hineingeschrieben. Diesen dann auf meine S7 übertragen.
Wenn ich nun versuche diesen Datenbaustein mit Exel zu lesen, bekomme ich zwar einen Wert aber dieser ist falsch.

Meine Vermutung ist, dass ich irgendetwas falsch mache beim Auswerten des gelesenen. Ich habe irgendwo gelesen, dass libnodave von der S7 einen bestimmten Byte-strang zurück bekommt und diesen muss ich zuerst auseinander tüfteln. Irgendwo zwischendrin befindet sich dann der Wert meines Datenbausteins. Ist das korrekt?

Ich bin also auf der Suche nach Informationen über den Datenbaustein an sich und über diese Daten, die die SPS mir schickt, wenn ich mit libnodave eine lese Auftrag ausführe.

Vielen Dank für die Antworten.
 
Zuletzt bearbeitet:
Wenn ich nun versuche diesen Datenbaustein mit Exel zu lesen, bekomme ich zwar einen Wert aber dieser ist falsch.

Was heist da falsch ??

In dem fall wäre es nicht schlecht wenn du deine Excel-Datei mal hier reinstellst

Wie hollst du den deine Daten aus dem "Libnodave Puffer" raus, macht du das mit den Funktionen wie z.B. daveGetS16(dc) ??
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du einen Bereich ausliest. ist der byteweise organisiert. Hast du dort Word oder INT oder Float drin liegen, mußt du die zuerst zusammenbauen. Oder du holst die Daten so wie MW es vorschlägt.
 
hallo,
Danke für die schnellen Antworten habe jetzt ein Bild vom DB und die Exeldatei hinzugefügt.

Ich hoffe Ihr könnt mir weiterhelfen.
Wäre euch dankbar wenn ihr mir sagen könnt wo ich Informationen zur Lösung meines Problemes herbekomme . Ich möchte mich mit der Materie intensiv auseinandersetzen können und nicht wegen jeden bischen hier im Forum Fragen stellen.
Wo finde ich eine Ausführliche erläuterung des Datenbausteins?
Was ist der Anfangswert? -Attribut? -Wert?

In der Exel Datei ist die Prozedur: Read fromPLC2 welche eigentlich mir die Werte der DB liefern soll.

Hier der Code der Prozedur:

Sub readFromPLC2()
Cells(1, 2) = "Test Lesen aus DB"
Dim ph As Long, di As Long, dc As Long
res = initialize(ph, di, dc)
If res = 0 Then
res2 = daveReadBytes(dc, daveDB, 1, 0, 1, 0)
Cells(5, 1) = "result from readBytes:"
Cells(5, 2) = res2
If res2 = 0 Then
v1 = daveGetS8(dc)
Cells(7, 1) = "MD0(DINT):"
Cells(7, 2) = v1
v2 = daveGetS16(dc)
Cells(8, 1) = "MD4(DINT):"
Cells(8, 2) = v2
v3 = daveGetS8(dc)
Cells(9, 1) = "MD8(DINT):"
Cells(9, 2) = v3
v4 = daveGetS8(dc)
Cells(10, 1) = "MD12(REAL):"
Cells(10, 2) = v4
v5 = daveGetFloatAt(dc, 12)
Else
e$ = daveStrError(res)
Cells(9, 4) = "error:"
Cells(9, 5) = e$
End If
End If
Call cleanUp(ph, di, dc)
End Sub
 

Anhänge

  • db-foto.JPG
    db-foto.JPG
    32,1 KB · Aufrufe: 64
  • exelfile.rar
    50,7 KB · Aufrufe: 47
Zuletzt bearbeitet:
So liest du das erste Byte in v1, Byte 2und 3 in v2,Byte 4 in v3 usw.
Kein Wunder,wenn du die Daten nicht wiedererkennst. Versuch es mal so:
Code:
[I]...
v1 = daveGetS16(dc)[/I]
[I]Cells(7, 1) = "DB_VAR(INT):"[/I]
[I]Cells(7, 2) = v1[/I]
[I]v2 = daveGetS16(dc)[/I]
[I]Cells(8, 1) = "DBVar2(INT):"[/I]
[I]Cells(8, 2) = v2[/I]
...
 
Zurück
Oben