文档库 最新最全的文档下载
当前位置:文档库 › WINCC动画脚本集锦

WINCC动画脚本集锦

WINCC动画脚本集锦
WINCC动画脚本集锦

WINCC动画脚本

电机风扇旋转(几何---起始角度):

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

static DWORD f=20;

if (GetTagBit("DI电机运行信号")) {

f= f+30;

if (f==360) (f=0);

}

return f;

}

电机风扇旋转(几何---结束角度):

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

static DWORD i=80;

if (GetTagBit("DI电机运行信号")) {

i = i+30;

if (i==360) (i=0);

}

return i;

}

**物料水平右移动(几何---位置X)(停车后,物料回到原点)**

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

static int a=350;

if (GetTagBit("DI电机运行信号") && (a<=730)) {

a+=20;

if (a>=720) (a=350);

}

if (!GetTagBit("DI电机运行信号")) (a=350);

return a;

}

物料水平右移动(几何---位置X)(停车后,物料停在该点)

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

static int a=350;

if (GetTagBit("DI电机运行信号") && (a<=730)) {

a+=20;

if (a>=720) (a=350);

}

return a;

}

物料向上移动(几何---位置Y)(停车后,物料停在该点)

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

static int b=450;

if (GetTagBit("DI电机运行信号") && (b>=290)) {

b-=10;

if (b<=280) (b=450);

}

return b;

}

年月日(静态文本)

#include "apdefap.h"

char* _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

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);

}

时分秒(静态文本)

#include "apdefap.h"

char* _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

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);

}

登陆到指定的用户名无须手动输入(按钮操作)

#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( )

PWRTLogin('c');

}

退出WINCC运行(按钮操作)

#include "apdefap.h"

void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)

{

DeactivateRTProject ();

}

}

单位递增按钮(到上限不提示出错)

#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,"电源已备妥,您现在确定要启动吗?

","启动!",

MB_YESNO|MB_ICONQUESTION|MB_APPLMODAL);

printf("\r\nExample 3\r\n");

if (上位启动信号==IDNO) (printf("User selected NO button \r\n"));

else (SetTagByte("上位启动信号",1));

}

else

MessageBox(hWnd,"电源未备妥,请查证后重试!","启动!",

MB_OK|MB_ICONHAND|MB_APPLMODAL);

}

**询问框(最好用于单机启动,组启也可,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," 电源已备妥,您现在确定要启动

吗?","启动!",

MB_YESNOCANCEL|MB_ICONQUESTION|MB_APPL

MODAL);

if (上位启动信号==IDCANCEL) (printf("User selected NO button

\r\n"));

else

{

if (上位启动信号==IDYES) (SetTagByte("上位启动信号",1));

else (SetTagByte("上位启动信号",0));

}

}

else

MessageBox(hWnd," 电源未备妥,请查证后重试!","启动!",

MB_OK|MB_ICONHAND|MB_APPLMODAL);

}

**搅拌器左侧扇页(几何—宽度)**

#include "apdefap.h"

long _main(char* lpszPictureName, char* lpszObjectName, char*

lpszPropertyName)

{

static int h=50;

static int u=0;

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 int h=75;

static int u=125;

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_X6309X94AE2X00 00X653E_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

https://www.wendangku.net/doc/b616464913.html,yers(CountLayer).Visible = vbFalse

Next

https://www.wendangku.net/doc/b616464913.html,yers(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电机运行信号";

char* closetag="DI2电机运行信号";

BOOL open,close; open = GetTagBit(opentag); close = GetTagBit(closetag);

if (open)

return CO_GREEN;

if (close)

return CO_BLUE;

wincc 常用脚本

DeactivateRTProject ();//退出系统 #pragma code("useadmin.dll") #include"PWRT_api.h" #pragma code() char* CUser=NULL; CUser=GetTagChar("@CurrentUser"); if (strlen(CUser)==0) { PWRTSilentLogin("operator","123456");//用户“operator",密码"123456”登录} OpenPicture("@MAIN.pdl"); } 在画面中结合不同按钮来组态下面 C 操作 Login Action for login (for example, "mouse click" event): #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogin('c'); Logout Action for logout (for example, "mouse click" event): #pragma code ("useadmin.dll") #include "PWRT_api.h" #pragma code() PWRTLogout(); PWRTLogin 参数必须是CHAR 字符。它指定了显示对话框的监视器。如果只使用一个监视器,那么保留默认参数“c”或者指定“1”。 注意 可以使用PASSLoginDialog 函数来代替PWRTLogin 或者PWRTLogout 函数。这个函数需要和函数PWRTLogin 相同的参数。PWRTLogin 和PASSLoginDialog 函数可以调用登录界面,在上面可以登录或者注销。函数PWRTLogout 被正确执行并且不调用登录界面。 正确执行后这两个函数都返回“1”。然而,登录不会等到显示对话框之后。 注意 如果使用多个显示器,为了能使登录对话框显示在合适的显示器上,需要WinCC Basic Process Control (OS项目编辑器)。 不使用WinCC Basic Process Control 时,可以指定显示器编号,但登录对话框始终显示在第一个显示器上。 #include"apdefap.h"//调用函数代码 void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

WINCC中制作管道流体流动动画的一种方法

WINCC中制作管道流体流动动画的一种方法 采用自定义对象的方法制作,不需要使用全局变量及外部量。 以制作横向向右流动流动块为例: 1、画两个高度相等的矩形,分为是rec1和rec2,rec1的宽度小于rec2,rec2属性中的“显示”为否,将rec1和rec2放在一起,左对齐,rec1居前。rec1为实际要显示的流动块,rec2在实际运行中不显示,但需要其属性参数作为定值,以供程序使用,rec2-rec1的值即为流动块每次向右移的距离。 2、将rec1和rec2组合成自定义对象,需要加入属性rec1.Left、rec1.Width、rec1.Visible、rec2.Width 这几个属性到自定义对象中去,其它属性可以根据需要添加。 3、在自定义块中的属性“位置X1”加入C脚本,触发器选“250ms”标准周期,代码如下: long Left,Left1,Width1,Width2; BOOL Visible1; long i,k; Visible1 = GetPropBOOL(lpszPictureName,lpszObjectName,"Visible1"); //Return-Type: BOOL Left1 = GetPropWord(lpszPictureName,lpszObjectName,lpszPropertyName); //Return-Type: long int if (Visible1) { Left = GetLeft(lpszPictureName,lpszObjectName); Width1 = GetPropWord(lpszPictureName,lpszObjectName,"Width1"); Width2 = GetPropWord(lpszPictureName,lpszObjectName,"Width2"); k = Width2 - Width1; i = Left + Width1; Left1 = Left1 + k; if (Left1 >= i) Left1 = Left; } return Left1; 4、将此自定义对象加入全局库中,以后可以在其它项目中直接使用。 5、在画面中使用直接拷贝,一个接一个连起来,可以形成管道流体动画效果。 其它方向的流动块按此方法一样可以,还可以制作起始流动块和结束流动块,实际使用中这两个块不要也行,用其它的东西把头尾盖起来就可以了。

WINCC-FLEXIBLE多用户登录(李洋)

在项目视图中找到“运行系统用户管理”条目。双击它可以列出子菜单,其中有三个选项,分别是是“组”、“用户”以及“运行系统安全性设置” 双击“组”选项打开用户组编辑器 在编辑器中有两个部分,分别是“组”表、“组权限”表。 在组表中列出了现有的用户组,在组权限表中列出了系统中现有的所有权限。 为每个用户组分配不同的权限是通过在组权限表中的复复选框内打勾实现的。 在项目视图的“组”选项上单击鼠标右键选择“添加组”;或者在用户组编辑器“组表”中紧邻现有组的空白行上双击鼠标左键,都可添加一个新的用户组。 在“组权限”表中空白行内,双击鼠标左键可以添加新的权限。 这里新添加了一个“组1”组,并把“操作”的权限分配给它

打开用户编辑器 在项目视图中“运行系统用户管理”条目下双击“用户”选项打开用户组编辑器 添加用户 在编辑其中可以清楚的看到每个用户所在的用户组。如上图所示灰色部分显示的用户是系统默认的用户“Admin”,属于管理员组,拥护所有的权限。 添加或修改“用户”的方法与添加或修改“组”的方法一样。 在这里创建了两个用户,分别是“user1”和“user2”并且将“user1”分配给“用户”组,将“user2”分配给“组1”组。则这两个用户就分别拥有了“用户”组和“组1”组的权限。 为用户设置密码 这里我们user1输入口令123,确认口令123; user2输入口令234,确认口令234;

在属性视图中为用户设置密码 打开文本和图形列表(点开文本列表) 新建文本列表如图

添加缺省条目,数值为1时,条目为user1,数值为2时,条目为user2 创建画面 创建新画面并将“符号IO域“拖拽到画面,此IO域为用户名 双击符号IO域其属性有 文本列表选择刚建的列表,变量选择新建变量“test”变量类型为BOOL型 添加IO域,并新建变量password1 变量类型为字符串型即sting型,并把变量password1连接到IO域上,IO域属性设为字符串类型,并且隐藏输入,此IO域为密码的输入,如下图

wincc登录与注销修改当前用户的密码

调用用户管理的C脚本:(没试) #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { SSMProgramStart( lpszPictureName, lpszObjectName, "Passcs.exe"); } 在按钮上用ProgramExecute("Passcs.exe")脚本可以执行用户管理程序 登陆和注销,做个登陆的画面,放2个按钮,写脚本: 由函数PWRTLogin()来执行登录。 #pragma code("USEADMIN.DLL") #include "PWRT_API.H" #pragma code() PWRTLogin('1'); 由函数PWRTLogout()来实现注销。 #pragma code("USEADMIN.DLL") #include "PWRT_API.H" #pragma code() PWRTLogout(); 分别用登录按钮和注销按钮实现,在按钮的事件中输入相应的代码, 登录动作(如事件Mouse-click) #pragma code (“useadmin.dll”) #include “PWRT_api.h” #pragma code() PWRTLogin(’c’); - 退出动作(如事件Mouse-click) #pragma code (“useadmin.dll”) #include “PWRT_api.h” #pragma code() PWRTLogout(); 如何修改当前用户的密码,请参考(没试) “CC_SewageDi_09_11_27_17_20_29”为自己创建的项目数据库名称; “@CurrentUserName”用当前户名,为WinnCC自身的内部变量,文本变量16位字符集,连接一个输入输出域; “@OldPassword”用当前用户旧密码,为需要创建的内部变量,文本变量16位字符集,连

wincc功能使用总结

1、Wincc online trend控件实现多条曲线查询 项目要求,查询任意时段内的两条曲线的历史数据 1、首先在变量记录中设置需要记录的变量,如果需要在一个控件内显示两条曲线,做数据 归档时,归档属性最好是一致的,归档属性不一样是否会出现问题,这个没测试,有兴趣的可以测试一下。 2、数据记录设置OK后,新建画面插入online trend控件,我的项目需要把趋势打印出来, 所以把控件的工具栏全部隐藏。 3、双击online trend控件,添加需要显示的归档变量。选择公共X,Y轴等参数。坐标显示 根据自己使用选择,基本上不用设置太多参数。 4、添加需要显示的历史归档变量后,就需要写脚本了,西门子工控网论坛有实例,实例提 示针对于一条曲线时使用,咨询西门子技术支持,如果需要同时显示两条曲线时,需要对两条曲线分别进行设置属性“控件.index=0,1”,但是测试其实只设置index=0的起始及结束时间就OK,就是论坛给的实例不是只针对于一条曲线,两条曲线时同样适用,再多的曲线就没测试了。 5、西门子默认的时间格式为“MM-DD-YYYY HH-MM-SS”格式,所以在设置趋势起始及 结束时间时需要注意。 6、注:导入归档数据需要一定的时间,建议按钮触发。尝试在画面打开时触发脚本,有的 时候会出现历史数据加载不上来。 7、脚本如下,仅供参考 Dim objConnection Dim strConnectionString Dim strSQL Dim objrs Dim chaxun '定义曲线控件 Dim TREND Dim strval_1

Dim strval_2 Dim strval_t1 Dim strval_t2 '初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。 '初始化程序,省略N行。。。。。。。。。。。。。。。。。。。。。。。。。。。。 chaxun=HMIRuntime.Tags("管号查询输入").Read strConnectionString = "Provider=MSDASQL;DSN=REPORT;UID=;PWD=;" strSQL = "select * from report where guanhao='"&chaxun&"';" Set objConnection = CreateObject("ADODB.Connection") objConnection.ConnectionString = strConnectionString objConnection.Open Set objrs = CreateObject("ADODB.RecordSet") objrs.open strSQL,objConnection /赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/ /赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/ objrs.close Set objrs = Nothing objConnection.Close Set objConnection = Nothing '趋势时间设定 Set trend = ScreenItems("控件1") strval_r=HMIRuntime.Tags("测试日期_read").Read strval_t1=HMIRuntime.Tags("开始时间_read").Read strval_t2=HMIRuntime.Tags("测试时间_read").Read

WINCC脚本个人经验总结

语音报警的组态 在工业现场安全是极其重要的,无论从那个角度讲我们应该利用一切手段减少故障的发生。在故障已经发生的时候,应该在第一时间以多种方式通知操作人员有故障发生。现代微处理计算机的处理速度可以完全胜任对于图形,语音地同时处理。所以我们可以利用计算机的声卡和音箱在有故障发生的时候产生语言报警,但是问题是WinCC本身并不能产生语音的功能,而且其内部的上千个函数也没有提供处理声音的函数。解决这个问题的方法归功于微软开发的WinCC与操作系统地完美结合,因为在WinCC中可以直接调用Windows的API函数。实现的具体C脚本代码如下: long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code(\"Winmm.dll\") void WINAPI PlaySoundA(char *pszSound,char *hmode,DWORD dwflay); #pragma code() if(GetTagBit(\"112排泥备泵故障\")) PlaySoundA(\"d:\\\\\\\\winnt\\\\\\\\media\\\\\\\\Mircosoft sound.wav\",NULL,8); return 1020; }重新启动后,不使用登录窗口如何以一个缺省用户的身份自动登录?怎样确保运行期间有个缺省用户始终处于登入状态?即使另外一个用户已经预先退出。 解答: 重新启动以及在运行期间,您希望HMI系统达到最小的实用性而不使用登录窗口。然而,对于高级操作,登录功能应当保留。此外,如果没有用户登录,则有一个缺省的用户自动登录。缺省用户的权限可以在用户管理器中根据需要设定。 可使用下面的C脚本执行此项功能,请按照下列步骤进行: 将附件中的函数“Silentlogin.pas”复制到项目中的“PAS”子文件夹中。 在项目中选择Global Script > C Editor > Actions > Global Actions并打开全局动作(Global Action)“Silentlogin.pas”。 在“PWRTSilentLogin (“Login”,“Password”);”一行中,用缺省的用户名替换用户“Login”,用缺省用户的口令代替“Password”。 无限循环命令 static int a=0, b=0; if(GetTagBit("BINi_pictu_dyn_09")) { if(b==0) a++; else a--; if(a==7) b=1; if(a==0) b=0; }

WinCC脚本案例保留

WinCC脚本案例保留 2010-09-16 16:44 最近做一个WinCC跟ERP通讯的一个小项目,将脚本语言保留下来,以备不时之需! 仅仅是保留,各位看官如发现不妥之处请加以指教. 1.通过扫描枪扫描到ID号传给PLC,WinCC读取到ID号从ERP数据库中查找相关数据,写回到PLC,并给PLC一个写完成确认信号.(数据库是SqlServer2000) Dim DB240trigger,db241trigger db240trigger=HMIRuntime.Tags("db240itrigger").Read db241trigger=HMIRuntime.Tags("DB241itrigger").Read Dim ss,str str=HMIRuntime.Tags("DB240szcoil_ID").Read ss=CStr(str) If (db240trigger=1 And db241trigger=0 ) Then Dim sPro,sDsn,sSer,sCon,sSql Dim oRsMaterial,conn,oCom,oItem,oRsSCHEMA Dim database,server,uid,pwd sCon ="driver=sql server;server=10.51.103.96;DATABASE=brgs_release;uid=sa;pwd=pasword" Set conn = CreateObject("ADODB.Connection") conn.ConnectionString = sCon conn.Open Set oRsMaterial = CreateObject("ADODB.Recordset") sSql= "SELECT * FROM dbo.BRGS_GP_Material where MkNo='" & CStr(ss) & "'" oRsMaterial.open ssql,conn,1,1 Dim m,n m=oRsMaterial.recordcount If m<>1 Then MsgBox "这个ID号找不到唯一的一条参数信息,请手动输入信息!" Exit Function End If Dim sCon2,sSql2

VB操作wincc脚本心得

Vbs 操作wincc画面脚本总结 一:不使用变量单纯的操作界面 1.操作某个画面中控件的属性如Home1.Pdl(总窗体)下的画面窗口2(画面窗口) Sub OnClick(ByVal Item) Dim objCircle Dim screenname Dim pwname Set objCircle= ScreenItems("圆1" ) objCircle.Radius = 60 Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体 Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名 MsgBox(objCircle.Radius) //输出圆的半径 MsgBox (pwname.Picturename) //输出当前画面窗口2的名字 End Sub 注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如 Dim object Dim value Set object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2") Set value=object.picturename 2.更改画面窗口的对象 Sub OnClick(Byval Item) Dim opObject Set opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2") opObject.PictureName="Page1.Pdl" End Sub 3.设置文本 Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符 4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符;Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。 获取下标

WINCC 关于用户登陆注销的脚本

我有两个用户,分别是用户1和用户2,请教如何在启动WINCC6.0 SP3时,自动登陆到用户1而无须手动登陆? 将登录用户脚本编写在您项目的首画面中的Open Picture事件内。 在开始画面-》画面对象-》其他-》打开画面中添加“C动作” #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() PWRTSilentLogin("用户1", "密码"); 注销用户的脚本: 在按钮动作里加入以下c脚本 #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() PWRTLogin('1'); 最后一句改成PWRTLogout();就是退出 WINCC-如何使用自定义的对话框实现用户登录 在登录按钮中加处以下脚本: #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() if (PWRTSilentLogin("username", "PassWord")) { //登录成功后的处理 } 其中"USERNAME","PASSWORD"可以用存储用户名和密码的变量替换.如: PWRTSilentLogin(GetTagChar("user"), GetTagChar("PassWord")) 当登录成功时,函数返回值为真;如登录失败,则返回值为假

WINCC--如何在程序中动态修改用户密码 1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC 数据源管理器 2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称 3、在脚本中加入以下代码: #pragma code("UseGen.dll") #include "USEGENAP.H" #pragma code() LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用 if (PWGENConnect("CC_ass_04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_ass_04-09-21_ 16:35:22用第二步中记下的名称取代 { if (PWGENChangePassword(GetTagChar("user"),GetTagChar("oldpassword"),GetTagChar("password"), err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集 { //密码修改成功后的操作,如给用户提示等 } } PWGENDisconnect(err); //断开与数据库的联接 4、编译运行程序 5、工作完成 6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。 WINCC-如何使用自定义的对话框实现用户登录 在登录按钮中加处以下脚本: #pragma code("useadmin.dll") #include "PWRT_API.H" #pragma code() if (PWRTSilentLogin("username", "PassWord")) { //登录成功后的处理 } 其中"USERNAME","PASSWORD"可以用存储用户名和密码的变量替换.如: PWRTSilentLogin(GetTagChar("user"), GetTagChar("PassWord")) 当登录成功时,函数返回值为真;如登录失败,则返回值为假

wincc动画命令

WINCC动画脚本 默认分类2008-01-21 15:19:23 阅读310 评论0 字号:大中小订阅 电机风扇旋转(几何---起始角度): #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static DWORD f=20; if (GetTagBit("DI电机运行信号")) { f= f+30; '起始角度变化量' if (f==360) (f=0); } return f; } 电机风扇旋转(几何---结束角度): #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static DWORD i=80; '大于起始角度60' if (GetTagBit("DI电机运行信号")) { i = i+30; '等于起始角度变化量' if (i==360) (i=0); } return i; } **物料水平右移动(几何---位置X)(停车后,物料回到原点)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {

static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } if (!GetTagBit("DI电机运行信号")) (a=350); return a; } 物料水平右移动(几何---位置X)(停车后,物料停在该点) #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } return a; } 物料向上移动(几何---位置Y)(停车后,物料停在该点) #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int b=450; if (GetTagBit("DI电机运行信号") && (b>=290)) { b-=10; if (b<=280) (b=450); } return b;

wincc登录DIY

用户登陆事件 1 双击“用户管理器”---------右击“管理员组”----------“添加一个用户”后出现如图画面: “登陆”和“口令”等自己设定。 设置完成后,将在“管理员组”中自动生成该用户,单击你所建立的用户将会出现权限设置: 在此用户中我们允许了“变量输入”“画面编辑”“改变画面”“工艺

参数”这4种权限的使用。也就是说在成功登陆后,只有有以上四种权限(任意一种即可)的控件可以正常运行。 2 打开图形编辑器,添加一个按钮,文本内容设为“登陆”,确定后,打开按钮的“属性”----------“事件”--------“鼠标”-------“按左键”---------“C动作” #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(); PWRTLogin(1); // WINCC:TAGNAME_SECTION_START // syntax: #define TagNameInAction "DMTagName" // next TagID : 1 // WINCC:TAGNAME_SECTION_END // WINCC:PICNAME_SECTION_START // syntax: #define PicNameInAction "PictureName" // next PicID : 1 // WINCC:PICNAME_SECTION_END

WINCC动画脚本

WINCC动画脚本 电机风扇旋转(几何---起始角度): #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static DWORD f=20; if (GetTagBit("DI电机运行信号")) { f= f+30; if (f==360) (f=0); } return f; } 电机风扇旋转(几何---结束角度): #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static DWORD i=80; if (GetTagBit("DI电机运行信号")) { i = i+30; if (i==360) (i=0); } return i;

**物料水平右移动(几何---位置X)(停车后,物料回到原点)** #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } if (!GetTagBit("DI电机运行信号")) (a=350); return a; } 物料水平右移动(几何---位置X)(停车后,物料停在该点) #include "apdefap.h" long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { static int a=350; if (GetTagBit("DI电机运行信号") && (a<=730)) { a+=20; if (a>=720) (a=350); } return a;

WinCC实例教程

WinCC 视频教程知识点总结 第一讲组态软件基础 一、WinCC简介 1、WinCC 西门子视窗控制中心SIMATIC WinCC(Windows Control Center)是在计算机上对PLC 控制的运行设备进行状态监控的软件,是PC上的监控软件。 运行该软件,可以动画监视现场设备的运行状况,监视相应的运行参数,以及更改、设置系统的运行数据。 2、WinCC的特点 (1)开放性 WinCC对用户所添加的任何形式的扩充是绝对开放,该绝对开放性是通过WinCC的模块结构及其强大的编程接口来获取的。 (2)将应用软件集成到WinCC中 WinCC提供了一些方法将其他应用程序和应用程序块统一地集成到用于过程控制的用户界面中。OLE应用程序窗口和OLE自定义控制或Active控制可以集成到WinCC应用软件中。 (3)WinCC中的数据管理 WinCC的数据库为Windows SQL,从属于WinCC,该数据库用于存储所有面向列表的组态数据(如变量列表和消息文本),以及当前过程数据(如消息,测量值和用户数据记录等)该数据库具有服务器功能。

(4)在项目开始之前规定组态分类 a、文件夹名称 除一些特殊字符(例如\)之外,文件夹名称允许使用所有的字符。还允许使用数字0~9. b、变量名称 变量名称可以多于8个字符。但应尽量避免太长的名称。WinCC项目的变量名称必须是唯一的。如果变量名称还包含了其他信息,这对用户将非常有用。 c、画面名称 确定画面名称时应注意其长度的影响,太长的名称(文件名)不容易识别(列表框中的选择,脚本中的调用等)。根据经验表明,长度最好不超过28个字符,画面名称应遵守以下限制条件:①最大长度为255个字符;②不使用某些特殊字符(例如\);③画面名称中的字母不区分大小写。 二、WinCC软件的安装 1、安装S7-300/400PLC编程软件STEP7及PLCSIM; 2、安装数据库软件SQL Server 2000; 3、安装消息列队(软件操作); 4、安装WinCC(建议不选典型安装,选择全部安装)。 三、WinCC管理器 1、WinCC项目管理器的结构 WinCC项目管理器的用户界面由以下元素组成:标题栏、菜单栏、工具栏、状态栏、浏览窗口和数据窗口:

WinCC V6 -启动时运行时自动登录(无声登录)

过程自动化 > 过程控制系统 > SIMATIC PCS 7 > 操作及监控 > OS软件 > C 脚本 /动作 > 常问问题 WinCC V6 -启动时/运行时自动登录(无声登录) 问题: 重新启动后,不使用登录窗口如何以一个缺省用户的身份自动登录? 怎样确保运行期间有个缺省用户始终处于登入状态?即使另外一个用户已经预先退出。 解答: 重新启动以及在运行期间,您希望HMI系统达到最小的实用性而不使用登录窗口。然而,对于高级操作,登录功能应当保留。此外,如果没有用户 登录,则有一个缺省的用户自动登录。缺省用户的权限可以在用户管理器中根据需要设定。 可使用下面的C脚本执行此项功能,请按照下列步骤进行: 1.将附件中的函数“Silentlogin.pas”复制到项目中的“PAS”子文件夹中。 2.在项目中选择Global Script > C Editor > Actions > Global Actions 并打开全局动作(Global Action)“Silentlogin.pas”。 3.在“PWRTSilentLogin (“Login”,“Password”);”一行中,用缺省的用户名替换用户“Login”,用缺省用户的口令代替“Password”。 4.编译和保存C脚本。 5.用变量@CurrentUser 设置一个变量触发器,周期选择为“ 2 s”。这确保了系统不会因脚本而负荷过重。在所述的例子中,变量 @CurrentUser (包含当前登录的用户)每隔 2 秒钟被询问一次察看有无变化。只有当用户变化时才调用脚本,例如当前用户退出时。 6.确保已经在计算机的属性“Startup”选项卡上激活了“Global Script Runtime”。 除此之外,SIMATIC PCS 7(SIMATIC PCS 7 V6.0 SP1及更高版本)用户还需执行下列步骤: 1.将系统画面@Welcome.pdl 复制到一个安全的位置,以便可以恢复原始画面。 2.使用Graphics Designer打开画面@Welcome.pdl 。 3.打开保存在选定画面中的C脚本,(右击)> Event > Picture Object > Miscellaneous > Open Picture)。 4.注释掉“PASSLoginDialog(Screen);”一行,以 // 作为注释的前缀。 5.编译C脚本。 6.保存系统画面@Welcome.pdl 。 警告: 如果再一次运行OS Project Editor,确保不要从basic data中调用系统画面@Welcome.pdl。为此,对于@Welcome.pdl,不能选定“Basic Data > Basic pictures in project deviate from delivered state > accept delivered state”选项。< /p> 免费下载的文件 Silentlogin.exe ( 29 KB ) 样例程序是免费软件。每个用户都可以免费使用,复制或转发该程序。程序的作者和拥有者对于该软件的功能性和兼容性不负任何责任。使用该软件的风险完全由用户自行承担。由于它是免费的,所以不提供任何担保,错误纠正和热线支持。 关键字: 页码,1/2

组态软件教案

工控组态软件 教案 教师:

机械电子与建筑工程学院教案

第1章概述 1.1组态软件的产生与发展 1.1.1工业过程控制系统的发展 20世纪40年代,多数工业生产过程处于手工操作状态,人们主要凭经验、用手工方式去控制生产过程。如生产过程中的关键参数靠人工观察,生产过程中的操作也靠人工去执行,劳动生产率是很低的。 50年代前后,一些工厂企业的生产过程实现了仪表化和局部自动化。此时,生产过程中的关键参数普遍采用基地式仪表和部分单元组合仪表(多数为气动仪表)等进行显示;进入60年代,随着工业生产和电子技术的不断发展,开始大量采用气动、电动单元组合仪表甚至组装仪表对关键参数进行指示,计算机控制系统开始应用于过程控制,实现直接数字控制和设定值控制等。 70年代,随着计算机的开发、应用和普及,对全厂或整个工艺流程的集中控制成为可能。 集散控制系统是把自动化技术、计算机技术、通信技术、故障诊断技术、冗余技术和图形显示技术融为一体的装置 1.1.2组态软件的产生及发展 在组态软件出现之前,大部分用户是通过第三方软件(如VB、VC、DELPHI、PB甚至C等)编写人机交互界面(Human Machine Interface,HMI),这样做存在着开发周期长、工作量大、维护困难、容易出错、扩展性差等缺点。 世界上第一款组态软件InTouch在20世纪80年代中期由美国的Wonderware公司开发。 组态软件类似于“自动化应用软件生成器”,根据其提供的各种软件模块可以积木式搭建人机监控界面,不仅提高了自动化系统的开发速度,也保证了自动化应用的成熟性和可靠性。 1.1.3组态软件的定义 组态软件是一种面向工业自动化的通用数据采集和监控软件,即SCADA(Supervisory Control And Data Acquisition)软件,亦称人机界面或HMI/MMI(Human Machine Interface/Man Machine Interface)软件,在国内通常称为“组态软件”。 组态软件从总体结构上看一般都是由系统开发环境(或称组态环境)与系统运行环境两大部分组成。系统开发环境和系统运行环境之间的联系纽带是实时数据库。

VB操作wincc脚本心得精选文档

V B操作w i n c c脚本心 得精选文档 TTMS system office room 【TTMS16H-TTMS2A-TTMS8Q8-

Vbs 操作wincc画面脚本总结 一:不使用变量单纯的操作界面 1.操作某个画面中控件的属性如 Home1.Pdl(总窗体)下的画面窗口2(画面窗口) Sub OnClick(ByVal Item) Dim objCircle Dim screenname Dim pwname Set objCircle= ScreenItems("圆1" ) objCircle.Radius = 60 Set screenname=HMIRuntime.Screens("Home1") //获取要操作的窗体 Set pwname=screenname.ScreenItems("画面窗口2") //获取要操作的控件,这里填入你要操作的控件名 MsgBox(objCircle.Radius) //输出圆的半径 MsgBox (pwname.Picturename) //输出当前画面窗口2的名字 End Sub 注意当调用某窗体下的某控件的某个属性时,需要声明两个对象,一个接纳这个控件,一个接纳值例如 Dim object Dim value Set object =HMIRuntime.Screens("Home1").ScreenItems("画面窗口2") Set value=object.picturename

2.更改画面窗口的对象 Sub OnClick(Byval Item) Dim opObject Set opObject=HMIRuntime.Screens ("Home1").ScreenItems("画面窗口2") opObject.PictureName="Page1.Pdl" End Sub 3.设置文本 Set titleTxt=HMIRuntime.Screens ("Home1").ScreenItems("静态文本2") titleTxt.Text =titleTxt.Text+"EF" //获取文本的值并追加字符 4.vb 字符串函数 VB的字符串截取函数有Left(字符串,n),返回字符串前N个字符; Mid(字符串,p,n),从第p个字符开始,向后截取N个字符;right(字符串,n),返回字符串的最后n个字符。 获取下标 VB中的InStr()函数与InStrRev()函数: 都是在主字符串当中搜寻寻找子字符串,返回找到的子字符串在主字符串中出现的位置; 不同在于; InStr()函数,从左开始向右寻找,InStrRev()函数,从右开始向左寻找。 截取 right 和left 获取长度 Len

wincc登录

用户管理器 添加用户组随意命名(eg.service) 添加新用户随意命名(eg.willi) 选择授权 End 组态对象权限 选中按键,选择属性—其它—授权,双击,选择权限 点击按钮,显示没有许可权

用户登录有两种方式:设置热键,脚本编程 使用热键 Wincc项目管理器中,右键单击项目名称选择属性 为登录和退出分配热键 脚本编程见图形编辑器C动作 图形编辑器 登录按钮 鼠标动作 #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code("UseAdmin") #include "pwrt_api.h" #pragma code () PWRTLogin(1);

} 注销按钮 #include "apdefap.h" void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) { #pragma code("UseAdmin") #include "pwrt_api.h" #pragma code () PWRTLogout(); } 输入输出域1 输入输出域2 使用附件--变量登录 将计算机分配给变量 WINCC用户管理器菜单,附件—变量登录—分配计算机

注:整型变量对键操作切换的应用才有意义 组态 附件—变量登录—组态 最小范围0—32767,最大范围0—32767,最大值必须大于最小值 用户分配 附件—变量登录—用户分配 在数值项的下拉列表中选择变量的数值,从用户项的下拉列表中选择希望分配给的用户,之后点击分配 注:每个变量置智能分配给一个用户 S32-0=1时用户willi自动登录,S32-0=0时用户willi自动注销

相关文档
相关文档 最新文档