So a bit of background. We are creating a robotic installation which is running on ROS (Robotic Operating System) and plan on controlling some of the peripheral hardware with raspberry pi (or equivalent) which is how we found the revolution Pi products. ROS can be installed on a raspberry pi and i've seen a few questions on this forum where people are asking about it. It seems so long as we pick one of the ones with larger flash memory then we should be ok on that front.
some of the peripheral hardware communicates over ethernet and we were consider using the connect or connect+ to control this hardware (and from a ROS point of view act as a remote node) however it looks like we would be limited to a single standard ethernet port given that the remaining port would need to go to the general network. This leads me onto my questions
- what is the data rate between expansion modules to the pi (Both for expansion modules communication (such as ethercat) and IO ones, I read that there was 5ms cycles? does this mean 200Hz is the maximum frequency we will be able to get updates from our devices on the expansion modules?)
- how fast is the TCP/IP on built in ethernet? (i.e. we will be getting quite a lot of time sensitive data into one of these connections and need to process it, slightly, before forwarding onto the other port where our ROS server is running, is there a known latency introduced between the two?)
- Can we use a network switch to route multiple TCP/IP connections through to the pi? We have multiple ethernet devices and would ideally like to connect them to a single pi to keep cost of the cell down.
Looking for some help regarding timing and networks
-
- Posts: 5
- Joined: 27 Jan 2021, 17:53
Re: Looking for some help regarding timing and networks
Hi dmason1992, Thank you for the detailed description of your project and the exciting project with the robot controller.
Your questions all go in the direction of performance and it is certainly important to talk about the performance for such motion applications.
The RevolutionPi device family includes several different modules and the module with the lowest latency that would be most interesting for you is currently the RevolutionPi Compact module.
If you run this RevolutionPi Compact module together with Codesys and an EtherCAT slave or master, you will have the lowest latency compared to a RevPi Core 3 or RevPi Connect module.
This is because the RevolutionPi Compact module does not have PiBridge communication because it cannot be expanded with add-on modules. The omission of PiBridge communication here allows direct control of the GPIOs.
The performance of the TCP/IP communication you mentioned is based on the respective kernel and the connection of the interface to the system. You can find schematics in the download area. The Ethernet interfaces are internally connected to the CM via USB. The best will be to do performance tests yourself to make a statement if the performance is sufficient. Tools like IPerf, Stress, etc. can be helpful here.
Your questions all go in the direction of performance and it is certainly important to talk about the performance for such motion applications.
The RevolutionPi device family includes several different modules and the module with the lowest latency that would be most interesting for you is currently the RevolutionPi Compact module.
If you run this RevolutionPi Compact module together with Codesys and an EtherCAT slave or master, you will have the lowest latency compared to a RevPi Core 3 or RevPi Connect module.
This is because the RevolutionPi Compact module does not have PiBridge communication because it cannot be expanded with add-on modules. The omission of PiBridge communication here allows direct control of the GPIOs.
The performance of the TCP/IP communication you mentioned is based on the respective kernel and the connection of the interface to the system. You can find schematics in the download area. The Ethernet interfaces are internally connected to the CM via USB. The best will be to do performance tests yourself to make a statement if the performance is sufficient. Tools like IPerf, Stress, etc. can be helpful here.