Libnodave lernen

Outrider

Level-1
Beiträge
745
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich bin auf der Suche nach guten didaktischen Unterlagen um Libnodave zu lernen.
Mei Ziel ist eine einfache Verbindung zwische SPS und PC ( Sei es Excel oder C++ )
Die Unterlagen im Forum sind leider nur bruchstückhaft und setzen schon gewisse Dinge als bekannt voraus !
Habt Ihr etwas für mich ?
Vielleicht auch mit Bespielprogramm
Gruß und Danke
 
Was ist für dich eine didaktisch gute Unterlage?
Vielleicht kannst du ja helfen, eine zu schaffen. Sag mir, was an den Beispielprogrammen etc. besser werden soll, wo du nicht weiterkommst und wie du es machen würdest.
 
Ich bin gerade dabei mich in die Materie einzuarbeiten! Langsam aber stetig :D....
Ich kann den Wunsch von Outrider nachvollziehen - auch wenn ich mir die Beispiele schon reingezogen habe und festgestellt habe, dass es mit ihnen durchaus möglich ist auf die Funktion zu schließen und das Gesuchte herauszulösen!
Schade ist jedoch, dass man eben "nur" Methoden die in dem jeweiligen Beispiel behandelt werden mitbekommt.
Ich würde mir eine Funktions/Methodenübersicht "wünschen" mit der man einen Überblick bekommt was alles mögich ist! Vielleicht sogar mit Code-Snippets! - GIBTS SOWAS?
Aktuell arbeite ich gerade die DotNetSiemensPLCToolBoxLibrary von Jochen Kühner durch!
Auf diesem Wege noch einmal ein Chapeau! an ihn für die Sammlung! Ich glaube ich habe noch einige schöne Stunden mit der Library!
 
Sehe mir gerade das \doc Verzeichnis von LibNoDave an und versuche mich zurechtzufinden... Bei DotNetSiemensPLCToolBoxLibrary hab ich sowas noch net gefunden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe ja gefragt, was ihr haben wollt und keine Antwort bekommen.
Schade ist jedoch, dass man eben "nur" Methoden die in dem jeweiligen Beispiel behandelt werden mitbekommt.
Ich würde mir eine Funktions/Methodenübersicht "wünschen" mit der man einen Überblick bekommt was alles mögich ist!
Vielleicht sogar mit Code-Snippets! - GIBTS SOWAS?
Ja und nein.
Ja, denn:
- alle Funktionen, Typen und Konstanten sind in der Header-Datei nodave.h aufgelistet.
- alle Funktionen, Typen und Konstanten werden gewöhnlich in dem Kopf der Beispiele für die Sprachanbindungen wiederholt (vollständig). ?
- die Programme testMPI.c und testISO_TCP.c enthalten Code, um ALLES zutesten bis auf das Laden von Bausteinen in die SPS.
Nein, denn:
- es gibt jetzt nicht den kompletten Code von testMPI.c und testISO_TCP.c nochmal in jeder unterstützten Programmiersprache.

Wie schwer ist es für einen VB-Programmierer ein C-Programm zu lesen?
 
Wie schwer ist es für einen VB-Programmierer ein C-Programm zu lesen?
Gar keins von Beiden - einfach S7-Programmierer der hoch motiviert in eine neue Umgebung einsteigen will!

@zottel - Mein Post mit den Beschreibungen richtete sich eher an die DotNetSiemensToolBox bei der ich eigentlich keine Dokumentation gefunden habe - dafür eine Vielzahl an hoch nützlichen Beispielen mit denen ich auch sehr gut zurecht komme...

Ich werde mich schon zurecht finden.... Ist nur alles verständlicherweise sehr komplex! Ich geb aber nicht schnell auf :cool:.
Möchte mit beiden (LibNoDave sowie DotNetSiemensToolBox) umgehen lernen!
Ich habe bis vor wenigen Tagen eigentlich "nur" S7 und Arduinos programmiert und schreibe gerade an meinen ersten C# Applikationen und bin mit meinem Fortschritt ganz zufrieden!

Nun ist es eben soweit, dass ich meine Applikationen mit der S7 und mySQL Welt sprechen lassen möchte.
Nicht weil es konkret eine Anwendung gibt, nur weil ich es einfach können möchte wenn ich es brauche.
mySQL spreche ich schon mit C# :D - Jetzt gehts an S7

Ich gebe mir echt Mühe mich umfassend zu Informieren und zu lesen, zu lesen und zu lesen bis ich für Profis vielleicht "unangebrachte" Fragen stelle. Ganz wird es sich jedoch leider nicht vermeiden lassen....
Aktuell arbeite ich mit der DotNetSiemensToolBox und bin schon bald dort wo ich hinmöchte... (Danke an Jochen für die Starthilfe)
Im Anschluss möchte ich das selbe "Projekt" auch mit der LibNoDave alleine machen...
 
Sehe mir gerade das \doc Verzeichnis von LibNoDave an und versuche mich zurechtzufinden... Bei DotNetSiemensPLCToolBoxLibrary hab ich sowas noch net gefunden.

Jo, weil ich auch keine Doku habe... Und im Moment auch keine Zeit eine zu erstellen, aber es sind ja einige Beispiele dabei... Und wenn du Fragen hast, einfach n Thread hier starten, wenn's um meine Lib geht, antworte Ich dann schon. Nur bitte nicht per PN, da andere vielleicht ähnliche Probleme haben und denen ist dann mit einem öffentlichen Thread auch geholfen.

Meine Lib kannst ja auch nicht direkt mit LibNodave vergleichen, Ich nutze ja libNodave (wenn auch eine etwas geänderte Version). Aber meine Bib bietet ja auch noch Step7, Step5 Projektzugriff, Abstraktion der Kommunikation, etc...
 
Hallo,
ich bin ganz neu bei euch im Forum, meine SPS Kentnisse sind mittelmäßig, nur mit Ethernet/ Internet Verknüpfung habe ich gar keine Erfahrung. Habe mir eine S7-314 Steuerung mit Analogeingangen und einer CP343-1 angeschaft und wollte mit dieser meine Heizung / Solaranlage steuern. Das Programm ist soweit auch fertig. Nun habe ich soviel von Libnodave gehört und zum teil auch gelesen, das meine Überlegung war, Datenaufzeichnung und die Heizungssteuerung ( EIN / AUS, Temperaturen anpassen) übers Heimnetz zu machen.

Nun zu meiner Frage:
Wenn man mit Libnodave arbeitet muss auch was in die Steuerung eingetagen werden,damit man die Daten auslesen, bzw Schreiben kann?

Mfg Tola- Emma

PS: ich hoffen ihr könnt meinen Wissenstand aufbessern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Frage an libnodave experten

Wenn ich mich mit dem S7 Manager mit meiner S7300 verbinde, dann habe ich bei"Set PG/PC Interface" die Option TCP/IP Centrino (WLAN ueber Firmennetzwerk und Router zur SPS) ausgewaehlt.

Wenn ich jetzt eine Verbindung ueber libnodave aufbauen will, muss ich da beim Interface

DeviceInterface = daveNewInterface(PortHandle, PortHandle, "IF1", 0, daveProtoISOTCP, daveSpeed187k)

ISO TCP verwenden?

Ich frage nur, weil wenn ich beim S7 Manager die Option ISO Ind. Ethernet Centrino waehle, bekomme ich keine Verbindung. Libnodave bietet mir aber nur ISO TCP an, kein TPC/IP.

Bis jetzt habe ich folgendne Code


Private Sub CommandButton1_Click()
Dim PortHandle As Long
Dim DeviceInterface As Long
Dim DeviceConnection As Long

Dim Result As Long

PortHandle = openSocket(102, "10.196.47.110")

If PortHandle > 0 Then
DeviceInterface = daveNewInterface(PortHandle, PortHandle, "IF1", 0, daveProtoISOTCP, daveSpeed187k)
Result = daveInitAdapter(DeviceInterface)

If Result = 0 Then
DeviceConnection = daveNewConnection(DeviceInterface, 0, 0, 0)
Result = daveConnectPLC(DeviceConnection)
End If

Result = closeSocket(PortHandle)
End If
End Sub

PortHandle ist 3348
DeviceInterface ist 54201864
DeviceConnection ist 54206768

Result nach InitAdapter ist 0 und Result nach ConnectPLC ist ebenfalls 0.
Das bedeutet doch, dass die Verbindung fehlerfrei aufgebaut worden ist, oder?
 
Zuletzt bearbeitet:
Result nach InitAdapter ist 0 und Result nach ConnectPLC ist ebenfalls 0.
Das bedeutet doch, dass die Verbindung fehlerfrei aufgebaut worden ist, oder?
Ja.

Hast Du Dir mal die in Beitrag #3 verlinkte FAQ angesehen?
Da findest Du fertigen Beispielcode in VBA.

Ein typischer Verbindungsaufbau sieht etwa so aus:
Code:
Private Function connect_Machine_1(ByRef ph As Long, ByRef di As Long, ByRef dc As Long) As Long
...
connect_Machine_1 = -1 ' Function-Rückgabewert bei Fehler beim Verbindungsaufbau
' Verbindungsparameter TCP: peer$, Rack, Slot (MpiPpi wird nicht genutzt)
peer$ = "192.168.2.11"
MpiPpi = 2: Rack = 0: slot = 2
' port-Handle erzeugen
ph = openSocket(102, peer$)
If (ph > 0) Then
    di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)
    res = daveInitAdapter(di)
    If res = 0 Then
        dc = daveNewConnection(di, MpiPpi, Rack, slot)
        res = daveConnectPLC(dc)
        If res = 0 Then ' Verbindung zu PLC erfolgreich aufgebaut
            connect_Machine_1 = 0 ' Function-Rückgabewert bei Verbindungsaufbau OK
        Else ' Fehler daveNewConnection() oder daveConnectPLC()
            resmb = MsgBox("Keine Verbindung zur PLC Maschine_1!" & Chr(13) _
                         & "(" & peer$ & ":102, Rack 0, Slot " & slot & ")", vbExclamation, "Fehler bei Verbindungsaufbau")
        End If
    Else ' Fehler daveNewInterface() oder daveInitAdapter()
        resmb = MsgBox("Fehler beim Initialisieren TCP-Interface!", vbExclamation, "Fehler bei Verbindungsaufbau")
    End If
Else ' Fehler openSocket()
    resmb = MsgBox("Fehler beim Öffnen TCP-Socket!" & Chr(13) _
                 & "(" & peer$ & ":102)", vbExclamation, "Fehler bei Verbindungsaufbau")
End If

Für LibNodave ist es egal, was Du in "PG/PC-Schnittstelle" eingestellt hast. LibNodave verwendet es nicht. LibNodave benötigt kein installiertes Step7 oder Siemens-Treiber.
"DeviceInterface = daveNewInterface(PortHandle, PortHandle, "IF1", 0, daveProtoISOTCP, daveSpeed187k)" entspricht dem PG/PC-Schnittstelle einstellen, das dabei von LibNodave zu verwendende Protokoll wird durch daveProtoISOTCP angegeben.
Wenn Dein PC mehrere Netzwerkadapter hat, dann wählt Windows anhand der Routing-Regeln den zur Ziel-IP führenden Adapter.

Harald
 
Ja, es klappt bei mir jetzt. Ich kann Werte aus einem DB auslesen. Es war ganz easy.

Jetzt habe ich eine andere Frage. Eine SPS hier ist etwas anders als die anderen. Sie hat keinen Netzwerkanschluss. Ich kann mich nur mit der Profibus-Schnittstelle vom Programmiergeraet ueber die CP5611 Schnittstelle verbinden.

Welche Chancen habe ich hier Daten auszulesen und in meine Excelapplication zu uebertragen?
 
Oder die SPS per MPI oder Profibus mit einer anderen SPS verbinden, welche einen Netzwerkanschluß hat. LibNodave kann jetzt auch S7-Routing.

Harald
 
Gibt es Erfahrungen zur Geschwindigkeit der Auslesung von Daten und zur Optimierung davon? Ich moechte gerne Zyklusgenau Daten aus der SPS erfassen. Es handelt sich um Kraftmesswerte. Die Zykluszeit der SPS muss ich noch ermitteln, ich vermute es ist ein Wert zwischen 10 und 50 Millisekunden.

Die Auslasung des Netzwerkes spielt hier sicher eine Rolle. Daneben auch die Geschwindigkeit des VBA Programmes, der Loop, welche die Daten einliest. Ich moechte gerne auf ein Triggersignal reagieren und dann zwei Sekunden lang Daten sammeln, ich denke dass dabei 1000 Real-Zahlen aus einem DB gelesen werden. 2ms zwischen jedem Datenwert.

Da die Zeiterfassung, die Genauigkeit, sagen wir einfach mal der Jitter von VBA nicht so genau und praezise sind, macht es vielleicht Sinn zu jedem Messwert einen Zeitwert von einem Timer aus der SPS mit zu erfassen.

Eine weitere Alternative waere es, die Daten in der SPS in jedem Zyklus (index=index+1 in ein Array zu schreiben und nach erfolgter Messung das Array mit libnodave auszulesen.

Gibt es dazu Erfahrungen?
 
Zurück
Oben