WINCC 基本的画面C脚本

Fighting 关注

收藏于 : 2022-04-17 23:43   被转藏 : 4   

 对于刚刚学习WINCC的人,希望有用。。
 

SetVisible函数是用来执行是否显示的函数。
lpszPictureName:表示当前画面
lpszObjectName:表示当前对象
SetVisible(lpszPictureName,lpszObjectName,0); //Return-Type :BOOL 
以上面函数为例。假如你点击一个按钮,代码如上,则点击后按钮隐藏。同理,SetVisible(lpszPictureName,"@ERROR",FALSE)表示当前画面上有一个名称为"@ERROR"对象,将其隐藏。FALSE或者0都可以。
Set_Focus(lpszPictureName,"@LoginIn");次函数表示将光标重新聚焦到当前画面中,名称为“@Loginin”对象中,比如一个输入域。

修改变量前缀————SetPropChar(lpszPictureName,"PW","Tagprefix","F40708.") 

重设画面窗口的画面名称————SetPictureName(lpszPictureName,"PW","P1_FFU.pdl");

SetVisible表示可见度———SetVisible“画面名称”,“对象名称\画面窗口”,10);——利用画面窗口显示画面

1  OpenPicture("index.Pdl");  打开index.Pdl”画面;————(middle*为画面窗口

SetPictureName("index.Pdl","middle","CR.Pdl"); 使CR.Pdl”画面在“index.Pdl”中“middle”画面窗口中打开

SetPictureName("index.Pdl","middle9","lift2.Pdl");使lift2.Pdl”画面在“index.Pdl”中“middle”画面窗口中打开

#pragma option(mbcs)

2.单个设备的控制面板(不唯一)

 P1_FFU.pdl

  char*S;

SetVisible( lpszPictureName,"PW",0);表示当前画面上有一个名称为"PW"对象,将其隐藏。FALSE或0都可以

SetPropChar(lpszPictureName,"PW","Tagprefix","F40708.");在当前画面中PW”赋值\关联“F40708”变量

SetPictureName(lpszPictureName,"PW","P1_FFU.pdl");在单前画面中PW”中打开“P1_FFU.pdl”画面

SetVisible( lpszPictureName,"PW",1/0);表示当前画面上有一个名称为"PW"对象,将其显示/消失

S=GetTagPrefix(lpszPictureName,"PW"); //Return-Type: void

SetTagChar ("F40708.name", "FFU_F-4-07-08"); //Return-Type: BOOL   给字符型变量F40708.name”                                                                                                           赋值“FFU_F-4-07-08

#pragma option(mbcs)

  

 SetTagDWord("sv",1/2/3); 档位控制   SetTagDWord("onoff",0);  启停控制

 

4.一条回路的控制面板(唯一)

FU-01-21C-WL-1

SetTagBit("F4_W_FFU01.ONOFF",1/0);//Return-Type: BOOL  控制F4_W_FFU01.ONOFF/回路/电源”开/

SetTagDWord("F41901.sv",1/2/3);  控制设备的档位 F41901.sv代表着设备关联变量

SetTagDWord("F41901.onoff",1/0);  控制单个设备的启/

 

5.手动/自动切换,PID参数

:P1_PID.Pdl

{  BOOL bool1;

HWND Hwnd;

int iRet;

Hwnd = FindWindow(NULL,"WinCC-运行系统 - ");

if (!Hwnd) Hwnd = FindWindow(NULL,"WinCC-运行系统 - ");

if (!Hwnd) printf("\r\nGetWinCC Handle Failed!");

iRet=MessageBox(Hwnd,"是否切换为自动/手动","确认对话框",MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);

switch (iRet)

{

case IDYES: printf("user do YES\r\n");

SetTagBit("MA",0/1);     其中MA”就是关联的变量(自动为0,手动为1

break;

case IDCANCEL: printf("user do CANCEL\r\n");

break;

}

 

6.时间   年/月/日

time_t  timer ;

struct tm *ptm;

char *p;

time(&timer);

ptm =localtime(&timer);

p =SysMalloc(9);

sprintf(p,"%04d/%02d/%02d",ptm->tm_year-100+2000,ptm->tm_mon+1,ptm->tm_mday);

return(p);

#pragma option(mbcs)

 

时间   //

time_t  timer ;

struct tm *ptm;

char *p;

time(&timer);

ptm =localtime(&timer);

p =SysMalloc(9);

sprintf(p,"%02d:%02d:%02d",ptm->tm_hour,ptm->tm_min,ptm->tm_sec);      

return(p);

#pragma option(mbcs)

 

7.封面的制作

#include "apdefap.h"

void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) {    OpenHomePicture();}

Open Home Picture 打开主页图片

ExitWinCC (); //Return-Type: BOOL

#pragma option(mbcs)                      关闭wincc

 

ProgramExecute("PASSCS.exe");

#pragma option(mbcs)                      打开用户配置(这只是脚本,需要在属性中设置管理授权)

 

#pragma code("USEADMIN.DLL")

#include "PWRT_API.H"

#pragma code()

PWRTLogin('1');

#pragma option(mbcs)                       登录/登出

 

 

8.

change_passWord.pdl

修改密码脚本(确定键):

#pragma code("UseGen.dll")

#include "USEGENAP.H"

#pragma code()

LPCMN_ERROR err;

if(strcmp(GetTagChar("@NewPassword"), GetTagChar("@ConfirmationPassword"))==FALSE)

  {

    if (PWGENConnect("CC_SewageDi_09_11_27_17_20_29",err) )

     {

        if (PWGENChangePassword(GetTagChar("@CurrentUserName"),GetTagChar("@OldPassword"),GetTagChar("@NewPassword"),err))

          {

                MessageBox(NULL,"密码修改成功!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);

                SetTagChar("@CurrentUserName","");

                SetTagChar("@OldPassword","");

                SetTagChar("@NewPassword","");

                SetTagChar("@ConfirmationPassword","");

            }

        else

           {

               if ((strlen(GetTagChar("@NewPassword")) <= 5)&&(strlen(GetTagChar("@OldPassword"))!=0))

                 {

                    MessageBox(NULL,"您输入的新密码个数小于6,请重新输入!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);

                    SetTagChar("@NewPassword","");

                    SetTagChar("@ConfirmationPassword","");

                  }

                else

                 {

                    MessageBox(NULL,"用户名和密码不一致,请重新输入!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);

                    SetTagChar("@CurrentUserName","");

                    SetTagChar("@OldPassword","");

                 }

             }

      }

    else

      {

        MessageBox(NULL,"建立联接失败!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);

      }

   PWGENDisconnect(err);

  }

else

  {

     MessageBox(NULL,"两次输入的新密码不一致,请重新输入!","提示",MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);

     SetTagChar("@NewPassword","");

     SetTagChar("@ConfirmationPassword","");

  }

#pragma option(mbcs)

9.求平均值

double v1,v2,v3,v0;

v1=GetTagFloat("v1");

v2=GetTagFloat("v2");

v3=GetTagFloat("v3");

v0=(v1 + v2 + v3)/3;

 

SetTagFloat("v0",v0);   赋值

 

return(v0);    返回平均值

#pragma option(mbcs)

 阅读文章全部内容  
点击查看
文章点评
相关文章
Fighting 关注

文章收藏:1

TA的最新收藏