n
描述:
在WinCC中可以集成用户可自定义的功能。其脚本语言在Kernighan/Ritchie编著的“Programming in C”一书中有描述。该语言的定义是ANSI C定义的基础。n
用户功能可用如下的脚本方式表示:n
- 对象功能:
建立到一个图形显示中,并且十分典型的,被附到一个图形对象属性中。n - 全局功能:
以受运行时间控制或事件控制的方式编制的例程,不受被调用图片的影响。
创建对象功能时,会对相关的脚本创建一个标准标题。它包含有图片系统供脚本在运行时可用的接口信息。n
Fig. 1 Parameterization of Graphics Designer ( 25 KB ) n
这里是简写符 lpszPictureName, lpszObjectName和 lpszPropertyName出现的地方。这三个简写符均给出有关脚本运行位置的信息。因此在以运行系统中,图形系统提供如下信息:n
- lpszPictureName 图片名
- lpszObjectName 对象名
- lpszPropertyName 对象属性名
比如说,如果:n
- 在一幅图片中"SAMPLE_PICTURE"
- 在I/O域中 放有“IO Field1”,“IO Field2”和“IO Field3”并且
- 在属性中脚本I/O域的“OutputValue”为简单的脚本
当你在运行系统中选择图片“BEISPIELBILD”时,return lpszPictureName;‘, ‘return lpszObjectName;‘ 或 ‘return lpszPropertyName;‘运行,在I/O域中显示输出值"SAMPLE_PICTURE","IO Field2"或“OutputValue”:n
Fig. 2 Runtime ( 2 KB ) n
这里需注意,图片名和对象名可在组态中按所希望的预先组态好,但属性名由系统预定义并以英文显示。(这就是为何在I/O域 3 中为英文输出值而非德文)n
注意事项:
在实例中所示的德文术语“BILDFENSTER”,“EA-Feld1”和“BEISPIELBILD”其含义分别为:“图像窗口”,“I/O域”和“实例图片”。n
如果现在将简单的对像动作 'return lpszPictureName' 附到一个I/O域的对象属性输出中,就可以把它储存到库中并且,再从那里不做任何改变的将它插入到任何想要插入的图片中。然后在运行系统中,每次所选图片的名字将被显示。n
脚本函数的寻址
通过浏览器,WinCC图形编辑器提供了大量的 C 函数,在那里可以将其标记,选择,参数化及建立到一个脚本中。在下面的实例中,画面中有一个按钮,这个按钮用来在点击鼠标时改变对象的背景色。完成这一步可采用的函数是 SetBackColor(..),把它从功能浏览器中选出然后传送到“鼠标单击脚本”。如果是标准参数,则函数开始看来象:n
SetBackColor(lpszPictureName,lpszObjectName,lBackColor);
第一个参数指出要改变背景色的对象位于哪一幅图片。第二个参数指出对象名,第三个参数则为颜色值,在这个实例中,颜色值已被设置为CO_RED:n
Fig. 3 Addressing in the script ( 28 KB ) n
现在,在本例中,前面的两个参数保持不变。脚本被附到图片中的按钮上,使系统可在运行时传送按钮对象名及用lpszObjectName和 lpszPictureName 传送图片名。这样,改变颜色的名称通过按钮本身可完成。如果用一个不同的对象名替换第二个参数 lpszObjectName,那么那个对象的颜色就会随它而改变(见图4):n
Fig. 4 Addressing to other objects ( 9 KB ) n
在图像边界外寻址
在函数 SetBackColor( lpszPictureName, "IO Field2", CO_RED )中,当然可以给图片指定任何想要的名字,这个名字以后会替换 lpszPictureName 的缺省参数。如果在一个图片窗口中放了一幅图片,而该图片中又调用了另一个图片的话,这种做法很有用。n
例如,如果在指定的第二幅图片中(这里是“SAMPLE_PICTURE2”),里面放置了一个I/O域。该I/O域的输出值附有对象动作'return lpszPictureName;' ,而且该图片以后被在图片窗口中的 "SAMPLE_PICTURE"图中调用。那么在运行时你可看到:n
Fig. 5 Addressing in picture windows ( 4 KB ) n
现在在SAMPLE_PICTURE2 的 I/O 域中可看到图片名SAMPLE_PICTURE.SAMPLE_PICTURE1:SAMPLE_PICTURE2。这就是lpszPictureName,是图片在图片窗口中被调用时图形系统将它返回到输出值中。 这里可看到寻址时创建的路径。
假定在图像中有一个图片窗口,在这个窗口中通过同样的输出脚本 'return lpszPictureName'调用了另一幅名为SAMPLE_PICTURE3 的图片,那么就会显示出简写符SAMPLE_PICTURE.SAMPLE_PICTURE1:SAMPLE_PICTURE2.SAMPLE_PICTURE1: SAMPLE_PICTURE3。因此,命名的一般规则为:
[图像名 1].[图像窗口名 1]:[图像名 2].[图像窗口名 2]: ... .[图像窗口名(n-1)]:[图像名(n)]
如果现在想用SAMPLE_PICTURE 图片中的按钮来改变SAMPLE_PICTURE2 图片中I/O域的颜色,可选择脚本命令:
SetBackColor("SAMPLE_PICTURE.PICTURE_WINDOW1:SAMPLE_PICTURE2","IO Field1",CO_RED);
另一个选件显示在图6中。
Fig. 6 Addressing acquired function parameters ( 10 KB )
这里脚本中目标由发出调用的图像的名,图像窗口的名和被 GetPictureName()所采集到的,并被在该图像窗口里调用的图像名所组成。该目标是图像窗口的一个对象属性。这是在运行时首先采集函数参数,然后又执行它们的一个实例。
函数 SetBackColor()只是使用 lpszPictureName, lpszObjectName 和 lpszPropertyName这些缺省参数的众多函数中的一个。
步骤是相同的:
- SetOutputValueDouble(lpszPictureName,lpszObjectName,dValue) ? 将浮点值写入一个I/O域中。
- SetLeft(lpszPictureName, lpszObjectName,dwValue) ? 设置一个对象的 X 轴位置。
- 通过函数浏览器还可以在脚本中使用其它许多的函数。要操作的属性已包含在这些函数的名字中。如:SetOutputValueDouble() 中的OutputValue或SetLeft()的Left。
通过 SetPro.(..) 函数中的浏览器,也可找到他们的一般形式:
SetPropBOOL (lpszPictureName, lpszObjectName, lpszPropertyName, Value);
SetPropChar (lpszPictureName, lpszObjectName, lpszPropertyName, Value);
SetPropWord (lpszPictureName, lpszObjectName, lpszPropertyName, Value);
SetPropDouble(lpszPictureName, lpszObjectName, lpszPropertyName, Value);
这些函数总是跟在询问:在哪幅图片中的哪个对象上,应该写哪一种属性(或通过GetProp读取哪一种属性)之后。因此函数调用
SetBackColor("PICTURE_WINDOW", "IO Field1", "CO-RED");
具有同SetPropWord("PICTURE_WINDOW", "IO Field1", "BackColor", "CO-RED")完全一样的含义。
关键词
对象寻址
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc332070.html