Contrologix Alarming

jgunnels

Member
Join Date
Jun 2010
Location
Vancouver Washington
Posts
24
It has been awhile since I posted a question... Thanks again for the help in the past.

I have the need to set a bit true if any of 100 INT'S values are greater then 0, basically like a global alarm. How would I go about doing this?
I really don't want to have to do a Greater then for each INT so I was hoping someone has a better Idea.

Tag Properties....... DISCRETE_ALM and the data type is INT[100]

Thanks
 
It has been awhile since I posted a question... Thanks again for the help in the past.

I have the need to set a bit true if any of 100 INT'S values are greater then 0, basically like a global alarm. How would I go about doing this?
I really don't want to have to do a Greater then for each INT so I was hoping someone has a better Idea.

Tag Properties....... DISCRETE_ALM and the data type is INT[100]

Thanks

I'm super stoned right now, but.

pointer:= 0
While pointer < 98 Do
If DISCRETE_ALM[pointer] <> 0 Then
GlobalAlarm:= True;
Break;
Else
Pointer:= pointer + 1;
End_While;
 
ytg2klP.jpg


That's the best I've got. All of the complexity should compile out.
 
Why not add up all of the individual integers into a total integer. If total integer >0 then alarm.
 
Depending on the application, YMMV...

The loop does not increment once the alarm happens, so you'll know which INT raised the alarm:

Capture.jpg
 
That's the best I've got. All of the complexity should compile out.

You actually don't need the test for equality. If any array element is not zero, XOR will result in a value greater than zero, which evaluates the expression as true.

That said, if you have any multiple of two INTs of identical, simultaneous coolness, the expression evaluates as false. No alarm!

That said, its execution time appears to be 83us versus my 53us (worst case on an L33ER).
 
Last edited:
The FSC is really the best solution as dmroeder mentioned. It is built to do exactly what you are asking. The FAL solution above can certainly work too, but it involves copying the data and then looking at the copy. The FSC is looking at the data without having to copy it to a temporary location. The FSC can work in ALL mode where the FAL really has to be in INCREMENTAL to work for this. The FAL has to execute over a period of 100 scans to completely test for all alarms. Technically, 200 scans the way it is written as it must see a FALSE-TRUE transition in order to transition to the next value. Although I can't see how the subroutine is being called. ALL mode does all 100 in one scan.

In my example it stops at the first location that is greater than 0. You can see I highlighted that element #10 has a value of "1". All other tags had a "0". Rungs 4 & 5 are just to let me know I had an alarm and where.

OG

FSC.jpg
 
Last edited:

Similar Topics

Can anyone confirm that using contrologix 5580 controller is not possible to work with powerflex 527? It's been a couple of days now that i am...
Replies
8
Views
1,188
Hello, I have a flow control PID that keeps locking up. It seems to control fine but after a while the output no longer moves. For instance...
Replies
4
Views
964
Hi everyone, I can't add any modules to the Controllogix backplane and it doesn't matter online or offline. Both is not working. Please see the...
Replies
13
Views
2,988
Hello, I have a question regarding the possibility of using messages instructions to communicate between: PLC5/80E Series D - CE Water Mark...
Replies
12
Views
3,059
I have a customer who wants to control his DCS800 drives via Ethernet, so I have bought two RETA-01 cards. At the moment they are connected via...
Replies
1
Views
996
Back
Top Bottom