You are not registered yet. Please click here to register!


 
 
plc storereviewsdownloads
This board is for PLC Related Q&A ONLY. Please DON'T use it for advertising, etc.
 
Try our online PLC Simulator- FREE.  Click here now to try it.

New Here? Please read this important info!!!


Go Back   PLCS.net - Interactive Q & A > PLCS.net - Interactive Q & A > LIVE PLC Questions And Answers

Reply
 
Thread Tools Display Modes
Old January 14th, 2022, 05:03 PM   #1
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
Troubleshooting PLC fault: CompactLogix L33ER

I need a little help figuring out how to fix a fault in a customer's CompactLogix. The guy said the fault happened when he was jogging the machine. I looked up the fault and attached the screenshot below. I'll add more photos in separate posts. I'm guessing a value went out of range, but the .ACC in the array value is challenging my thoughts on how to confirm that it is indeed the problem, and how I should go about fixing it. I'm being cautious. Do you see something here that jumps out as the probable solution?

Two more screen captures will follow, along with a pic of the rack.
Attached Images
File Type: png Fault.png (125.9 KB, 125 views)
  Reply With Quote
Old January 14th, 2022, 05:04 PM   #2
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
Here is Rung 8, where the fault occurs:
Attached Images
File Type: png Rung8.png (153.4 KB, 126 views)
  Reply With Quote
Old January 14th, 2022, 05:05 PM   #3
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
And here's a rough capture of the Array.
Attached Images
File Type: png DataArray.png (161.5 KB, 126 views)
  Reply With Quote
Old January 14th, 2022, 05:07 PM   #4
Operaghost
Member
United States

Operaghost is offline
 
Operaghost's Avatar
 
Join Date: Apr 2002
Location: Dallas, TX USA
Posts: 3,495
The value in the ACC is 16. While your array has 16 elements, they are numbered 0-15. So, the logic is pointing to array element #16 which does not exist. Consider adding something like a Limit (LIM) with 0 for the low limit and 15 for the high limit. Place that before the instructions that are using the variable addressing (rung 8 before the SUB).

OG
__________________
I despise when people take random quotes and ascribe them to me - Julius Caesar

Last edited by Operaghost; January 14th, 2022 at 05:13 PM.
  Reply With Quote
Old January 14th, 2022, 05:34 PM   #5
drbitboy
Lifetime Supporting Member
United States

drbitboy is offline
 
drbitboy's Avatar
 
Join Date: Dec 2019
Location: Rochester, NY
Posts: 4,229
Or put an [AND L_PunchCounter.ACC 16 L_PunchCounter.ACC] instruction before the EQU test on rung 7, assuming that once the .ACC reaches 16 it should reset to 0.

Or an [XIO L_PunchCounter.DN] at the beginning of rung 7, assuming L_PunchCounter.PRE is 15.

Caveat: those are blind guesses; I certainly have no idea how the process operates..
__________________
i) Take care of the bits, and the bytes will take care of themselves.
ii) There is no software problem that cannot be solved with another layer of indirection.
iii) I solemnly swear that I am up to no good

Last edited by drbitboy; January 14th, 2022 at 05:38 PM.
  Reply With Quote
Old January 14th, 2022, 06:05 PM   #6
Operaghost
Member
United States

Operaghost is offline
 
Operaghost's Avatar
 
Join Date: Apr 2002
Location: Dallas, TX USA
Posts: 3,495
Most important, make sure you include logic to prevent it from executing if it ever goes about that setpoint from your counter. drbitboy or my suggestions will get you there. Otherwise, we will be troubleshooting a similar problem all over again in the future.

We also need to make sure it is resetting back to zero once we hit our limit.

OG

EDIT: This brings back memories of my days at A-B/RA. My first Logix 5000 system service call was this exact type of problem.
__________________
I despise when people take random quotes and ascribe them to me - Julius Caesar

Last edited by Operaghost; January 14th, 2022 at 06:09 PM.
  Reply With Quote
Old January 14th, 2022, 06:11 PM   #7
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
Cool... I'm just trying to figure out if I'll be able to reset that value without unintended consequences. I have my Logix 5000 VM going, with the offline file.

I was trying to figure out how you knew the value of the .ACC. I didn't realize rung 7 had the value until a minute ago. It was captured purely by coincidence.
  Reply With Quote
Old January 14th, 2022, 06:20 PM   #8
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
So, I see the reset on rung 9. It should have reset. And do you think it didn't reset because of scan order? In other words, it faulted before rung 9 could execute?
  Reply With Quote
Old January 14th, 2022, 06:22 PM   #9
Operaghost
Member
United States

Operaghost is offline
 
Operaghost's Avatar
 
Join Date: Apr 2002
Location: Dallas, TX USA
Posts: 3,495
16 caused the fault which stopped it from incrementing. I just assumed that the screenshots happened after it had faulted.

The ?? under Source A of the SUB told us where it had faulted and fortunately the screenshot showed that tag in the rung above. If we didn't see it there, I, or someone else, would have asked you to show us that counter.

I think the problem is probably that the counter needed to go to 15 instead of 16. Or if it must be 16, then the array needs to be larger. One or the other needs to be fixed. And yes, the reset instruction would only execute after we have already faulted on rung 8. The order isn't really the issue though. The preset or the array size is the issue.

OG
__________________
I despise when people take random quotes and ascribe them to me - Julius Caesar

Last edited by Operaghost; January 14th, 2022 at 06:26 PM.
  Reply With Quote
Old January 14th, 2022, 06:26 PM   #10
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
Two more screen shots before I start thinking this through....
Attached Images
File Type: png Rung3.png (105.4 KB, 111 views)
  Reply With Quote
Old January 14th, 2022, 06:27 PM   #11
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
And here:
Attached Images
File Type: png Rung5.png (108.8 KB, 113 views)
  Reply With Quote
Old January 14th, 2022, 06:32 PM   #12
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
So, it's in program mode right now. I've never used test mode... only remember watching someone use it. What's the best way to reset the counter? Would I have to change the value offline and download? Or is there a way to toggle the reset without tripping the fault first?
  Reply With Quote
Old January 14th, 2022, 06:54 PM   #13
AutomationTechBrian
Lifetime Supporting Member
United States

AutomationTechBrian is online now
 
Join Date: Jul 2013
Location: St. Cloud, MN
Posts: 551
Ok... I see what is happening. I'm thinking there must be up to 16 different points that are punched per part. The count must associate values in the array to the current punch instruction. ...At least that's what I'm thinking right now. I'll keep studying the program.
  Reply With Quote
Old January 14th, 2022, 08:19 PM   #14
drbitboy
Lifetime Supporting Member
United States

drbitboy is offline
 
drbitboy's Avatar
 
Join Date: Dec 2019
Location: Rochester, NY
Posts: 4,229
HUGE caveat: none of us posting here know this process; I see the word "Punch" and think "nine fingers - remaining;" YOU NEED TO REALLY UNDERSTAND THIS PROCESS before becoming known as the guy that followed advice from the Internet. Unless the fault is bizarrely intentional to stop the process because an unsafe condition occurred, it is likely that someone made a mistake programming this process.

So, assuming the following will be taken with a dump truck full of salt ...

As long as discrete output Local:1:O.RangeEn.13 is 0, you can do whatever you want to the accumulator and should will not cause another [Array subscript too large] fault on Rung 8. How you ensure that bit is 0 (e.g. temporary force), and what that means, and whether it is safe, and remembering to remove however you did it, is your problem.

But since you are back in program mode and the PLC is not running, I suggest fixing the logic to prevent the fault in the first place. The hard part is understanding the process (see caveat above). The canonical questions are
  • How long has this current software been running on this process?
  • Has this problem happened before?
The easiest way I can see to do that is to move Rung current 9, which RESets the counter, to between current Rung 6 (the CTU that would presumably be the only place that would increment .ACC's value to 16 in the first place) and Rung 7.

Also, when you move current Rung 9, I would consider removing the [XIC Local:1:I.RangeActive.13] from that rung i.e. from current Rung 9. The only way the .ACC can become 16 in the first place is on a falling edge of Local:1:I.RangeActive.13, which means the RESet would usually occur anyway, because the .DN will also be 1 when .ACC increments to 16. I say usually because there is an obscure, difficult to debug, edge case in some PLCs*, where the Local:1:I.RangeActive.13 bit could be 0 on current Rung 6, and 1 on later rungs, e.g. on current Rung 9, which would prevent the RESet. In fact, the .ACC could, with an impossible sequence of state for the .13 bit, be incremented well beyond 16.

* I am pretty sure it can happen in ControlLogix (according to Ron Beaufort's bootcamp videos - caveat: IIRC), not so sure about CompactLogix.

And as long as we are on the topic of obscure bugs, I would replace the RESet with a [CLR L_PunchCounter.ACC], because otherwise the RESet, in addition to putting a 0 into the value of L_PunchCounter.ACC], would also assign 0 to the value of L_PunchCounter.EN, which means another falling edge of Local:1:I.RangeActive.13 (i.e. rising edge of [XIC Local:1:I.RangeActive.13] would be detected on the next scan by the CTU on Rung 6, even though the value of Local:1:I.RangeActive.13 did not change.
__________________
i) Take care of the bits, and the bytes will take care of themselves.
ii) There is no software problem that cannot be solved with another layer of indirection.
iii) I solemnly swear that I am up to no good
  Reply With Quote
Old January 14th, 2022, 08:21 PM   #15
drbitboy
Lifetime Supporting Member
United States

drbitboy is offline
 
drbitboy's Avatar
 
Join Date: Dec 2019
Location: Rochester, NY
Posts: 4,229
Quote:
Originally Posted by AutomationTechBrian View Post
...I'm thinking there must be up to 16 different points that are punched per part. ...

Make that fifteen different points: L_PunchCounter.ACC is never left at zero for long; see current Rung 7.
__________________
i) Take care of the bits, and the bytes will take care of themselves.
ii) There is no software problem that cannot be solved with another layer of indirection.
iii) I solemnly swear that I am up to no good
  Reply With Quote
Reply
Jump to Live PLC Question and Answer Forum

Bookmarks


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Topics
Thread Thread Starter Forum Replies Last Post
PowerFlex 525 and CompactLogix - Fault 1 Code from Drive Won't Clear Baker in Virginia LIVE PLC Questions And Answers 4 August 30th, 2017 10:39 PM
CompactLogix L33ER shazad5444 LIVE PLC Questions And Answers 5 October 21st, 2016 10:59 AM
CompactLogix L35E Communication I/O Fault kroony LIVE PLC Questions And Answers 7 September 22nd, 2016 10:40 PM
L33ER major fault kardel.sharpeye LIVE PLC Questions And Answers 2 March 12th, 2014 08:44 PM
FAULT as an instruction in any plc? svk LIVE PLC Questions And Answers 8 October 4th, 2013 12:14 PM


All times are GMT -4. The time now is 12:20 AM.


.