Status Ethernetverbindung

Heizerfraktion

Level-1
Beiträge
44
Reaktionspunkte
7
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich möchte den Status der Etrhernetverbindung von der CPU (315DP/PN) zu einem PC (PC477, PC677, o.ä.) überwachen. Speziell möchte wissen, ob eine Verbindung existiert und dann mittels Skript Daten zu transferieren. Ich meine nicht die übliche Variante mit einen Lebensbit sondern ich möchte wissen, ob wirklich eine Ethernetverbindung besteht. Leider ist mir das noch nicht mittels Skript gelungen. Eventuell eine Anzeige der Ethernetadresse am Panel/PC? Habt ihr eine Idee dazu?
Danke schon mal vorab.

Gruß Heizer
 
Was läuft auf dem PC? ProTool? flexible?
Und von welcher Seite aus möchtest Du die Kontrolle durchführen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

auf dem PC/Panel läuft WinCC Flexible 2005. Ich möchte die Kontrolle von PC/Panel Seite durchführen, da ich bei vorhandener Ethernetverbindung Daten auf einen anderen PC/Panel übertragen möchte. Wenn es eine Möglichkeit gibt das von SPS Seite zu realisieren, würde mich das auch interessieren. Ich verwende S7 V5.3 Prof.2004.

Gruß Heizer
 
Mir ist noch nicht ganz klar, auf welchem Weg Du Daten von PC1 zu PC2 übertragen willst? Willst Du eine Datei dorthin übertragen, oder willst Du mit der CPU Daten von PC1 lesen und dann an PC2 senden?

Bitte erkläre nochmal genauer was Du da genau vorhast - dann kann ich vielleicht weiterhelfen.


Zur Überwachung der Ethernetverbindung von der CPU aus fällt mir nur ein eher Unorthodoxer weg ein, der nicht überprüften kann, ob WinCCflexibleRT läuft. Zugegeben, ist kompliziert, und keine Garantie, dass es funktioniert.

1. Du installierst den Komponenten-Konfigurator am Panel PC (ist bei WinCCflexible dabei). - WinCCflexible greift hierbei über Softbus auf die Steuerung zu.
2. Du projektierst auf Deiner HMI-Station mit NetPro eine TCP-Verbindung zu einem "unspezifizierten" Partner, der dieselbe IP-Adresse hat wie deine CPU. Bei den Verbindungseigenschaften wählst Du "aktiver Verbindungsaufbau"
3. auf der CPU-Seite wird die Verbindung nicht projektiert, sondern Du verwendest FB65 "TCON" und FB66 "TDISCON" für die TCP-Verbindung.
4. Durch wiederkehrendes Aufbau- und Abbauen der TCP-Verbindung auf der CPU sollte nun festgestellt werden können, ein TCP-Verbindungsweg zwischen CPU und PC vorhanden ist.


Alternativ wäre da noch die Möglichkeit, WinCCflexible RT über OPC an die CPU anzubinden, und mit einem Skript den Vernindungstatus des OPC-Servers abzufragen.


mfg
Maxl
 
Hi
ich glaube meine Beschreiebung war etwas verwirrend. Ich habe die CPU via Ethernet TCPIP dirkt mit einem Panel/PC gekoppelt. Das funktioniert auch problemlos. Die Variante mit OPC habe ich auch schon verwendet, ebenfalls ohne Probleme. Ich möchte nun Daten (Archivdaten) die ich am PC mitlogge und als CSV-Datei speichere an einen anderen PC übertragen. Dazu möchte ich wissen, ob eine Verbindung via Ethernet vorhanden ist um die Daten übertragen zu können. Ich möchte diese Variante deswegen nutzen, da z.B. der Panel PC477 keine Festplatte besitzt und ich nicht alles permanent auf d ie CF-Card speichern will.
Gibt es eine Möglichkeit, den Verbindungsstatus vom Panel zur CPU abzufragen, bzw. anzuzeigen?

Gruß Heizer
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ist zwar noch immer nicht klar, wofür Du die Verbindung zwischen CPU und Panel überwachen willst, wenn Du von Panel zu Panel Daten übertragen willst, aber ok..............

Also von PC-Seite aus fällt mir keine Zuverlässige Variante ein, außer den OPC-Verbindugsstatus abzufragen - bei einer reinen WinCCflexible-Verbindung via S7-Online bin ich eher ratlos.

Eine wilde Variante, die Ethernet-Verbindung zu prüfen wäre noch, den anderen Teilnehmer zu pingen (Programm aus WinCCflexible heraus starten), die Ausgabe von ping in eine Datei umzuleiten, und anschließend diese Datei in einem Skript auszuwerten.


Bringt es Dir etwas, den Speicherort des Archives generell auf ein Netzlaufwerk zu legen? Oder am PC477 eine RamDisk zum archivieren zu erzeugen und nur 1 mal pro Stunde oder 1 mal pro Tag die Archiv-Datei auf die CF oder woanders hin zu kopieren?

mfg
Maxl
 
Mir ist zwar noch immer nicht klar, wofür Du die Verbindung zwischen CPU und Panel überwachen willst, wenn Du von Panel zu Panel Daten übertragen willst, aber ok..............

Ich logge Daten von einem Prozeß mit. Deshalb möchte ich wissen, wenn die Verbindung gestört ist.

Also von PC-Seite aus fällt mir keine Zuverlässige Variante ein, außer den OPC-Verbindugsstatus abzufragen - bei einer reinen WinCCflexible-Verbindung via S7-Online bin ich eher ratlos.

Eine wilde Variante, die Ethernet-Verbindung zu prüfen wäre noch, den anderen Teilnehmer zu pingen (Programm aus WinCCflexible heraus starten), die Ausgabe von ping in eine Datei umzuleiten, und anschließend diese Datei in einem Skript auszuwerten.


Sollte eigentlich ein Zitat von Maxl's Beitrag werden, habe aber wohl den falschen Button erwischt. Sorry!

Dies Variante habe ich mal versucht umzusetzen, ist allerdings nicht wirklich praktisch, da der Aufwang sehr hoch ist.


Bringt es Dir etwas, den Speicherort des Archives generell auf ein Netzlaufwerk zu legen? Oder am PC477 eine RamDisk zum archivieren zu erzeugen und nur 1 mal pro Stunde oder 1 mal pro Tag die Archiv-Datei auf die CF oder woanders hin zu kopieren?

Bringt mir in diesem Fall nix, da ich Archivdaten später mittels Script als csv transferiere. Die ursprünliche Datei wird dann gelöscht. Deshalb ist es wichtig zu wissen, dassvor dem Transfer eine Verbindung besteht.
Ich habe allerdings schon befürchtet, dass es dafür keine einfache bzw. brauchbare Lösung gibt. Aber danke schon mal für eure Unterstützung, habe einige neue Denkansätze bekommen.

Gruß Heizer
 
Zuletzt bearbeitet:
Eine Idee hätte ich noch:

Der Tranfer der .csv-Dateien auf den anderen PC erfolgt doch über ein Netzlaufwerk, oder?
Wenn Du nun auf Deinem Ziel-PC eine Datei ablegst (z.B. test.txt), in der eine definierte Zeichenkombination stehen muss. Mit einem Skript versuchts Du nun per FileIO immer wieder die Datei zu lesen. Wenn das funktioniert, ist die Verbindung ok.


Falls Du den Status auch auf der SPS mitbekommen willst, kannst Du die Kontrolle ja mit einem Triggerbit anstoßen - und vom Skript eine Statusmeldung zur CPU schreiben.

Wäre das ein gangbarer Weg?


mfg
Maxl
 
Der Tranfer der .csv-Dateien auf den anderen PC erfolgt doch über ein Netzlaufwerk, oder?
Wenn Du nun auf Deinem Ziel-PC eine Datei ablegst (z.B. test.txt), in der eine definierte Zeichenkombination stehen muss. Mit einem Skript versuchts Du nun per FileIO immer wieder die Datei zu lesen. Wenn das funktioniert, ist die Verbindung ok.

Die Idee finde ich sehr gut. Werde das mal testen.

Falls Du den Status auch auf der SPS mitbekommen willst, kannst Du die Kontrolle ja mit einem Triggerbit anstoßen - und vom Skript eine Statusmeldung zur CPU schreiben.

Wäre das ein gangbarer Weg?

Diese Variante hört sich auch gut an.
Hier habe ich allerdings nicht ganz verstanden was du mit dem Triggerbit meinst. Von SPS zum PC ein bit oder umgekehrt? Skriptauswertung am PC ist klar, kein Problem. Hast du noch eine Idee, wie ich die Ethernetadresse ermitteln bzw anzeigen kann?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hier habe ich allerdings nicht ganz verstanden was du mit dem Triggerbit meinst. Von SPS zum PC ein bit oder umgekehrt? Skriptauswertung am PC ist klar, kein Problem. Hast du noch eine Idee, wie ich die Ethernetadresse ermitteln bzw anzeigen kann?

Also mit Triggerbit meinte ich eine Variable auf der HMI (z.B. DBX) mit dem Attribut "ständig Lesen". Wird dieses Bit von der SPS gesetzt (Ereignis "Wertänderung" oder so ähnlich), startet das Skript. War der Test erfolgreich, setzt die HMI einen Merker oder ein DBX in der SPS als Handshake. SPS-seitig könntest Du das ganze nun auch noch auf Timeout überwachen.


Unter Windows XP kann die IP-Adresse mit dem Dos-kommando
Code:
netsh interface ip show address "LAN-Verbindung"
ausgelesen werden. Statt "LAN-Verbindung" musst Du den Namen Deiner LAN-Verbindung angeben (in Anführungszeichen). Das Kommando
Code:
netsh interface ip show address "LAN-Verbindung" > c:\iptest.txt
leitet die Bildschrimausgabe in die Datei "c:\iptest.txt" um - diese Daten kannst Du dann einlesen.
Die Bildschirmausgabe sieht allerdings ca. so aus:
Code:
Konfiguration der Schnittstelle ""VMware Network Adapter VMnet8""
    DHCP aktiviert:                       Nein
    IP-Adresse:                           192.168.216.1
    Subnetzmaske:                         255.255.255.0
    Schnittstellenmetrik:                 0

Alternativ gibt es sicher eine API-Funktion, welche Du in einem Skript nutzen kannst, allerdings kann ich Dir da nicht weiterhelfen, da sind jetzt unserer Hochsprachen-Spezialisten gefragt (evtl. mal im Forum "Software" nachfragen).


mfg
Maxl
 
Hi Maxl

danke für die Infos. Diese Befehle zum Anzeigen der IP-Adresse kannte ich allerdings noch nicht. Werde das mal testen.
Deine Beschreibung zum Triggerbit habe ich auch verstanden, war mir vorher allerdings nicht ganz sicher.
Werde demnächst einen Testaufbau haben und dann diverse Dinge probieren können.

Gruß Heizer
 
Diese Befehle zum Anzeigen der IP-Adresse kannte ich allerdings noch nicht. Werde das mal testen.
Mit dem Programm netsh sind sehr viele Netzwerkeinstellungen zugänglich - und können auch geändert werden.

Gib einfach mal in einer Dos-Box das Kommando netsh ein, und du gelangst auf die Netsh-Konsole. Mit dem Kommando ? kannst Du Dir zum aktuellen Kontext alle Kommandos anzeigen lassen. Mit dem Kommando q verlässt Du netsh

netsh ist vor allem dann sehr praktisch, wenn man per Kommandos (z.B. aus Skripten) irgendwelche Netzwerkeinstellungen verändern will. Hab es auch schon mal gebraucht, als Windows XP sind weigerte, die Netzwerkverbindungen anzuzeigen, ich müsste allerdings die IP-Einstellungen beim Kunden ändern.

mfg
Maxl
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Besteht eine Ethernetverbindung ??

Hallo,

maxl schrieb:
Alternativ gibt es sicher eine API-Funktion, welche Du in einem Skript nutzen kannst,

Ja, die muss es geben, da Windows das Verbinden oder Trennen einer Ethernetverbindung meldet. Doch trotz Microsoft SDK-Abo habe ich keine API-Funktion gefunden, die dies wirklich zuverlässig macht...
Es gibt Funktionen zur Überwachung der Ethernet Verbindungen im Windows-API. Keine der von mir getesteten Funktionen ist unter allen denkbaren Betriebszuständen absolut zuverlässig. Manchmal geht es, manchmal eben nicht.
Wer die narrensichere Win-API Funktion kennt, für Hinweise wäre ich auch dankbar.

Gruss

Question_mark
 
Zurück
Oben