SIMATC WinCC V7.5 脚本应用(2) – C脚本参数应用

文章摘要

讲解画面中脚本的队列,应用脚本实现用户登录/注销 获取对象属性,WinCC的事件脚本(例如按钮按下触发的脚本)、标准函数、内部函数以及项目函数(用户自定义函数)等接口参数的说明。

文章内容

WinCC的事件脚本(例如按钮按下触发的脚本)、标准函数、内部函数以及项目函数(用户自定义函数)都带有接口参数,本文档将通过一个例子来介绍这些参数的应用。

案例功能概述

本例实现通过画面模板结合结构变量来实现多个电机的控制功能。点击画面中的不同按钮弹出相应电机的控制画面,并且画面标颖与按钮文本保持一致,同时操作画面弹出位置和按钮位置对应。

图片[1]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

首先创建“motor”结构类型,包括start、stop和run三个元素,分别用来控制电机的启动、停止以及反馈电机的状态。然后,创建4个数据类型为“motor”的结构变量,分别为motor1、motor2、motor3和motor4。

图片[2]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

创建画面作为模板画面,添加如下图所示的对象并调整画面大小。运行状态文本及文本颜色根据“run”元素的值发生变化,因此为文本创建文本及字体颜色的动态对话框动画,使用变量“.run”。

图片[3]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

“启动”按钮置位结构变量的“start”元素,复位结构变量的“stop”元素,编写如下C脚本:

SetTagBit(".start",1);
SetTagBit(".stop",0);

“停止”按钮置位结构变量的“stop”元素,复位结构变量的“start”元素,同样编写如下C脚本:

SetTagBit(".stop",1);
SetTagBit(".start",0);

接下来介绍如何使用C脚本来设置画面窗口的属性,将介绍直接使用标准函数和使用项目函数两种方法。

使用标准函数实现

新建画面,在画面中添加四个按钮和一个画面窗口,四个按钮分别用来打开电机的控制画面,按钮文本设置为“电机一”、“电机二”、“电机三”和“电机四”,设置画面窗口对象的名称为“picw1”,其它对象和属性保持默认即可。

为按钮编写以下C脚本,用来设置画面窗口的变量前缀、对应画面名称并显示画面窗口,读取按钮的文本并设置画面标题,根据按下按钮时鼠标的位置来确定弹出画面的位置。

图片[4]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

脚本运行结果如下图:

图片[5]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

首先来看按钮事件脚本的参数:

void OnLButtonDown(char* lpszPictureName, char* lpsz0bjectName,charlpszPropertyName, UINT nFags,intx, inty)

其中, lpszPictureName为按钮所在的画面名称,lpszObjectName为按钮对象的名称,lpszObjectName为触发事件的按铅属性名称,x、y为点击按钮时鼠标所处的位置。这些接口参数可以被其下面的脚本直接使用。

接着来看具体的脚本,这里使用的都是WinCC内部函数 。

设置画面窗口的变量前缀使用函数

SetTagPrefix(LPCTSTR lpszPictureName,LPCTSTR lpsz0bjectName,char szTagPrefix)

其中lpszPictureName是画面窗口所在画面的名称,lpsz0bjectName是画面窗口对象的名称,szTagPrefix为变量前缀,这三个参数都可以设置为字符串数据。例如,本例为画面窗口的变量前缀设置为“motor1”的脚本为

SetTagPrefix(lpszPictureName,"picw1"motor1”)

由于事件接口参数已经包括画面名称lpszPictureName,因此这里可以直接使用此参数。

设置画面窗口的画面名称使用

SetPictureName(LPCTSTR lpszPictureName,LPCTSTR lpszObiectName, char* szPictureName)

其中lpszPictureName是画面窗口所在画面的名称,[lpszObiectName是画面窗口对象的名称,szPictureName为画面名称。例如,本例画面窗口加载画面“motor”的脚本为

SetPictureName (lpszPictureName,"picw1","motor")

设置某个对象是否显示使用函数

SetVisible(LPCTSTR lpszPictureName,LPCTSTR lpszObjectName,BOOL bVisible)

其中参数IpszPictureName和 lpszObiectName分别是画面名称和对象名称,bVisible=0时对象隐藏,bVisible=1时对象显示。例如,本例中设置画面窗口”picw1″显示的脚本为

 SetVisible (lpszPictureName,"picw1".1).

获取对象文本的函数为GetText(lpszPictureName,lpszObjectName),本例中获取按钮对象的文本,由于事件接口参数已经包括按钮对象名称,因此可以直接使用事件参数lpszPictureName和lpszObjectName,脚本为

GetText(lpszPictureName,lpszObjectName);

设置对象属性的函数为SetPropxxxx,xxxx和属性的类型相关,本例中设置画面窗口的标题,标题为文本,因此使用函数

SetPropChar(LPCTSTR lpszPictureName, LPCTSTRlpszObjectName, LPCTSTR lpszPropertyName, char* szValue)    

其中lpszPropertyName代表属性名称。

本例中读取按钮文本并设置画面窗口的标题的脚本为

SetPropChar(lpszPictureName,"picw","CaptionText",GetText(lpszPictureName,lpsz0biectName));    

“CaptionText”是画面窗口的标题属性名称。

设置对象位置的函数为

SetLeft(LPCTSTR lpszPictureName, LPCTSTR Ipsz0biectName,long int lTop);
SetTop(LPCTSTR lpszPictureName, LPCTSTR lpsz0bjectName,long int lTop);

本例中,设置画面窗口弹出位置的脚本为

SetLeft(lpszPictureName,"picw1",x);
SetTop(lpsZPictureName,"picw1",y);

由于事件参数已经包括鼠标位置x、y,这里可以直接使用。

这些函数对应参数的说明可以从WinCC帮助系统中获得。

图片[6]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

另外,在事件中使用函数时,会弹出参数选择对话框,在这里可以为各个参数选择对应的对象或输入数值,也可以点击“确认”按钮之后在脚本编辑器中修改参数。

图片[7]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

通过项目函数实现

本例中多个按钮实现相同的功能,因此可以使用项目函数来提高组态效率。首先创建项目函数,并为项目函数添加接口参数,包括对象所在画面名称、画面窗口的名称、画面窗口加载的画面名称、变量前缀、对象名称以及画面窗口的显示位置,本例中创建的项目函数为:

void motoop(char* lpszPictureName, char* PicwName,char* PlCName,char* TagPName,char* lpszObjectName,int x, int y)

函数下面的脚本就可以直接使用项目函数的接口参数,具体脚本:

SetTagPrefix(lpszPictureName,PicWName,TagPName);//设置画面窗口的变量前缀
SetPictureName(lpszPictureName,PicwName,PlCName);//设置画面窗口的画面名称
SetVisible(lpszPictureName,PicwName,1);//设置画面窗口显示
SetPropcharlpszPictureName,PicwName,"CaptionText",GetText(lpszPictureName,lpsz0bjectName)):/读取按钮文本并设置画面窗口的标题
SetLeft(lpszPictureName,PicWName,x)://设置画面窗口显示位置Left
SetTop(lpszPictureName,PicWName,y);//设置画面窗口显示位置Top

项目函数最终结果如下图:

图片[8]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

在画面按钮事件中调用项目函数,由于画面名称、窗口加载的画面名称和变量前缀三个参数即可。

图片[9]-SIMATC WinCC V7.5脚本应用—C脚本参数应用

4个按钮的最终脚本如下:

motor_op(lpszPictureName,"picw1","motor","motor1",lpszObjectName,x,y); //电机motor_op(lpszPictureName,"picw1","motor","motor2",lpszObjectName,x,y); //电机motor_op(lpszPictureName,"picw1","motor","motor3",lpszObjectName,x,y); //电机三motor_op(lpszPictureName,"picw1","motor","motor4",lpszObjectName,x,y); //电机四

使用项目函数后运行项目,点击“电机一”、“电机二”、“电机三”、“电机四”弹出相应电机的控制画面,画面标题与按钮文本保持一致,同时画面弹出位置和按钮位置相对应。

图片[10]-SIMATC WinCC V7.5脚本应用—C脚本参数应用
© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

    暂无评论内容