如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本?

tu

例子1 - 动态填充combo box

以下介绍例子1中控件 "Siemens STEP 7 S7 ComboBox" 在OS 运行期间动态填充。请不要使用控件 "Microsoft Forms 2.0 ComboBox",因为使用这个控件会导致 "pdlrt.exe" 内存需求的不断增长。

警告:
为了在没有 "SIMATIC Manager" 的 "OS" 上使用 "Siemens STEP 7 S7 ComboBox"控件,必须在相应的计算机上安装注册该控件。您可以在 ES 的路径 "...SIEMENSCommonS7ACTLDXs7actldx.dll" 上找到相关的 DLL 文件。拷贝该文件到每个 OS 上合适的文件夹下。
如何注册这些控件的指导可以在帮助 "WinCC Information System > Working with WinCC > Creating process pictures > Working with controls > How to change the registration of a control" 下找到。

1. 在WinCC文本库(Text Library)中组态值

按如下图组态文本。

如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本?
图01

注意
按照条目 23416727介绍定义您自己的"Text ID",以便不会被WinCC占用。

2. 在变量管理中组态文本ID(Text IDs)

为每个 "文本库" 中的文本创建一个文本ID并定义相应的文本 ID 作为变量的起始值 (在标签 "Limits/Reporting" 中)。

1.名字: "ComboTextRef2000"类型: "Text ID" 起始值: "2000"

2. 名字: "ComboTextRef2001" 类型: "Text ID" 起始值: "2001"

3. 名字: "ComboTextRef2002" 类型: "Text ID" 起始值: "2002"

4. 等等。

关于文本ID的更多信息,参考 "WinCC Information System > Working with WinCC > Working with tags > Basics of Tag Management > Tag types > Text ID".

3. 在 WinCC 画面中组态 combo box和脚本

1. 创建一个类型为:"Siemens STEP 7 S7 ComboBox" 的控件,命名为"Combo1"。

2. 在控件的属性中,设置 "LinesInList" 的值为 "10"。

3. 在WinCC 画面中,事件 "Picture Object > Miscellaneous > Open Picture" 中创建如下的 VB 脚本,当画面被调用的时候填充combo box 。

如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本?

图02

Sub OnOpen()

Const LINECOUNT = 7
Dim objComboBox
Dim strComboList
Dim count

Set objComboBox = ScreenItems("Combo1")
objComboBox.Clear()

For count = 0 To LINECOUNT-1
strComboList = HMIRuntime.Tags("ComboTextRef"&count+2000).Read
objComboBox.AddItem (strComboList)
Next

End Sub

4. 评估 combo box 的值

当一个画面被选择后,相应的文本会从文本参考中读出并写到组合框中作为选则项。为了将组合框中所选择的值写到另外一个变量,你可以使用组合框的事件 "S7FlatComboBox > Object Events > Click"并使用如下的 VB 脚本:

Sub Click(Byval Item)

Dim objVal
Set objVal = HMIRuntime.Tags("SelectedValue")
objVal.Write Item.Text

End Sub

5. 结果

现在您可以依据当前所选择的语言来得到 combo box 中不同的选项列表。

如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本?

图. 03

例子2 -t将 SIMATIC Manager 中组态的枚举 (enumeration)显示在combo box中

下例介绍如何将SIMATIC Manage语言相关的枚举作为comobo box的选择项。

要求
该例子建立在条目 27147567 的基础之上:首先,依照这个条目的指导第 4 步。

1. 在全局脚本中创建 VBS 工程模块:
在 "Global Script VBS" 编辑器中您创建一个新的项目块,例如 "Enumerations.bmo" 并输入如下的脚本。(为简化操作可以直接下载脚本)
如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本? VBS_Fill_combobox.zip ( 689 bytes )

如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本?

图. 04

2. 在 WinCC 画面组态combo boxes和脚本

1. 创建两个 "Siemens STEP 7 S7 ComboBox" 类型的对象,命名为:"Combo1" and "Combo2".

2. 在您放入 Combo boxes 的WinCC 画面事件 "Picture Object > Miscellaneous > Open Picture"中,创建如下的 VB脚本:

Sub OnOpen()

Call Fill_combobox ("Combo1", "CFC(1)/TESTENUM.SOURCE")
Call Fill_combobox ("Combo2", "CFC(1)/TESTENUM.DEST")

End Sub

3. 在 combo box的事件 "S7FlatComboBox > Object Events > Click" 中,您组态如下的 VB脚本来将 combo box 中的选择项写回到控制器中:

Sub Click(Byval Item)

Const cfcName = "CFC(1)/TESTENUM.SOURCE"
Dim tagCFC
Set tagCFC = HMIRuntime.Tags(cfcName)
tagCFC.Value = Item.ListIndex + 100
tagCFC.Write

End Sub

3. 结果

现在你可以通过组合框来选择块的参数。

如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本?

图. 05

如何在 OS 上组态一个组合框 (combo box),并且能够自动根据不同语言自动填充相应的文本?

图. 06

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc324358.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年11月5日 下午12:03
下一篇 2021年4月12日 上午12:00

相关推荐

发表回复

登录后才能评论