Omron PLC-Communication from Mac/Linux


Thread Starter


I have a small VBA/VB6-Application that communicates with an Omron CP1L-PLC. It works only on Windows and now it should run on Windows, Mac and if its possible on Linux too.

The User Interface communicates over an USB-Port with the PLC, optional i could use an RS232-Port. In the Future i like to communicate with some DSLR-cams too, i think over the USB-Port.

I think the Application and communications must written new, that i can use it on Macs. Now i'm searching for a way to realize that.

Has anyone experience with Omron-communications on Mac or Linux? How could i realize that or where could i get some drivers to connect the PLC? What would be the best way to realize that?

thanx a lot for every inputs!
I think your first problem is going to be that VB6 is for MS Windows only and doesn't run anywhere else.

Omron has a protocol called "FINS" which they document in their manuals. If you can use that it might be a solution.

There's a project on Sourceforge that claims to be a FINS library, but I don't really know much about it.
Thanx for your reply!

I read about the FINS protocol, but i think this is only for Ethernet and not for USB or RS232..?

Yes i can't use the VBA Application because its only runs on Windows systems. It must be rewritten that i can use and communicate on mac-platforms with the PLC.

But i don't know which would be the best way to realize that...? I thought about C++ with wxwidgets or qt, but don't really know if its possible that i can communicate with the PLC from Mac and Windows...?
Omron also has a protocol called "Hostlink" which operates over RS-232.

For cross-platform programming languages, I can recommend Python. Python comes already installed on most Linux systems and I believe that is the case for Macs as well. It's also available for MS Windows. It's free/open sources and you can download it from:

I have a number of large Python programs that run on both Linux and MS Windows without requiring any changes (they should work on Mac OS/X as well, but I don't test for that).

For serial port access you will want to use the third party pyserial library (which is also free and open source).

You have a choice of GUI toolkits. Tkinter is in the standard Python library, but while it's easy to use the features are limited and it takes a bit more work to actually make it look nice. You can however also use wxWidgets, QT, or GTK+.

You might also want to consider using a web interface instead of a traditional GUI. You can write AJAX style web interfaces which update themselves dynamically in the background with new data. I have done this with a number of programs where the part that does the communications runs as a combined communications/web server, and the web browser handles the user interaction.
thanx a lot for your help!

hmm but next problem...
(i think) mac's don't have a com-port (RS232). so i think i could only use the USB-port for communication from macs...?
You can also consider using Java. It is fully compatible with all those operating systems.

The swing GUI is very extensive also for a user interface. Eclipse or Netbean has a developing environment (all free) with all the bells and whistles. Like any programming language, there is a learning curve.

I have done some work implementing drivers in Java, and so far it is working very well.
A lot of x86 laptops no longer come with serial ports (but still come with the ACTUALLY useless parallel port for some reason). So they have these things that plug into the USB port and give you a serial port, more or less. Have no idea if they work with Macs or not, but they're out there and they're pretty cheap.
Thanx a lot for your replies!

If i would use Hostlink, i don't need any other drivers for communications with the PLC..? (like .ocx-components in the actually application - to start/stop the motor, to visualize some parameters...)
You will need to write some functions to encode and decode the host link messages. As for what else you need, well that depends on what your program is going to do. For traditional GUI stuff you will need to use a cross platform GUI toolkit (see the previous messages on that) and draw your own widgets (buttons and pilot lights).

Thanx a lot for your answers!

Maybe someone would be interested to do this for me? For money... I think that's a bit too complicated for me...

You could write me at [email protected]. I would be very grateful. ;)

Thanx a lot!