Most complex PLC program?

In 1993 I did all the programming and commissioning of the Roller Heart Kiln for porcelain tableware firing at 1400ºC, which appears on page 3 of this document:

44 meters long, 32 burners, 12 temperature regulation zones, 5 atmosphere regulation zones, variable roller speed in 4 sections, and the material transport system.

The PLC was Mitsubishi A2S and everything programmed in Ladder with Medoc in DOS.
 
I have two.

One controls an offshore winch that compensates heave and has dynamic performance depending on available power (motoring and braking), weight being pulled, type of operation and not crash into things. Not a lot was repeated on it and it was complex to understand all the ins and outs of it.

For me, the most complex one was a PLC controlled operator chair with keypads that had as many functions as you wanted (the SCADA would change), joysticks and each key could have different type of behaviour. Press, Press and hold, double press, double press + confirm, etc...

The program was written about 10 years ago and they're now on probably about 500 of those control stations. Everything is configured via DB's and the logic is written with pointers to allow the configurations to change the behaviour of the program.

It looks impossible to understand until you read the manual and it's so nicely implemented it's a breeze to add and modify behaviour or functions.
 
The most complex software I've worked on recently is controlling a machine that should for all intents and purposes be very simple to program.

Only has 2 axis of movement, up and down, back and forth, and neither at the same time.

However, in an effort to put some "intellectual copyright" on the software, it has been written incredibly complex. Deliberately complicated and difficult to follow. I was only asked to add an additional conveyor belt to the system. A task I expected to take a day, a week later an I'm still working out the machines original sequencer.
 
However, in an effort to put some "intellectual copyright" on the software, it has been written incredibly complex. Deliberately complicated and difficult to follow.




I have had small assembly machines written that way that were too complicated to troubleshoot.


On 2 of them I wrote my own, simple programs in a few hours and they have been running better since according to the customer.


That was faster than trying to figure out what was not happening in the program.
 
The most complex software I've worked on recently is controlling a machine that should for all intents and purposes be very simple to program.

Only has 2 axis of movement, up and down, back and forth, and neither at the same time.

However, in an effort to put some "intellectual copyright" on the software, it has been written incredibly complex. Deliberately complicated and difficult to follow. I was only asked to add an additional conveyor belt to the system. A task I expected to take a day, a week later an I'm still working out the machines original sequencer.

This is a whole 'nother bag of worms. In my experience it's been more about job security of the actual programmer, less about IP of the company. Last year I was contracted to modify a program which would communicate with a Liquid Particle Counter and sequence a few handfuls of valves to sample various points of a chemical process. The system in service communicated with the particle counter via Modbus RTU and they wanted to switch to a different model from a different MFG which communicated via ASCII commands and did not function in exactly the same way.


The original programmer had gone to great lengths to obfuscate every single aspect of the program. Bits, instead of going straight from contact to coil, would go into a word, the word put through binary mask in another routine, then a bit shift in another routine, come out as something named totally different and intentionally misleading, then to coil. Every single bit. That's only one example. As I said, every single aspect was obviously intentionally designed to mislead. The comments were outright lies, probably following some sort of format encoded to only the original programmer's understanding. Even the HMI program was confounding. There would be 20 copies of every text box (or button, or display, whatever, everything) all linked to different memory areas, stacked on top of each other, with the visibility bits controlled by values he had manually entered into the PLC's memory.

I spent a week trying to make sense of it and then went to the client and told them it would be faster for me to just design a new system from the ground up.

How often do you see this kind of thing?
 
Kindly assist me with the meaning of the following function calls for my siemens s7-300 PLC:

CALL FC 122
IN0 :=P#DB121.DBX 336.0
IN30 :=DB121
IN31 :=M2.2
IN32 :=Q3.3
IN33 :=DB101.DBX1.7
IN34 :=DB101.DBX1.6
OUT35:=DB111.DBD90
OUT36:=DB111.DBD94
OUT37:=M103.4
OUT38:=M103.0
OUT39:=M103.1
OUT40:=M103.2
OUT41:=M103.3
IO42 :=DB112.DBX34.0
IO43 :=DB112.DBX34.1
IO44 :=DB112.DBX34.2
IO45 :=DB112.DBX34.3
IO46 :=DB112.DBX34.4
A M 103.0
= DB112.DBX 14.0
A M 103.1
= DB112.DBX 14.1
A M 103.2
= DB112.DBX 14.2
A M 103.3
= DB112.DBX 14.3
A M 103.4
= DB112.DBX 14.4
 
What is the preferred mode for communication for such a case ? Ethernet/IP ?

3 Ethernet cards in parallel connected to 2 Ethernet switches also cross connected

A separate Ethernet card used to communicate to the plant

So the rack is just a processor, a safety processor and 4 Ethernet cards with a lot of switches and remote I/O
 
I'm curious as well. I predict ethercat

I did an ethercat "training" at a rockwell session a while back and remember thinking it was nonsense and would never get used. I'm an advocate for ethernet because... well IT uses it and they have all the neat gadgets for troubleshooting. Like, if you have a problem with RS232/DataHighway/DNet/CNet ... you can go around messing around with stuff until you "fix" it. But really... its just terrible and I would never let it be used again in a new install. Ethercat just seemed like another thing that can't be easily troubleshooted with a IT tool that is used world wide. (Like bacnet... I don't want to deal with this.)
 
There is a very complex program that I have done a lot of work on. To give an idea of the size, the program has been heavily optimized to shorten scan time, but it still takes an L73 Controllogix processor an average of 70ms to scan.

Just one small part of the program.....

There are 10 presses and a common shuttle to remove the parts when a press cycle is complete. The shuttle takes the parts to a gripper that transfers to a measuring device. After being measured, another gripper transfers it to another shuttle that carries it to an oven lane designated for the press the part came from.

That much doesn't sound to bad, but it gets more complicated. The presses are to be unloaded in order of completion, so the press number is put in a FIFO once the cycle completes.

The oven is a conveyor oven so once a part is put in a lane it has to wait a period of time to clear for the next part. Before the first shuttle goes to retrieve the parts from a press it must first check the oven lane is clear. If it is clear, it then must make sure no part from the press is on the shuttles, on the measuring unit or in any of the grippers.

If it does not have a clear path to the oven, the unload shuttle cannot wait. So it removes the press from the FIFO and puts it in a LIFO. It repeats this process until it finds the next press with a clear path into the oven. After it finds a press to pickup parts from, everything from the LIFO is then pushed back into FIFO.

The implementation of this in ladder logic is a horrible program to follow. not that it is poorly written, it is just a complicated process. This is only a small portion of an overall complicated program.
 
People are confusing application difficulty with poor programming.

Speak of.... I was involved with one RSLogix 500 program that was one ladder, ladder 2 and it was almost 2000 rungs long, that boy should of been taken to the back behind the barn and beat with a hickory stick
 
Speak of.... I was involved with one RSLogix 500 program that was one ladder, ladder 2 and it was almost 2000 rungs long, that boy should of been taken to the back behind the barn and beat with a hickory stick

I had a coworker, who had to troubleshoot a program that was all in the same main program, expanding to the total of about 9000 rungs. The whole design had some interesting features, like using 100 inductive sensors to determine the location and speed of a moving vehicle. o_O
 

Similar Topics

I have my L5K file imported into my project, and the tags I need in the "available addresses". Is there a way to access my PLC tags in a complex...
Replies
2
Views
2,909
Yes it's very legacy.. but sometimes it's necessary to use old stuff for fun.. and because it's so much cheaper. Crimson 3.0 had the ability to...
Replies
4
Views
1,573
Hello all, I am fairly new to programming HMI's and am working with Crimson 3.1 for the first time. I am trying to recreate an annunciator of...
Replies
12
Views
6,271
I have this complex code tag that returns as a string variable. For some reason it returns the two strings with a ?? between them -- not the...
Replies
2
Views
3,469
Hello, I have 6 RTUs all with the same program load. I am trying to setup my HMI with one set of data tags and one set of screens and use a...
Replies
7
Views
5,772
Back
Top Bottom