1 <概述> <在 WinCC 项目开发的过程中,或者是修改现有项目的过程中,往往需要关注到项目中的各个方面。例如:变量、画面、脚本等等。那么如何找到变量,如何找到变量使用的位置,甚至项目中有哪些未使用的变量或已使用但并不存在的变量,成为了工程师的一个难题。实际上 WinCC 的交叉索引功能能够很好的帮助工程师解决以上等等问题。本文将主要介绍通过交叉索引针对变量、画面以及脚本的应用。 <测试环境: 本文中的功能实现所使用 WinCC 版本为 V7.5 SP1 亚洲版。操作系统为 Windows 10 Pro Version 1809(64-Bit)> 2 < 使用方法> 2.1 <总览> <在 WinCC 项目管理器中双击 “交叉索引” 或右键单击选择打开。首次打开交叉索引时,将会看到需要初始化交叉索引数据的提示信息。如图 01
经过短暂的初始化之后,交叉索引程序将被打开。 注:如果出现交叉索引无法正常打开的情况,请参考 FAQ : https://support.industry.siemens.com/cs/de/en/view/109779128
左侧框为“项目对象”列表,在该列表中显示了 WinCC 项目中的所有引用对象。包括变量、画面、文本等等。右侧框为对象使用位置列表,该列表中显示了对象名称、使用对象的位置等信息。可以点击中间的“链接”按钮 将两个表进行关联。关联之后,左侧被选对象的具体信息将会显示在右侧列表中。如图 03
从图 03 中可以看到左右两表关联之后,右侧列表中即列出了左侧表中被选对象loat3 的相关信息。包括了该对象被使用在的文件或编辑器,从图中可看到 float3 被用在了画面 “picture01.PDL” 以及 VBS 全局动作 “GlobalVBAction2.bac” 中。在画面中被使用的具体位置分别为“脚本中的变量”以及“VBS 动作”。使用了 float3 对象的具体对象则为 “按钮” 以及 “VBS 函数” 。 在左侧项目对象列表框中,可以设置过滤器,默认为无过滤。过滤器如图 04
可以直接在第一列过滤器中输入对象名称进行过滤,交叉索引会将包含所输入字符的所有对象精确过滤出来。也可以通过第二列第三列过滤器选择,索引出指定类型的项目对象,例如变量或画面。也可以索引出未使用或已使用的对象。
2.2 <变量的交叉索引> 2.2.1 索引未使用的变量 在项目最终完成之后,一些客户希望对未使用的变量进行清理,以免对项目运行造成不良影响。此时则可以通过交叉索引将未使用的变量过滤出来进行清理。但是清理过程中需要格外注意。 首先通过对象类型过滤器以及使用状态过滤器将未使用的变量过滤出来如图 05 。
从图 05 中看到项目对象列表中列出了一些变量,并且被标识为了未使用状态。实际上在清理时需要注意: 1. 蓝色框中以 @ 开头的均为系统自动创建的系统变量,请勿删除。 2. 绿色框中的为结构变量。对于结构变量需要注意,从 WinCC V7.5 SP1 开始, 可以通过面板(Faceplate)直接关联结构变量而无需逐一关联结构变量中的结构元素变量。因此在对列表中列出的结构元素变量清理时,也需要格外注意这些结构变量是否已经被关联到了面板实例,如图 06 ,如果已被关联则不能删除。
图中的两个面板实例实际已经关联了“Tank1”及“Tank2”两个结构变量,因此这两个结构变量中的所有结构元素变量会被标识为“未使用”状态,均不可以删除。 3. 红色框中的变量为普通变量。虽然在列表中被标识为了未使用状态,但是清理时也需要注意。因为在 WinCC 脚本编写中使用变量时需要按照规范进行编写,如果未按规范编写则会出现在交叉索引中无法正确索引出变量的情况。 例如使用变量“unused1”时不规范的 VB 脚本编写如图 07 。
例如使用变量“unused2”时不规范的 C 脚本编写如图 08 。
如果使用了图 07 及图 08 中不规范的脚本编写,脚本可以正确执行,但是则会出现图 05 中变量“unused1”及“unused2”都被标识为未使用状态的情况。规范的B 脚本以及 C 脚本如图 09 。
修改为如图 09 的规范脚本编写之后,交叉索引的结果将变为如图 10 。
2 < 使用方法> FAQ title Entry-ID: Entry ID, V 0.0, mm/yyyy 12 Siemens AG copyright year All rights reserved 变量“unused1”及“unused2”变为已使用状态。 在 VB 脚本的编写过程中必须人为按照规范进行编写。而如果 C 脚本的编写未能按照规范编写,在后期可以通过交叉索引助手程序进行脚本转换,从而使得变量能够正确的被索引。交叉索引助手将在 2.4 章节介绍。 2.2.2 索引已使用的变量 在项目最终完成之后,经常需要知道变量在什么地方被使用到,以便项目调试和排错。此时则可以通过交叉索引将已使用的变量过滤出来,通过链接便可知道变量在什么位置被使用到。 首先通过对象类型过滤器以及使用状态过滤器将已使用的变量过滤出来如图 11 。
从图 11 中看到项目对象列表中列出了一些变量,并且被标识为了已使用状态。例如变量“Tag1”,通过点击“链接”按钮后,在右侧使用位置列表中即可显示出变量“Tag1”所使用的地方。在“pic1.PDL”及“pic2.PDL”中均被使用到。并且清楚的标识出了在画面中使用该变量的对象:“按钮 1”、“圆 1”及“输入/输出域 1”。包括使用的位置也非常明确,例如脚本、变量或者直接连接。而要找到这些相应的位置,并不需要手动的打开这些画面进行查找。只需要按照图 11 中的鼠标操作步骤,即可快速的打开画面并定位到所使用的位置上,结果如图 12 。
从图 11 中也可以看出在画面“pic1.PDL”及“pic2.PDL”中均使用了变量“Tag1”。如果希望将画面“pic2.PDL”所使用的变量“Tag1”全部替换为“Tag2”,使用交叉索引进行操作也会变得非常简单。操作步骤如图 13 。
在执行图 13 中的操作之前,使用到索引对象的编辑器需要全部关闭,否则将会看到提示信息,如图 14 。
替换完成后,交叉索引中的结果将变为如图 15 。
使用这种替换方式,可以同时将多个编辑器或多个画面中的变量进行统一替换,不会在项目中引起不一致问题。 2.2.3 索引不存在的变量 在项目组态过程中,有时需要修改变量名称,或者有些变量会被删除。而修改或删除后可能会遗忘曾今在项目的某些地方使用过这些变量。这样的结果可能会导致项目运行过程中出现不必要的错误。在这种情况下,交叉索引可以很方便的解决这样的问题。 例如,将变量“Tag1”在变量管理器中重命名为“Tag01”。然后就通过交叉索引过滤的方式找出已被使用但却已不存在的变量“Tag1”,如图 16 。
此时,即可通过图 13 的操作方法将变量替换为新的变量“Tag01”。如果项目中不再需要,则可以通过图 11 中的跳转方法跳转到具体使用位置,将其删除。
2.3 <画面的交叉索引>与变量的使用情况类似,在交叉索引中也可以索引出所有画面以及它们的使用情况。如图 17 。
如图 17 中所示,同样存在以下 3 种情况: 1. 已使用的。当画面在画面窗口中被引用时会被标记为已使用,如图 17 中的画面“popupScreen.PDL”。按钮中调用了也会被标记为已使用,如图 18 中的画面“dynamicType.PDL”。
包括通过 VB 脚本或 C 脚本加载的画面,如图 19 。
前提是 VB 及 C 脚本都按照规范进行编写,如图 20 。
2. 未使用的。在项目中没有被关联的画面以及 VB 及 C 脚本调用时未按规范进行编写,如图 21,也会被标识为未使用状态。
未按规范编写的脚本可以正确执行,但是交叉索引中则无法正确索引出画面的使用状态,如图 22 。
2.4 <交叉索引助手(Cross Reference Assistant)> <在上文中提到,如果 C 脚本的编写未能按照规范编写,在后期可以通过交叉索引助手程序进行脚本转换,从而使得变量能够正确的被索引。 通过开始菜单打开交叉索引助手程序,打开时,会有关于交叉索引助手的相关说明,如图 23 。
然后根据向导进行操作,如图 24 。
操作开始前将脚本编辑器以及画面编辑器关闭。操作完成后,全局脚本和画面脚本中的 C 脚本对变量与画面的引用将会转换为规范的编写,如图 25
经过转换的变量及画面引用,在交叉索引中即可正确索引到,如图 26 。