Terry Posted October 12, 2021 Share Posted October 12, 2021 New at this. I was surprised and disappointed that DAQF does not include an alarm banner on the operating screen showing all active alarms. What is typically done to allow easy access to alarm information to the operator? Thanks, Terry Quote Link to comment Share on other sites More sharing options...
AzeoTech Posted October 12, 2021 Share Posted October 12, 2021 This is because everyone seems to want something different. So instead of a lot of high level built in controls, we give access to allow you to create exactly what you want. The next step, hopefully coming soon, is the ability to create your own sort of modules, so stay tuned on that. But as to alarm info, it depends on whether you want to display the status of all alarms at once (usually for smaller alarm counts), or a running list of active alarms as they occur. These are, at least, the two most common. You may want something different. Quote Link to comment Share on other sites More sharing options...
Terry Posted October 12, 2021 Author Share Posted October 12, 2021 So how would I do the running list? Quote Link to comment Share on other sites More sharing options...
AzeoTech Posted October 12, 2021 Share Posted October 12, 2021 Probably the best way is to create a sequence function for each possible alarm status, i.e. fire, reset, and ack. So, for example, AlarmFire. You'd need to create a global string variable declared in a startup sequence, for example: global string alarmStatus Alternatively, you could create a String Test channel with the same name. Then, create a sequence called alarmFired: function alarmFired(string desc) alarmStatus.addValue("FIRED: " + desc) Do the same for alarmReset, and alarmAck if desired. Next, in each alarm, go to the Fire Event and put: alarmFired(strDescription) In the ResetEvent put: alarmReset(strDescription) and likewise for the Ack event if desired. Finally, you can use a table component to display the alarmStatus variable. You probably want to have the first column be time. That expression would be: formatdateTime("%c", getTime(alarmStatus)) while the second column would just be: alarmStatus Finally, you'll need to set the Description field for each alarm based on what you how you want it described in that table. It might seem a little cumbersome at first, but it will give you A LOT of flexibility. For example, you could, down the road, add email alerts, or handle a stack light or horn without minimal changes. That said, I might actually pass a few other items to the alarmFired/Reset/Ack functions, so: function alarmFired(string desc, priority, string help) Then the Fired event would be: alarmFired(strDescription, Priority, strHelp) You don't have to use priority or help, but at least it is being passed in so if you need it down the road it is already there. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.