PLCSim Netzwerkerweiterung "NetToPLCSim"

Zuviel Werbung?
-> Hier kostenlos registrieren
Die Simulation läuft derzeit auf einem Rechner ohne Probleme auch ohne Tool natürlich. Das Problem, was ich habe ist, dass ich eine Schnittstelle benötige, über die ich die gerade laufende PLC steuern/beeinflussen kann. Genauer gesagt, möchte ich ein Tool entwickeln/ vorhandene Tools(Fuzzer) anpassen, die automatisiert Eingabedaten an die simulierte PLC senden und damit versuchen Fehler der PLCs aufzudecken.

Ich dachte, ich könnte mit deinem Tool, das mir ja die TCP/IP-Schnittstelle zur Verfügung stellt, diese nutzen, um Eingabedaten an die simulierte PLC zu senden.

Plcsim hat dazu eine eigene Schnittstelle um auf die Daten zuzugreifen. Schau mal in der Plcsim Hilfe zu Prosim Com-Objekt.
Wenn du hier im Forum danach suchst wirst du einiges an Ergebnissen finden. Ich habe zu dem Thema auch schon ein paar Code-Beispiele [1] gepostet. Am einfachsten ist der Zugriff aus .Net Programmen (C#/Vb.net), Excel geht auch. C++ ist etwas aufwändiger, habe ich aber auch schon gemacht.

Die nettoplcsim Versionen 0.7.x nutzen ebenfalls diese Schnittstelle. Da kannst du in den Quellcode [2] auch mal einen Blick reinwerfen.


[1] http://www.sps-forum.de/showthread.php/42179-Programm-Simulation-amp-Test?p=324968#post324968
[2] http://nettoplcsim.svn.sourceforge....NetToPLCSim/PLCSim.cs?revision=34&view=markup
 
Zuletzt bearbeitet:
Vielen Dank für die Info. Werde es dann am besten mit .Net versuchen. Die S7Online Schnittstelle, also die du in der aktuellen Version nutzt, ist hier nicht geeignet?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die Info. Werde es dann am besten mit .Net versuchen. Die S7Online Schnittstelle, also die du in der aktuellen Version nutzt, ist hier nicht geeignet?

Prosim und S7online haben beide ihre Vor- und Nachteile.
Über die Prosim-Schnittstelle kannst du beispielsweise direkt Peripherieadressen beschreiben (z.B. PEW256). D.h. wenn du irgendwelche Sensor-Werte simulieren willst brauchst du dein Programm nicht anzupassen. Außerdem hast du über die Prosim-Schnittstelle keinen weiteren Protokoll-Layer dazwischen. Über die S7online-Schnittstelle müsstest du nämlich erstmal das S7-Protokoll "sprechen". Außerdem ist der Zugriff auf Plcsim über die S7online-Schnittstelle undokumentiert. Aus dem Grunde habe ich bei der aktuellen Version auch gelegentliche Fehler, und noch keine Ahnung wie ich diesen beheben soll.
Dafür ist S7online von der Datenrate ein ganzes Stück schneller als die relativ langsame Prosim-Schnittstelle.
 
Hallo Thomas,

nun schließe ich mich als Neuling auch den Forum an. Bei mir besteht ein ähnliches Problem wie schon im Verlauf der Diskussion öfters angesprochen.

Ich versuche eine Kopplung zwischen PLCSim und Wincc über NetToPLCSim herzustellen.

PC1 (192.168.10.1) : Step7, PLCSim (V5.5 ; 192.168.10.10) und NetToPLCSim 0.9.1.
PC2 (192.168.10.2) : WinCC V7

In PC1 wurden Netzwerktechnisch folgende Einstellung durchgeführt:
  1. Netzwerkkarte wurde zusätzlich 192.168.10.10 angelegt
  2. Firewall aus
  3. PLCSim erfolgreich geladen und im RUN
  4. "Start all" geklickt und Verbindung auf "Running"
PC2:
  1. WinCC alle Projektdatein in TCP/IP angelegt.
  2. Systemparameter häkchen alle entfernt
  3. Als Unit die Netzwerkkarte ausgewählt und als Adresse die des PC1 eingegeben.
Leider bekomme ich nun keine Verbindung.

Was können noch fehler sein.

Ich danke euch dir/euch schonmmal für die Unterstützung.
 
Hast du mal das Monitoring-Fenster in nettoplcsim aufgemacht? Sind dort irgendwelche Einträge zu sehen?
Wenn dort andauernd ein "Negotiate ...." Eintrag kommt, kannst du mal probieren in nettoplcsim auf stop/start zu klicken. Ab und zu läufts dann wieder. Alternativ die alte 0.7er Version verwenden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,
danke für deine rasche Antwort.
Die genannte Meldung wird nicht angezeigt. Auch das Start/Stop wurde von mir vorgenommen, jedoch ohne Erfolg.
Könnte es sonst noch an etwas liegen? Die 0.9.x wäre bezüglich der mehreren PLCSim-Instanzen von Nöten.
0.7 ermöglicht ja nur die Kopplung zu einer PLCSim.

Grüße
 
Also wenn bei nettoplcsim garnichts ankommt ist entweder in WinCC noch eine Einstellung falsch, oder beim Netzwerk passt irgendetwas noch nicht.

Um das Netzwerk zu testen könntest du dieses libnodave-Testprogramm von hier
http://www.sps-forum.de/showthread....ung-quot-NetToPLCSim-quot?p=391247#post391247
oder direkt von sourceforge auf den WinCC-Rechner laden, und versuchen ob du damit eine Verbindung zu nettoplcsim bekommst. Funktioniert das auch nicht, passt irgendwas am Netzwerk oder mit deinen Einstellungen der IP-Adressen nicht.
War der Test erfolgreich ist in deiner WinCC Konfiguration noch irgendwo ein Fehler.
 
Hallo Thomas,

danke für deine Antwort.
Ich habe heute das Programm von Ihnen getestet. Leider öffnet es sich nur kurz und schließt sofort wieder. Liegt bei ihren ISOtoPLC.exe ein fehler vor?
Leider konnte ich damit die Anbindung an WinCC nicht lösen.

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe heute das Programm von Ihnen getestet. Leider öffnet es sich nur kurz und schließt sofort wieder. Liegt bei ihren ISOtoPLC.exe ein fehler vor?
Leider konnte ich damit die Anbindung an WinCC nicht lösen.

Hi,
das Programm ist eine Konsolenanwendung. Darum muss als erstes eine Eingabeaufforderung geöffnet werden und in das Verzeichnis gewechselt (cd) werden in der die Datei liegt. Dann den Namen gefolgt von der IP-Adresse der SPS/Plcsim eingeben.
 
Step7 <-> PLCSim

Hallo Thomas,

wir verwenden Ihr Tool schon seit geraumer Zeit - es ist wirklich eine enorme Bereicherung.
Seit einiger Zeit fragen wir uns, ob nicht folgendes Szenario möglich wäre:
PC1: Siemens Step7
PC2: PLCSim, NetToPLCSim
Gerne würden wir eine Verbindung aus dem Step7-Manager auf PC1 zu der PLCSim auf PC2 herstellen, um Bausteine zu beobachten, Änderungen zu laden etc.
Beim versuch, dieses zu realisieren, wurden nur irgendwelche Telegramfehler im NetToPLCSim angezeigt :???:
Gibt es hierzu schon einen Lösungsansatz?

Vielen Dank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Seit einiger Zeit fragen wir uns, ob nicht folgendes Szenario möglich wäre:
PC1: Siemens Step7
PC2: PLCSim, NetToPLCSim
Gerne würden wir eine Verbindung aus dem Step7-Manager auf PC1 zu der PLCSim auf PC2 herstellen, um Bausteine zu beobachten, Änderungen zu laden etc.
Beim versuch, dieses zu realisieren, wurden nur irgendwelche Telegramfehler im NetToPLCSim angezeigt :???:
Gibt es hierzu schon einen Lösungsansatz?

Mit der neuen Version könnte das theoretisch zumindest möglich sein. Dass es noch nicht funktioniert liegt in dem gleichem Problem begründet, warum die Version bei 'normalen' Visualisierungen auch manchmal ins stocken gerät.
Für den Zugriff wird bei den neuen Versionen die S7online Schnittstelle verwendet. Genauso greift auch der Simatic Manager auf Plcsim zu. Leider ist das Handling der Schnittstelle etwas unkomfortabel / wenig bis undokumentiert, und bei Plcsim gibt es anscheinend noch ein paar Besonderheiten die es zu beachten gilt.
Momentan hängt es daran dass die Windows-Messages aus der S7online-Schnittstelle nicht korrekt abgefangen werden. Das Message-Handling in bekannter WinApi-Manier ist unter C# nicht gerade die natürlichste Sache und nur hintendran aufgesetzt. Ich denke aber irgendetwas ist bei mir da noch nicht richtig programmiert - ich habe aber absolut kein Plan was (im Quellcode sind in dem Bereich darum auch noch einiges an Test-Leichen drin).

Die Fehler die im Telegrammmonitor sind darauf zurückzuführen, dass ich diesen nur für die Read- und Write Funktionen des S7-Protokolls eingebaut habe. Alle anderen Telegramme kennt er sozusagen nicht. Diese Nettoplcsim Version muss das S7-Protokoll auch gar nicht kennen, weil die Daten eigentlich nur aus den Iso-On-Tcp Telegrammen ein- und ausgepackt werden müssen, und dann 1:1 in die S7online-Schnittstelle gegeben werden.
 
Klingt Grundsätzlich gut - scheint ja nurnoch eine Frage der Zeit zu sein ;)
Haben Sie schon einmal versucht, den Telegrammaustausch mit einer realen SPS beim Laden oder Online-gehen mit zu schnüffeln?

Weiterhin, viel Erfolg und vielen Dank für die schnelle Antwort.
 
Klingt Grundsätzlich gut - scheint ja nurnoch eine Frage der Zeit zu sein ;)
Haben Sie schon einmal versucht, den Telegrammaustausch mit einer realen SPS beim Laden oder Online-gehen mit zu schnüffeln?

Ich glaube aber wenn kein Winapi-/ S7online-Experte kommt kann es noch dauern...dann ist das Programm aber auch mehr oder weniger fertig.

Viele Telegramme kann man sich mit meinem Wireshark Plugin ansehen:
http://sourceforge.net/projects/s7commwireshark/

Das ist natürlich nur meine Interpretation der Kommunikation, offiziell gibt es da ja nichts.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,
habe das jetzt mal mit dem "testISO_TCP.exe" ausprobiert und es erscheint folgende Meldung.

Passt die dann soweit? Oder liegen fehler vor?

Ich danke dir schon einmal für die Hilfe.

Mfg
 

Anhänge

  • meldung.JPG
    meldung.JPG
    46 KB · Aufrufe: 31
Hallo Thomas,

das Tool funktioniert soweit perfekt.
Habe nun alle gewünschten Kopplungen erfolgreich aufbauen können.

Nun hätte ich jedoch noch ein kleines Problem:

Ich simuliere 6 unterschiedliche PLCSim-Projekt am Simulations-PC. An einem zweiten Rechner per SIMATIC IT eine Prosswert-Visu.
Nun werden die Werte nicht bei Änderung in PLCSim übertragen, sondern erst nach "Stop All" und anschließend "Start all".

Woran könnte dieses Problem liegen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich simuliere 6 unterschiedliche PLCSim-Projekt am Simulations-PC. An einem zweiten Rechner per SIMATIC IT eine Prosswert-Visu.
Nun werden die Werte nicht bei Änderung in PLCSim übertragen, sondern erst nach "Stop All" und anschließend "Start all".

Woran könnte dieses Problem liegen?

Immer noch das oben schon mehrfach beschriebene Problem mit der S7online Schnittstelle. Ich bin da noch keinen Schritt weitergekommen, tut mir leid.
 
Hi Thomas

it seems nettoplcsim v0.7 can connect just to one instance. Does s7prosim cause this problem ?

in source files of v0.7 I see a DLL file that named "interop.S7PROSIMlib.dll" . this file contain functions of s7prosim.
where is it come from?
 
it seems nettoplcsim v0.7 can connect just to one instance. Does s7prosim cause this problem ?
The problem is that I didn't needed it when I was programming the first versions ;-)
But there is a 0.7 version available which supports connecting to multiple plcsim instances. I didn't put them into the release folder, therefore you need to download it directly out of the svn repository:
http://nettoplcsim.svn.sourceforge....m/csharp/NetToPLCSim/NetToPLCSim/bin/Release/

The program has an additional settings menu, where you have to set up the plcsim instance number you want to connect to, and the IP address where the server should listen at. The first plcsim instance you have started gets number one, the next number two and so on.

The 0.9 version has built in support for multiple instances, and works a little different compared to previous versions (and has a bug which I still couldn't fix).

in source files of v0.7 I see a DLL file that named "interop.S7PROSIMlib.dll" . this file contain functions of s7prosim.
where is it come from?
The interop dll is automatically generated by Visual Studio. It's only a wrapper class for the s7prosim COM dll.
 
Zurück
Oben