wincc脚本全集_第1页
wincc脚本全集_第2页
wincc脚本全集_第3页
wincc脚本全集_第4页
wincc脚本全集_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1、wincc全局脚本动作-隐藏控件#include apdefap.hint gscAction( void )/ WINCC:TAGNAME_SECTION_START/ syntax: #define TagNameInAction DMTagName/ next TagID : 1/ WINCC:TAGNAME_SECTION_ENDint value;value=GetTagBit(IM_in);/IM_in为触发的变量。 if(value=1) SetVisible(lianxi.pdl,按钮8,TRUE);/lianxi.pdl为控制对象所在画面名,“按钮8”为对象名称else

2、SetVisible(lianxi.pdl,按钮8,FALSE);/lianxi.pdl/ WINCC:PICNAME_SECTION_START/ syntax: #define PicNameInAction PictureName/ next PicID : 1/ WINCC:PICNAME_SECTION_END return 0;=说明:在触发器里选择变量IM_in2、wincc全局脚本动作-提示框#include apdefap.hint gscAction( void )/ WINCC:TAGNAME_SECTION_START/ syntax: #define TagNameI

3、nAction DMTagName/ next TagID : 1/ WINCC:TAGNAME_SECTION_ENDint value;value=GetTagBit(IM_in);if(value=1) MessageBox(NULL,请确认三厅相关门是否关好,或者请解锁。,提示框,MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL); / WINCC:PICNAME_SECTION_START/ syntax: #define PicNameInAction PictureName/ next PicID : 1/ WINC

4、C:PICNAME_SECTION_ENDreturn 0;=说明:在触发器中选择变量触发。3、趋势面板char * str_a = NULL;int Hi;int Lo;str_a = GetTagChar(TrendTagName1);Lo= GetTagSWord(TrendLo);Hi= GetTagSWord(TrendHi);SetPropWord(lpszPictureName,qushi,TrendIndex,0);SetPropChar(lpszPictureName,qushi,TrendTagName,str_a);SetPropWord(lpszPictureName,

5、qushi,ValueAxisBeginValue,Lo);SetPropWord(lpszPictureName,qushi,ValueAxisEndValue,Hi);4、获取位号SetTagChar(TrendTagName1,ProcessValueArchivePT111);/Return-Type: BOOL SetTagSWord(TrendHi,200);SetTagSWord(TrendLo,0);SetTagByte(Trenden,1);5、调用登陆函数#pragma code(useadmin.dll)#include PWRT_API.H#pragma code()i

6、f (strcmp(GetTagChar(CurrentUser),)=0)PWRTLogin(c);-6、时间同步void SetCpuTime() #pragma code(kernel32.dll); void GetLocalTime(SYSTEMTIME *lpst); #pragma code(); SYSTEMTIME time BOOL ret; /printf(Start function SetCpuTimern); GetLocalTime(&time); ret= SetTagMultiWait(%d%d%d%d%d%d%d, data_year,time.wYear-

7、2000, data_month,time.wMonth, data_day,time.wDay, data_hour,time.wHour, data_MINUTE,time.wMinute, data_SECOND,time.wSecond, data_FLAG,1 ) -7、对话框调用BOOL A;BOOL B;HWND hwnd=NULL;int RetMsg;A=GetTagBit(TJ_ANNIU);/Return-Type: BOOL hwnd=FindWindow(NULL,WinCC-运行系统 - );if (A=0) RetMsg =MessageBox (hwnd, 确定

8、要停机?, 停机警告, MB_OKCANCEL|MB_SYSTEMMODAL|MB_SETFOREGROUND); if (RetMsg=IDOK) SetTagBit(TJ_ANNIU,1); MessageBox (hwnd, 停机, 停机警告, MB_OK|MB_SYSTEMMODAL|MB_SETFOREGROUND); SetTagBit(TJ_ANNIU,0); else B=0;else -8、声音报警#pragma code(Winmm.dll) VOID WINAPI PlaySoundA(char* pszSound,char* hmode,DWORD dwflag);#p

9、ragma code()if(GetTagFloat(LIST555)500)PlaySoundA(D:DCSDATACG_winccHornHorn_Attention.wav,NULL,1);if(GetTagFloat(LIST555)=100) a1=0;SetTagDWord(P,a1);然后用一个按钮控制二进制变量Q,为启动信号。物体的X位置对应的是变量P,设置为模拟量。当P为1的时候对应的X位置。P为2的时候对应X的位置,以此类推,就可以做出物体移动画面了,要做全局脚本-10、WinCC中调用SQL语言 1、创建一个 SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL

10、语句。Windows对话框实现。具体如下:2、在WinCC中用C Script 调用上述SQL文件,如下所示:#include"apdefap.h"void OnLButtonDown(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName,UINT nFlags,int x,int y)char*a="c:siemenscommonSQLANYISQL-q-b-cUID=DBA;PWD=SQL;DBF=E:testsqltestsqlRT.DB;DBN=CC_testsql_99-12-

11、03-12:48:26R;READE:testsqltest.sql"Printf("%srn",a);ProgramExcute(a);下面是一个简单的SQL文件内容:select *from pde#hd#t#test;output to e:test2.txt FORMAT ascii注意:文件名及路径中不要带空格。 11、设置或重置一个变量void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)BOOL z;z=GetTagBit("MyBi

12、tVariable");/获得变量值if (z=0) SetTagBit("MyBitVariable",1); /设置变量值elseSetTagBit("MyBitVariable",0); 12、运行时图形产生动态旋转#include "apdefap.h"long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static int x=25,y,z;/x为半径的初始值为25,y为切换变量,z为搅拌机运行状态变量z=Ge

13、tTagBit("202搅拌机运行"); /取得PLC搅拌机的运行状态if(z!=0)switch(y)case 0:x=x-4;if(x<=0)y=1;break;default :x=x+4;if(x>=25)y=0;break;return x; 13、WINCC-如何在程序中动态修改用户密码 1、 点击“开始”-“设置”-“控制面板”-“管理工具”-“数据源(ODBC)”,打开ODBC数据源管理器 2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称 3、在脚本中加入以下代码: #pra

14、gma 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

15、,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集 /密码修改成功后的操作,如给用户提示等 PWGENDisconnect(err); /断开与数据库的联接 4、编译运行程序 5、工作完成 6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。 14、WinCC如何实现鼠标OnMouseOVer事件 用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值相减得鼠标在WINCC frame上的相对位置。

16、用全局脚本(设定为1s定时刷新),然后获取要OnMouseOver事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动作。#include apdefap.hint gscAction( void ) #pragma code(user32.dll); BOOL GetCusorPos(POINT lpPoint); /获取鼠标的位置(绝对位置-对应屏幕分辨率) BOOL GetWindowRect(HWND hwnd,LPRECT lpRect); /获取窗体位置 #pragma code(); POINT pPos; RECT rRec; HWND hwnd; BOOL bRet

17、,bRet2; long lLeft,lTop,lWidth,lHeight; long lX,lY; char szStr100;hwnd=FindWindow(NULL,WinCC-Runtime - ); /如语言为中文应为WinCC 运行系统-if (hwnd=0) printf(rnError! WinCc Handle is %d,hwnd);goto over;bRet=GetCursorPos(&pPos); if (bRet=0) goto over;bRet2=GetWindowRect(hwnd,&rRec); if (bRet2=0) goto over; lX=pPo

18、s.x-rRec.left; /鼠标 对置 lY=pPos.y-rRec.top; /鼠标 位置 /如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度 /printf(The Current Cusor Pos is x:%d,y:%drn,pPos.x,pPos.y); /printf(The Cusor Pos in Window is x:%d,y:%drn,pPos.x-lLeft2,pPos.y-lTop2); lLeft=GetLeft(NewPdl0.Pdl,Text1); /Return - Type :long int lTop=GetTop(NewPdl0

19、.Pdl,Text1); /Return - Type :long int lWidth=GetWidth(NewPdl0.Pdl,Text1); /Return - Type :long int lHeight=GetHeight(NewPdl0.Pdl,Text1); /Return - Type :long intif (lX=lLeft)&(lY=lTop)&(lX=lLeft+lWidth)&(lY500) /热井液位 PlaySoundA(D:DCSDATACG_winccHorn热井液位高1.wav,NULL,0);if(GetTagFloat(LIST555)100 | Get

20、TagFloat(TE421B)100 | GetTagFloat(TE423A)100 | GetTagFloat(TE423B)100 | GetTagFloat(TE425)100 | GetTagFloat(TE427)100 | GetTagFloat(TE442)100) /轴瓦温度PlaySoundA(D:DCSDATACG_winccHorn轴瓦温度高1.wav,NULL,0);if(GetTagFloat(TIE485)45) /冷油器出口油温 PlaySoundA(D:DCSDATACG_winccHorn冷油器出口油温高.wav,NULL,0);if(GetTagFloa

21、t(PT091)40) /真空低PlaySoundA(D:DCSDATACG_winccHorn排汽压力高.wav,NULL,0);if(GetTagFloat(PT131)0.05 | GetTagFloat(PDT215)0.05 | GetTagBit(PDS071)=0 | GetTagBit(PDS073)=0) /滤油器差压 PlaySoundA(D:DCSDATACG_winccHorn滤油器差压高.wav,NULL,0);if(GetTagFloat(PT121)0.65) /主油泵出口压力 PlaySoundA(D:DCSDATACG_winccHorn主油泵出口压力低.wa

22、v,NULL,0);if(GetTagFloat(LIST551)52 | GetTagFloat(VE737A)52 | GetTagFloat(VE745A)52 | GetTagBit(XE202)=1 | GetTagBit(XE204)=1 | GetTagBit(XE206)=1) /振动大PlaySoundA(D:DCSDATACG_winccHorn轴瓦振动高.wav,NULL,0);if(GetTagFloat(ZE769)0.4 | GetTagFloat(ZE769)3 | GetTagFloat(ZDE785)3240) /转速 PlaySoundA(D:DCSDATA

23、CG_winccHorn汽轮机转速高.wav,NULL,0);if(GetTagBit(DI_0175)=1 | GetTagBit(DI_0180)=1) /保护跳闸 PlaySoundA(D:DCSDATACG_winccHorn发电机保护跳闸.wav,NULL,0);if(GetTagBit(DI_0177)=1 | GetTagBit(DI_0181)=1 ) /定子转子一点接地 PlaySoundA(D:DCSDATACG_winccHorn发电机转子接地.wav,NULL,0);if(GetTagBit(DI_0176)=1) /过负荷 PlaySoundA(D:DCSDATACG

24、_winccHorn发电机过负荷.wav,NULL,0);if(GetTagBit(DI_0182)=1) /失磁 PlaySoundA(D:DCSDATACG_winccHorn发电机失磁.wav,NULL,0);if(GetTagBit(SOE_15)=1) /ETS动作PlaySoundA(D:DCSDATACG_winccHornETS动作.wav,NULL,0);-19、闪烁边框图片的脚本Flash - 简短描述使用Flash组中的函数可以修改或调用各种闪烁属性。1.long int GetBackFlashColorOff(LPCTSTR lpszPictureName, LPCT

25、STR lpszObjectName)函数,指定取消激活状态的闪烁背景色读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 Flash col_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。 2. long

26、int GetBackFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的背景闪烁颜色。读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 Flash col_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出该对象的开状态的当

27、前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。 3. long int GetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的边框或线闪烁颜色。读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszP

28、ictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。4. long int GetBorderFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的边框或线闪烁颜色。读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszPictu

29、reName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。5. BOOL GetFlashBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景闪烁。读出“闪烁背景激活”属性的实例BOOL bflash_col;/了解闪烁是开还是关 bflash_col = GetFlashBackColor(lpszPictureName,Group 1);if(bflash_col)/ 自定义代码/ 闪烁是否被激活else/ 自定义代码/ 闪烁是否被取消激活GetFlashBackColor函数参数:

30、“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出背景色闪烁是否被激活以及bflash_col中的缓冲区。2). 根据该函数的返回值执行自定义代码。20、I/0脚本 使用i_o组中的函数可以修改或调用影响输入和输出值的各种属性。1. char* GetAssignments(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于列表,分配文本给数值范围2. BOOL GetAssumeOnExit(LPCTSTR lpszPictureName, LPCTSTR lpszObjec

31、tName)函数,使用I/O域时,它指定退出该域时是否应用输入的数值。3. BOOL GetAssumeOnFull(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定完成输入时是否应用输入的数值。4. long int GetBitNumber(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用列表类型“位”时,它指定输出值中相关的位。读出布尔型属性的实例BOOL bHiddenInput;/获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,IO Field 1);if(bHiddenInput) / 自定义代码 / 隐藏输入是否被激活else/ 自定义代码 / 隐藏输入是否被取消激活GetHiddenInput函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“IO Field1”是该对象的名称。1). 读出文本是否是粗体字以及bHiddenInput中的缓冲区。2). 根据该函数的返回值执行自定义代码。 5. BOOL GetClearOnError(LPCTSTR lpszPictu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论