wincc-全套脚本总结_第1页
wincc-全套脚本总结_第2页
wincc-全套脚本总结_第3页
wincc-全套脚本总结_第4页
wincc-全套脚本总结_第5页
已阅读5页,还剩94页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

1、For pers onal use only in study and research; not for commercial useFor pers onal use only in study and research; not for commercial use1、wince全局脚本动作 隐藏控件 一#in clude apdefap.hint gscActi on( void )/ WINCC:TAGNAME_SECTION_START/ syntax: #defi ne TagNameI nAction DMTagName/ next TagID : 1/ WINCC:TAGNA

2、ME_SECTION_ENDint value;value=GetTagBit(IMn ”);IMn为触发的变量。if(value=1)“按钮SetVisible(lianxi.pdl,按钮 8,TRUE);/lianxi.pdl为控制对象所在画面名,8”为对象名称elseSetVisible(lianxi.pdl,按钮 8,FALSE);/lianxi.pdl/ WINCC:PICNAME_SECTION_START/ syn tax: #defi ne PicNameI nActio n PictureName/ next PicID : 1/ WINCC:PICNAME_SECTION_

3、ENDreturn 0;说明:在触发器里选择变量IM_in2、wince全局脚本动作-提示框#in clude apdefap.h int gscActi on( void )/ WINCC:TAGNAME_SECTION_START/ syntax: #defi ne TagNamel nAction DMTagName/ next TagID : 1/ WINCC:TAGNAME_SECTION_ENDint value;value=GetTagBit(IMl_in);if(value=1)MessageBox(NULL,请确认三厅相关门是否关好,或者请解锁。,提示框”,MB_OK|MB_

4、ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);/ WINCC:PICNAME_SECTION_START/ syn tax: #defi ne PicNameI nActio n PictureName/ next PicID : 1/ WINCC:PICNAME_SECTION_ENDreturn 0;说明:在触发器中选择变量触发。3、趋势面板一char * str_a = NULL;int Hi;int Lo;str_a = GetTagChar(Tre ndTagNamel);Lo= GetTagSWord(Tre ndLo);Hi=

5、GetTagSWord(Tre ndHi);SetPropWord (l pszPictureName,qushi,Tre ndI ndex,0);SetPropChar(lpszPictureName,qushi,Tre ndTagName,str_a);SetPropWord (l pszPictureName,qushi,ValueAxisBegi nValue, Lo);SetPropWord(lpszPictureName,qushi,ValueAxisEndV alue,Hi);4、获取位号SetTagChar(TrendTagName1,ProcessValueArchivePT

6、111); /Return-Type: BOOL SetTagSWord(Tre ndHi,200);SetTagSWord(Tre ndLo,0);SetTagByte(Tre nde n,1);5、调用登陆函数#pragma code(useadm in. dll)#i nclude PWRT_API.H#pragma code()if (strcmp(GetTagChar(Curre ntUser),)=O)PWRTLogi n( c);6、时间同步void SetCpuTime()#pragma code(kernel32.dll);void GetLocalTime(SYSTEMTI

7、ME *lpst);#pragma code();SYSTEMTIME timeBOOL ret;/prin tf(Start fun ctio n SetCpuTimer n);GetLocalTime( &time);ret= SetTagMultiWait(%d%d%d%d%d%d%d,data_year,time.wYear-2000,data_mo nth,time.wM on th,data_day,time.wDay,data_hour,time.wHour,data_MINUTE,time.wMi nu te,data_SECOND,time.wSeco nd,data_FLA

8、G,1)7、对话框调用BOOL A;BOOL B;HWND hwn d=NULL;int RetMsg;A=GetTagBit(TJ_ANNIU); /Return-Type: BOOLhwn d=Fi ndWi ndow(NULL,Wi nCC-运行系统-);if (A=0)RetMsg =MessageBox (hwnd,确定要停机?,停机警告” MB_OKCANCEL|MB_SYSTEMMODAL|MB_SETFOREGROUND);if (RetMsg=IDOK)SetTagBit(TJ_ANNIU,1);MessageBox (hw nd, 停 机,停 机 警 告”MB_OK|MB_

9、SYSTEMMODAL|MB_SETFOREGROUND);SetTagBit(TJ_ANNIU,0);else B=0;else8、声音报警#pragma code(Wi nm m.dll)VOID WINAPI PlaySou ndA(char* pszSou nd,char* hmode,DWORD dwflag);#pragma code()if(GetTagFloat(LIST555)500)PlaySou ndA(D:DCSDATACG_wi nccHornHorn_Atte ntio n.wav,NULL,1);if(GetTagFloat(LIST555)=100)a仁0;Se

10、tTagDWord(P,a1);然后用一个按钮控制二进制变量Q,为启动信号。物体的X位置对应的是变量 P,设置为模拟量。当P为1的时候对应的 X位置。P为2的时候对应X的位置,以此类推,就可以做出 物体移动画面了,要做全局脚本10、WinCC中调用SQL语言1、创建一个 SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL语句。Windows对话框实现。具体如下:2、在WinCC中用C Script调用上述SQL文件,如下所示:#in clude &qu ot;apdefap.h&qu ot;void On LButt on Dow n(char* IpszPictureName,c

11、har* lpszObjectName,char* lpszPropertyName,UINT n Flags,i nt x,i nt y)char*a=&qu ot;c:sieme nscom mon SQLANYISQL-q-b-cUID=DBA;PWD=SQL;DBF=E:testsqltestsqlRT.DB;DBN=CC_testsql_99-12-03-12:48:26R;READE:testsqltest.sq l&qu ot;Printf(& quot;%srn ",a);ProgramExcute(a);下面是一个简单的 SQL文件内容:select *from p

12、de#hd#t#test;output to e:test2.txt FORMAT ascii注意:文件名及路径中不要带空格。11、设置或重置一个变量void On Click(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)BOOL 乙z=GetTagBit("MyBitVariable");获得变量值if (z=0)SetTagBit("MyBitVariable",1); /设置变量值elseSetTagBit("MyBitVariable"

13、,0);12、运行时图形产生动态旋转#in elude "apdefap.h &qu ot;long _main( char* IpszPictureName, char* IpszObjectName, char*IpszPropertyName)static int x=25,y,z;/x 为半径的初始值为 25 , y为切换变量,z为搅拌机运行状态变量z=GetTagBit("202搅拌机运行"); /取得PLC搅拌机的运行状态if(z!=0)switch(y)case 0:x=x-4;if(x<=0)y=1;break;default :x=x+4;

14、if(x>=25)y=0;break;return x;13、WINCC-如何在程序中动态修改用户密码 1、点击开始”-设置”-控制面板”-管理工具”-数据源(ODBC ) ”,打开ODBC 数据源管理器2、 在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为CC_项目名 项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#pragma code(UseGe n.dll)#i nclude USEGENAP .H#pragma code()LPCMN_ERROR err; / 定义的LPCMN_ERROR 型变量,在函数调用中需使用if (PWGENCo nn

15、ect(CC_ass_04-09-21_16:35:22,err) /建立与数据库的联接 ,其中CC_ass_04-09-21_16:35:22用第二步中记下的名称取代if(PWGENCha ngePassword(GetTagChar(user),GetTagChar(oldpassword),GetTagChar(password),err) /修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集密码修改成功后的操作,如给用户提示等PWGENDisco nn ect(err); II 断开与数据库的联接4、编译运行

16、程序5、工作完成6、 与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP .H文件中,可根据上 面示例自行完成添加用户,修改权限等功能。14、WinCC如何实现鼠标OnMouseOVer事件用 WINDOW API函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值相减得鼠标在WINCC frame上的相对位置。用全局脚本(设定为1s定时刷新),然后获取要 OnMouseOver事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定 义的动作。#in clude apdefap.hint gscActi on( void )#prag

17、ma code(user32.dll);BOOL GetCusorPos(POINT IpPoint); II获取鼠标的位置(绝对位置-对应屏幕分辨率)BOOL GetWi ndowRect(HWND hwn d,LPRECT IpRect); II 获取窗体位置 #pragma code();POINT pPos;RECT rRec;HWND hwn d;BOOL bRet,bRet2;long ILeft,ITop,IWidth,IHeight;long IX,IY;char szStr100;hwnd=FindWindow(NULL,WinCC-Runtime - ); II如语言为中文

18、应为 WinCC 运行系统if (hw nd=0) pri ntf(rnError! WinCc Han dle is %d,hw nd);goto over; bRet=GetCursorPos(&pPos);if (bRet=0) goto over;bRet2=GetWi ndowRect(hw nd,&rRec);if (bRet2=0) goto over;IX=pPos.x-rRec.left; II 鼠标对置 IY=pPos.y-rRec.top; II 鼠标位置如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度IIpri ntf(The Curre nt Cu

19、sor Pos is x:%d,y:%drn,pPos.x,pPos.y);IIpri ntf(The Cusor Pos in Window is x:%d,y:%drn,pPos.x-ILeft2,pPos.y-ITop2); ILeft=GetLeft(NewPdI0.PdI,Text1); IIRetur n - Type :long int ITop=GetTop(NewPdlO.Pdl,Text1); IIRetur n - Type :long int IWidth=GetWidth(NewPdI0.PdI,Text1); IIRetur n - Type :long intIH

20、eight=GetHeight(NewPdlO.Pdl,Text1); /Return - Type :long int if (IX=ILeft) &(IY=ITop)&(IX=ILeft+IWidth) &(IY100| if(GetTagFloat(LIST555)500)液位if(GetTagFloat(LIST555)100GetTagFloat(TE423A)100 | GetTagFloat(TE423B)100 | GetTagFloat(TE425)100 |GetTagFloat(TE427)100/轴瓦温度if(GetTagFloat(TIE485)45)出口油温高.wa

21、v,NULL,O); if(GetTagFloat(PT091)40)if(GetTagFloat(PT131)0.05GetTagBit(PDS071)=0/滤油器差压if(GetTagFloat(PT121)0.65) 出口压力低.wav,NULL,0); if(GetTagFloat(LIST551)52|GetTagFloat(TE442)100)轴瓦温度高1.wav,NULL,0);/冷油器 冷油器出 口油温/进汽压蒸汽压力低.wav,NULL,0);/真空低排汽压力高.wav,NULL,0);/润滑油压润滑油压力低1.wav,NULL,0);|GetTagFloat(PDT215)

22、0.05|GetTagBit(PDS073)=0)滤油器差压高.wav,NULL,0);/主油泵主油泵出 口压力/油箱油箱油位低.wav,NULL,0);| GetTagFloat(VE737A)52|GetTagFloat(VE745A)52 | GetTagBit(XE202)=1 | GetTagBit(XE204)=1 |IIGetTagBit(XE206)=1)振动大 if(GetTagFloat(ZE769)0.4GetTagBit(ZE208)=1)轴瓦振动高.wav,NULL,O);| GetTagFloat(ZE769)3 | GetTagFloat(ZDE785)3240)

23、if(GetTagBit(DI_0175)=1/保护跳闸if(GetTagBit(DI_0177)=1/定子转子一点接地if(GetTagBit(DI_0176)=1)if(GetTagBit(DI_0182)=1)if(GetTagBit(S0E_15)=1)胀差高.wav,NULL,0);转速汽轮机转速高.wav,NULL,0);|GetTagBit(DI_0180)=1)发电机保护跳闸.wav,NULL,0);|GetTagBit(DI_0181)=1)发电机转子接地.wav,NULL,0);过负荷发电机过负荷.wav,NULL,0);失磁发电机失磁.wav,NULL,O);/ETS动作

24、PlaySoundA(D:DCSDATACG_winccWHornWETS动作.wav,NULL,0);19、闪烁边框图片的脚本Flash -简短描述使用Flash组中的函数可以修改或调用各种闪烁属性。1ong int GetBackFlashColorOff(LPCTSTR IpszPictureName, LPCTSTR IpszObjectName)函数,指定取消激活状态的闪烁背景色读出闪烁颜色的实例long int flashcol_ on;获得背景闪烁颜色Flash col_on = GetBackFlashColorO n( lpszPictureName,Group 1);II自

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

26、col_on = GetBackFlashColorO n( lpszPictureName,Group 1);II自定义代码II在那里用户可以使用返回值做某事GetBackFlashColorOn 函数参数:“ lpszPictureName ”是在其中组态该对象的画面的名称。“ Group 1 ”是该对象的名称。1) .读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2) .执行处理返回值的自定义代码。3. lo ng int GetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectNam

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

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

29、me) 函数,指 定是否激活背景闪烁。读出“闪烁背景激活”属性的实例BOOL bflash_col;/ 了解闪烁是开还是关bflash_col = GetFlashBackColor(lpszPictureName,Group 1);if(bflash_col)/自定义代码/闪烁是否被激活else/自定义代码/闪烁是否被取消激活GetFlashBackColor 函数参数:“ lpszPictureName ”是在其中组态该对象的画面的名称。“ Group 1 ”是该对象的名称。1) .读出背景色闪烁是否被激活以及bflash_col中的缓冲区。2) .根据该函数的返回值执行自定义代码。20、

30、I/O脚本使用i_o组中的函数可以修改或调用影响输入和输出值的各种属性。1. char* GetAssignments(LPCTSTR IpszPictureName, LPCTSTR IpszObjectName) 函数,对于列 表,分配文本给数值范围2. BOOL GetAssumeOnExit(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName) 函数,使 用I/O域时,它指定退出该域时是否应用输入的数值。3. BOOL GetAssumeOnFull(LPCTSTR lpszPictureName, LPCTSTR lpszObjectNam

31、e)函数,使用I/O域时,它指定完成输入时是否应用输入的数值。4. long int GetBitNumber(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用列表类型“位”时,它指定输出值中相关的位。读出布尔型属性的实例BOOL bHidde nln put;获得隐藏输入的状态bHidde nln put=GetHidde nln put(lpszPictureName,IO Field 1);if(bHidde nln put) /自定义代码/隐藏输入是否被激活else/自定义代码/隐藏输入是否被取消激活GetHiddenlnput

32、 函数参数:“ lpszPictureName ”是在其中组态该对象的画面的名称。“ IO Field1 ”是该对象的名称。1) .读出文本是否是粗体字以及bHiddenlnput中的缓冲区。2) .根据该函数的返回值执行自定义代码。5. BOOL GetClearOnError(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定错误输入后是否激活删除内容。6. long int GetDataFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域

33、,它指定域内容的数据类型。读出布尔型属性的实例BOOL bHidde nln put;获得隐藏输入的状态bHidde nln put=GetHidde nln put(lpszPictureName,IO Field 1);if(bHidde nln put)/自定义代码/隐藏输入是否被激活else/自定义代码/隐藏输入是否被取消激活21 tag 脚本使用来自Tag组的函数可以设置或调用变量。1. BOOL GetTagBitStateWait(Tag Tag_Name, PDWORD lp_dwstate)函数,建立数据类型“二进制变量”的过程变量的数值。直接从PLC读取该数值。也返回变量的

34、状态。读出二进制类型变量的实例DWORD dwstate;BOOL bValue;dwstate = OxFFFFFFFF;/获得该变量值 /dwstate是变量状态 bValue=GetTagBitStateWait(gs_tag_bit,&dwstate);/ 创建包含该变量值的字符串if (bValue)/自定义代码/该变量的数值是否是 true.else/自定义代码/该变量的数值是否是 falseGetTagBitStateWait 函数参数:“ gs_tag_bit ”是该变量的名称。“ &dwstate ”是应在其中存储变量状态的变量地址。1) .读出该变量值以及 bstate中的

35、缓冲区。该函数将变量状态存储在dwstate中。2) .根据该函数的返回值执行自定义代码。22、Wince项目脚本使用来自 WinCC组的函数可以在运行系统中定义各种设置。使用System子组中的函数可以操作 WinCC运行系统。1. BOOL DeactivateRTProject()函数,取消激活该项目。取消激活WinCC运行系统的实例/取消激活运行系统DeactivateRTProject ();该函数取消激活WinCC运行系统。2. B00L ExitWinCC()函数,终止 WinCC3退出WinCC的实例退出winccExitWi nCC ();该函数终止WinCC。WinCC组包

36、含影响整个WinCC系统的函数。1. BOOL GetHWDiag(LPCTSTR IpszPictureName, LPCTSTR IpszObjectName, LPCTSTR IpProperties)函数运行时该函数可实现诊断的直接启动,由事件触发。必须在对象上组态、运用该事件。如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。为了使用该功能,必须满足下列条件:? WinCC项目,带有从其进行访问的画面,而且STEP7项目必须在同一台计算机上。?必须将 WinCC 项目存储为 STEP7 项目(STEP7 ProjektwincprojWinCC Projekt)的子目录。?

37、已将S7变量映射到 WinCC。2. BOOL GetHWDiagLevel(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties, DWORD dwLevel) 函数根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试。之后,运行时诊断被直接启动并由事件触发,须在对象上组态该事件。如果该事件发生,硬件诊断功能从关联PLC的STEP7被启动。为了使用该功能,必须满足下列条件:?在WinCC中激活的用户必须有必要的用户配置文件级。? WinCC项目,带有从其进行访问的画面,而且STE

38、P7项目必须在同一台计算机上。?必须将 WinCC 项目存储为 STEP7 项目(STEP7 ProjektwincprojWinCC Projekt)的子目 录.?已将S7变量映射到 WinCC。3. BOOL GetKopFupAwl(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName, LPCTSTR lpProperties)函数该函数执行WinCC Step7编辑器“ KFA的网络激活。执行该函数,完成两项子任务:=?建立从WinCC访问网络所需要的数据。?将该数据传送到 Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。

39、4. BOOL GetKopFupAwlLevel(LPCTSTRlpszPictureName, LPCTSTRlpszObjectName,LPCTSTR lpProperties, DWORD dwLevel) 函数根据在dwLevel下面指定的用户管理员功能号为激活的用户执行用户配置文件级测试, 然后访问Step 7编辑器“KFA”。作为三项子任务执行该函数:?建立从WinCC进行网络访问所需要的数据。?在WinCC中为激活的用户执行用户配置文件级测试。?将该数据传送到 Step 7并使用AUTAPI定位Step 7程序中操作数的利用点。5. void OnDeactivateExecute()函数终止 WinCC时调用该函数。由于它是标准函数,可以插入指令,然后执行它们。6. void On ErrorExecute(CCAPErrorExecute ErrorExecute) 函数 执行动作或函数而发生错误时由系统调用OnErrorExecute。此函数能够确定出错的准确原因。由系统调用该函数,并且不要求附加的调用命令。由于包括作为标准函数的此函数,可以改变输出的类型。7. void OnTime(CCAPTime time)函数On Time只能由系统调用

温馨提示

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

最新文档

评论

0/150

提交评论