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