Sign in to follow this  
Followers 0
moltra

Control Logix Ladder I/O question

5 posts in this topic

I am making some changes in a control logix PLC program that an engineering programmed for my company. In the program they have used the same I/O points in differnet tasks. I have noticed that some of them are overridding others and not letting the program operate as designed. I am trying to consolidate the I/O points so that there is only one instance of each I/O point in the program. I am trying to figure out if I should have a seperate I/O section or have all the I/O in the main program (routine/task). what has everyone else done when faced with this?

Share this post


Link to post
Share on other sites
I'm not quite following you. Do you mean that there are multilple OTEs on the same output? Can you post your program?

Share this post


Link to post
Share on other sites
As for the duplicate I/O look at: Searching through MainProgram - MainRoutine... Found: Rung 3, OTE, Operand 0: OTE(Drive1:O.ClearFault) Searching through MainProgram - Startup... Searching through fault_handling - fault_handling... Found: Rung 44, OTE, Operand 0: OTE(Drive1:O.ClearFault) ls1_Emulation.zip LoopSplitterOneUpgrade_V15.zip

Share this post


Link to post
Share on other sites
I think that your program is messy and would be very difficult to debug with all of the additional OTE's Where ever possible I use a single OTE to any bool output - It means when you are fault finding, all the logic to control that OTE is on the one rung - easy to see what is causing it to be on or off If the logic gets complicated then I use intermediate coils to keep the logic easier to read eg for a motor one OTE for each of automatic, manual which are then combined to control the motor relay I try to only use OTL OTU If I must store the boolean state during a power cycle In your program the task "Manual_Control" is inhibited - This looks to me like a commissioning tool - inhibit "MainRoutine" and enable Manual_Control to have PLC control of the drives. Too easy for some later to enable and it all falls in a heap. I also use Alias tags for All real IO. Allows me to attach a sensible name to an IO point eg I use the tasks to separate the timing of activities eg 10ms Task code that must execute every 10 ms eg a motion controller 100ms Task for analog IO - tank levels etc 500ms Task for Slow temperature PID loops continuous - don't care how often it runs and can be interupted whenever That said most of my code is in a continuous task with only one or two periodic tasks - usually PID's and analogs Within a Task I create Programs that are for a logical area of my machine (plant) eg motion, HMI, communications, control The routines within a task are for one device or function eg MotorA, MotorB, AutoRunSeq, StartStop (whole machine), Devicenet, ControlNet, Ethernet, Motion Axis. Mg

Share this post


Link to post
Share on other sites
I agree this program was written by an engineering firm, I am just the fool who has to make sure the machine operates properly. If you look at the emulate file I am combining all the OTE into one are so there is only one instance of each OTE. Moltra

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0