I’m trying to receive various PMU streams (only data, UDP comm) through a GW/Router which performs some algorithms on the streams.
The setup is something like this figure:
When I try to configure these streams in openPDC manager they work separately. But if I enable both PMUs in the openPDC cannot reuse the UDP port and only one of them works. (The connection string for both PMUs is the same: same udp port).
Do I need to send each PMU stream through one dedicated UDP port? for example (4713 for PMU1 and 4714 for PMU2).
Thank you and BR!
Normally you establish one listening instance on a given port. You can, however, setup a “shared” listening port that will properly deliver data to devices based on their sending IP.
To do this you simply setup two devices, like normal, that both use the same UDP port but also add
receiveFrom to the connection string with the source IP of the device, e.g.:
localport=4712; transportProtocol=UDP; interface=0.0.0.0; receiveFrom=192.168.0.11
As long as there is a
receiveFrom IP defined in the connection string, the system will know to share an IP and properly pick up data for the device based on it’s incoming IP address.
Hope that helps!
I get your idea but the problem is that both streams have the same source IP (192.168.1.1) and are sent to the same IP (192.168.1.2) and port (4713). The only difference between both streams are the IDCODE field.
In that case the frames would be randomly intermingled on the UDP data channel and basically be rendered unparsable since the IEEE C37.118 protocol does not support interleaved frames.
Ooo ok, I assumed that in C37.118 it was possible to send interleaved PMU data frames in the same data channel (PMUa - PMUb - PMUa - PMUb - …).
So in my situation I think the best option would be to have one UDP socket for each PMU stream (all PMU with 192.168.1.1 src ip but with different destination port). What do you recommend?
That may be the most simple solution - yes.
Alternately you could switch protocols, like using the Gateway Exchange Protocol.