alarm expression aspect for alarm Configuration
we are using abb800xa v5.1 with ac800m Controller
i created a user function block library for the MOtor.
for Motor block we have 10 to 15 alarms.
is it a good programming skills to use the alarm expression aspect in 800xa for the alarm for Configuring the alarm text as per the expression to get the alarm.
and iam not using the ae block in the program.
Voted best answer
Generally alarm expression functionality used when not able to generate alarm from function block or Control module. Good engineering practise is keeping all your logic in Control Builder. Building logic in PPA always secondary option. Because any change change in object path in CBM will effect the functionality of alarm expression and you will not be knowing unless you run consistency check.
If the controller application can be extended with these alarm blocks, that is how you should do it.
Alarm Expressions are really really your last resort (in fact, no resort when you can download custom alarm blocks to an AC 800M).
Alarm Expressions have several drawbacks, here are the major ones:
- Relies on MMS cyclic polls to provide input to the expression (=adds OPC load)
- Can be off in time by several hundreds (maybe even thousands) of milliseconds
- Are subject to raise "Bad quality" system alarms when the application is warm and/or cold started
- Arrives on a different alarm category than the native alarms. Combining more than one category in an alarn or event list is always a challenge (e.g. storage may wrap at different points in time causing premature "end of event history" of one of the categories but not the other)
AlarmCond modules inside the PLC will accurately timestamp exactly when the event occurred. But for really good diagnostics you need lots of AlarmCond modules. 15 modules in One Motor Block doesnt sound like much until you start building 200 motors and then it really starts to become a big problem when 90% of your AlarmCond modules are never triggered and are just taking up memory and CPU time for nothing.
Alarm Expressions inside the Object type move alarm handling out of the expensive PLC and into the cheap Aspect Server. You can write a large number of alarm conditions in a single Aspect and build some very comprehensive diagnostics - But they cannot accurately timestamp when things happened.
Ultimately, you need to decide based on your requirements for the object library you are building. If you want to be able to build a very large number of motors and fit them into the smallest cheapest PLC you can, then yes - you should use Alarm Expressions. On the other hand, if you want accurate time stamping and you are using a bigger CPU, then you should use AlarmCond blocks in the controller.