Manufacturing AUTOMATION

Features Automation Software Opinion

I first saw an ad for the PLC Code Generator in Manufacturing AUTOMATION, and I couldn’t wait to get my hands on it. Based in London, Ont., Emjen Engineering has created a web-based service that generates PLC programs for Rockwell- and Omron-based hardware platforms. Siemens target hardware is coming soon.

The pricing model is interesting. The company charges $10 US per perceived input and output point. I just finished a project where the I/O count was 70 inputs and 30 outputs. The PLC Code Generator would have produced all of the control code for a fixed cost of $1,000 US for the PLC software. Not bad; but let’s see if it’s worth it.

The service creates PLC programs for well-defined machine control applications. Any code required for special servo interfacing and the like would have to be done externally.

Typical machine control has at least twice as many inputs as outputs, and 10 words of memory per I/O point. For machine control, these three parameters are used for approximating the cost of custom software. Designers will charge different rates based on HMI, fault reporting and vertical applications. But the PLC Code Generator takes some of the development cost away. The application is installed over the Internet. You cannot download and deploy offline, since this is an online-only environment.


I started the application as I would any other program. The application required me to register, which includes putting money into a virtual account. The amount reduced as I generated the control program.

Once that is out of the way, the first step is to define the application. I selected the Rockwell-based hardware platform because of my familiarity with it.

You are charged when the program gets generated. If you need to change the code because you didn’t properly define the sequence, you may be charged a second time if the change is significant. Sequence changes can be made at any time at no additional cost.

The next step is to define the target hardware and the memory configuration for that hardware. The setting here can be changed once the target program has been created.

The database allows for sub-projects, which would be analogous to sub-routines or part stations. Once the user creates the associations for these sub-projects, they can be used for the application.

Defining inputs by their function is the next step. If you need to use an input for fault detection or for the reset function, you have to be creative in the final program since the checkbox selections are mutually exclusive.

The categories for the inputs are commensurate with sequential machine control. You don’t have to select a function at this time, however.

I was disappointed that the description and function of these select boxes were nowhere to be found onscreen. They are in the help file, but a right click popup with the description would have been helpful.

Outputs are next. Typically outputs create work. Some are used for information such as pilot lights. Enter the output addresses, select the proper function and we are off to the next step – associations. This is where the description of operations really comes into play.

The association of outputs together creates interlocking between like outputs, such as vertical up/down. You can only go in one direction at a time. The input associations connect the “work” and “home” inputs to a given output.

So far, my crane application is doing okay, but I get the feeling that I am not going to end up with what I expect.

I have to tie the sequence together. I made a couple of sequence associations and generated the code. I was told that I needed to pay $169.60 US from my virtual account, and got an e-mail receipt.

The software created cycle, sequence, fault and control logic, along with a base HMI program based on the target hardware.

I checked the anti tie down logic and found that you can still tie one of the inputs down and just use one, which is not good. This suggests that the final code would need to be tested well to meet the desired results.

The project documentation is saved to disk once the logic has been created. Just import the documentation and you’re done. I didn’t like the inclusion of the address as the documentation symbol, but as the developer told me, “I never liked the idea of people just making up symbols that someone else would have a really hard time figuring out.”

The resulting code is based on the programming principles of the developers. It does not take into account the many nuances of every project. The code generated is well organized, but I found that because I didn’t write the code, it didn’t flow the way that I would have written it using the intrinsic instruction set.

While I’m not sure if this is a service I would use, it would serve any machine builder well to create sub-projects of certain aspects of the machine to remove the mundane coding of machine control and create consistent routines for those aspects of their control. It’s also a great learning tool.

Name: The PLC Code Generator
Version: 1.0
Vendor: Emjen Engineering Ltd.
Application: Automation software
Price: $10 US per I/O point

Jeremy Pollard is a 25-year veteran of the industrial automation industry. He has worked as a systems integrator, consultant and an educator in the field. Jeremy can be reached at