劉青華
摘 要:該文主要介紹了使用VB腳本代碼,通過TXT文本文件對人機(jī)界面的語言進(jìn)行字符替換,也就是使用TXT文本文件進(jìn)行字符替換,以達(dá)到人機(jī)交換界面的多國語言信息切換功能,同時該文也簡單描述了在WinCC flexible基本實(shí)現(xiàn)代碼。
關(guān)鍵詞:WinCC flexible;腳本控制;TXT文本
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A
隨著科學(xué)技術(shù)的進(jìn)步和國際化的發(fā)展,自動化生產(chǎn)線的進(jìn)出口逐年增加,由此促進(jìn)了制造業(yè)技術(shù)的升級,同時增加了自動化行業(yè)國內(nèi)外之間的交流。在自動化生產(chǎn)線的日常使用過程中,觸摸屏作為重要的人機(jī)交互界面,在生產(chǎn)線上得到了廣泛的應(yīng)用。尤其在復(fù)雜程度較高的設(shè)備上,觸摸屏具有不可替代的地位,其靈活、方便、直觀等特點(diǎn),可以顯示豐富的內(nèi)容。
但是由于操作者使用的語言不同,就需要將不同的語言信息顯示在人機(jī)界面上。這樣,人機(jī)界面顯示信息的多國語言切換問題就擺在了我們面前。筆者接下來將會把在工作的過程中遇到的多國語言切換的幾種方法介紹給大家,為大家在工作中遇到同樣問題時提供一些提示。
1 WinCC flexible自帶切換功能
WinCC flexible本身是自帶多國語言切換功能的。在日常工作中,如果需要切換多國語言的話,就可以直接使用。具體操作步驟為:
首先,將需要的項目語言添加到項目里,在WinCC flexible項目的“語言設(shè)置”中選擇“項目語言”選項。
然后,在WinCC flexible所支持的語言列表里,選擇需要添加的項目語言。象需要在項目中添加英語,那么就在“英語(英國)”前面打上對勾。
第三,在“設(shè)備設(shè)置”中的“語言和字體”選項中就可以找到英語(英國)的選項,在英語(英國)前面打上對勾,這樣就可以在HMI設(shè)備上加載英語了。
當(dāng)然這只是為了添加多國語言,在這之后我們需要在“項目文本”中輸入對應(yīng)的翻譯文本,從而完成多國語言用戶界面的設(shè)置。
2 腳本控制語言切換
上面介紹的方法大部分的WinCC flexible的使用者都用過,這里只作簡單的介紹。在日常使用中還有一種情況是需要解決的,那就是I/O域的字符處理。因?yàn)橛袝r候,為了靈活的處理信息,有人習(xí)慣使用I/O域來顯示報警信息和提示信息。這樣做的原因有很多,其中一點(diǎn)就是所有的信息編輯都是在PLC端完成的,這樣修改或添加信息只需要在PLC程序中完成,而不用修改HMI組態(tài),這樣有利于程序的結(jié)構(gòu)化編程。但是由于各種原因,經(jīng)典的WinCC flexible I/O域配合DB塊,并不能很好的支持中文字符與ASCII之間的切換,遇到這種情況我們就可以使用WinCC flexible的腳本編寫一些代碼,實(shí)現(xiàn)中外文信息文本的切換,這也是該文詳細(xì)介紹的一種方法。
3 腳本控制語言切換的代碼實(shí)現(xiàn)
這種方法的具體想法是通過定義信息代碼,然后根據(jù)信息代碼將報警信息字符以固定的格式保存在文本文件中,HMI通過腳本以信息代碼為索引在相應(yīng)的文本文件中進(jìn)行查詢,并把與信息代碼對應(yīng)的文本信息顯示在I/O域上。象我們把英語信息保存在EN.txt中,中文信息保存在CN.txt中,這些文本文件中需要顯示的信息文本在*.TXT中,中文文件顯示格式:“0001;氣壓報警”;英文文件顯示格式:“0001;Pressair alarm”。這樣就可以根據(jù)HMI上選擇的語言,通過WinCC flexible的腳本功能,將文本信息顯示在觸摸屏I/O域內(nèi)。下面將具體介紹實(shí)現(xiàn)這個功能的WinCC flexible腳本代碼。
首先,得到當(dāng)前語言類型代碼,這里 LanguageNumber為變量名,作用是獲取語言類型代碼。一般情況下,使用前一定要在先定義好,定義變量的語句為:“Dim LanguageNumber”。在后面的程序中,還會使用一些變量,因?yàn)槠邢捱@里就不一一寫出變量定義語句了。
LanguageNumber=HmiRuntime.Language
然后,根據(jù)得到的語言類型代碼,確定當(dāng)前runtime運(yùn)行的語言類型。如果是2052則代表當(dāng)前顯示語言為中文,2057則是英文。Language是字符串變量,“CN”或者“EN”就是保存文本信息的文件名,后面會使用這個變量調(diào)用文件。
If LanguageNumber=2052 Then
Language="CN"
ElseIf languageNumber=2057 Then
Language="EN"
End If
準(zhǔn)備文件操作,fileStream和filesystem的變量類型為文件。
Set fileStream=CreateObject("ADODB.Stream")
fileStream.LineSeparator=-1
fileStream.CharSet="unicode"
fileStream.Open
Set fileSystem=CreateObject("Scripting.FileSystemObject")
在更新字符前,先刪除顯示的內(nèi)容,TXT_Display是在WinCC中定義的字符串變量,用以顯示字符信息。
SmartTags("TXT_Display")=""
檢查多國語言信息文件是否存在,如果文件不存在則退出腳本程序。
fileName_FixedText="C:\"& language &".txt"
If (Not (fileSystem.FileExists(fileName_DetailledText))) Then
SmartTags("TXT_Display")=fileName_DetailledText&"does not exist"
Exit Sub
End If
判斷文件已經(jīng)存在后,就可以查找并替換字符以完成文本的翻譯。具體實(shí)現(xiàn)想法為,將文本文件讀出,然后使用Split函數(shù)將文本分隔為報警信息數(shù)組,然后對數(shù)組進(jìn)行操作,使用REPLACE函數(shù)根據(jù)報警編號進(jìn)行字符替換。
讀取翻譯文件,將文本文件分割成字符串?dāng)?shù)組、分隔固定字符(報警號),分隔符為換行回車。
fileStream.LoadFromFile(fileName_DetailledText)
detailledTextArray=Split(fileStream.ReadText(-1),vbCrLf)
這里detailledTextArray為已經(jīng)分隔為每一條報警信息的字符串?dāng)?shù)組,這個數(shù)組里包含報警號及報警信息。然后是處理信息顯示的部分,"PLC_Message"為PLC中的變量,保存的是當(dāng)前需要顯示的信息。首先得到的是需要顯示信息的序號。然后作循環(huán),在信息文本中找到相應(yīng)的信息號,然后將原有的信息替換為需要顯示的語言的信息文本。
plcMessage=SmartTags("PLC_Message")
Do Until(i>(UBound(detailledTextArray)-1))
If StrComp(Mid(plcMessage,1,4),Trim(Split(detailledTextArray(i),";")(0)),0)=0 ThenmessageTranslated=Replace(plcMessage,Mid(plcMessage,5,20),Trim(Split(detailledTextArray(i),";")(1))
End If
i=i+1
Loop
然后將HMI的變量賦值,得到需要顯示的結(jié)果。
SmartTags("TXT_Display")=translatedMessage
最后,關(guān)閉TXT文件流,這樣程序的一些基本功能就實(shí)現(xiàn)了。
fileStream.Close
以上,就是使用TXT文本文件進(jìn)行字符替換,以達(dá)到多國語言信息切換的一種實(shí)現(xiàn)方法。該文介紹的是如果按照這種方式實(shí)現(xiàn),則需要使用VB腳本代碼。如果要在WinCC flexiblee中完整實(shí)現(xiàn)功能,還需要一些錯誤的處理程序代碼,才能保證程序的穩(wěn)定性及完整功能的實(shí)現(xiàn)。
參考資料
[1]Guy Hart-Davis.VBA從入門到精通[M].北京:電子工業(yè)出版社,2008.
[2]何文雪.PLC編程與應(yīng)用[M].北京:機(jī)械工業(yè)出版社,2010.