文档库 最新最全的文档下载
当前位置:文档库 › wincc常用脚本.doc

wincc常用脚本.doc

wincc常用脚本.doc
wincc常用脚本.doc

D e a c t i v a t e R T P r o j e c t ( ) ; / / 退出系统

#pragmacode("useadmin.dll" )

#include"PWRT_api.h"

#pragmacode()

char*CUser=NULL;

CUser=GetTagChar("@CurrentUser" );

if(strlen(CUser)==0)

{

PWRTSilentLogin( "operator" ,"123456" );//用户“operator",密码"123456”登录}

OpenPicture("@MAIN.pdl" );

}

在画面中结合不同按钮来组态下面 C 操作

Login

Actionforlogin(forexample,"mouseclick"event):

#pragmacode("useadmin.dll")

#include"PWRT_api.h"

#pragmacode()

PWRTLogin('c');

Logout

Actionforlogout(forexample,"mouseclick"event):

#pragmacode("useadmin.dll")

#include"PWRT_api.h"

#pragmacode()

PWRTLogout();

PWRTLogin参数必须是CHAR 字符。它指定了显示对话框的监视器。如果只使用一个监视器,那么保留默认参

数“ c ”或者指定“ 1 ”。

注意

可以使用 PASSLoginDialog 函数来代替 PWRTLogin? 或者 PWRTLogout 函数。这个函数需要和函数 PWRTLogin 相

同的参数。 PWRTLogin? 和 PASSLoginDialog 函数可以调用登录界面,在上面可以登录或者注销。函数

PWRTLogout 被正确执行并且不调用登录界面。

正确执行后这两个函数都返回“ 1 ”。然而,登录不会等到显示对话框之后。

注意

如果使用多个显示器,为了能使登录对话框显示在合适的显示器上,需要WinCCBasicProcessControl(OS 项目编辑器 )。

不使用 WinCCBasicProcessControl时,可以指定显示器编号,但登录对话框始终显示在第一个显示器上。

#include"apdefap.h"//调用函数代码

voidOnClick( char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName)

{

SetVisible(lpszPictureName,"@ERROR" ,FALSE);// 当前画面上有一个名称为"@ERROR"对象,将其隐藏。FALSE或者 0都可以SetOperation(lpszPictureName,"@LoginIn" ,TRUE); / /函数 SetOperation是控制画面对象的可操作性

SetOperation(lpszPictureName,"@PasswordIn",TRUE);

SetOperation(lpszPictureName,"@OK" ,TRUE);

Set_Focus(lpszPictureName,"@LoginIn" );//次函数表示将光标重新聚焦到当前画面中,名称为“@Loginin”对象中SetVisible(lpszPictureName,lpszObjectName,FALSE);

SetVisible函数是用来执行是否显示的函数

在利用画面窗口实现画面切换中使用了 SetPictureName函数实

现画面属性的更改使用了 SetPropChar函数

SetPictureName("@MAIN.pdl" ,"Alarm" ,"AlarmList.pdl" );// 调用MAIN 中Alarm 画面中的 AlarmList 画面

SetProp是一种函数,功能是增加一个新项,修改一个现有项。

实现画面属性的更改使用了SetPropChar函数

SetPropChar("@MAIN.pdl" ,"Alarm" , "CaptionText","报警清单 "); //更改 MAIN 中Alarm 画面中标题属性为报警清

单 SetPropBOOL("@MAIN.Pdl" ,"Alarm" ,"Visible" ,1);} //MAIN 画面中中 Alarm 对象属性被设置为 1

SetVisible("@MAIN.pdl" ,"LoginWindow" ,TRUE);

}

void Open_AI_Pannel(char *AI_Num, char *TagName, char *Unit) //定义变量 //void* 可以指向任何类型的数据//Open_AI_Pannel名称

{

char AI_TemplateName[80];//80为最大字符长度

char str_Title[80];

char str_Unit[80];

char str_Loop_Name[80];

strcpy(AI_TemplateName, "AI_Template" ); //strcpy复制地址

strcat(AI_TemplateName,AI_Num); //strcat两个char类型链接

strcpy(str_Title,TagName);

strcat(str_Title, "AILoopControlPannel" );

SetPropChar( "@MAIN.pdl" ,AI_TemplateName, "CaptionText" ,str_Title); // 置为变量SetPropBOOL( "@MAIN.pdl" ,AI_TemplateName, "Visible" ,0);

//TomakethePicturewindowNOvisible// 不显示

SetPropChar( "@MAIN.pdl" ,AI_TemplateName, "TagPrefix" ,TagName);

//SettheObjectNameasTagPrefix- ¨¨o

SetPropBOOL( "@MAIN.pdl" ,AI_TemplateName, "Visible" ,1);

//TomakethePicturewindowvisible- ¨

strcpy(str_Unit,TagName);

strcpy(str_Loop_Name,TagName);

//SetPropChar("PID_Pannel.pdl","PidTitle","Text",TagName);

//Setthetitletotheojectname

//SetText("PID_Pannel.pdl","Unit01",Unit); //Unit_VL

//SetText("PID_Pannel.pdl","Unit02",Unit);//Unit_VL

strcat(str_Unit,"._LOOP_UNIT"),

SetTagChar(str_Unit,Unit);

//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMin",PID_Zero);

//strcat(str_Zero,"._PID_ZERO");

//SetTagWord(str_Zero,PID_Zero);

//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMax",PID_Span);

//strcat(str_Span,"._PID_SPAN");

//SetTagWord(str_Span,PID_Span);

//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMin",PID_Zero);

//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMax",PID_Span);

strcat(str_Loop_Name,"._LOOP_NAME" );

SetTagChar(str_Loop_Name,TagName);//str_Loop_Name=TagName

}

DOL电机脚本:

void Open_Motor_Pannel(char *Pannel_Num, char *Motor_Name)

{

//

char pannel_name[80];

char tagname[80];

char str_Title[80];

strcpy(pannel_name, "Motor_Template" );

strcat(pannel_name,Pannel_Num);

//SetPropBOOL("@MAIN.Pdl",pannel_name,"Visible",0);

strcpy(tagname,Motor_Name);

strcat(tagname, "._MOTOR_NAME" ); //._MOTOR_NAME 模版变量名

SetTagChar(tagname,Motor_Name);

SetPropChar( "@MAIN.pdl" ,pannel_name, "TagPrefix" ,Motor_Name); //TagPrefix 变量前缀SetPropChar( "@MAIN.pdl" ,pannel_name, "PictureName" , "Motor_Pannel.pdl" ); // 画面名称strcpy(str_Title,Motor_Name);

strcat(str_Title, "MOTORControlPannel" );

SetPropChar( "@MAIN.Pdl" ,pannel_name, "CaptionText" ,str_Title);

SetPropBOOL( "@MAIN.Pdl" ,pannel_name, "Visible" ,1); // 让画面窗口可见

PID 模版

void Open_PID_Pannel(char *PID_Num, char *TagName, char *Unit)

{

char PID_TemplateName[80];

char str_Title[80];

char str_Unit[80];

char str_Loop_Name[80];

strcpy(PID_TemplateName,"PID_Template");

strcat(PID_TemplateName,PID_Num);

strcpy(str_Title,TagName);

strcat(str_Title,"PIDLoopControlPannel");

SetPropChar( "@MAIN.pdl" ,PID_TemplateName, "CaptionText" ,str_Title); // ±êì a±SetPropBOOL( "@MAIN.pdl" ,PID_TemplateName, "Visible" ,0);

//TomakethePicturewindowNOvisible-2 é£é2ó

SetPropChar( "@MAIN.pdl" ,PID_TemplateName, "TagPrefix" ,TagName);

//SettheObjectNameasTagPrefix- μ±áó°×o

SetPropBOOL( "@MAIN.pdl" ,PID_TemplateName, "Visible" ,1);

//TomakethePicturewindowvisible- é

strcpy(str_Unit,TagName);

strcpy(str_Loop_Name,TagName);

//SetPropChar("PID_Pannel.pdl","PidTitle","Text",TagName);

//Setthetitletotheojectname

//SetText("PID_Pannel.pdl","Unit01",Unit); //Unit_VL

//SetText("PID_Pannel.pdl","Unit02",Unit); //Unit_VL

strcat(str_Unit, "._LOOP_UNIT" ),

SetTagChar(str_Unit,Unit);

//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMin",PID_Zero);

//strcat(str_Zero,"._PID_ZERO");

//SetTagWord(str_Zero,PID_Zero);

//SetPropWord("PID_Pannel.pdl","SetPointBarCtrl","RangeMax",PID_Span);

//strcat(str_Span,"._PID_SPAN");

//SetTagWord(str_Span,PID_Span);

//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMin",PID_Zero);

//SetPropWord("PID_Pannel.pdl","ProcessValueBarCtrl","RangeMax",PID_Span);

strcat(str_Loop_Name, "._LOOP_NAME" );

SetTagChar(str_Loop_Name,TagName); //str_Loop_Name=TagName

相关文档