孫文杰 張志勇 馬志出 王銀龍
摘要:WinCC安裝了Horn報(bào)警組件后,可以通過(guò)組態(tài)實(shí)現(xiàn)語(yǔ)音報(bào)警功能,實(shí)際應(yīng)用中為提高WinCC運(yùn)行性能往往不安裝Horn組件。為實(shí)現(xiàn)語(yǔ)音報(bào)警功能,可以在全局腳本中使用C語(yǔ)言調(diào)用Windows函數(shù)來(lái)實(shí)現(xiàn),驅(qū)動(dòng)蜂鳴器或播放器輸出指定音頻。文章對(duì)C語(yǔ)言在WinCC監(jiān)視系統(tǒng)語(yǔ)音報(bào)警中的應(yīng)用進(jìn)行了探討。
關(guān)鍵詞:Wincc監(jiān)視系統(tǒng);語(yǔ)音報(bào)警;Horn報(bào)警組件;腳本;C語(yǔ)言 文獻(xiàn)標(biāo)識(shí)碼:A
中圖分類(lèi)號(hào):TP273 文章編號(hào):1009-2374(2017)08-0071-02 DOI:10.13535/j.cnki.11-4406/n.2017.08.034
WinCC是SIEMENS推出的運(yùn)行于Windows操作系統(tǒng)的HMI/SCADA系統(tǒng)。作為全集成自動(dòng)化系統(tǒng)的重要組成部分,該系統(tǒng)憑借集成方便、功能強(qiáng)大等優(yōu)點(diǎn)在工業(yè)、農(nóng)業(yè)等自動(dòng)化領(lǐng)域中得到廣泛應(yīng)用。生產(chǎn)過(guò)程中如發(fā)生異常狀況,SCADA系統(tǒng)應(yīng)在第一時(shí)間以語(yǔ)音、圖像等多種方式通知現(xiàn)場(chǎng)人員進(jìn)行故障處理。WinCC的Horn組件可以通過(guò)組態(tài)配置來(lái)實(shí)現(xiàn)語(yǔ)音報(bào)警功能,但會(huì)降低WINCC的運(yùn)行效率,本文介紹了一種借助腳本程序來(lái)實(shí)現(xiàn)語(yǔ)音報(bào)警功能的Wincc報(bào)警應(yīng)用。
1 語(yǔ)音報(bào)警實(shí)現(xiàn)原理
WinCC本身不具備發(fā)出語(yǔ)音的功能,也沒(méi)有提供處理聲音的相關(guān)函數(shù),但鑒于可以與操作系統(tǒng)完美結(jié)合的優(yōu)點(diǎn),我們可以通過(guò)在全局腳本使用C語(yǔ)言調(diào)用Windows的API函數(shù)來(lái)實(shí)現(xiàn)語(yǔ)音報(bào)警功能。
WinCC可以與PLC控制系統(tǒng)進(jìn)行實(shí)時(shí)數(shù)據(jù)通訊。當(dāng)生產(chǎn)過(guò)程出現(xiàn)異常時(shí),WinCC可以及時(shí)準(zhǔn)確地獲取到PLC控制系統(tǒng)中的故障或異常代碼,隨后觸發(fā)全局腳本執(zhí)行特定程序,進(jìn)而調(diào)用Windows系統(tǒng)API函數(shù),驅(qū)動(dòng)計(jì)算機(jī)聲卡和音箱實(shí)現(xiàn)語(yǔ)言報(bào)警,如圖1所示:
2 語(yǔ)音報(bào)警的實(shí)現(xiàn)
當(dāng)我們對(duì)WinCC組態(tài)了消息歸檔(報(bào)警歸檔)后,在某報(bào)警事件發(fā)生時(shí),就會(huì)觸發(fā)相應(yīng)的消息變量。如果在全局腳本中設(shè)定合適的觸發(fā)器,就可以通過(guò)在全局腳本中編寫(xiě)執(zhí)行C語(yǔ)言程序調(diào)用相關(guān)的Windows函數(shù),使得電腦播放指定的Wav格式的音頻文件,實(shí)現(xiàn)語(yǔ)音報(bào)警的功能。
2.1 Windows API函數(shù)
PlaySoundA(char*pszSound,char*hmode,DWORD dwflag)函數(shù)為Windows API函數(shù),可以播放Wav格式的音頻文件。
函數(shù)聲明:
BOOL PlaySoundA(char*pszSound,char*hmode,DWORD dwflag)。
形參:
char*pszSound:指向要播放聲音文件的全路徑,使用兩個(gè)連續(xù)的反斜杠轉(zhuǎn)義代表一個(gè)反斜杠。
char*hmode:應(yīng)用程序的實(shí)例句柄,除非指向一個(gè)資源標(biāo)識(shí)符(即fdwSound被定義為SND_RESOURCE),否則必須設(shè)置為NULL。
DWORD dwflag:標(biāo)志的組合,若成功則函數(shù)返回TRUE,否則返回FALSE。
當(dāng)dwflag=0時(shí),聲音文件播放一次,該腳本一直等到播放結(jié)束。這時(shí)聲音播放的腳本會(huì)一直占用這個(gè)線程,其他C腳本無(wú)法在期間執(zhí)行。
當(dāng)dwflag=1時(shí),聲音文件播放一次,同時(shí)并行其他的C腳本而不受影響。
當(dāng)dwflag=2時(shí),如果未找到聲音文件,則不播放默認(rèn)值,而是什么也不播放。
當(dāng)dwflag=8時(shí),重復(fù)該聲音文件直到下個(gè)PlaySoundA調(diào)用。
2.2 全局腳本
WinCC系統(tǒng)運(yùn)行后,當(dāng)配置的相關(guān)變量的數(shù)值超出PLC系統(tǒng)的設(shè)定值時(shí),電腦將自動(dòng)以指定的播放形式播放指定的Wav格式的文件,實(shí)現(xiàn)語(yǔ)音報(bào)警。
全局腳本中編寫(xiě)相關(guān)程序并設(shè)定腳本觸發(fā)器后,當(dāng)觸發(fā)條件滿足時(shí),WinCC系統(tǒng)會(huì)自動(dòng)執(zhí)行其中的程序?qū)崿F(xiàn)語(yǔ)音報(bào)警。
實(shí)際工業(yè)生產(chǎn)使用中,語(yǔ)音報(bào)警音樂(lè)一般都很短暫,所以一般都會(huì)使用循環(huán)播放的模式,所以將PlaySoundA()函數(shù)的形參dwflag設(shè)置為0x0008,即聲音文件循環(huán)播放,當(dāng)故障確認(rèn)后,利用故障確認(rèn)位來(lái)實(shí)現(xiàn)報(bào)警音樂(lè)的停止播放。
此外代碼編寫(xiě)時(shí)需要注意PlaySoundA()函數(shù)在調(diào)用中必須首先進(jìn)行函數(shù)的聲明,否則無(wú)法進(jìn)行PlaySoundA()函數(shù)的調(diào)用,編譯報(bào)錯(cuò)。
3 運(yùn)行結(jié)果
由于該功能為語(yǔ)音報(bào)警的實(shí)現(xiàn),雖然系統(tǒng)運(yùn)行中可以實(shí)現(xiàn)語(yǔ)音報(bào)警,但無(wú)法直接展示運(yùn)行結(jié)果,為此在全局腳本中通過(guò)格式化輸出函數(shù)printf()函數(shù)以輸出字符串的形式進(jìn)行打印。如圖3所示:
4 結(jié)語(yǔ)
通過(guò)在全局腳本中編寫(xiě)C語(yǔ)言可以在不安裝Horn組件的情況下實(shí)現(xiàn)WinCC的語(yǔ)音報(bào)警功能,可以播放指定的Wav格式音頻文件,具有方式靈活、減少系統(tǒng)占用資源、提高運(yùn)行速度的優(yōu)點(diǎn),有較強(qiáng)的實(shí)際意義。
參考文獻(xiàn)
[1] 何齡修.讀顧城《南明史》[J].中國(guó)史研究,1998,
(3).
[2] 楊鴻.C語(yǔ)言在WinCC語(yǔ)言報(bào)警中應(yīng)用[J].自動(dòng)化應(yīng)
用,2016,(3).
[3] 王曉東.SIMATIC WinCC環(huán)境中C語(yǔ)言的應(yīng)用[J].控
制工程,1999,(6).
[4] 王禹.基于WinCC的操作畫(huà)面語(yǔ)音報(bào)警設(shè)計(jì)[J].數(shù)字
技術(shù)與應(yīng)用,2015,(7).
[5] 冉井旺,戴滔.語(yǔ)音報(bào)警在集中監(jiān)控系統(tǒng)中的設(shè)計(jì)應(yīng)
用[J].自動(dòng)化應(yīng)用,2011,(9).
作者簡(jiǎn)介:孫文杰(1989-),男,山東淄博人,供職于山東中煙工業(yè)有限責(zé)任公司青島卷煙廠,研究方向:企業(yè)內(nèi)自動(dòng)化系統(tǒng)維護(hù)、管理;張志勇(1986-),男,供職于山東中煙工業(yè)有限責(zé)任公司青島卷煙廠,碩士,研究方向:工廠自動(dòng)化運(yùn)維管理。
(責(zé)任編輯:蔣建華)