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