You can try to talk to the Omron using the ControlLogix PLC type. I am trying to remember all the problems. I think they are these:
- You must use a path that points to the Omron itself as if it was being bridged. So the path might look like "path=18,192.168.1.100" if your Omron was at address 192.168.1.100.
- You always use an elem_count of 1: "elem_count=1". The Omron will send back the entire tag even if it an array.
- Omron appears to not support fragmented reads. The ControlLogix code defaults to doing fragmented reads. This might be a problem trying to emulate it.
The Omron code was donated by a kind user and I do not have one, so I do not know much about it. The code he donated was modified in several places from the original *Logix code. I separated it out a bit but generally it is just using the same code as *Logix.
Try using the tag_rw2 test program to get the correct tag attribute string. If that works, you can use that in something like the async.c example to see if you can send a multi-request packet. The one thing that might stop this idea is the last point above. I default to using fragmented reads (writes are only fragmented if you really need them to be).
Note that a lot of the non-Rockwell PLCs that claim to support EIP/CIP do not support all of Rockwell's extensions. Even Rockwell does not support all of Rockwell's extensions. IIRC, the Micro800 series does not support multi-request packets. Are you certain that the Omron supports multi-request packets? It apparently does not support fragmented reads or writes. It would be great if it does!
Best,
Kyle