WinCC flexible组态多国语言的切换
刘青华
【摘 要】该文主要介绍了使用VB脚本代码,通过TXT文本文件对人机界面的语言进行字符替换,也就是使用TXT文本文件进行字符替换,以达到人机交换界面的多国语言信息切换功能,同时该文也简单描述了在WinCC flexible基本实现代码.
【期刊名称】《中国新技术新产品》
【年(卷),期】2019(000)008
【总页数】2页(P24-25)
【关键词】WinCCflexible;脚本控制;TXT文本
【作 者】刘青华
【作者单位】华晨宝马汽车有限公司,辽宁 沈阳 110143
【正文语种】中 文
沈阳华晨宝马【中图分类】TP311
随着科学技术的进步和国际化的发展,自动化生产线的进出口逐年增加,由此促进了制造业技术的升级,同时增加了自动化行业国内外之间的交流。在自动化生产线的日常使用过程中,触摸屏作为重要的人机交互界面,在生产线上得到了广泛的应用。尤其在复杂程度较高的设备上,触摸屏具有不可替代的地位,其灵活、方便、直观等特点,可以显示丰富的内容。
但是由于操作者使用的语言不同,就需要将不同的语言信息显示在人机界面上。这样,人机界面显示信息的多国语言切换问题就摆在了我们面前。笔者接下来将会把在工作的过程中遇到的多国语言切换的几种方法介绍给大家,为大家在工作中遇到同样问题时提供一些提示。
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
S m a r t T a g s("T X T_D i s p l a y")=f i l e N a m e_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(detailledTextAr ray(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中完整实现功能,还需要一些错误的处理程序代码,才能保证程序的稳定性及完整功能的实现。