PLCSim Netzwerkerweiterung "NetToPLCSim"

Zuviel Werbung?
-> Hier kostenlos registrieren
Remind that NetToPLCSim works only if your Kepserver uses S7-communication over TCP/IP.

You have to set the IP-address of your PC (on which PLCSim is running)
to the IP-address your real PLC will have (and the IP you have configured in your Kepware OPC server).

Then start NetToPLCSim on your PLCSim-PC and hit the Start-Button.
If all is OK you will see:
"Starte Server...
...gestartet"
in the textbox.
The statusbar will show "PLCSIM: Verbunden".

If you have a firewall on your pc, make sure you open port 102 for incoming connections.

Then your OPC-server will be able to connect to PLCSim.

Thomas
I thing that I need to gave you more information about what I am doing.
I thing that one picture explain more than 1.000 words.
All is working fine.​
I will appreciated your comment to modify the diagram
 

Anhänge

  • scada_proyect.pdf
    12,3 KB · Aufrufe: 165
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,
your scheme is correct, but i simplified it a little bit.

Thomas


Your schema show me that it is not necessary to implement the hardware of the PLC with a TCP/IP connection. It is going to work whit all the differents connections, Profibus-Dp, MPi and TCP/IP. I am going to modify my schema .​
Thanks
 
Ich hoffe es kann noch jemand gebrauchen.

Über Kritiken und Anregungen würde ich mich freuen, da die PC-Programmierung nicht gerade zu meinem Hauptgeschäft gehört

Hallo Thomas,

dafür das die PC-Programmierung nicht gerade zu Deinem Hauptgeschäft gehört, finde ich die Sache echt gut gelungen. Funktioniert 1a, getestet mit libnodave.dll unter Excel und Delphi.

Danke, Danke, ...

Gruss Daniel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schreiben von Doppelworten

Servus Thomas,

ich glaube einen Fehler beim Schreiben von Datendoppelworten festgestellt zu haben (auch mit der letzten Version 0.5).
Im Visualisierungssystem (Zenon) ist eine Doppelwortvariable auf DB309.DBD8 definiert (belegt dadurch die Bytes 8, 9, 10, 11). Das Lesen (Anzeige in der Visualisierung) funktioniert, jedoch beim Schreiben bleibt der Wert unverändert, solange man kleine Zahlenwerte eingibt (Zahlenwerte kleiner 2^24, so dass das höherwertigste Byte 8 gleich Null bleibt).
Bei Eingabe von Werten, die auch das höherwertigste Byte "benötigen", verändert sich der Wert, jedoch ist das zurückgelesene Ergebnis anders, weil die Bytes 9,10,11 nicht geschrieben werden.
Die Angefragten Daten an PLCSIM zeigen auch, dass nur Byte 8 geschrieben wird (Auszug - die Read Einträge von DB309 stammen vom Lesezyklus vorher):

Read PLCSim: DB309.DBB8
Read PLCSim: DB309.DBB9
Read PLCSim: DB309.DBB10
Read PLCSim: DB309.DBB11
Read PLCSim: DB309.DBB12
Read PLCSim: DB309.DBB13
Read PLCSim: DB309.DBB14
Read PLCSim: DB309.DBB15
Write PLCSim: DB309.DBB8



Bei einer auf Byte 10 definierten Wortvariable (belegt die Bytes 10, 11) funktioniert hingegen das Lesen und Schreiben einwandfrei, die Log-Einträge zeigen auch, dass Byte 10 und 11 geschrieben werden.

Read PLCSim: DB309.DBB8
Read PLCSim: DB309.DBB9
Read PLCSim: DB309.DBB10
Read PLCSim: DB309.DBB11
Read PLCSim: DB309.DBB12
Read PLCSim: DB309.DBB13
Read PLCSim: DB309.DBB14
Read PLCSim: DB309.DBB15
Write PLCSim: DB309.DBB10
Write PLCSim: DB309.DBB11

Mit einer echten CPU sind mir mit Zenon keine Probleme beim Schreiben von Doppelwortvariablen bekannt, daher gehe ich davon aus, dass die Schreibtelegramme an NetToPLCSim die richtigen Datentypkennungen, usw. enthalten. Bei Anzeige der Angefragten Datenbereiche (Items) werden scheinbar keine Write Einträge gelistet (nur Read-Request...).

Könntest du dies bei Gelegenheit überprüfen oder mir einen Tipp geben, in welchem Quellcodefile ich am besten zuerst suchen sollte.

Danke,
Thomas H.
 
Servus Thomas,

ich glaube einen Fehler beim Schreiben von Datendoppelworten festgestellt zu haben (auch mit der letzten Version 0.5).

Ich glaube ich habe es schon gefunden. Der Zenon Treiber scheint der einzige zu sein der einer andere Transportgröße als Byte verwendet.

In der noDaveServer.c ist dann der Fehler:
Code:
        else if (item[i].transportSize >[COLOR=Red]=[/COLOR] TRANSPORT_SIZE_DWORD) { // DWORD, DINT oder REAL
            item[i].length *= 4;
        }
Also es fehlte das =, darum wurde nur ein Byte geschrieben.

Ich habe die dll mal neu erzeugt und gezippt angehängt.
Wenn du das dann mal testen könntest wäre ich dir dankbar, meine Treiber machen alle nur "byte".

Gruß
Thomas
 

Anhänge

  • noDaveServer_dll.zip
    39,2 KB · Aufrufe: 37
Ich habe die neue DLL mit der Version 0.5 kombiniert und die Doppelworte werden jetzt korrekt geschrieben. Habe noch zusätzlich mit Real-Zahlen getestet (lesen/schreiben) und ebenfalls keine Probleme festgestellt.

Danke und Grüße,
Thomas H.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Thomas,
danke für deinen Test, ich habe die aktualisierte Version mal online gestellt.

Hat eigentlich schonmal jemand für Wireshark einen eigenen Protokoll-Dissector geschrieben?
Ab und zu könnte man das für das S7-Protokoll schon mal gebrauchen. Viele Protokolle anderer SPS-Steuerungen (z.B. TwinCat ADS) gibt es dort schon.
Jedoch sieht es so aus als wenn man zur Erstellung eines eigenen Dissectors (zumindest für die Windows-Version) einen MS-Compiler benötigt :-(
Außerdem geht das schon etwas ans C-Eingemachte.
 
Hallo Thomas,
im Zusammhang mit dem neuen Servicepack 3 (Kommunikation zwischen den Instanzen geht wirklich, habe es mit PUT/GET über TCP/IP getestet..) von PLCSim stellt sich mir die Frage, wie man die Instanz festlegen kann, mit der NetToPLCSim kommuniziert?

Gruß

Jürgen
 
Hallo Thomas,
im Zusammhang mit dem neuen Servicepack 3 (Kommunikation zwischen den Instanzen geht wirklich, habe es mit PUT/GET über TCP/IP getestet..) von PLCSim stellt sich mir die Frage, wie man die Instanz festlegen kann, mit der NetToPLCSim kommuniziert?

Noch kann man das nicht, dazu müsste ich auch zwei verschiedene Versionen von nettoplcsim machen.
Ich habe mir bis jetzt nur die Dokumentation zum SP3 durchgelesen. Demnach sollte sich die jetzige Version immer mit der Instanz 1 von PLCSim verbinden.

Eine einfachste Erweiterung die ich machen könnte wäre ein Auswahlfeld in dem die gewünschte Instanz ausgewählt werden kann.

Am schönsten wäre dass ich mich von einer Visualisierung auch mit mehreren simulierten CPUs verbinden kann.
Der PC auf dem die PLCSim Simulationen laufen hat aber üblicherweise nur eine IP.
Dann müsste man der Netzwerkkarte mehrere IP-Adressen zuteilen, da der Port über den die Kommunikation abläuft immer der gleiche bleibt und somit keine Unterscheidung der angefragten SPS möglich wäre.
Allerdings wüsste ich nicht wie man einen Socket an eine bestimmte IP-Adresse des Servers/Netzwerkkarte binden kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,

ich bin durch Zufall auf Dein Tool gestossen. Super Sache!

Leider hab ich das Problem, dass sich der Client nicht verbinden kann.
Ich bin PCS7 Nutzer, aber das sollte ja kein Problem sein.

Meine Konfiguration:
1. Rechner ES
PLCSim 5.4 SP3 hat die IP von dem Rechner
PLCSim ist mit NetToPLCSim verbunden

2. Rechner WinCC Server
Variablen auf Named Connections oder TCP/IP gemappt
Keine Verbindung zu NetToPLCSim
mit Telnet lässt sich eine Verbindung aufbauen.

Auf welche PG/PC Schnittstelle muss ich die einzelnen Rechner einstellen?
Muss ich mit dem Komponenten Konfigurator arbeiten?

Hast Du sonst noch eine weitere Idee?

Da ich Informatiker bin, werde ich mich mal in meiner Freizeit hinsetzen und
mir den Quellcode mal anschauen, vielleicht hab ich ja noch ne Idee mit der
Auswahl der Schnittstelle oder evtl sogar mehreren Verbindungen...

Gruß
Chris
 
Hi,
also ob das mit PCS7 funktioniert weiß ich nicht, glaube eher nicht.

Ich habe die Kommunikation PCS7<->SPS noch nicht abgehört, aber das was ich von der PCS7 Projektierung kenne werden da so viele Spezialfunktionen der SPS genutzt die nettoplcsim garnicht beantworten kann (und die Schnittstelle zu PLCSim noch weniger).
Ein nacktes WinCC geht auf jeden Fall.
 
Hallo Thomas,

danke für die schnelle Antwort.

Eigentlich sollte es doch die gleiche S7-Verbindung sein egal ob PCS7
oder nicht.

Wo werden denn bei einem nackten PCS7 die Variablen bzw. die Verbindungen angelegt?

In PCS7 finde ich die im WinCC Explorer im "Variablenhaushalt" -> "Simatic S7 PROTOCOL SUITE" -> und dann eben "Named Connections" oder "TCP/IP" oder "Industrial Ethernet"

Zum testen könnte ich ja in dem WinCC Projekt einfach eine neue Verbindung per Hand anlegen, wenn Du mir sagst, welche Art die Verbindung haben muss?

Danke schonmal!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bei WinCC legst du die Variablen unter "TCP/IP" an. IP Adresse ist dann der Rechner auf dem nettoplcsim läuft. Die Angaben Rack und Slot sind dafür erstmal egal.

PCS7 nutzt je nach Konfiguration z.B. viele Diagnosefunktionen der SPS, ein anderes Alarmierungssystem und wer weiß was sonst noch - man kann in den PCS7-Blob ja nicht reingucken.
 
I need help to connect a kepware server to plcsim. I can connect nettoplcsim with plcsim but when I connect the opc server to nettoplcsim I make some error in configuration and they make error when I read items. Can someone tell me how can I configure the server? Thanks
 
Hallo zusammen,

Vielleicht sollte ich noch erwähnen, dass ich PCS7 V7.1 nutze/teste und
darin ist WinCC 7.0 enthalten.

Gibt es mit WinCC 7.0 und NetToPLCSim schon Erfahrungen?

Ich habe noch mal eine Nacht drüber geschlafen und siehe da es funktioniert. Im Komponenten Konfigurator war noch was falsch und somit war dem Server (WinCC) die Verbindung zur Steuerung nicht bekannt. Nun funktioniert auch die Kommunikation.
Zwar steht bei mir die Meldung in Runtime an, dass die Verbindung nicht aufgebaut ist, aber Faceplates lassen sich öffnen und bedienen.
NetToPLCSim meldet auch keine Fehler.

Gruß
Chris
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Problem mit Datentransfer zw. PLCSim und InTouch bei Eingangsbits

Hallo Zusammen,

ich bin Lehrer an einer Berufsschule und unterrichte Automatisierungstechnik. Meine Schule hat zwar einige ältere Siemens-SPSen (CPU313), leider gibt es jedoch kaum Automatisierungsmodelle.
Da ich InTouch recht gut kenne, möchte ich mit InTouch Simulationen von Prozessanlagen erstellen, die die Schüler automatisieren sollen. D. h. die Schüler erstellen Step7-Programme, laden Sie in PLCSim und kontrollieren dann in InTouch, ob ihre Step7-Programme die Prozessanlagen tatsächlich richtig automatisieren.
Zu diesem Zweck wäre mir NetToPLCSim eine sehr große Hilfe, da damit PLCSim und InTouch kommunizieren könnten. Wenn ich es richtig verstanden habe erfolgt der Datentransfer folgendermaßen:

InTouch <-> Server "DASSIDirect V1.5" <-> NetToPLCSim <-> PLCSim

Überraschenderweise funktioniert der Datentransfer nur teilweise: Mit Merkerwörtern und Ausgangsbits klappt es wunderbar.

Ungelöst ist für mich folgendes Problem:

Der Datentransfer klappt nicht mit Eingangs- und Merkerbits.

Zum Testen des Servers "DASSIDirect V1.5" stellt Wonderware einen sogenannten WWClient zur Verfügung, der Status- bzw. Fehlermeldung generiert. Bei Eingangsbits liefert er die Status-/Fehlermeldung 0x0004. Leider sagt mir das herzlich wenig.

Für Tipps oder Ratschläge zu meinem Problem wäre ich sehr dankbar.

Gruß Tobias
 
Ungelöst ist für mich folgendes Problem:

Der Datentransfer klappt nicht mit Eingangs- und Merkerbits.

Moin,
Adressen aus dem Eingangsbereich (E) können leider nur geschrieben werden, Ausgänge dagegen nur gelesen. Das liegt an der Schnittstelle von PLCSim, ist in der liesmich.html aber auch beschrieben.

Merkerbits sollten eigentlich in beide Richtungen funktionieren. Hast du die aktuelle Version (0.6.1)? Ich hatte in einer älteren nämlich dahingehend noch einen Fehler.

Gruß
Thomas
 
Eingänge in PLCSim von InTouch aus schreiben

Hallo,

der Datentransfer von Merkerbits zwischen PLCSim und der Wonderware-Software gelingt inzwischen. In der Wonderware-Software muss bei Merkerbits ein zusätzliches X in die Adresse eingefügt werden.

Beispiel: in Step7: M1.0, in Wonderware (InTouch): MX1.0

Der Datentransfer mit den Eingängen, d.h. das Schreiben der Eingänge von InTouch aus, ist ein Problem und funktioniert bei mir nicht.

Wenn ich einem Eingangsbit (z. B. E4.1) einen Wert zuweise, erscheint in NetToPLCSim die Fehlermeldung: "Item[2] - BYTE 1 :BYTE[4] - Error". Diese Fehlermeldung wird jede Sekunde neu angezeigt. Das passt zur Zykluszeit des Wonderware-Servers (SIDirect DAServer 1.5 Service Pack 1).

Beobachten kann ich außerdem Folgendes: In InTouch wird ein von mir gesetztes Bit nach kurzer Zeit zurückgesetzt.

Möglicherweise werden vom Wonderware-Servers (SIDirect DAServer) die Eingänge nicht nur geschrieben sondern auch gelesen, was NetToPLCSim nicht zulässt und vielleicht deswegen eine Fehlermeldung liefert.

Muss man bei NetToPLCSim oder beim Wonderware-Server noch etwas einstellen?

Ich bin für jede Hilfe dankbar.

Gruß Tobias
 
Zurück
Oben