Beratung bei Libnodave

Hocheck

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

Habe in letzter Zeit immer wieder Dinge über Libnodave gehört und daraufhin mir mal die Beiträge hier im Forum angeschaut. Libnodave hat nun auf längere Sicht mein interesse geweckt :grin: Werde wohl erst ab Juli mal starten können aber etwas nebenbei an Hochsprachen lernen wird nicht schaden...
Zur verfügung hätte ich eine CPU 315-2PN/DP und eben einen PC mit Netzwerkkarte.
Das müsste doch genügen nach meinem Infostand, um eine Verbindung über Ethernet herstellen zu können, oder?

Welche Entwicklersoftware müsste man sich dann organisieren (möglichst kostenlos:rolleyes:) Habe ein Semester C in der Schule gehabt und etwas VBSkript in WinCC programmiert... Glaube VB ist etwas einfacher als C oder?

Naja wenn ich euch net verärgert habe mit dem nächsten NewBe Thread über Libnodave, dann freu ich mich schon auf ein paar Ratschläge...

Gruß Hocheck
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Hocheck,

arbeite mich auch gerade in Libnodave ein und muss sagen, daß man damit wirklich sehr viel anstellen kann.


Hallo,

Zur verfügung hätte ich eine CPU 315-2PN/DP und eben einen PC mit Netzwerkkarte.
Das müsste doch genügen nach meinem Infostand, um eine Verbindung über Ethernet herstellen zu können, oder?

Gruß Hocheck

... reicht. Natürlich Netzteil und Step7 noch

Für den Anfang habe ich mir ein Projekt in Excel erstellt und das Modul12 verwendet. Das kannst du dann deinen Bedürfnissen anpassen. Hatte keine Kenntnisse in VBSkript, nur C und C++. Wächst man aber rein:)

Vorteile zu C : Du spartst sehr viele geschweifte Klammern und Semikolons:D. Ansonsten Ansichtssache

Gruß Doc
 
Hallo Dr.M

also in dem Beispiel für VBA in Excel steht:

' Part of Libnodave, a free communication libray for Siemens S7 200/300/400 via
' the MPI adapter 6ES7 972-0CA22-0XAC
' or MPI adapter 6ES7 972-0CA23-0XAC
' or TS adapter 6ES7 972-0CA33-0XAC
' or MPI adapter 6ES7 972-0CA11-0XAC,
' IBH/MHJ-NetLink or CPs 243, 343 and 443
' or VIPA Speed7 with builtin ethernet support.

Dann wäre es doch mit einer 3xx Profinet CPU doch nur mit einem passenden CP möglich, oder?!
 
Dann wäre es doch mit einer 3xx Profinet CPU doch nur mit einem passenden CP möglich, oder?!

nö, über die Profinet schnittstelle der CPU geht das auch ohne extra CP,
die Adapter die du da aufgezählt hast sind für Verbindungen über Profibus und MPI. Da du aber TCP/IP verwendest brauchst du keinen extra Adapter (und schon garkeinen extra CP).
 
@ MW Du hast Recht, ich war da am Holzweg mit der Annahme...


@ Dr. M du hast recht, es hat mir keine Ruhe gelassen und habe mir einfach mal Zeit für einen Hardwareaufbau genommen. Und es funktioniert sogar schon. Habe es auch über Visual Basic getestet und das C- Testprogramm.

Libnodave ist genial. Um 10 Uhr angefangen mit Hardwarebau und um 12 Uhr schon die Verbindung gehabt! Ein dickes Lob an den Entwickler!

Jedoch hätt ich noch ein paar Fragen die ich mir nicht selbst beantworten kann...

Hoffe irgendwer nimmt sich die Zeit-


Folgende Hardware:
CPU 313 2 DP
CP 343-1

Folgende Fragen:

1. Habe die Libnodave.dll einfach mal in den Windows\System32\ Ordner kopiert. Muss das eigentlich gemacht werden?

2. Warum ändert sich bei jedem Zugriff den ich über Libnodave mache der PortHandle Wert?

3. Kann man die Diagnostic List irgendwie verwenden bzw. gibt es eine Tabelle um die Hex Zahlen zu dekodieren?

4. Welche Funktion haben folgenden Makros?
- Buffer Test
- read programm block
- string test

5. Ist mit Libnodave diese Hardwarekonfig (siehe bild) überhaupt notwendig? Hatte diese benutzt um mit dem CP auf den PC zuzugreifen…

6. Warum wird empfohlen die erstellte Excel xsml Datei über die Windows Eingabeaufforderung zu öffnen?
7. wofür sind die result from bytes oder result from connect PLC da? Ich erhalte dauerhaft eine 0 in diesen Feldern?

Nach dem Testprogramm von Libnodave in Visual Basic.
Es sollen die Daten (Unten) aus der S7 in die Excel Tabelle geladen werden. Die DINT und REAL Variablen werden genau geladen. Das Byte wird nicht geladen- Bei einem Wert im Byte von 63 im DB 5 wird in der Excel Tabelle der Wert 85 angegeben?! Warum das? Habe den Libnodave Auszug auch angehängt…

Folgendes:
DB 5:
Adresse Typ
0.0 DINT
4.0 DINT
8.0 DINT
12.0 REAL
16.0 Byte

Libnodave Code:
Sub readFromPLC()
Cells(1, 2) = "Testing PLC read"
Dim ph As Long, di As Long, dc As Long
res = initialize(ph, di, dc)
If res = 0 Then
res2 = daveReadBytes(dc, daveDB, 5, 0, 18, 0)
'res2 = daveReadBytes(dc, daveFlags, 0, 0, 16, 0)
Cells(5, 1) = "result from readBytes:"
Cells(5, 2) = res2
If res2 = 0 Then
v1 = daveGetS32(dc)
Cells(7, 1) = "MD0(DINT):"
Cells(7, 2) = v1
v2 = daveGetS32(dc)
Cells(8, 1) = "MD4(DINT):"
Cells(8, 2) = v2
v3 = daveGetS32(dc)
Cells(9, 1) = "MD8(DINT):"
Cells(9, 2) = v3
v4 = daveGetFloat(dc)
Cells(10, 1) = "MD12(REAL):"
Cells(10, 2) = v4
v5 = daveGetU8At(dc, 12)
'v5 = daveGetFloatAt(dc, 12)
Cells(11, 1) = "Mw12(Byte):"
Cells(11, 2) = v5
v6 = daveGetS8(dc)
Else
e$ = daveStrError(res)
Cells(9, 4) = "error:"
Cells(9, 5) = e$
End If
End If
Call cleanUp(ph, di, dc)
End Sub
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
ich arbeite zwar nicht mit dem Excel VB, aber ich versuch trotzdem mal dir einige Fragen zubeantworten
1. Habe die Libnodave.dll einfach mal in den Windows\System32\ Ordner kopiert. Muss das eigentlich gemacht werden?

Versuch macht klug !!!

Wenn ich Programme mit Libnodave schreibe pack ich die DLL ins Projektverzeichnis und es funzt.

5. Ist mit Libnodave diese Hardwarekonfig (siehe bild) überhaupt notwendig? Hatte diese benutzt um mit dem CP auf den PC zuzugreifen…

Nein, wenn du mit Libnodave auf eine SPS zugreifen willst musst du keine Verbindungen projektieren.

7. wofür sind die result from bytes oder result from connect PLC da? Ich erhalte dauerhaft eine 0 in diesen Feldern?

die Null ist da sogar richtig gut, null heist: Funktion erfolgreich durchgeführt. wenn da jetzt was anderes als Null stehen würde, ist bei der Ausführung der Funktion ein Fehler aufgetretten.

Nach dem Testprogramm von Libnodave in Visual Basic.
Es sollen die Daten (Unten) aus der S7 in die Excel Tabelle geladen werden. Die DINT und REAL Variablen werden genau geladen. Das Byte wird nicht geladen- Bei einem Wert im Byte von 63 im DB 5 wird in der Excel Tabelle der Wert 85 angegeben?! Warum das? Habe den Libnodave Auszug auch angehängt…

Folgendes:
DB 5:
Adresse Typ
0.0 DINT
4.0 DINT
8.0 DINT
12.0 REAL
16.0 Byte

Libnodave Code:
Code:
[SIZE=3][FONT=Calibri]Sub readFromPLC()[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(1, 2) = "Testing PLC read"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Dim ph As Long, di As Long, dc As Long[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]res = initialize(ph, di, dc)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]If res = 0 Then[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]res2 = daveReadBytes(dc, daveDB, 5, 0, 18, 0)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]'res2 = daveReadBytes(dc, daveFlags, 0, 0, 16, 0)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(5, 1) = "result from readBytes:"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(5, 2) = res2[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]If res2 = 0 Then[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]v1 = daveGetS32(dc)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(7, 1) = "MD0(DINT):"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(7, 2) = v1[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]v2 = daveGetS32(dc)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(8, 1) = "MD4(DINT):"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(8, 2) = v2[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]v3 = daveGetS32(dc)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(9, 1) = "MD8(DINT):"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(9, 2) = v3[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]v4 = daveGetFloat(dc)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(10, 1) = "MD12(REAL):"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(10, 2) = v4[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]v5 = daveGetU8At(dc, 12)[/FONT][/SIZE] [COLOR=Red]<-- warum 12 ??? dein Byte liegt auf addresse 16 (ggf auch mal mit "v5=daveGetS8(dc)" probieren)[/COLOR]
[SIZE=3][FONT=Calibri]'v5 = daveGetFloatAt(dc, 12)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(11, 1) = "Mw12(Byte):"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(11, 2) = v5[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]v6 = daveGetS8(dc)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Else[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]e$ = daveStrError(res)[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(9, 4) = "error:"[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Cells(9, 5) = e$[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]End If[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]End If[/FONT][/SIZE]
[SIZE=3][FONT=Calibri]Call cleanUp(ph, di, dc)[/FONT][/SIZE]
[FONT=Calibri][SIZE=3]End Sub
[/SIZE][/FONT]

ich hoffe ich konnte trotz mangelndem EXCEL wissen weiterhelfen
 
Wo speicher ich DLLs

Hallo,

Hocheck schrieb:
1. Habe die Libnodave.dll einfach mal in den Windows\System32\ Ordner kopiert. Muss das eigentlich gemacht werden?

Muss nicht unbedingt sein, würde ich Dir aber empfehlen. Die DLL kann alternativ auch im Verzeichnis Deiner Applikation gespeichert sein.
Aber wenn Deine App mal in einem anderen Verzeichnis installiert wird ohne die DLL, dann wird die DLL u.U. von Deiner App nicht gefunden.

Also besser im //Windows/System32 die DLL ablegen, da wird die immer von Deiner App gefunden (weil Windows per Default die DLL's zuerst dort sucht).

Gruß

Question_mark
 
3. Kann man die Diagnostic List irgendwie verwenden bzw. gibt es eine Tabelle um die Hex Zahlen zu dekodieren?

Ja, ich habe das Skript etwas umgeschrieben. Nun erscheint jeder Wert (die durch Komma getrennt waren) in einer eigenen Zelle. Dadurch wird auch schon mal die Bedeutung klarer. Die ersten zwei Stellen sind Die Ereignis ID, am Ende befindet sich Datum und Uhrzeit. Wenn du dir die zusammengehörigen Zellen dann in Excel verbiindest, erhälst du eine übersichtliche Liste. Übersicht über sie Ereignis-ID gibts in nem Siemens Dokument mit dem Namen "System- und Standardfunktionen für S7-300/400"
 
Zurück
Oben