I am making a 3D machine simulator in Blender (animation/game design suite w/ Python 3 interface) and it needs to communicate with an Omron PLC over Ethernet. I have found Python 2 code online which communicates with Omron PLCs using Omron's own "FINS" protocol. The code is provided in two files; one for TCP and one for UDP. Not knowing the difference between TCP and UDP, I picked TCP because it rings familiar to me. I spent a lot of time converting it over to Python 3, only to find that it is not quite fast enough.
My simulation/"video game" runs @ 24FPS, and I need it to read/write to the PLC each frame, so total communication time needs to be <40mS. Using the TCP Python code, I can read data from the PLC in 60-90mS, and it doesn't matter whether I read 2B or 30kB, same comms time. So after a bit of reading about TCP Vs. UDP I thought using the UDP code would make for faster comms, but that's not so. The UDP code gives me the exact same comms time (EDIT : wrong, actually UDP takes over 1.2sec to read).
What can I do to speed things up? I don't care about data integrity, error checking, or network congestion. I'm cool with blindly sending/receiving and assuming it worked. It just needs to be as fast as conceivably possible on 10/100 ethernet. The network will consist of a PC, PLC, and touchscreen.
EDIT: attached python files if anybody is interested. The two original python 2 files and my converted Python 3 file. rename to .py
My simulation/"video game" runs @ 24FPS, and I need it to read/write to the PLC each frame, so total communication time needs to be <40mS. Using the TCP Python code, I can read data from the PLC in 60-90mS, and it doesn't matter whether I read 2B or 30kB, same comms time. So after a bit of reading about TCP Vs. UDP I thought using the UDP code would make for faster comms, but that's not so. The UDP code gives me the exact same comms time (EDIT : wrong, actually UDP takes over 1.2sec to read).
What can I do to speed things up? I don't care about data integrity, error checking, or network congestion. I'm cool with blindly sending/receiving and assuming it worked. It just needs to be as fast as conceivably possible on 10/100 ethernet. The network will consist of a PC, PLC, and touchscreen.
EDIT: attached python files if anybody is interested. The two original python 2 files and my converted Python 3 file. rename to .py
Attachments
-
12 KB Views: 45
-
13.5 KB Views: 38
-
13.1 KB Views: 33
Last edited: