Bob A. said:
I have not seen much of the details of this activity. What budget, time frame, what does the crane do, how big is the area, manned or unmaned ?
Hi Bob,
well, the budget I am not sure about, I am sub-contracting only to convert the TSX code to ML1500, install and commission.
The plant is currently working, they just require the PLC updating from Telemec to AB (their new standard)
The conversion is pencilled in for Easter week (2 weeks time!)
The Crane takes freshly made concrete building blocks that are sitting on pallets that are fed into the crane load station position on a chain conveyor (perhaps 100 blocks on a set of pallets) lifts them all up, transfer tham to a storage station, (to harden) then traverses to collect the oldest from another station (hardened) and transfers them to the unload station, lower them down, where they exit on a chain conveyor. (there are perhaps 20 storage stations, and a number of chain conveyors that move the loaded and empty pallets around the system)
Bob A. said:
When an old program gets excessively convoluted, I usually start writing to see how many issues I can handle with reasonable effort. I then break up the job into activities and then call them as required. It is much like Sequential Function Blocks, but I just do it in ladder logic.
It becomes very logical and easy to follow, but it takes planning and some evolution. It all compiles to machine language anyway, so you do what makes sense to you.
I think I can convert the Sequencial Logic (as written in TSX Grafcet method) by using an Integer that contains the Step Number And set up the Step Tansitions ( (#) in TSX Chart Task File) in normal logic. I normally then use
If STEP_INT = 0 then Step_Bit0 = 1(equivalent to XO=1 Grafcet)
If STEP_INT = 1 then Step_Bit1 = 1(equivalent to X1=1 Grafcet)
If STEP_INT = 2 then Step_Bit2 = 1(equivalent to X2=1 Grafcet)
(I use a list of these down to max step)
I then use the step bits along with transition logic to increment the Step Integer, which turns off the current Step bit and energises the next step bit.
ie.
If [Step_bit0=1] AND [Transition_Conditions_To_1=1] Then [MOV 1 into STEP_INT]
If [Step_bit1=1] AND [Transition_Conditions_To_2=1] Then [MOV 2 into STEP_INT]
And if a condition requires a special step (eg Reset to zero, or jump a few steps) then some logic and a simple step value MOV into STEP_INT is all that's required.
Am I making any sense here!? perhaps I should post an example.
Anyway, that's not really my biggest concern.
Understanding the original code, in particular the counting etc (which appears not to have a direct code translation) is the issue.