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(微信公眾號)