libnodave und softSPS

renid55

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo gemeinde,
ich bastel gerade an ein VBTool zur visualisierung/archivierung
da ich viel unterwegs bin und meistens keine S7 hardware mitschleppe suche ich eine (lowbudget )möglichkeit auf eine virtuelle Anlage meine software zu testen.

daher meine frage:
gibt es eine möglichkeit mit libnodave auf die s7 plcsim zuzugreifen?
alternativ - könnte man die libnodave eingabe auf ne virtuelle quelle (zbsp in form einer textdatei "umbiegen"?

oder kennt jemand einen anderen OPC server welcher sowas kann?

liebe grüße

reinhard
 
renid55 schrieb:
gibt es eine möglichkeit mit libnodave auf die s7 plcsim zuzugreifen?
Sorry, PLCsim kenne ich nicht.
alternativ - könnte man die libnodave eingabe auf ne virtuelle quelle (zbsp in form einer textdatei "umbiegen"?
Ja:
1. bei daveNewInterface als Protokoll daveProtoUserTransport angeben
2. eine eigene Funktion daveExchange schreiben, die zu dem verwendeten Prototyp paßt. In VB könnte das schwer werden:
3. Diese Funktion müßte dann, von mir auch aus einer Textdatei, Pakete an Libnodave liefern, die aussehen, wie die PDU die eine S7 schickt.

Bevor ich DAS machen würde, kannst du doch besser gleich ein "Back End" für deine Visualiserung schreiben, daß die Daten aus der Textdatei liefert...



reinhard[/quote]
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo zottel,

danke für deine antwort

Sorry, PLCsim kenne ich nicht.


Das ist die Siemens SoftSPS welche optional im STEP 7 Packet enthalten/freigeschaltet ist.


Ja:
1. bei daveNewInterface als Protokoll daveProtoUserTransport angeben
2. eine eigene Funktion daveExchange schreiben, die zu dem verwendeten Prototyp paßt. In VB könnte das schwer werden:
3. Diese Funktion müßte dann, von mir auch aus einer Textdatei, Pakete an Libnodave liefern, die aussehen, wie die PDU die eine S7 schickt.

Hört sich gut an, sprengt aber leider momentan meinen KnowHow- bzw Zeit-Rahmen ;-(.
Wo kann man eigentlich das S7 PDU Protokoll/Spezifikation einsehen?

Bevor ich DAS machen würde, kannst du doch besser gleich ein "Back End" für deine Visualiserung schreiben, daß die Daten aus der Textdatei liefert...

Sehe ich auch so bzw. habe ich auch schon so gemacht.
Nur wollte ich, in hinblick auf eine schnelle Anpassung, nicht nur meine Anwendung testen sondern in erster Linie auch den Datenaustausch mit der Schnittstelle bzw OPCServer.
Ich hatte gehofft daß du bei der Entwicklung ähnliche Probleme hattest und so ein Art "Offline Mode".Flag implementiert hast, welcher zwischen Anlagen-"DatenStream" und Simulation/Datei wechseln kann.

Trotzdem danke für deine Antwort und auch für das libnodaveTool.

reinhard
 
renid55 schrieb:
Das ist die Siemens SoftSPS welche optional im STEP 7 Packet enthalten/freigeschaltet ist.
Kenne ich vom Hörensagen. Ist aber doch eigentlich ein Simulator, keine SoftPLC, da es nicht wirklich etwas steuern kann, oder? Die SoftPLC WinLC funktioniert mit Libnodave nach einer kleinen Modifikation, die in die nächste Version einfließt. Habe ich aber nie ausprobiert und weiß schon garnicht, ob und welche Schnittstellen es hat. Wie greift man mit Step7 darauf zu? Ist es eine neue Art der Verbindung in "PC/PG-Schnittstelle wählen"?
Hört sich gut an, sprengt aber leider momentan meinen KnowHow- bzw Zeit-Rahmen ;-(.
Das ist auch mehr so eine "im Prinzip ja"-Sache. Ich sag' ja, ich ürde es selbst auch nicht machen.
Wo kann man eigentlich das S7 PDU Protokoll/Spezifikation einsehen?
Im Internet oder in frei zugänglicher Dokumentation gar nicht,soweit ich weiß. Ich habe mir die Pakete solange angeschaut und Werte verändert bis ich zu wissen glaubte, was was ist.
...sondern in erster Linie auch den Datenaustausch mit der Schnittstelle bzw OPCServer.
OPC ist wieder ganz was anderes.
Ich hatte gehofft daß du bei der Entwicklung ähnliche Probleme hattest und so ein Art "Offline Mode".Flag implementiert hast, welcher zwischen Anlagen-"DatenStream" und Simulation/Datei wechseln kann.
Nein, aber es gibt die Datei ibhsim5.c. Die simuliert Teile einer S7 + IBH-NetLink (eigentlich nur die Kommunikation). Sie gibt aber immer dieselben Werte raus, egal ob du Eingänge, Ausgänge, DBS liest. Das ließe sich leicht ändern, aber so wie sie ist läßt sie sich nur unter Linux übersetzen.
 
Kenne ich vom Hörensagen. Ist aber doch eigentlich ein Simulator, keine SoftPLC, da es nicht wirklich etwas steuern kann, oder?

stimmt! softsps war der falsche ausdruck.

Die SoftPLC WinLC funktioniert mit Libnodave nach einer kleinen Modifikation, die in die nächste Version einfließt. Habe ich aber nie ausprobiert und weiß schon garnicht, ob und welche Schnittstellen es hat. Wie greift man mit Step7 darauf zu? Ist es eine neue Art der Verbindung in "PC/PG-Schnittstelle wählen"?

Die winLC habe ich nicht.
Der PLCsim von Siemens kann in der Konfiguration eine MPI Nummer zugeordnet werden(Default=2). Danach wird sie wie eine reale PLC behandelt. Wahrscheinlich befindet sich die "Weiche" innerhalb von Step7 auf einem mpi_Objekt.

deine TestMPI.exe meldete jedenfalls nur timeout.
aber vermutlich greift sie auch direkt auf die COMx: zu?


Nein, aber es gibt die Datei ibhsim5.c. Die simuliert Teile einer S7 + IBH-NetLink (eigentlich nur die Kommunikation). Sie gibt aber immer dieselben Werte raus, egal ob du Eingänge, Ausgänge, DBS liest. Das ließe sich leicht ändern.....

findest du - ich habe sie mir gerade angeschaut *kopfschmerz* ;-)


gruß
reinhard
 
Zuviel Werbung?
-> Hier kostenlos registrieren
findest du - ich habe sie mir gerade angeschaut *kopfschmerz* ;-)
ja, der Code ist chaotisher Schrott. Er dient mir auch nur dazu, Step7 ein paar Schritte lang vorzumachen, daß es mit einer S7 spricht, damit ich sehen kann, wie es das macht oder was es aus einer bestimmten Antwort macht.
Aber das mit den wechselnden Werten ist wirklich nicht schwer. Zwei Wege:

1.Wenn du einfach nur jedesmal etwas anderes lesen willst, änderst du die Funktion dummyRead, daß sie zum Beispiel etwas hochzählt.
Willst du eingänge u.s.w. unterscheiden muß sie halt nicht immer was aus dem Konstanten-array dummyRes zurückgeben, sondern z.B. aus einem neuen dummyDB1 oder dummyInputs oder was du möchtest.
2. Wenn du einen simulierten "Prozess" oder in Kombination mit einem simulierten Programm nebenher laufen haben willst, packst du alles nötige in eine function SPSmain() oder ProzessMain() und startest threads, am besten vor pthread_create(....accepter, );
Aus diesen Threads könntest du einfach Werte aus den dummyXXX arrays lesen und schreiben...
 
Schade, das es nicht geht !

Ich hätte in der Vergangenheit auch des öffteren Verwendung dafür gehabt- leider kann Siemems Prodave auch nur über physikalische Schnittstellen auf SPSen zugreifen, während die meisten S7-Progamme (wie WinCC, Protool, S7-Manager) ganz transparent die Verbindung auf PLC-SIM aufbauen, wenn dieses gestartet wurde.

Ich nutzte die Simulation sehr intensiv - wir simulieren alle Projekte auf der Simulation - mit Panel, WinCC und sogar in PCS7- Umgebungen. Nur bei unseren Delphi- Applikationen muss ich da passen :-(

Aber ich gebe die Hoffnung nicht auf, dass man mit einfacheren Mitteln wie OPC an die S7-Simulation "rankommt".
 
HeizDuese schrieb:
Ich nutzte die Simulation sehr intensiv - wir simulieren alle Projekte auf der Simulation - mit Panel, WinCC und sogar in PCS7- Umgebungen. Nur bei unseren Delphi- Applikationen muss ich da passen :-(
Ich arbeite daran, daß Libnodave die von Step7 mitgebrachten Bibliotheken und Treiber für den Transport nutzen kann. Es gefällt mir zwar nicht, weil es eine "windows only" Lösung ist, aber es wird eine Menge Leute freuen. Vielleicht geht es dann.

Aber ich gebe die Hoffnung nicht auf, dass man mit einfacheren Mitteln wie OPC an die S7-Simulation "rankommt".
Ich würde OPC nicht ein "einfaches Mittel" nennen...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja, der Code ist chaotisher Schrott. Er dient mir auch nur dazu, Step7 ein paar Schritte lang vorzumachen, daß es mit einer S7 spricht, damit ich sehen kann, wie es das macht oder was es aus einer bestimmten Antwort macht.

Nee, so meinte ich das nicht. das war keinesfalls eine Kritik an deiner Arbeit. Muß mal meinen Experimentalcode sehen!.
Ich wollte viel mehr auf meine mangelnde Verständnis/Übersicht bezüglich der Funktionalität des S7_MPI Datenflusses/Format im allgemeinen sowie in libninodave im speziellen ansprechen. Mein Wissen über den MPI DatenAustausch ist wohl zu rudimentär um deine Funktionen zu verstehen. Wenn du mal ein Buch schreibst über "MPI intern" oder so .... ein Exemplar kannste für mich reservieren. ;-)

Aber das mit den wechselnden Werten ist wirklich nicht schwer. Zwei Wege:

1.Wenn du einfach nur jedesmal etwas anderes lesen willst, änderst du die Funktion dummyRead, daß sie zum Beispiel etwas hochzählt.
Willst du eingänge u.s.w. unterscheiden muß sie halt nicht immer was aus dem Konstanten-array dummyRes zurückgeben, sondern z.B. aus einem neuen dummyDB1 oder dummyInputs oder was du möchtest.
2. Wenn du einen simulierten "Prozess" oder in Kombination mit einem simulierten Programm nebenher laufen haben willst, packst du alles nötige in eine function SPSmain() oder ProzessMain() und startest threads, am besten vor pthread_create(....accepter, );
Aus diesen Threads könntest du einfach Werte aus den dummyXXX arrays lesen und schreiben.

Eigentlich wollte ich nur ne Visualisierung/Archivierung schreiben....
Aber was ist das Leben ohne Herausforderung - allerdings wird das aus oben benannten Gründen wohl noch etwas dauern.
Da gibt es aber noch ein Problem - du schriebst das die Funktion zZt nur unter Linux läuft?
Trotz meiner gestörter Meinung zu Microsoft möchte ich aus diversen Gründen ("Esst mehr Scheiße, Milliarden von Fliegen können sich nicht Irren!") noch bei Windows bleiben. Mich jetzt auch noch in Linux und seine Anwendungen einzuarbeiten ließen meine Energiereserven nicht mehr zu:-()
Lässt sich das Lösen?(oder besser kannst du das?)

gruß
reinhard
 
renid55 schrieb:
Eigentlich wollte ich nur ne Visualisierung/Archivierung schreiben....
Aber was ist das Leben ohne Herausforderung - allerdings wird das aus oben benannten Gründen wohl noch etwas dauern.
Da gibt es aber noch ein Problem - du schriebst das die Funktion zZt nur unter Linux läuft?
Trotz meiner gestörter Meinung zu Microsoft möchte ich aus diversen Gründen ("Esst mehr Scheiße, Milliarden von Fliegen können sich nicht Irren!") noch bei Windows bleiben. Mich jetzt auch noch in Linux und seine Anwendungen einzuarbeiten ließen meine Energiereserven nicht mehr zu:-()
Lässt sich das Lösen?(oder besser kannst du das?)
1. Kann ich das wirklich nicht. Dazu müßte ich lernen wie man a) Server und b) multithreading unter Windows programmiert.
2. Lohnt es sich absolut nicht. Wirklich nicht.

Wenn du simulierte Daten in die Visualisierung bekommen willst, warum schreibst du dir nicht irgendetwas (Simulation, einlesen aus Textdatei, Zufallszahlengenerator, Funktionsgenerator, einlesen von der Soundkarte, was auch immer, komilierst es als .dll und gibst den Funktionen dieselben Namen wie in Libnodave? Dann tauscht du einfach die .dll aus, um zwischen "simuliert" und "real" umzuschalten...Oder linkst dein Programm nicht mit Libnodave.dll sondern öffnest deine .dll oder libnodave.dll über ihren Name, holst dir die Funktionen mit GetProcAddress. Dann sagst du deiner Anwendung nur, den Namen der .dll und hast "simuliert" oder"real".
Wenn du sowieso mit OPC arbeiten willst, da gibt es auch Simulator-OPC-Server, die dir künstliche Daten wie eine Sinuskurve oder so liefern. Meine ich jedenfalls mich zu erinnern.

Schick mir mal deine mail-Adresse dann geb ich dir die nächste Version von Libnodave zum Testen, sobald es einigermaßen geht, und du guckst, ob sie über die Siemens-.dlls mit PLCsim kommunizieren kann.
 
Hallo,
Sorry habe das ganze jetzt erst gelesen

Zottel schrieb:
Die SoftPLC WinLC funktioniert mit Libnodave nach einer kleinen Modifikation, die in die nächste Version einfließt. Habe ich aber nie ausprobiert und weiß schon garnicht, ob und welche Schnittstellen es hat.

auf die WinLC kann mit Libnodave nur über Ethernet zugegriffen werden.

@Zottel
Du hast es damals Aufgrund meiner Anfrage eingebaut. Einige Sachen funktionieren bereits einwandfrei mit der SoftSPS manche Sachen jedoch noch nicht. - Falls du irgendwelche Informationen, Ethereal-Aufzeichnungen... brauchst melde dich einfach

Gruß Tupo13
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Tupo13 schrieb:
Hallo,

Du hast es damals Aufgrund meiner Anfrage eingebaut. Einige Sachen funktionieren bereits einwandfrei mit der SoftSPS manche Sachen jedoch noch nicht. -
Erstmal ist interessant zu wissen, welche Sachen nicht funktionieren.
Als nächstes ist interessant, was die debug-Ausgabe von libnodave dazu meint.
 
Zurück
Oben