Wonderware Intouch Alarms

Apollas

Member
Join Date
Nov 2013
Location
city
Posts
22
Hello,

I have an issue with the analog alarm configuration. I think I kind of found a solution, but I'm still wondering if there's a better way to do it.

Here's the situation... Before I had been using two separate tags: 1 motor_status tag(I/O Integer) and 1 alarm trigger tag (Memory Discrete). If motor_status is equal to 8 OR 18, I set the alarm trigger.

Code:
IF M1_status == 8 OR M1_status == 18 THEN        { M1 fault }
    Alarm_Motor1 = 1;
ELSE
    Alarm_Motor1 = 0;
ENDIF;
But it was just an awful waste of Intouch tags... So, I decided to redo it with just 1 motor_status tag(I/O Integer). The problem is that I need to set the alarm from 2 values: 8 and 18. I have to use High and HiHi Intouch alarm values, but then it will trigger an alarm if motor_status value is higher than 7..

I've changed that little piece of code:

Code:
IF M1_status == 8 OR M1_status == 18 THEN        { M1 fault }
   { Alarm_Motor1 = 1;}
M1_status.AlarmDisabled = 0;
ELSE
   { Alarm_Motor1 = 0;}
M1_status.AlarmDisabled = 1;
ENDIF;
Now, everything seems to be OK, but still it doesn't look like the best solution to my issue. I'd like to set the alarm properly without having to disable the alarm manually in the script. Also, I don't want to change motor_status logic.

Maybe someone already had similar issue and found a different solution. Any recommendations or tips are valuable .

Regards,
Giedrius K.

alarm settings.PNG
 
I suppose this just proves that there are a million and one different ways to accomplish any given task. I have never before heard of someone attempting to use an analog alarm in InTouch to convey discrete alarm status. This is obviously not how the developers intended for the analog alarms to be used.

Why are you so concerned about simply creating discrete tags to display discrete alarm status? Are you trying to keep the application small enough to run with a limited database license?

I've often seen analog tags used to display motor status on an HMI, and I've often employed that scheme myself, but I've never attempted to have specific discrete motor alarms indicated by a numerical value in a motor status register. What I have typically done in InTouch with motor status registers is to expand the range of color states available by using a modulo divide to determine whether the motor status register holds an odd or even number and then referencing that result on the object's blink attribute. I can then have a flashing and non-flashing state for each color. For instance, a "0" triggers a solid red colorfill for "motor off", while a "1" triggers a flashing red colorfill for "motor timing to stop" in a group start system. Likewise, a "2" triggers a solid green colorfill for "motor on", while a "3" triggers a flashing green colorfill for "warning horn sounding - motor timing to start".

I'm sorry to say that I can't imagine a more elegant method for you to employ this scheme that you have created. Best of luck in finding someone here who can.
 
You do not really need to set a High and HiHi alarm at all, and this will not really work if you are only interested in 8 and 18.
Alarm_Motor1 is your Alarm tag, and it is already configured to be on if Motor = 8 or 18. If it is under an "Alarm" group then it will show up in your Alarm page where you have the Alarm screen that shows the "Alarm" group.

Do you have an window to show Alarms? Are you using an Active X Alarm wizard in the window? I use the "Distributed Alarms" wizard for current alarms and an "AlmDbViewCtrl1" wizard for the history. They are configured for red in alarm, yellow when ack, and green when return.
 
Yes, I'm trying to keep the application small enough to run with a limited database license. That's the main reason, otherwise I wouldn't care.

Bit_Bucket_07, I'm using almost the same logic as you described with motor_status, but I've included alarms into that as well. I just want to get the maximum results and to save tags as well.

NetNathan, I know how to show alarms and I can see them. My question was a bit different.. It's was about an alarm triggering straight from the I/O Integer (depending on its value) without using an intermediate Memory Discrete tag.
 
Yes, I'm trying to keep the application small enough to run with a limited database license. That's the main reason, otherwise I wouldn't care.

Bit_Bucket_07, I'm using almost the same logic as you described with motor_status, but I've included alarms into that as well. I just want to get the maximum results and to save tags as well.

NetNathan, I know how to show alarms and I can see them. My question was a bit different.. It's was about an alarm triggering straight from the I/O Integer (depending on its value) without using an intermediate Memory Discrete tag.


In that case, have you considered abandoning the InTouch alarm system altogether and writing alarm handling logic in your PLC program? That is how we had to do it back in the days when we had no PC based HMIs and the most high tech operator interface for alarm messages was a canned message center.

You'd need to write logic to detect a new alarm, in order to trigger an annunciator, acknowledge new alarms in order to silence the annunciator, and create a FIFO stack to store alarm numbers and allow the operator to scroll through them. If you wanted to get more complex, you could also write logic to differentiate between acknowledged and unacknowledged alarms.

This would allow you to create a single Memory Message tag for alarm display and then write a script to vary the text based upon the alarm number in an IO Integer tag whose value is set within the PLC logic.
 
I agree that it's possible to do it on the PLC side, but then I think it'd be too sophisticated and not flexible.

There's always n + 1 ways to do it, it depends on your creativity.

I think I'll stick to the method described in my first post. I just need to test it better. No one will care how it's done, as long as it's working :)
 
I agree that it's possible to do it on the PLC side, but then I think it'd be too sophisticated and not flexible.

There's always n + 1 ways to do it, it depends on your creativity.

I think I'll stick to the method described in my first post. I just need to test it better. No one will care how it's done, as long as it's working :)
???? !!!!!!

Too sophisticated and not flexible?
You use one tag in InTouch for your motor alarm.
In the PLC you OR together the conditions to trigger it.

How is that sophisticated and inflexible?
 
I think it gets too complicated when you have to display those alarms in the AlmDbViewCtrl.

When there is an active alarm in the PLC and you want just to blink/show/etc something in Intouch - it's totalyl fine, I agree with Bit_Bucket_07 and I'm using it in other cases myself. But if you have to trigger an alarm and then display it in the AlmDbViewCtrl, then it becomes sophisticated. If you have couple of alarms it's OK, but what if you have plenty of alarms to display? Then you'll need a lot of Memory Message tags...
 
I think it gets too complicated when you have to display those alarms in the AlmDbViewCtrl.


Why do you have to display alarms in the AlmDbViewCtrl? If this is a small enough app to use a limited database, then I wouldn't expect you to even have very many alarms. If it is a large app, then you should simply spend the money to do it right with a larger DB InTouch license.
 
I'm using AlmDbViewCtrl, because it's a built-in add-on, easy to use and you don't have to invent a bicycle again by yourself. Saves lots of time and effort.

You can always upgrade Intouch RT license, but what if you really don't need it and you can easily find another way how to deal with it.

For example, you have a 500 tag license and you are using ~50 Memory Dicrete tags for various equipment alarms. With such design you get 510 tags in total and you need to upgrade your license. But what if you can easily save those 50 alarm tags? Then you can fit into 50 0tag license and everyone is happy. Saving 10% of tags is a lot I think, having in mind that you didn't have to do anything extraordinary. That's what I'm trying to achieve.
 
With my limitations knowledge,

just read the manual (HMI Scripting and Logic),

as long you use the ANALOG/DISCRETE, WWI will calculate your license tag,
 

Similar Topics

For those familiar with Wonderware, I'm trying to embed a list of all inhibited alarms into an intouch app. I want it to look similar to the built...
Replies
6
Views
5,227
Hi all We are on a critical path of commission a system we are working on with InTouch Scada system. We have three nodes, one development and two...
Replies
1
Views
5,897
Hi guys, I have experience with PLC to Excel etc...just starting on using intouch scada screens. I have an Excel sheet that uses mainly...
Replies
1
Views
121
Hola chicos. Tengo un problema con el driver de comucicacion dasabcip 5, y un plc controllogix v34, ya realice la comunicacion pero en ciertos...
Replies
2
Views
141
Hi, I am upgrading a Wonderware SCADA form version 9.5 to version 23. I am able to migrate all the graphic, but when to activate the runtime this...
Replies
8
Views
388
Back
Top Bottom