You are on page 1of 4

How to play a sound file triggered by an Alarm

29298 | Date Created: 09/23/2004 | Last Updated: 05/30/2015


Access Level: TechConnect

Question

 How to play a user specified sound file triggered by an Alarm?


 How to play sound when alarm occurs in FactoryTalk View SE v 6.0, 6.10, 7.00, 8.00 on Windows
Server 2008, Windows Vista or Windows 7 Professional?

Background

RSView SE does not support RSMessenger at this time, and playing a specific wave file based on a
specific alarmed tag’s alarmed status is not handled by native RSView SE functions.

However, an ActiveX control is available to implement this feature, documented in 7779 - How to play a
sound file triggered by an Alarm.

According to 122207 - FactoryTalk View SE - Internal bell does not sound when HMI alarm is
triggered internal bell does not work in environment FactoryTalk View SE v 6.0, 6.10, 7.00, 8.00 on
Windows Server 2008, Windows Vista or Windows 7 Professional therefore it is necessary to use
workaround.

Solution

This note shows one how to configure an HMI Server so that one can fire a wave file on an SE client PC
via an individual or set of tags alarmed status.

One can set this up by taking advantage of an Event, by using a startup macro, and by silently running a
client display screen that takes advantage of some VBA code bound to a numeric display object. This
example will show how to play a wave file called TAG1isALARMED.WAV, a wave file that we have
created or copied to Client PC's " C:\ " for this purpose. In this example we want to play the
TAG1isALARMED.WAV on a remote client, when a basic alarmed tag, we'll call it TAG1, goes into alarm.

1. In your SE application, create a digital memory tag, named TAG1_TRIGGER.

2. In your SE application, create an Event and save it as an event file. We'll start it in a client
startup macro later. We'll use two rows in our event to toggle the trigger back and forth.

We could have also used other Alarm Acknowledgment conditions, if the application called for
it.

EXPRESSION: alm_in_alarm ( TAG1 ) ACTION: &Set TAG1_TRIGGER 1


EXPRESSION: NOT(alm_in_alarm ( TAG1 )) ACTION: &Set TAG1_TRIGGER 0

Note that if all we had were digital alarms, then TAG1_TRIGGER and TAG1 could be replaced by
just TAG1 instead, but this example, as is, applies to an analog tag too.

Also note that we can use wildcards in the expression syntax, to monitor of group of alarmed
tags.
3. Be sure to start this Event by setting it up appropriately in a startup macro or in the HMI server's
components setup.

4. Create an HMI Display screen, called MONITOR_CLIENT_1.


On it, drop a numeric display for TAG1_TRIGGER.
Right click on the object, and select VBA. Edit it to be:

Private Sub NumericDisplay1_Change()


If NumericDisplay1.value = 1 Then
ExecuteCommand "Playwave C:\TAG1isALARMED.WAV"
End If
End Sub

To play the file WAV more than one time, you can use this code:

Private Sub NumericDisplay1_Change()

If NumericDisplay1.Value = 1 Then

For x = 1 To 10
If NumericDisplay1.Value = 1 Then
ExecuteCommand "Playwave C:\TAG1isALARMED.WAV"
Else
'Exit from loop
Exit For
End If
Next x
End If
End Sub

5. In the startup macro of the Test Client, insert the Display MONITOR_CLIENT_1 /ZA
command. This will run the display screen and enable VBA monitoring of our TAG1_TRIGGER
Tag, which we are Event monitoring. This can fire off the WAV file locally.

6. On the test client’s PC, copy the file TAG1isALARMED.WAV to c:\. This will be the file played
when TAG1 goes into alarm. The user may want to decide which wave files he would like played
per alarmed tag, and organize those files on the client PC accordingly in advance.

7. Test the HMI client under an alarmed state to be sure that native computer wave file playback is
functional.

Caution

Running more than one SE Client instance on a computer and issuing the 'PlayWave' commands may
cause them to get queued up which will affect the display screen callup times - which over time will
become slower and slower. VBA code. or other method should be used to allow only one of the
instances of the SE Client to run the PlayWave commands.

NOTE: With FactoryTalk Alarms and Events, an Alarm Banner object can play a sound. See 60568-
Playing a sound file triggered by a FactoryTalk Alarm and Events alarm for details.

Comments (1)
 Mr.Ric
09/11/2013 12:17 PM [Edited]

Because VBA in the project is single threaded, if you are using any other VBA (such as for
navigation or Display_AnimationStart), the above "To play the file WAV more than one time..."
will not work. Here is a better way:

1. Create 8 HMI Digital Device Tags (not memory tags) called "SevTrig1" to "SevTrig8".

2. Create 8 HMI String Memory Tags called "SevSound1" to "SevSound8" (retentive) and set
initial value to your your wav files including full path (Ex: C:\AlmSound\Sound.wav)

3. In the Alarm Setup / Severities tab: Place "SevTrig#" tags in External Bell for Severity 1 thru 8.

4. Create an HMI Screen (that will be hidden with /ZA).


On this screen create 8 rows (1 per severity):
Severity 1 = # sssssssssssssssssssssssssssssssssssssss
where:
* "Severity 1 =" is text with Color Animation using tag "SevTrig1"
* "#" is a NumericDisplay named "SeverityInd1" (ExposeToVBA = "VBA Control") with the below
expression (step 5) and VBA code (step 6).
* "ssss..." is StringDisplay named "SevSndFile1" (ExposeToVBA = "Type Info Extension")
with Expression: "SevSound1"
Duplicate this line for 2 through 8.

5. In the NumericDisplay Properties / Expression, place the following expression (adjust for 2-7):

* SeverityInd1 Expression:
IF system\AlarmSummaryItemsUnacked == 0 THEN 0
ELSE IF SevTrig1 AND interval( "5 Sec" ) THEN 1
ELSE 0

* SeverityInd8 Expression:
IF system\AlarmSummaryItemsUnacked == 0 THEN 0
ELSE IF SevTrig1 THEN 0
ELSE IF SevTrig2 THEN 0
ELSE IF SevTrig3 THEN 0
ELSE IF SevTrig4 THEN 0
ELSE IF SevTrig5 THEN 0
ELSE IF SevTrig6 THEN 0
ELSE IF SevTrig7 THEN 0
ELSE IF SevTrig8 AND interval( "5 Sec" ) THEN 1
ELSE 0

6. For NumericDisplay "SeverityInd1" thru "SeverityInd8", place the following in VBA:

Sub SeverityInd1_Change()
On Error Goto Exit_Err
If SeverityInd1.Value = 1 Then
DisplayClient.Application.ExecuteCommand "PlayWave " & ThisDisplay.SevSndFile1.Value
End if
Exit_Err:
End Sub

By following this pattern, the individual playwave above will then fire once every five seconds
only for the most important severity active. That will allow other VBA code to run during page
changes, etc.

In my system this hidden page is called "AlmHornCtrl". I also have a page "AlmHornSelect" that
allows adjustment of the sound files used during runtime (use either VBA or StringInput).

Ric Walker, Automation & Electronics, Inc. , Casper, WY

Reply | Flag as Inappropriate |

 Post a Comment

Was this helpful?

Email this page


Print
Subscribe to Updates

DISCLAIMER

This knowledge base web site is intended to provide general technical information on a particular
subject or subjects and is not an exhaustive treatment of such subjects. Accordingly, the information in
this web site is not intended to constitute application, design, software or other professional
engineering advice or services. Before making any decision or taking any action, which might affect your
equipment, you should consult a qualified professional advisor.

ROCKWELL AUTOMATION DOES NOT WARRANT THE COMPLETENESS, TIMELINESS OR ACCURACY OF


ANY OF THE DATA CONTAINED IN THIS WEB SITE AND MAY MAKE CHANGES THERETO AT ANY TIME IN
ITS SOLE DISCRETION WITHOUT NOTICE. FURTHER, ALL INFORMATION CONVEYED HEREBY IS PROVIDED
TO USERS "AS IS." IN NO EVENT SHALL ROCKWELL BE LIABLE FOR ANY DAMAGES OF ANY KIND
INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS PROFIT OR DAMAGE, EVEN IF
ROCKWELL AUTOMATION HAVE BEEN ADVISED ON THE POSSIBILITY OF SUCH DAMAGES.

ROCKWELL AUTOMATION DISCLAIMS ALL WARRANTIES WHETHER EXPRESSED OR IMPLIED IN RESPECT


OF THE INFORMATION (INCLUDING SOFTWARE) PROVIDED HEREBY, INCLUDING THE IMPLIED
WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, AND NON-INFRINGEMENT.
Note that certain jurisdictions do not countenance the exclusion of implied warranties; thus, this
disclaimer may not apply to you.

You might also like