wincc中如何做下拉菜单?
最佳答案
1、请参考Wincc控件中下拉式列表框Combo怎么组态——
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_ID=39247&cid=1032
2、请参考如何在 OS 上组态一个组合框 (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 的路径 "...\SIEMENS\Common\S7ACTLDX\s7actldx.dll" 上找到相关的 DLL 文件。拷贝该文件到每个 OS 上合适的文件夹下。
如何注册这些控件的指导可以在帮助 "WinCC Information System > Working with WinCC > Creating process pictures > Working with controls > How to change the registration of a control" 下找到。
例子 2:
该例子展示了如何将在 SIMATIC Manager 中组态的枚举 (enumeration) 依据语言显示在组合框中。
例1: 动态填充combo box :
例如,在运行时,您可以将 "Text Library" 中的文本传送到 combo box 来作为选择项。
No. 描述
1 在 WinCC 的文本库中 ("Text Library") 中组态值 :
按如下图组态文本:
Fig. 01
注意:
按照条目 23416727 中介绍的内容来定义您自己的 "Text ID",以便不会被 WinCC 占用。
2 在变量管理中组态文本参考:
为每个在 "文本库" 中的文本创建一个文本参考并定义相应的文本 ID 作为变量的起始值 (在标签 "Limits/Reporting" 中)。
名字:"ComboTextRef2000" 类型: "Text reference" 起始值:"2000"
...
名字:"ComboTextRef2006" 类型: "Text reference" 起始值:"2006"
3 在 WinCC 画面中组态 combo box 和脚本
创建一个类型为:"Siemens STEP 7 S7 ComboBox" 的控件,控件名字是:"Combo1"。
在控件的属性中,设置 "LinesInList" 的值为 "10"。
在WinCC 画面中,事件 "Picture Object > Miscellaneous > Open Picture" 中创建如下的 VB 脚本,当画面被调用的时候填充combo box 。
Fig. 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 结果:
Fig. 03
现在您可以依据当前所选择的语言来得到 combo box 中不同的选项列表。
例 2: 将SIMATIC Manager 中组态的枚举 (enumeration) 传送到组合框:
要求:
该例子建立在条目 27147567 的基础之上:首先,依照这个条目的指导第 4 步。
No. 描述:
1 在全局脚本中创建 VBS 工程模块:
在 "Global Script VBS" 编辑器中您创建一个新的项目块,例如 "Enumerations.bmo" 并输入如下的脚本。
您可以简单地将该脚本下载下来。
VBS_Fill_combobox.zip ( 689 bytes )
( 18 KB )
Fig. 04
2 在 WinCC 画面组态combo boxes 和脚本
创建两个 "Siemens STEP 7 S7 ComboBox" 类型的对象,名字为:"Combo1" 和 "Combo2"。
在您放入 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
在 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 结果:
现在你可以通过组合框来选择块的参数。
Fig. 05
Fig. 06
条目号:28921535 日期:2008-05-28
http://support.automation.siemens.com/CN/llisapi.dll?func=cslib.csinfo&lang=zh&siteid=cseus&objid=28921535
另外,还可以参考——
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=39190&cid=1032
http://www.ad.siemens.com.cn/service/answer/solution.asp?Q_id=45200&cid=1032
提问者对于答案的评价:
谢谢,受教了
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc265321.html