Kommunikation zwischen VB6.0-Visu und PLCSim über NetToPLCSim

Earny

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

ich will meine VB6.0-Visu über NEtToPLCSim mit PLCSim kommunizieren lassen. (Die Kommunikation zu ACCONTrol hat immer geklappt.)
Zuerst die Frage: Geht das überhaupt, das Tool heißt schließlich NetToPLCSim - ich habe hier keine .Net-Anwendung, sondern eine VB6.0-Visu.

Die wichtigsten Schritte:
HW-Konfig mit 314C-2PNDP - IP-Adresse z.B. 192.68.0.80
Programm + Systemdaten in PLCSim-CPU (TCP/IP)

NetToPLCSim starten, Rechnernetzwerkkarte IP 192.168.0.81, PlCSim-IP 192.168.0.80, Starten, Running wird angezeigt

Visu in Entwicklungsumgebung starten, dabei muss es schon beim Verbindungsaufbau zum Fehler kommen:

Code:
Private Sub Form_Load()
'Automatische Bildschirmanpassung
SetDeviceIndependentWindow Me
 
On Error GoTo Err1
'Verbindungsaufbau mit Libnodave
Dim port As String, peer As String, Rack As String, Slot As String
port$ = 102
peer$ = "192.168.53.80"
ph = openSocket(port$, peer$)
If (ph > 0) Then
    di = daveNewInterface(ph, ph, "IF1", 0, daveProtoISOTCP, daveSpeed187k)
    res = daveInitAdapter(di)
     If res = 0 Then
        Rack$ = 0
        Slot$ = 2
        dc = daveNewConnection(di, 0, Rack$, Slot$)
        res = daveConnectPLC(dc)
    End If
End If
'Ende Verbindungsaufbau mit Libnodave
.....
.....


Die Anwendung stürzt. Der Task-Manager hat Mühe, die Anwendung (ohne Rückmeldung) zu beenden.

Hat jemand eine Idee, was die Ursache für den Absturz sein kann?



Gruß
Earny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke Jochen,

danke für den Tip. Ich habe das jetzt korrigiert. Nützt nichts.

In HW-Konfig bekommt die CPU 192.168.0.80

Im VB6.0-Form-Load steht jetzt 192.168.0.80

In NetToPLCSim steht bei Netzwerk 192.168.0.81 (Dieses IP hat meine Netzwerkkarte)

In NetToPLCSim steht bei PLCSim 192.168.0.80



Das Problem bleibt. In dem Moment, wo der Verbindungsaufbau erfolgen soll, stürzt VB6.0 ohne Rückmeldung ab.


Habs eben nochmal mit ACCOntrol getestet. Das funktioniert. Das VB6.0-Projekt dürfte keinen Fehler haben. Für ACControl stelle ich wieder die 127.0.0.1 ein.


Gruß
Earny
 
Zuletzt bearbeitet:
Hallo Jochen,

ich verstehe nicht ganz, was du meinst.
Wenn ich NetToPLCSim nach PLCSim starte, dann muss ich drei Sachen in NetToPLCSim eintragen:
Zuerst den Namen der Verbindung (beliebig), dann die Netzwerkadresse des Rechners (192.168.0.81) und dann die IP-ADresse der PN-CPU, die in PLCSim arbeitet (192.168.0.80). Ich kann die IP-Adressen auch über die Auswahlbuttons auswählen. Das klappt auch. Der Server geht auch auf "Running", wenn ich ihn starte.

Hab ich das was falsch gemacht?

Die VB6.0-Visu stürzt aber ab, wenn sie versucht eine Verbindung zu 192.168.0.80 aufzubauen.


Hab eben nochmal getestest.
VB stürzt schon bei ph = openSocket(...) ab:

Code:
Private Sub Form_Load()
'Automatische Bildschirmanpassung
SetDeviceIndependentWindow Me
 
On Error GoTo Err1
'Verbindungsaufbau mit Libnodave
Dim port As String, peer As String, Rack As String, Slot As String
port$ = 102
peer$ = "192.168.0.80"
ph = openSocket(port$, peer$)
...
...
...


Gruß
Earny
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Earny,
wie Jochen schon schrieb musst du die IP-Adresse der Netzwerkkarte verwenden, also die 81.

Dass du das bei nettoplcsim einstellen musst hat nur den Hintergrund, wenn mehrere Verbindungen/CPUs gleichzeitig simuliert werden sollen die Zuordnung CPU zur IP zu treffen.
Bei der alten Version (0.7.2) musste man garnichts einstellen, da war die Plcsim-CPU immer über alle IP-Adressen des Computers erreichbar - aber eben auch die des Computers, und nicht der IP der PN-CPU oder des Ethernet-CPs.
 
Hallo Jochen, hallo Thomas,
irgendwie verstehe ich nicht was ihr meint. Ich glaube aber, ihr meint beide das Gleiche;).
Könnt ihr mir mal folgende Fragen beantworten, wobei von folgender Voraussetzung ausgegangen werden soll:
Die Netzwerkkarte meines Rechners hat die IP 192.168.0.81 !

1. Was soll in der HW-Konfig der CPU314C-2PN/DP als IP-Adresse eingegeben werden? Geht 192.168.0.80?
2. Was wird im Eingabefeld "Network IP Adress" von NetToPLCSim eingetragen?
3. Was wird im Eingabefeld "PLCSim IP Adress" von NetPLCSim eingetragen?

Gruß
Earny
 
1. Was soll in der HW-Konfig der CPU314C-2PN/DP als IP-Adresse eingegeben werden? Geht 192.168.0.80?
Du kannst dort die Adresse eingeben die deine CPU später haben soll. Über Nettoplcsim ist die CPU jedoch immer nur über die IP der Netzwerk-Schnittstelle deines Computers erreichbar.
2. Was wird im Eingabefeld "Network IP Adress" von NetToPLCSim eingetragen?
Die IP-Adresse der Netzwerk-Schnittstelle über die du die Plcsim-CPU erreichen willst. Über das Auswahlfeld (...) werden alle IP-Adressen die dein Computer momentan besitzt angezeit. Mal angenommen du hast eine LAN-Verbindung mit verbundenem Netzwerkkabel und eine WLAN-Verbindung die ebenfalls verbunden ist, würdest du dort zwei IP-Adressen zur Auswahl finden. In deinem VB Client Programm musst du dann die IP-Adresse einstellen die du an diesem Punkt ausgewählt hast. Bei dir z.B. 192.168.0.81
3. Was wird im Eingabefeld "PLCSim IP Adress" von NetPLCSim eingetragen?
Die IP-Adresse die du unter 1. eingestellt hast. Diese Adresse sollte dir auch im Auswahfeld über den Button (...) angezeigt werden.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Thomas,
besten Dank. Jetzt klappts.

Mein Fehler war, dass von meiner VB-Visu eine Verbindung zur IP-Adresse der PLCSim-CPU versucht wurde. Es muss aber die IP-Adresse der Netzwerkkarte sein.

Jetzt habe ich versucht, NetToPLCSim auf meinem neuen Windows7 64Bit Prof-Rechner zum Laufen zu bringen. Sollte NetToPLCSim (0.9.1) auf diesem System?
Beim Start kam eine Fehlermeldung über eine "Unbehandelte Ausnahme in der Anwendung....". NetToPLCsim sah auch nicht die IP-Adresse der Netzwerkkarte, sondern die IP von ACCONtrol (127.0.0.1), was ich auch mal auf meinen neuen Rechner installiert hatte. Es könnte aber auch sein, dass meine Netzwerkkarte noch nicht richtig konfiguriert ist.

Außerdem gibt es für meine div. VB-Visus mit NetToPLCSim noch ein strukturelles Problem: Da die Visu bei der Verwendung von NetToPLCSim sich mit der IP-Adresse des Rechners verbinden muss (siehe oben), müsste vom Nutzer meiner Visus die Eingabe der IP seiner Netzwerkkarte verlangen. Das ist ungünstig. Bei ACCONtrol war die 127.0.0.1 eine feste Größe.


Gruß
Earny
 
Die fertig kompilierten Versionen von Nettoplcsim die bei Sourceforge liegen sind alle nur unter 32-Bit Betriebssystemen lauffähig.
Damit es unter 64-Bit Windows läuft, müsste das C#-Projekt mit den entsprechenden Einstellungen neu übersetzt werden. Ich habe aber keinen 64-Bit Rechner zur Verfügung, darum kann ich das nicht selber machen. Es hat mir aber schon einer geschrieben der das erfolgreich durchgeführt hat (zumindest für die 0.7er Version). Alternativ soll es auch mit dem CorFlags [1] Utility funktionieren die exe zu manipulieren, ohne alles neu übersetzen zu müssen. Aber ich kann es selber nicht testen.

Wenn du zu 127.0.0.1 verbinden willst, funktioniert es wenn du diese Adresse bei "Network Address" eingibst, auch wenn diese nicht zur Auswahl angeboten wird. Oder nimmst die alte 0.7 Version, diese war immer unter allen Adressen erreichbar (so wie Accontrol). Bei der neuen Version ist die Adressangabe notwendig, da du damit theoretisch eine beliebige Anzahl an Plcsim-CPUs auf einem Rechner gleichzeitig simulieren kannst.

[1] http://lostechies.com/gabrielschenk...lication-to-run-in-32bit-process-on-64bit-os/
 
vielleicht wäre dann doch die 0.7er Version in der 64 Bit-Fassung für mich das Richtige. Es ist für mich auch besser, wenn das Ding mit allen IP-Adressen zurechtkommt. Könntest Du den netten Menschen mal fragen, ob er mir seine Version zukommen lassen oder vielleicht hier im Forum einstellen könnte.


Gruß
Earny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibts die s7onlinx Schnittstelle auch in 64 Bit?
Weiß ich garnicht, ich habe keine 64-Bit Erfahrung. Aber sollte es doch geben oder? Die diversen Siemens Anwendungen nutzen diese doch ebenfalls. Wenn man beispielsweise WinCC flexible mit Plcsim verbindet, läuft das auch alles über die Schnittstelle. Zumindest unter 32-Bit Windows.

Aber ich habe grad nochmal nachgeschaut, der Kollege hatte die nettoplcsim 0.7 Version für 64-Bit neu übersetzt, bzw. mit corflags gepatcht was wohl beides funktioniert. Aber in der Version hatte ich das ja noch komplett anders ohne s7onlinx programmiert.
 
Hallo Thomas,
ich habs runtergeladen. Es funktioniert bei mir nicht. In NetToPLCSim wird die Verbindung zu PLCSim angezeigt, aber keine Verbindung zum Client. Meine VB.Net-Anwendung wird ausgefüht, aber kein Wert von PLCSim übernommen - kein Wunder, es besteht ja keine Verbindung zu NetTopLCsim.

Es werden auch keine IP-Adressen mehr abgefragt?!

Gruß
Earny
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hatte mit Luca per Email Kontakt, und bei ihm funktioniert es wohl. Er hat die Version 0.7.x gepatcht (bzw. neu übersetzt, es funktionieren beide Methoden) weil es bei der neuen bei manchen Anwendungen Probleme gibt. In der Version gibt es keine Abfrage der IP-Adresse, dort ist nettoplcsim auf allen verfügbaren Netzwerkadressen erreichbar.
Da ich kein 64 Bit Windows habe kann ich es leider nicht selber testen. Kommt denn im Ausgabefeld von nettoplcsim ein Eintrag über den Verbindungsversuch, wenn du deine Anwendung startest?
Hast du den Siemens Dienst IE PG Helper gestoppt? In der Version wird das beim Start nämlich noch nicht abgefragt ob der Dienst aktiv ist.
 
NetToPLCsim bleibt bei "Listening for Clients..."
In der Statuszeile von NetToPLCsim steht "Clients: Disconnected" - auch wenn meine VB.Net-Anwendung über libnodave eine Verbindung versucht.
Der IEPG-Help Service ist abgeschaltet.

Da waren auch zwei Batch-Dateien dabei. Muss man damit irgendwas anstellen?


Gruß
Earny
 
NetToPLCsim bleibt bei "Listening for Clients..."
In der Statuszeile von NetToPLCsim steht "Clients: Disconnected" - auch wenn meine VB.Net-Anwendung über libnodave eine Verbindung versucht.
Der IEPG-Help Service ist abgeschaltet.

Da waren auch zwei Batch-Dateien dabei. Muss man damit irgendwas anstellen?

Die batch-Dateien dienen dazu um den Siemens Dienst zu stoppen und zu starten. Unter 64 Bit Windows hat der ja einen anderen Namen (s7oiehsx64).
Bei mir funktioniert die Version auch weiterhin unter 32-Bit Windows 7.
Welche IP-Adresse verwendet denn deine Anwendung? Läuft beides auf dem gleichen Rechner?
 
Zurück
Oben