IP_CONFIG bei mehreren UDP Geräten

Begonnen von mg, 02. Juli 2019, 07:00:46

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 3 Gäste betrachten dieses Thema.

mg

Hallo Peewit

Ich scheibe dich mal persönlich an (Aber vielleicht weiß da auch jemand anderes Bescheid).
Es geht um eine Anlage mit CODESYS 3. Dort verwende ich zum Auslesen eines Gerätes IP_CONFIG.
Ich weiß, daß es nicht für CODESYS 3 getestet ist, aber ich bin der Meinung, daß dieser Teil sehr gut funktioniert und ich glaube mein Problem ist ein Grundsatzproblem, das auch CODESYS 2 betrifft.

Ich habe bisher das Ganze mit einem RPI und einem sogenannten "uLux" (ist ein parametrierbares Bediengerät im Steckdosenformat). Wenn ich 1 Gerät verwende funktioniert das super (hier gab es schon Mal einen Betrag http://www.oscat.de/community/index.php/topic,2543.msg13201.html#msg13201)

Wenn ich nun 2 uLux an das RPI hänge, gehen meine bisherigen Verbindungen nicht mehr da:

a) Jedes uLux hat eine eigene IP-Adresse
b) Jedes uLux hat den selben Port und kann nur UDP. (Ich kann den Port nicht ändern und die Verbindungsart nicht ändern)

Aus b) ergibt sich, daß ich am RPI nur einen geöffneten Port für beide Gerät habe

Wenn ich nun mit IP_CONFIG verbinde muß ich eine IP-Adresse verwenden.

Frage 1:
Im einfacheren Fall bekomme ich nur Daten -> welche IP-Adresse muß ich beim IP_CONFIG einstellen.
Frage 2:
Wie mache ich das wenn ich nun den beiden uLux, Daten schicken muß. Ich kann ja nicht nur auf eine IP-Adresse die Daten schicken und im IP-CONFIG kann ich nur eine einzigste vorgeben.

Ich habe es auch schon mit 2x IP-CONFIG probiert, das läßt das System nicht zu, da ein Socket nur 1x geöffnet werden darf.

WO DENKE ICH HIER IM KREIS? WAS MACHE ICH FALSCH?

Mg

PS: Fehler am IP_CONFIG 16#02000000. (wenn ich den IP_CONFIG doppelt anlege)


peewit

hallo

ich habe den technischen zusammen hang zwischen rpi und ulux noch nicht verstenden

kannst du das etwas genauer darstellen

welche geräte hast du
welche ip-adresse und port haben diese
mit wem genau willst du dann kommunizeren

mit mehreren geräten mit unterschiedlicher ip und gleichen port zu kommunizieren ist mal kein problem

mg

KONFIGURATION:

RPI: 10.0.5.120
   netstat -tulpen | grep 34988
   udp        0      0 0.0.0.0:34988           0.0.0.0:*                           0          15130      -
uLux1: 10.0.5.121 Port 34988
uLux2: 10.0.5.122 Port 34988

Eigentlich sollte das Ganze bidirektional funktionieren. (RPI zu "uLux1 oder uLux2" und "uLux1 oder uLux2" zu RPI)

zu deinem Kommentar ...
mit mehreren geräten mit unterschiedlicher ip und gleichen port zu kommunizieren ist mal kein problem
Da täte mich interessieren WIE ?

Ich bin der Meinung das müsste mit "1" IP_CONTROL gehen. Einen 2ten kann ich nicht verwenden, weil nur einer auf ein Socket gehen kann. Und je PORT gibts nur 1 Socket (oder verstehe ich da was falsch).


Mario


peewit

hallo

wer ist hier client und wer ist server


kannst du mal den original ip_control bausteine exportieren und in hier als datei online stellen

wie sieht deine ip_control parametrierung aus 


mg

#4
Hallo Peewit

uLux ist der Client
RPI ist Server

Der Original IP_CONTROL IST IM uLux enthalten.

Beachte export als V3 (gezippt sonst hats 40MB)

Danke

Mg







peewit

Hallo

SPS ist SERVER (passiv)
und beide ulux senden an die steuerung an den gleichen port (weil nicht änderbar am ulux)

wenn du den IP_CONTROL im C_MODE = 5 betreibst
sollte dieser von beliebigen Absendern UPD-Daten an den angegebenen Port entgegennehmen

natürlich kommen dann abwechselnd von den ulux geräten telegramme herein
diese solltest du möglichst im selben zyklus verarbeiten
da im nächsten zyklus schon wieder vom anderen etwas kommen kann

notfalls kann man gezielt den datenempfang blocken und wieder freigeben

aber du solltest mal den grundlegenden test machen ob von beiden geräten am selben IP_CONTROL daten-empfangsbuffer was ankommt


mg

Hallo Peewit

Werde ich ausprobieren. Das mit dem MODE habe ich komplett übersehen. Man sieht vor lauter Bäumen den Wald nicht mehr.

Trotzdem noch ein Frage. Wenn ich nun auf den uLux schreibe, wie kann ich mit dem IP_CONTROL auf einen uLux mit einer definierten IP-Adresse schreiben. Ich kann im IP_CONTROL nur "eine" IP_Adresse angeben. ... ODER muss ich bei jedem Versand des S_BUFFER die IP_Adresse dementsprechend im Baustein anpassen.

Mario

peewit

hallo

da die steuerung als server urgiert kennt diese anfangs ja nicht das gegenüber
sobald aber ein ulux etwas gesendet hat das erkennt der ip_control von wem das gekommen ist
darauf kannst du dann auch antworten da die source-ip und source port bekannt sind

kannst du denn auch als client an die ulux etwas senden ?
wenn ja dann brauchst du nur für jeden ulux einen eigene ip_control einrichten

aber irgendwie kommt mir das alles etwas merkwürid vor



gibt es denn irgendeine dokumentation übe das netzwerk verhalten der ulux

mg

... das Senden habe ich im Moment eh noch nicht so ganz im Griff.
Aber im Endeffekt will ich eine Störmeldung und ein paar Rückmeldungen zurückschicken.

Aber das würde bedeuten, daß das FRAGE(uLux) -> ANWORT(RPi) Spiel nicht funktioniert, da nicht immer eine Frage erst fom uLux kommt und darauf folgend eine Antwort erfolgt. Es kann auch sein daß der RPI unaufgefordert an das uLux Daten senden muss (und ich bin zumindest der Meinung dazu brauche ich die IP-Adresse des uLux)

Die Protokollbeschreibung ist im Anhang.-> siehe insbesondere Seite 7/71 "Treibergestaltung"

Mairo

mg

Ich kann dir auch mal einen Auszug aus dem WIRESHARK schicken.  :'( Aber ich bin im Stress.
Hab seit heute weitere uLux switche erhalten und kann das Ganze mal im Büro aufbauen und mitsniffen. (
ZEITPUNKT DAFÜR IST NOCH NICHT KLAR / heute geht es nicht)

Mario

mg

#10
Hallo Peewit

Entschuldige die späte Antwort, aber ich bin im Moment etwas am strudeln.

Der Einfachheit halber habe ich die Kommunikation mit meinem PC simuliert (am RPI läuft es ident, aber mit dem IP_CONTROL)
Mein PC hat die Adresse 10.0.0.2
Mein uLux hat die Adresse 10.0.0.122 (hier mal nur EIN Gerät, im Endeffekt sind es 2)

Die ersten 5 Pakete sind die Dinge die das uLux an das RPI sendet.
Die folgenden 9 Pakete sind die Dinge die das RPI an das uLux senden sollte.

Das mit dem UDP-Empfangen ist mir klar. (das ist bereits fertig implementiert)
Aber beim Senden muß ich eine IP-Adresse angeben (zumindest bin ich der Meinung, daß das so laufen sollte - hier fehlt bei MIR noch die korrekte Implementierung)
Port ist immer 34988

Mario



Newbeeter

The description of your knowledge has made us much more acceptable to the common people.