IP_CONTROL im Detail

Begonnen von SKnuepfer, 29. März 2016, 08:44:59

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

SKnuepfer

Ich habe folgendes Problem.

Ich möchte mit dem IP_CONTROL von einem WAGO 750-881 ein UDP Telegramm an einen Ethernet-Gateway schicken, welches dann entsprechende Daten an den Controller
zurücksendet. Das senden der Daten funktioniert einwandfrei, es kommt auch das gewünschte Datentelegramm lt. Wireshark wieder zurück, jedoch im R_BUFF des IP_CONTROL
ist nichts zu finden (immer 0 Länge und das Array ist auch 0). Die Besonderheit bei dieser Sache wäre, das das Ethernet-Gateway auf einen festgelegten Port die Daten
zurück schickt (24273). Wie kann ich den IP_CONTROL so einstellen, das das Telegramm auch auf diesem Port gelesen wird ? Muß ich beim Empfangen der Daten den Port ändern ?
Den IP Mode denke ich richtig gewählt zu haben.

Ich habe mal die Einstellungen des Ethernet-Gateways als Screenshot angehangen. Auch habe ich meinen Baustein, der lediglich im PLC_PRG blank aufgerufen werden kann
als Export mit rangehangen. Wie schon erwähnt, Zielsystem WAGO 750-881 mit Codesys 2.3.9.46 und OSCAT NetWork_130.lib

Vielen Dank für eine kurze Hilfestellung

[gelöscht durch Administrator]

peewit

so wie es aussieht gibt es einen lokal port und einen command port

dann musst du zwei ip_control verwenden (für jeden port einen ip_control)
ein ip_control kann immer nur auf einen port zuständig sein bzw verarbeiten

SKnuepfer

Hallo peewit,

habe probiert einen 2. IPC_ONTROL hinzu zu nehmen, klappt leider noch nicht.

Könntest Du mir den Rumpf einer kleinen "Statemaschine" dafür mal zukommen lassen ?

Ich befürchte, das ich beim Aufrufen noch Fehler mache. Vielen Dank

Sandro

peewit

stell doch mal einen wireshark mitschnitt online
mit kurzer beschreibung

SKnuepfer

Hallo peewit,

ich denke ich habe es hinbekommen. Die Empfangspuffer füllen sich  :) nun noch eine kleine Frage:
Beim auslösen der Sendabfrage gehen immer gleichzeitig 2 Telegramme von der WAGO (IP: 192.0.6.170) an den
anderen Teilnehmer, das ist schön im Wireshark zu sehen. Wo ist da noch der Wurm drin ?

Ich habe nochmals meinen Baustein (als Export) und auch den Wireshark Auszug rangehangen.

Erklärung:

192.0.6.170 (WAGO) sendet Daten an 192.0.6.91 (Ethernet-Gateway) über die IPC1-Instanz
192.0.6.170 (WAGO) empfängt Daten von 192.0.6.91 (Ethernet-Gateway) über die IPC2-Instanz

Es werden insgesamt 2 verschiedene Datensätze vom Ethernet-Gateway angefragt.

VG
Sandro




[gelöscht durch Administrator]

peewit

#5
hallo

warum das telegramm zweimal versendet wird konnte ich auf die schnelle auch nicht erkennen

aber struktuell ist das ein ziemliches glücksrad....

1. IP_C1 und IP_C2 müssen gleichezeitig eingerichtet werden, da ja unmittelbar eine antwort erfolgt und es
    ansonsten zufall ist ob sich das zeitlich ausgeht.

2. Datensenden oder empfangen sollte nie mit eine Zeitabfrage beendet werden
    Bei Daten senden musst du bei S_BUF.SIZE die byteanzahl eintragen
    sobald die daten erfolgreich versendet wurden wird von IP_CONTROL bei  S_BUF.SIZE wieder 0 eingetragen
   und Daten sind dann empfangen worden wenn bei R_BUF.SIZE > 0 ist.

3. Da du zuerst über einen port aktiv daten sendest und über den anderen etwas passiv empfängst
    würde ich IP_C1 mit Mode 1 und  IP_C2 mit Mode 3 betreiben
    Aber das ist wahrscheinlich nichts ausschlaggebendes....


ich habe mal den baustein etwas klarer aufgebaut (siehe anhang)
achtung -> ungetestet und nur im editor heruntergetippt
sollte auch nur ein richtungsweisnender vorschlag sein !



[gelöscht durch Administrator]

SKnuepfer

Hallo peewit,

Dein Beispiel hat funktioniert, ich habe nur noch die Empfangsüberwachung am 2. Aufruf des IP_CONTROL aktiviert und den MODE
am ersten IP_CONTROL Aufruf wieder auf 3 gestellt und schon ging es.
Vielen Dank für und damit alle was davon haben, habe ich nochmals den Export mit an diese Antwort mit rangehangen.

Um was ging es hier ?

Abfrage meiner 2 Wechselrichter (SMA) über ein Ethernet-Gateway (JetPort) das dann an die Wechselrichter über RS485 gekoppelt ist.

Was macht das ganze ? Mein Wunsch war die aktuelle Leistung die die Anlage auf dem Dach hat, relativ zeitnahe in meine Haussteuerung zu bekommen
um den Eigenverbrauch zu optimieren (z.B. Warmwassererhitzung)

Den Telegrammaufbau habe ich mir selbst mittels dem yasdi-Tool von SMA erarbeitet und mit WireShark analysiert.

Das Besondere hierbei war, das das Gateway auf einen definierten Port zurückantwortet. Dies wurde Dank des 2. IP_CONTROL-Aufrufes erst möglich.

Die ganze Solarauswertung mache ich allerdings mit SolarView, das ganze ist unter http://solar.knuepfer.net abrufbar.
Diese Auswertung reicht mir vollkommen.

Also vielen Dank nochmals, wer Fragen hierzu kann hier nochmals was los werden. Ein sonniges Wochenende wünsche ich.

Sandro


[gelöscht durch Administrator]

peewit

Hallo
Danke das du für die allgemeinheit nochmals alles erklärt hast

Hast du immer noch die doppelten Telegramme ?

SKnuepfer

Nein, die doppelten Telegramme sind weg, es ist jetzt genau so, wie es sein soll.

Muß nur noch das Empfangstelegramm ca. 250 Byte auseinander drösseln.