I'm having issues with my alarms not showing the cause of the alarm. Sometimes it works other times it doesn't. I can't figure out why.
In RSLogix I use ALMD blocks like below. If the speed of a conveyor is out of tolerance a bit turns on and copies the Description of the alarm (CKG_StateAlrmDescList[16]) to the tag that is used in the ALMD block (CKG_StateAlrmDescList[7]).
In the Alarm block it takes that description that was just copied in to (CKG_StateAlrmDescList[7]) and creates an alarm with it.
In Ignition, i have an alarm tag setup for the Speed Tolerance and when its active it creates the alarm and copies the description from the tag into the label so the alarm is labeled correctly. This is where my issue is, it doesn't always have the description information in the alarm like it's supposed to.
Sometimes it works correctly, see below screenshot of alarm at (9/30/24 - 7:00:34). Then other times it just shows the main alarm tag with a blank description like at (9/30/24 - 8:56:13).
I know it's not copying a blank description because in my RSView studio project it shows the description of the alarm that happened at that time like it's supposed to but in ignition its blank.
This happens intermittently for all my alarm tags that are setup the same as this one. Any help would be great.
Ignition's native driver cannot access Logix alarm descriptions--Rockwell keeps that ability proprietary. If you can access them at all, it would be through RSLinx's OPC server. And if so, then your are at its mercy.
Note that Ignition only shows OPC item descriptions in the OPC browser. They are not transferred when creating OPC tags.
Using Rockwell's built-in PLC alarming functionality is a form of vendor lock-in.
Yeah, I understand that part. I have two tags in Ignition, one that reads the .InAlarm bit of that ALMD block and another that reads the Description (CKG_StateAlrmDescList[7]).
For that .InAlarm bit to be on, one of the bits in front of it has to be on and that copies the description of the alarm from tag (CKG_StateAlrmDescList[16]) to the (CKG_StateAlrmDescList[7]) and then the tag (CKG_OVN_SpdCntl_Alrm.InAlarm) bit comes on to trigger the alarm in Ignition.
The part that isn't working is that sometimes Ignition creates the Alarm, but the label is missing the description of the alarm that was copied to it.
I'm going to add a bit in parallel with the ALMD block and make that turn my ignition alarm on, that should eliminate the ALMD function all together.
Also, if I create an alarm and its active, and I change what is copied into the label will it change in the alarm status table? That may be what's happening if it can.
No. Alarm ancillary data is a snapshot of the values at the time of the alarm event. If you want to be sure the label matches, it has to arrive before the alarm bit. There's no way in OPC to control order of value delivery, so you are probably [expletive]ed.
I doubt you'll ever be happy with ALMA/ALMD with a non-Rockwell SCADA system. Consider managing alarms entirely in the PLC, or entirely in Ignition. Trying to do both is madness.
Ok good, that eliminates that part of the equation. I'm not using the ALMD blocks on purpose, they're part of the existing project that I'm replacing with Ignition. I'm comparing my alarm table in Ignition to the one that's in RSView Studio to make sure i haven't left out any alarms and that's when i started noticing the blank alarm labels.
Managing alarms in either the PLC or Ignition is a good idea but I'm not sure how that works with this project. I need to figure that out though, because when i acknowledge alarms in Ignition i need to turn on some acknowledge bits in the PLC as well because that's what clears my alarm message tags.
There's not an easy way for the acknowledge alarms button on the status screen to toggle PLC tags is there? I think i ran into that issue on another project and had to create my own acknowledge button.
In my book, that would be "managing alarms in the PLC". If Ignition is managing the alarms, there shouldn't be any alarm message tags containing description strings in the PLC. Define strings in Ignition, where they can be maintained and localized.
Yeah, i think thats what I'm going to do. These alarms have been driving me crazy for long enough. Thanks for your help.
1 Like
I should say, same thing for acknowledgements and shelving. If you are going to use Ignition's alarming system, there should not be any code in the PLC for acknowledgements or shelving. Just the simplest ladder to produce the absolute alarm states needed within the process.
2 Likes