WINCC常用C脚本
(2012-06-13 11:15:34)
标签:
wincc脚本c文化 |
分类: 自动控制 |
WINCC动画脚本
电机风扇旋转(几何---起始角度):
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static
if
f= f+30;
if (f==360) (f=0);
}
return f;
}
电机风扇旋转(几何---结束角度):
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static
if
i = i+30;
if (i==360) (i=0);
}
return i;
}
**物料水平右移动(几何---位置X)(停车后,物料回到原点)**
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static
if
if (a>=720)
}
if (!GetTagBit("DI电机运行信号"))
return a;
}
物料水平右移动(几何---位置X)(停车后,物料停在该点)
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static
if
if
}
return a;
}
物料向上移动(几何---位置Y)(停车后,物料停在该点)
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static
if
if
}
return b;
}
年月日(静态文本)
#include "apdefap.h"
char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
time_t
struct tm *ptm;
char *p;
time(&timer);
ptm =localtime(&timer);
p =SysMalloc(9);
sprintf(p,"d/d/d",ptm->tm_year-100+2000,ptm->tm_mon+1,ptm->tm_mday);
return(p);
}
时分秒(静态文本)
#include "apdefap.h"
char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
time_t
struct tm *ptm;
char *p;
time(&timer);
ptm =localtime(&timer);
p =SysMalloc(9);
sprintf(p,"d:d:d",ptm->tm_hour,ptm->tm_min,ptm->tm_sec);
return(p);
}
登陆到指定的用户名无须手动输入(按钮操作)
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
PWRTSilentLogin("用户名", "口令");
}
**显示登陆对话框无须热键(按钮操作)**
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
#pragma code ("useadmin.dll")
#include "PWRT_api.h"
#pragma code( )
}
退出WINCC运行(按钮操作)
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
{
}
}
单位递增按钮(到上限不提示出错)
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
DWORD value;
value=GetTagDWord("AI标签");
if (value>90) (value=上限);
else value=value+10;
SetTagDWord("AI标签",value);
}
单位递减按钮(到下限不提示出错)
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
DWORD value;
value=GetTagDWord("AI标签");
if (value<10) (value=下限);
else value=value-10;
SetTagDWord("AI标签",value);
}
**单位递增按钮(到上限提示出错)**
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
DWORD value;
HWND hWnd=NULL ;
hWnd=FindWindow(NULL,"Wincc-运行系统- ");
value=GetTagDWord("AI标签");
if (value<=90) (value=value+10);
else MessageBox(hWnd,"已到达上限值!","错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL);
SetTagDWord("AI标签",value);
}
**单位递减按钮(到下限提示出错)**
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
DWORD value;
HWND hWnd=NULL ;
hWnd=FindWindow(NULL,"Wincc-运行系统- ");
value=GetTagDWord("AI标签");
if (value>0) (value=value-10);
else MessageBox(hWnd," 已到达下限值!"," 错误",MB_OK|MB_ICONWARNING|MB_APPLMODAL);
SetTagDWord("AI标签",value);
}
**自动登陆到指定的用户(画面属性--其它—**)**
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("useadmin.dll")
#include "PWRT_API.H"
#pragma code()
PWRTSilentLogin("用户名", "口令");
return(0X0);
}
**询问框(最好用于单机启动,组启也可,2个按钮,NO不操作)**
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
HWND hWnd=NULL;
int 上位启动信号;
hWnd=FindWindow(NULL,"WinCC C-Course");
if (GetTagBit("DI备妥"))
{
上位启动信号=MessageBox(hWnd,"电源已备妥,您现在确定要启动吗?","启动!",
printf("\r\nExample 3\r\n");
}
else
MessageBox(hWnd,"电源未备妥,请查证后重试!","启动!",
}
**询问框(最好用于单机启动,组启也可,3个按钮,NO复位)**
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
HWND hWnd=NULL;
int上位启动信号;
hWnd=FindWindow(NULL,"WinCC C-Course");
if (GetTagBit("DI备妥"))
{
上位启动信号=MessageBox(hWnd," 电源已备妥,您现在确定要启动吗?","启动!",
}
else
MessageBox(hWnd," 电源未备妥,请查证后重试!","启动!",
}
**搅拌器左侧扇页(几何—宽度)**
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static
static
if (GetTagBit("DI电机运行信号"))
{
if ((h>0)&&(h<=50))
{
(h-=2);
return h;
}
if ((u>=0)&&(u<50))
{
(u+=2);
return u;
}
u=0;
h=50;
return h;
return u;
}
if (!GetTagBit("DI电机运行信号")){
h=50;
u=0;
return h;
return u;
}
}
**搅拌器左侧扇页(几何—位置X,右侧扇页没有位置变化)**
#include "apdefap.h"
long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
static
static
if (GetTagBit("DI电机运行信号"))
{
if ((h>=75)&&(h<125))
{
(h+=2);
return h;
}
if ((u<=125)&&(u>75))
{
(u-=2);
return u;
}
u=125;
h=75;
return h;
return u;
}
if (!GetTagBit("DI电机运行信号")){
h=75;
u=125;
return h;
return u;
}
}
**显示层按钮**
Sub
X6309X94AE2X0000X0000_X6309X94AE2X0000X60C5_X6309X94AE2X0000X653E_OnLButtonDown(ByVal
Item, ByVal Flags, ByVal x, ByVal
y)
Dim objScreen
Dim CountLayer
Set objScreen = HMIRuntime.Screens("layer")
For CountLayer=1 To 32 Step 1
objScreen.Layers(CountLayer).Visible = vbFalse
Next
objScreen.Layers(n).Visible = vbTrue
End Sub
n=层数+1
初始画面程序(画面空地--属性--事件--其它--打开画面--动作)
**打印按钮**
#include "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
{
WinExec("PRTSCR.EXE -hardcopy",SW_SHOWNORMAL);
}
**一个圈代表电机两种状态**
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
char* opentag="DI1电机运行信号";
}

加载中…