孫文杰 張志勇 馬志出 王銀龍



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