wincc報警聲音怎麼配置(wincc報警器怎麼實現聲音報警)
作者:胡世川 - 西門子數字化工業集團自動化部
客戶經常問到:出現嚴重故障時,能不能自動語音播報訊息文字?因為做不到時時刻刻盯著監控畫面。
So easy!
有視訊有真相
,時長00:14
實驗環境:
- WinCC 7.5 SP2
- Windows10 及 Windows Server 2016/2019
實現思路:
- 實時捕捉WinCC的報警文字
- 呼叫windows自帶的SAPI語音技術介面,播報文字
|
- windows鍵 R,輸入services.msc,開啟windows服務介面
- 啟動Windows的音訊服務
- 在WinCC的“報警記錄”中,對需要語音播報的訊息變數,勾選“觸發動作”,此報警訊息觸發後,會執行GMsgFunction函式。
- 在全域性C指令碼處的GMsgFunction函式裡新增自定義的指令碼(如下藍顏色框),捕捉報警訊息文字,傳遞給內部變數(如下紅顏色框)。修改完後,此函式會自動從左側目錄樹的“Alarm”進入“alarm”下:
.......
MSG_RTDATA_STRUCT mRT;
MSG_CSDATA_STRUCT sM; // holds alarm info
MSG_TEXT_STRUCT tMeld; // holds message text info
CMN_ERROR pError;
memset( &mRT, 0, sizeof( MSG_RTDATA_STRUCT ) );
.......
if(mRT.dwMsgState == MSG_STATE_COME)
{
MSRTGetMsgCSData(mRT.dwMsgNr, &sM, &pError);
MSRTGetMsgText(0, sM.dwTextID[0], &tMeld, &pError);
SetTagBit("alarmComing",TRUE); //置位VBS指令碼觸發器
SetTagChar("alarmText",tMeld.szText); //報警訊息文字
}
- VBS全域性指令碼中呼叫SAPI介面播報訊息文字,此指令碼採用變數觸發(內部變數alarmComing)。
Dim speaker, alarmText
Dim alarmComing
alarmComing=HMIRuntime.Tags("alarmComing").Read
alarmText=HMIRuntime.Tags("alarmText").Read
If alarmComing = 1 Then
Set speaker = CreateObject("SAPI.SpVoice")
speaker.rate = 0 '語速
speaker.volume = 100 ‘音量
speaker.Speak alarmText
HMIRuntime.Tags("alarmComing").write 0
End If
End Function
- 完成組態過程
若採用PC蜂鳴器提醒報警到來,可參考下面連結:
www.ad.siemens.com.cn/service/elearning/course/1791.html
來源:人機常情 WinCC(微信公眾號)