wincc 语音报警功能实现
Wincc项目
在始终显示的报警控件上,利用列表更新事件获取报警文本,然后利用微软文字转语音功能,自动获取文字利用音响进行报警提示,解决了中控室现场不方便连接报警指示灯的问题。
可设定报警模式 alarmsoundmode 1=一直报警 0=不报警 2=仅一次。
1, 在全局画面放置alarmcontrol控件
报警画面必须保持显示状态,
2, 添加变量
Alarmstring 报警字符
Alarmtimer 报警间隔
alarmsoundmode 1=一直报警 0=不报警 2=仅一次。
3, 设置控件属性为降序排序,使最新的报警优先显示出来
4, 设置alarmcontrol的事件 获取报警内容 可以根据需要填充报警字符串,此处只语音提示第一行的报警
Sub OnMessageListChanged(Byval Item, Byval lMessageCount, Byref strDetails)
Dim count ,str,i,str1
count=item.GetRowCollection.Count
HMIRuntime.Trace " count="&count&vbCrLf
HMIRuntime.Tags("alarmtimer").Write 0 ,1
timer1=HMIRuntime.Tags("alarmtimer").Read(1)
HMIRuntime.Trace " trigeralarmtimer="&timer1&vbCrLf
If count>0 Then
For i = 1 To count
str= item.GetRow(i).CellText(7),'需要根据实际的设定进行修改
HMIRuntime.Trace " row= "&i&" "&str&vbCrLf
If i=1 Then
str1="共"&count&"项报警 "&str
End If
Next
HMIRuntime.Tags("alarmstring").Write str1
End If
End Sub
5, 添加模式按钮 可以更改模式

image.png
Sub OnClick(Byval Item)
Dim mode
'alarmsoundmode 1=一直报警 0=不报警 2=仅一次。
mode=HMIRuntime.Tags("alarmsoundmode").Read
mode=mode+1
If mode=3 Then
mode=0
End If
HMIRuntime.Tags("alarmsoundmode").Write mode
End Sub
6, 利用 模式按钮的文字事件一秒更新一次将报警内容转成语音
Function Text_Trigger(Byval Item)
Dim mode ,time1 ,timer1
Dim speaker, alarmText,remainder
'alarmsoundmode 1=一直报警 0=不报警 2=仅一次。
mode=HMIRuntime.Tags("alarmsoundmode").Read
timer1=HMIRuntime.Tags("alarmtimer").Read(1)
remainder= Timer Mod 10 '报警间隔可以自行设定
HMIRuntime.Trace " alarmtimer= "&" "&timer1&vbCrLf
Select Case mode
Case 0
Item.Text= "禁止报警"
timer1=0
Case 1
Item.Text= "一直报警"&vbCrLf&remainder
timer1=timer1+1
Case 2
Item.Text= "一次报警"&vbCrLf&remainder
timer1=timer1+1
Case Else
Item.Text= "错误选择"
timer1=0
End Select
HMIRuntime.Trace " mode= "&mode&vbCrLf
If ( mode=2 And timer1=1) Or (mode=1 And remainder=1) Then
alarmText=HMIRuntime.Tags("alarmstring").Read
HMIRuntime.Trace " alarmstringSAPI= "&timer1&" "&alarmText&vbCrLf
If alarmText<>"" Then
'使用的发音库可在控制面板->语音识别->文本到语音转换 里面设置
'objVoice.Voice 设置语音库
'objVoice.GetVoices 获取语音库
Set speaker = CreateObject("SAPI.SpVoice")
speaker.rate = 0 '语速 -10~10
speaker.volume = 100 '音量 0-100
speaker.Speak alarmText
Set speaker = Nothing
End If
End If
HMIRuntime.Tags("alarmtimer").Write timer1,1
End Function
版权声明:
作者:dingding
链接:https://www.techfm.club/p/205531.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论