WINCC文本語(yǔ)音報(bào)警與一鍵消音功能實(shí)現(xiàn)
- 1. 全局腳本
- 2. 報(bào)警器
- 3. 區(qū)分語(yǔ)音報(bào)警和普通報(bào)警
1. 全局腳本
然后需要找到將導(dǎo)出的聲音文件用文本命名加以區(qū)分,比如煤氣濃度高報(bào)警,煤氣濃度高高報(bào)警。不可以有特殊符號(hào),可以用英文。
打開(kāi)WINCC項(xiàng)目,新建內(nèi)部變量。
如果報(bào)警時(shí)AZT_1001.H表示煤氣濃度高報(bào)警,那么建立一個(gè)煤氣高報(bào)警狀態(tài)位ALARM_SOUND_AZT1001H,使用這個(gè)狀態(tài)位來(lái)觸發(fā)語(yǔ)音(因?yàn)閳?bào)警消失的時(shí)間不確定,使用一鍵消音就必須做一個(gè)狀態(tài)位)。同時(shí)還需要建立一個(gè)全局消音內(nèi)部變量ALARMSOUND_ALL用來(lái)連接一鍵消音。
打開(kāi)WINCC項(xiàng)目文件,新建全局腳本。
#include "apdefap.h" int gscAction( void ) { #pragma code("Winmm.dll") void WINAPI PlaySoundA(char* pszSound ,char* hmode,DWORD dwFlag); #pragma code() if(!GetTagBit("AZT_1001.H"))// 煤氣濃度高報(bào)警 { SetTagBit("ALARM_SOUND_AZT1001H",0); } if(GetTagBit("ALARMSOUND_ALL")&&GetTagBit("AZT_1001.H")) { SetTagBit("ALARM_SOUND_AZT1001H",1); } //聲音播報(bào) if(GetTagBit("AZT_1001.H")&&!GetTagBit("ALARM_SOUND_AZT1001H")) { PlaySoundA("C:\\alarmsound\\煤氣濃度高報(bào)警.wav", NULL, 1); } SetTagBit("ALARMSOUND_ALL",0); return 0; }
最后在C盤(pán)下面新建一個(gè)文件夾“alarmsound”,然后將語(yǔ)音文件全部放到該文件夾中。然后再畫(huà)面中建立一個(gè)按鈕,連接一鍵消音按鈕ALARMSOUND_ALL,設(shè)置鼠標(biāo),事件,按下置1即可。
上述方法適合程序沒(méi)有中沒(méi)有報(bào)警狀態(tài)變量,如果有的話(huà)可以直接使用報(bào)警器更方便。
2. 報(bào)警器
報(bào)警狀態(tài)位與報(bào)警并不是一個(gè)變量,報(bào)警是現(xiàn)場(chǎng)決定的,我們不可以人為復(fù)位掉,因此控制報(bào)警語(yǔ)音必須要建立一個(gè)與報(bào)警對(duì)應(yīng)的報(bào)警狀態(tài)位。
如果再程序中建立了一個(gè)可以復(fù)位的報(bào)警狀態(tài)位,那么可以直接將該變量導(dǎo)入到“報(bào)警記錄——報(bào)警器——信號(hào)分配——變量”中去,然后后面聲音的文件路徑取決于語(yǔ)音文件存放的位置。
3. 區(qū)分語(yǔ)音報(bào)警和普通報(bào)警
在報(bào)警控件中需要區(qū)分語(yǔ)音報(bào)警于普通報(bào)警,這樣就需要更改報(bào)警控件中文本的顏色和填充顏色:
可以在顏色的位置修改顏色。