How can I communicate with a simulated PLC using FINS?

By strantor in Omron,
I am writing a Python script that communicates with an Omron PLC using FINS commands. My script uses the SOCKETS function in Python and it works just fine over TCP. I currently have my script reading and writing to a CJ1M over TCP/FINS, but I want to put that PLC back on the shelf and move everything to the virtual world. I have been unsuccessful because my script communicates with a given IP address, not a given FINS [network].[node].[unit] address, which is seemingly all CX-Simulator supplies me: According the latest version of the CX-Simulator manual (revised in 2009), I need to have FinsGateway installed in order have my "Application Program" communicate with the simulated PLC (assuming I correctly understand what is meant by "Application Program").: I do not see this installed on my system: Some googling indicates that FinsGateway has been replaced by SYSMAC Gateway, which I also do not see installed. Googling for Sysmac Gateway yields most results having to do with CX-Compolet which I know for a fact I do not have. Is SYSMAC Gateway part of a regular CX-One distribution or is it an addon? The graphic above from the CX-simulator manual shows CX-Programmer utilizing the [FINS/SYSMAC]Gateway to access a simulated PLC. My CX-Programmer and CX-Designer can in fact access the simulated PLC, so does that mean that I already have SYSMAC Gateway installed? If so, how can I access the simulated PLC in the same way that CX-Programmer & CX-Designer does, using a 3-octet local FINS address instead of a 4-octet IP address? If not, then assuming I purchase the XXXXXXgateway (whatever it may be called by now), THEN how do I access it with a 3-octet address? Is Omron going to insist I use some Visual Studio OCX/ActiveX component? Because that is not an option. I am constrained to Python 3.4 and the native functions supported by Python 3.4, by the details of my project and I cannot implement Visual Studio. For reference, the Python Sockets command I'm using looks like this (snippet): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.sock.connect((, self.port)) ... where AF_INET specifies the address format. I have many options for address format, including (but not limited to): AF_BLUETOOTH, AF_PACKET, AF_CAN,AF_INET6,AF_UNIX AF_NETLINK, AF_LINK ,AF_RDS ,AF_UNSPEC, etc.
  • 4 replies