WinCC技巧(40页).doc

上传人:1595****071 文档编号:35030560 上传时间:2022-08-20 格式:DOC 页数:40 大小:480.50KB
返回 下载 相关 举报
WinCC技巧(40页).doc_第1页
第1页 / 共40页
WinCC技巧(40页).doc_第2页
第2页 / 共40页
点击查看更多>>
资源描述

《WinCC技巧(40页).doc》由会员分享,可在线阅读,更多相关《WinCC技巧(40页).doc(40页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、-补充:在脚本中,可以通过ODK函数从用户管理查询权限设定。条目 ID 指出怎样在脚本中使用ODK函数PWRTCheckPermission() 来查询权限在 WinCC 中如何在一个画面中显示不同的趋势图?订货号: 描述在同一个 WinCC 在线趋势控件中,通过不同的按钮来选择显示不同测量点的曲线,有两种方法。 两种方法都是在 Trend_Function_Main.PDL, Trend_Function_1.PDL和 Trend_Function_2.PDL 画面中实现的。这几个画面可以在例子中找到。 准备:变量“testvar1”和“testvar2”分别显示在两个在线控件 Trend

2、1 和 Trend 2 中。 No.步骤1在变量记录中,新建过程值归档“TestArchive”。2在归档中建立相应的变量归档(testvar1 and testvar2)。Fig. 01选择1:WinCC V7.0 中脚本分配变量在本例中,WinCC 在线趋势控件的名称为 “Control1”。另外,建立了两个趋势,但是并没有分配给某个变量。分配由 VBS 脚本或 C 脚本完成。 VBS 和 C 脚本在文件 “M1_button_assign_tag.txt”中。 No.步骤1将 WinCC 在线趋势控件组态为显示最多趋势。2组态一个按钮(在对象选项板中选择“标准”“窗口对象”“按钮”)。3

3、右键按钮选择属性,选择“事件”“按钮”“鼠标”。4右键“鼠标动作”对应的闪电符号,选择 VBS 动作。5通过如下脚本,创建一个对象(如“objCon1”) (C 脚本不需要创建对象)Dim objCon1Set objCon1 = HMIRuntime.ActiveScreen.ScreenItems(Control1)6将变量联系到相应的趋势中(Index 0 = Trend 1, Index 1 = Trend 2, . )。testvar1objCon1.TrendIndex = 0objCon1.TrendTagName = TestArchivetestvar1testvar2obj

4、Con1.TrendIndex = 1objCon1.TrendTagName = TestArchivetestvar2注意: 更多关于使用 VBS 或 C 脚本建立变量变化请参考条目: 更多关于 WinCC 在线趋势控件的动态方法及属性设置请参考 WinCC Information System:使用 WinCC VBS for creating procedures and actions VBS Reference Object types of the ScreenItem object Controls WinCC Online Trend Control 选择2:画中画技术本例中

5、,在画面“Trend_Function_Main.PDL”中组态了一个画面窗口,画面窗口中调用了“Trend_Function_1.PDL”和“Trend_Function_2.PDL”两个已经组态好在线趋势控件的画面。VBS和 C 脚本在文件“M2_pic_in_pic.txt”中。 No.步骤1在图形编辑器中,创建第一个测量点的画面。注意:这个 PDL 画面的名称最好来自于测量点的名字,并且可以从变量列表中复制其名字。2在画面中插入 WinCC 在线趋势控件。连接趋势到测量点(WinCC V7.0)的归档变量(如 testvar1)。 在图片中插入一个应用程序窗口并且连接到测量点的趋势模板

6、(老板本)。3然后相应的调整图像的几何属性和应用程序窗口。本例中,高350像素,宽550像素。这个大小是根据画面窗口的大小定的。4重复步骤3和4,为其他的测量点创建画面。将应用程序窗口链接到每一个曲线模板上,然后用测量点的名字保存图像。5下一步创建一个新图片,可以用不同的按钮调用不同的趋势。在这个画面中,为已经建好的画面插入一个宽(550 pixels)高(350 pixels)的画面窗口。属性可自由选择。 警告:不要将画面窗口连接到某个画面,这个工作是运行时动态完成的。6在鼠标单击事件中插入如下源代码。注意根据您的项目更改图片名称。 C 动作SetVisible(Trend_Function

7、_Main,PictureWindow1,1);SetPictureName(Trend_Function_Main,PictureWindow1,Trend_Function_1.PDL); VBS 动作Dim objCon1create objects Set objCon1 = HMIRuntime.ActiveScreen.ScreenItems(PictureWindow1)configuration objCon1.Visible = 1 objCon1.PictureName= Trend_Function_1.PDL7现在可以通过 Picture Tree Manager 将画

8、面“Trend_Function_Main.PDL”合并到画面图层。例子:为了在项目中可以使用这些图片,必须按照前面“准备”中提到方式建立归档变量 “testvar1”和“testvar2”。此外,将下面三个 PDL 文件拷贝到项目文件夹下的 “GraCS”中。(.SiemensWinCCWinCCProjects).此例是在 WinCC V.0.中建立的。 ZIP 文件中包含了三个 PDL 文件(WinCC 画面)和两个 TXT 文件(VBS and C 脚本)。如何使用 C 或 VBS 脚本通过新变量提供 WinCC 在线趋势控件的单个趋势?订货号: 说明:例如,在初始条件下,过程值归档

9、TestArchive 中的变量 testvar1 被分配给趋势控件的曲线1(图01)。 图. 01 C 脚本:现在按下面的步骤利用 C 脚本将过程值归档中的变量 testvar2 分配给趋势控件的曲线1。 No.步骤1首先,将在线趋势控件的 Index 属性设置为对应曲线号的数值。 WinCC V6.x 和 WinCC V7.0SetPropWord(lpszPictureName,Control1,TrendIndex,0);2将WinCC在线趋势控件(= Control1)中选择出的曲线的 TagName 属性或者 TrendTagName 设置为新的变量: WinCC V6.xSetP

10、ropChar(lpszPictureName,Control1,TagName,TestArchivetestvar2); WinCC V7.0SetPropChar(lpszPictureName,Control1,TrendTagName,TestArchivetestvar2);3将WinCC 在线趋势控件(= Control1) 中选择出的曲线的 Command 属性设置为 Reload: WinCC V6.xSetPropChar(lpszPictureName,Control1,Command,Reload); WinCC V7.0不需要(趋势自动更新)VBS 脚本:现在按下面的

11、步骤利用 VBS 脚本将过程值归档中的变量 testvar2 分配给趋势控件的曲线1。 No.步骤1为WinCC 在线趋势控件 Control1 创建一个对象 objCon1。 WinCC V7.0Dim objCon1Set objCon1 = HMIRuntime.ActiveScreen.ScreenItems(Control1)2首先将趋势控件的 Index 属性设置为对应曲线号的数值。 WinCC 7.0objCon1.TrendIndex = 03将在线趋势控件 (= Control1) 中选择出的曲线的 TrendTagName 属性设置为新的变量: WinCC 7.0objCo

12、n1.TrendTagName = TestArchivetestvar2注意: 如何在运行时分配不同变量给趋势请参考条目 ID: 。 在任何情况下 Index 代表了在线趋势控件中 CurveX 的设置 (更多信息请参考图形编辑器的在线帮助)。 请注意 C 脚本中变量名和归档名之间必须用 分隔。如何使用 Tag Prefix 的属性?订货号: 说明:在 WinCC Online Help 中,通过路径“WinCC Information System Working with WinCC VBS for Creating Procedures and Actions VBS Referenc

13、e Characteristics T TagPrefix Property”,可以看到关于 Tag Prefix 属性的描述。 只有重新加载画面后,对 Tag Prefix 属性的任何更改才生效。这在画面更改时自动发生;若不然,可以重新指定“Picture Name”属性。下面两个图提供了可能的 C 和 VBS 脚本。 如何使用一个通用的C函数来动态的获得对象属性的连接变量?订货号: 介绍:使用GetLinkedVariable()函数您可以读取连接到对象属性上的变量名称,GetLinkedVariable()函数返回的变量名称首先需要检查,检查正确之后您可以利用该变量名称在您的子程序段中根

14、据需要进一步处理,如读写该变量或者修改其他对象的属性。 例子:读取连接到IO域对象的上“输出值”属性的例子。 char* pszVarName = NULL;char szVarName_MAX_PATH+1;/Read tag name of a direct connection/pszVarName = GetLinkedVariable(lpszPictureName,lpszObjectName,OutputValue);/检查返回值/if (strlen(pszVarName) = sizeof (szVarName)printf(Error: the C tag occupies

15、 too little memory to be able to accept the complete tag namern);elsestrncpy(szVarName,pszVarName,sizeof (szVarName);printf(Info: szVarName=%s value=%frn, szVarName, value);/=/用户自定义的子程序段/=/At this point you can program your/application-specific code GetLinkedVariable:函数的参数: lpszPictureName: 指向当前画面的指

16、针 lpszObjectName:指向当前对象的指针 OutputValue:对象属性的名称,该属性上连接着变量程序流程: 1. GetLinkedVariable函数的返回值返回给程序内部变量pszVarName。GetLinkedVariable函数不会返回一个空指针,所以必须用strlen 检查返回值的长度, 2. 如果返回值有效,将返回值赋值给变量szVarName,赋值长度最长是_MAX_PATH个字符 3. 在用户自定义程序中使用该返回值。触发条件注意:您需要避免在过程画面中使用周期循环触发,因为这种方式会加大系统负担,触发方式最好选用变量触发。当您使用变量触发时请确保过程值连接到

17、对象属性上的时候,触发C动作的触发器变量能够正常地发生改变 面板技术如何与画面窗口的 Tag Prefix 属性结合使用?订货号: 使用说明:可以 在组态中使用面板技术。从 WinCC V5 版本起,可以使用画面窗口的 Tag Prefix 属性。 重要信息:画面窗口的变量前缀务必与全局定义一致。这表示画面窗口的变量前缀对在该画面窗口中处理的所有变量或以其它方式(脚本)修改的所有变量均有效。因此,这些变量必须是结构的一部分,结构名称已经被用户指定为画面窗口的变量前缀。例如,如果在上述结构之外声明一个名为 “Hallo” 的变量,并尝试在画面窗口中修改,更改变量名 TagPrefix.Hallo

18、。这会导致出错, 因为该变量不存在。请注意当同意画面窗口中的另一个变量前缀时,画面窗口的变量前缀也有效。对于在第二次定义中处理或以其它方式(脚本)修改的变量,下列解释适用:TagPrefix1.TagPrefix2.TagName。 在该示例中通过变量链接、动态对话框和 C 语言脚本实现动态化。动态对话框和 C 语言脚本均使用变量触发。 变量前缀不仅可以与 WinCC 结构变量中独立的点一起使用,也可以用于 WinCC 变量名中的任何点处。变量前缀也可以用于基本的 WinCC 变量。 关于动态对话框的注意事项为了可以使用动态对话框,必须执行下列两点: 必须使用 Tag Prefix 属性指定点

19、:示例:ampel13. 动态对话框检查是否存在变量。因此,必须为结构的每个成员变量重新创建一个常规变量。示例:该结构有三个成员:red、yellow 和 green。必须另外创建三个变量:red、yellow 和 green。该面板技术的优点无需使用任何不必要的 C 语言脚本。变量触发也确保实现卓越的性能。 关于修改变量前缀的注意事项请注意,只有当在画面窗口中修改了画面时,修改变量前缀才能在该画面窗口中生效。这已经在这个 样例项目中实现了。欲知详情,请参见图形编辑器在线帮助中的画面窗口Tag Prefix 属性。 怎样通过登陆/退出(log on/off)来关闭已打开的面板(faceplat

20、es)?订货号: 描述:用户经常在登陆以后设置面板(faceplates)。例如, 用户名保存在 Static Text对象的Text属性中 。根据面板的设置,可能会发生以下情况,当切换用户后当前保存的用户权限并没有被修改。 在实际运用中,可能意味着未被授权的动作会被执行,或者由于当权用户没有这个权限而不能执行某些开关动作。 补救: 切换用户后面板将被关闭并且重启。 不要保存当前用户的登陆信息。每次用户操作,对于当前登陆用户总是做直接查询。注解: 在某种情况下,例如:Safety Matrix 面板。 如果你使用了Basic Process Control 选件(例如使用PCS 7 或者OS

21、项目编辑),当切换用户时面板默认会被关闭。这个行为的详细信息和授权的检查请参考 条目 ID . 如果是标准wincc, 你必须手动配置面板的管理(打开和关闭画面窗口)。根据 CurrentUser 标签的变化触发全局脚本,登录/登出时,全局脚本动作将会自动关闭已打开的画面窗口。下图显示怎样去构造一个切换用户后被执行的C动作。 动作中定义的画面被重新加载成一个开始画面。如果画面窗口的 属性Display的静态属性是 False,那么画面窗口会根据切换用户而关闭。WinCC 7.0中,如何在运行系统中通过脚本来改变对象颜色(背景,边框,文本)?订货号: 说明:从 WinCC 7.0 开始, 包含

22、32 位值的颜色也支持颜色透明度。有两种组态颜色的方法可以被用来在运行系统中使用脚本通过 alpha 通道/透明度来改变对象颜色(背景,边框,文本)。 1. 在中央调色板指定颜色除了传统颜色,WinCC 7.0 还允许您创建您自己的颜色调色板。您可以为一个项目创建 10 个颜色调色板,每个调色板可以包含 20 种颜色。颜色调色板中的颜色可以通过脚本及指派对象颜色(如文本颜色)来使用。这适用于常用颜色及需要统一改变的颜色,例如在颜色调色板中改变一种颜色后,指派到该颜色的对象颜色(如文本颜色)也就随之改变了。 2. 通过数值指定颜色WinCC 7.0 允许您使用脚本来创建一个颜色值并将该值赋给一个

23、对象颜色(如文本颜色)。这适用于颜色很少使用及更改传统颜色或颜色调色板不影响创建的颜色的情况。警告:为了改变一个对象的颜色,“Central color scheme”属性必须被取消使能。您可以在图形编辑器中设置该属性。 打开图形编辑器。 右击相关对象并点击“属性”。 单击“属性”标签并双击“按钮”“显示”。 在打开的窗口中更改属性。要求: WinCC 7.0分配一个中央调色板中的颜色: 序号步骤1创建对应于项目的颜色调色板: 在树形视图中右击项目名称然后单击“属性”来打开项目属性。 选择“User Interface and Design”标签并单击“中央颜色调色板”(参见图 01:位置 1

24、)右侧的“编辑”按钮。 单击“创建颜色调色板”然后单击“重命名颜色调色板”(参见图 01:位置 2)。 为项目调色板输入一个名字(如 Test Color)。2向调色板中添加颜色: 使用滚动条(透明度,红,绿和蓝)来设定所需要的颜色,或在相关输入域中输入 RGB 值和透明度(参见图 01:Transparency = 0;Red = 30;Green = 15;Blue = 170)。 单击“To Palette”按钮然后单击颜色调色板中的号码(如 2)。 图 01 然后单击“OK”来确认这两个对话框。3创建 C 脚本: 在树形视图中右击“全局脚本”然后单击“打开 C 编辑器”。 在菜单栏中单

25、击“文件”“创建新项目函数”,并使用 C 脚本中的 Part 1 来替代函数模板中的内容。 图 02 单击“File”“Save”,输入一个名字并单击“OK”按钮。 单击“Yes”来确认所做的设置并关闭 C 编辑器。4通过单击鼠标来改变背景颜色: 在树形视图中单击“图形编辑器”并单击您的项目画面从而打开它。 通过在对象模板中选择“标准”“窗口对象”“按钮”来添加一个按钮到画面中。 右击插入的按钮然后单击“属性”,属性对话框被打开。 单击“事件”标签并双击“按钮”“鼠标”。 在“鼠标单击”行右击“动作”列,然后单击“C 动作.”。 使用 C 脚本中的 Part 3 来替代绿色的注释行。图 03

26、同时使用要改变其背景颜色的对象名称来替代名称“Testobjekt”(图 03:位置 1)。 使用来自项目颜色调色板(例 2)中新的背景颜色号来替代数字 4(图 03:位置 2)。 单击“OK”来确认对话框,关闭属性对话框并关闭画面。注意:如果您没有使用按钮,Part 3 必须要在一个动作中被调用。使用数值指定颜色: 序号步骤1创建 C 脚本: 在树形视图中右击“全局脚本”然后单击“打开 C 编辑器”。 在菜单栏中单击“文件”“创建新项目函数”并使用 C 脚本中的 Part 1 来替代函数模板中的内容。 图 04 单击“文件”“保存”, 输入一个名字并单击“OK”按钮。 在菜单栏中单击“文件”

27、“创建新项目函数”并使用 C 脚本中的 Part 2 来替代函数模板中的内容。 图 05 单击“Yes”来确认设置并关闭 C 编辑器。2通过单击鼠标来改变背景颜色: 在树形视图中单击“图形编辑器”并单击您的项目画面从而打开它。 通过在对象模板中选择“标准”“窗口对象”“按钮”来添加一个按钮到画面中。 右击插入的对象然后单击“属性”,属性对话框被打开。 单击“事件”标签并双击“按钮”“鼠标”。 在“鼠标单击”行右击“动作”列,然后单击“C 动作.”。 使用 C 脚本中的 Part 4 来替代绿色的注释行。 Bild 06 同时使用要改变其背景颜色的对象名称来替代名称“Testobjekt”(图

28、06:位置 1)。 使用需要的颜色所对应的 RGB 值和透明度(本例中为 30(红), 15(绿), 170(蓝), 50(透明度)来替代值 255, 60, 100, 30(图 06:位置 2)。 单击“OK”来确认对话框,关闭属性对话框并关闭画面。注意:如果您没有使用按钮,Part 4 必须要在一个动作或函数中被调用。如下的 TXT 文件包含了所需的 4 部分 C 脚本。 - Teil 1 -long GetPaletteColor(int ColorIndex) if (ColorIndex 199) ColorIndex = 199; return pow(2,31) + ColorI

29、ndex;- Teil 2 -long CreateRGBColor32(int nRed, int nGreen, int nBlue, .) va_list argptr; int Alpha; long Color; va_start (argptr, nBlue); if (argptr != NULL) Alpha = va_arg(argptr, int); else Alpha = 0; va_end(argptr); Color = nRed + (pow(2, 8) * nGreen + (pow(2, 16) * nBlue + (pow(2, 24) * (Alpha + 1); return Color;- Teil 3 - SetBackColor(lpszPictureName, Testobjekt, GetPaletteColor(4);- Teil 4 -SetBackColor(lpszPictureName,Testobjekt,GetPaletteColor(GetOutputValueDouble(lpszPictureName,ea_Palette); SetBackColor(lpszPictureName, Testobjekt, CreateRGBColor32(255, 60, 100, 30);第 40 页-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 单元课程

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com