Looking for a non-PLC Controller


Thread Starter


i am looking for something more powerful than single loop pid controllers but the software should be free (so plc is not an option). what is a slc? is there any industrial controller (not microcontroller) that can be programed in c or c++ or java? LabVIEW would also do, but i don't know much about industrial controllers from NI, though i worked on NI hardware modules & LabVIEW during my EE.
Codesys is a development language for a variety of PLC's, many of which are the 'slice I/O' types.

Codesys offers all of the programming methods demanded by the IEC 61131 'standard', although I'm told that implementation depth of each is very vendor specific.

Check out the Codesys site :

and the list of people implementing Codesys:

many of those listed are OEMs with very industry-specific products, others like Beckhoff, Wago, Twincat, B&R are generic PLC's.

It is my observation that Programmers tend to like Codesys. I'm not a programmer and I shy away from it.
You could use an embedded server that is compatible with standard pc systems.


The above system already includes the interfaces to connect remote I/O.

We use such systems together with our http://pvbrowser.org framework. The PLC logic can be done simply in C/C++.

Our data acquisition uses a "shared memory" and a "mailbox" and is separate from the visualization. You can attach a process with your PLC logic in parallel to the visualization.

See the principle:
What exactly are your requirements for the controller? How much IO, what type, are you doing motion or other closed loop control, if so what kind?

I'm assuming for now that since you are asking about C/C++/Java that you are familiar with these languages and a multithreaded environment. Many here may argue that you don't want to program in something like C++ for a controller, but I would argue that *SANE and CLEAN* C/C++ programming can make your job easier (it has for me). You just don't want to pull a kid off the street who claims to know c++ on windows and expect them to get the concepts of control and realtime programming.

I'd personally be hesitant to labview, although some love it. I've learned over the last 12 years that graphical languages (flowchart, labview, etc) become very hard to read when you get into applications that are non trivial.

Although I have not used them, I would check out both Beckhoff and B&R. I've heard good things about both. They offer what looks like very high performance stuff with powerful software and high tech motion/IO busses *based* on ethernet. I read in a trade rag that both companies are (or planning to) offering C++ programming into their realtime system, which should be interesting. I'd ask questions such as "How many threads of realtime C++" and if they support centralized libraries that can be shared amongst different projects, etc. You have to be careful because some companies have both a RTOS and a general purpose OS such as windows. If they say you can program with C++/.NET it is usually for windows and not the realtime control. Certainly .NET is a dead giveaway since no PLC type company implements .NET in a RTOS (Don't know if I would ever want this frankly).

I would grill them hard and even ask to borrow a demo unit to make sure the product meets the hype. For instance, some vendors claim they have library support, but it is a glorified cut and paste into the project. Others claim you have all of these text languages but they are programmed in a huge single scan loop, so if your program blocks waiting for some IO operation you will fault on the watchdog timer. This is fine if you want to program in a "ladder logic" pattern with C syntax, but is not the same as programming in C on a threaded environment.

Both appear to have a high end servo/motion/IO capability, but obviously you need to research what you will need for your applications.

Remember, don't cheap out or be lazy in your selection process. What you buy now you may likely service in 10-15 years.

Good luck,

an alternative could be an Intel Atom based embedded PC device running a RTOS together with a convenient graphical programming tool which allows you to develop real-time application without the restriction introduced by the IEC61131-3 standard.

Such a system is DACHSview ... it comes now with an embedded C compiler which allows to compile on the fly external C-code for user defined function blocks.. Code located in shared libs can be used by dynamical linking. These possibilities are e.g. requested for fast callback routines. DACHSview offers also language bindings for the scripting language LUA (http://www.lua.org).

In general are offered function block libraries for fast graphic applications (SDL, OpenGL, FLTK), libraries for fieldbus I/O systems (CAN, CANopen, PROFINET, ETHERCAT, EthernetPowerLink, PROFIBUS, Interbus, Modbus a.so. as well as libraries for the access of operating systems primitives ( message passing, semaphores, physical memory, shared memory, IO ports a.s.o).

Each software target is able to run up to 15 threads scheduled by the system scheduler for the event oriented operation (polling also possible). Function block routines can be called recursively. Communication between threads is possible by a message passing middleware (http://www.zmq.org) which supports network wide communication between nodes running different operating systems. The embedded database SQLite is also supported.

More info at: http://www.dachs.net/DACHSview-SDL_E.pdf

Best Regards
Armin Steinhoff

Why cant you go for a Baldor controller as it is very powerful controller in automation industry and the Mint programming language is similar to 'c'.

Here you can add as many IO you required and level programing is acceptable.

for more details go through www.Baldormotion.com / mail to [email protected]


James Ingraham

"...the software should be free (so plc is not an option)."

That's not entirely true. Turck, for example, gives away the license for their (CoDeSys-based) software, and their BL20 "slice" I/O is fairly economical.

"what is a slc?"

Other than a specific brand of PLC from Allen-Bradley, I don't know what this could refer to.

"is there any industrial controller (not microcontroller) that can be programed in c or c++ or java?"

B&R Automation has C and C++ programmable controllers. However, the software is not free.

"LabVIEW would also do, but i don't know much about industrial controllers from NI"

NI has some great stuff. LabVIEW is extremely NOT free, however, so I'm not sure why that's an option. NI hardware tends to be on the pricey side, but they do offer some good value. Their website has plenty of good stuff, and their sales people would be happy to talk to you.

Other options:
Red Lion (notably www.redlion.net, not .com) has a modular controller that might work, depending on what you're trying to do.

Roll your own; grab a PC and write some code. Of course, you have to interface to hardware. This can be easy or hard, depending. I personally like Modbus/TCP to "slice" style I/O, but that won't necessarily meet your requirements. Also, if this is something designed to run long-term, your name will almost certainly be cursed by some poor sap 10 years down the road who has to deal with the now obsolete hardware running software no one understands.

CTC, which advertises fairly heavily on control.com, has some interesting controllers, including the ability to do C.

Good luck.

-James Ingraham
Sage Automation, Inc.

William Sturm

As previously mentioned, a motion controller might be a possible solution. Galil makes a small PLC that uses their 2 letter command language, it is not bad at all to learn.

 Bill Sturm
> Why cant you go for a Baldor controller as it is very powerful controller in automation industry and the Mint programming language is similar to 'c'.

> Here you can add as many IO you required and level programing is acceptable.

Yes ... one of our customers is using drives and controllers from
Baldor for automated car park systems. A real-time controller programmed by DACHSview communicates with Baldor controllers as a controlled Ethernet Powerlink node. This real-time node does the control and management of the whole parking system ... if you are interested I could give you the coordinates of our customer.

Best Regards

Armin Steinhoff

James Ingraham

Somehow, I forgot to mention the Rabbit stuff from Digi. Possibly because I think of it as a "micro-controller," but it is in fact programmed in a C dialect called Dynamic C. Pretty cool stuff.

-James Ingraham
Sage Automation, Inc.