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