L-75 Processor Major Fault

prakasha

Member
Join Date
Dec 2022
Location
Davangere, Karnataka, India
Posts
75
Hi Guys

Today we went through the worst situation that PLC went to major fault Mode due to Trap by one of the Timer with -ve Value Moved into Preset.

What is the best way to prevent or avoid this kind of acts while implement or developing the program. I know there is option Fault Handler Program can be written but is it possible to prevent plc being trapped by loop by writing the program in fault handler. How can we avoid this kind errors while developing the program. Plz advice me to come out from this

WhatsApp Image 2023-05-24 at 9.43.31 PM.jpeg
 
Last edited:
It is difficult to prevent bad programming. I've used this type of logic to create faults when I was trying to demonstrate faults, but not something I would have in an actual running application. The timer won't allow you to type in a negative number, so somewhere a negative value is being written to the timer. And there is really no way to prevent that.

Sometimes this can happen when using an HMI. If an operator accidentally writes a negative number directly to a timer preset. Ideally you would write to a separate DINT tag where you could test to see if the value falls within an acceptable range.

Since I cannot prevent this, I would add either a Fault Routine or use the Controller Fault Handler. You can add logic (GSV instruction) there to capture the fault code and if the code matches the one you are getting, you can trigger logic (SSV instruction) to clear the fault. But even if you do this, it doesn't fix that there is still a negative number in the timer preset. And of course that can cause problems with the process.

So as a general policy, don't allow HMIs to write directly to timer presets. If you have presets that should never change, you can add logic to move the setpoint into the preset.

OG

Validate HMI Setpoint.png
 
Last edited:
You could try validating the PRE/ACC values just prior to the timer call:
Code:
GEQ Timer.PRE 0 GEQ Timer.ACC 0 TON
Setting the TIMER tag's external access to Read Only can prevent something like an HMI from changing these values.
 
Last edited:
I normally use if Value < 0 then MOV 0 to Value before sending any Value to a Timer.PRE. I have sometimes used ABS (absolute)Value to Value to eliminate any potential negative and keep a value. If possible, HMI value entry should limit entry to above zero in the HMI application. Even if there’s no way to get a negative through normal operation, I still want to protect against any fat-finger from someone working online.

You could get fancier and add another register, confirm good value, revert and alert if bad, and then send to .PRE if good.
 

Similar Topics

I have a SLC 5/05 processor with a Major Fault 1F39h. The processor is running fine with the fault, but I would like to know what is causing it? I...
Replies
13
Views
3,805
Hi, Is it possible to for an RIO with Flex 5000 series module, e.g. 5094-AEN2TR, to communicate with an 1756-L72E processor.
Replies
1
Views
92
Is there anything I Should take into account while updating the firmware on a safety processor? I have a 1756-L61S running version 17 and need...
Replies
0
Views
103
Hello all, I have been experiencing dropping network connections on the Co Pro quite a bit, 3 times a month. The remedy that we do to bring the...
Replies
11
Views
755
I have an application where I will be using two PanelView Plus 7s to run two machines that share a common processor. The machines are identical...
Replies
1
Views
401
Back
Top Bottom