wincc-全套脚本总结.doc

上传人:jian****018 文档编号:8977154 上传时间:2020-04-02 格式:DOC 页数:72 大小:182KB
返回 下载 相关 举报
wincc-全套脚本总结.doc_第1页
第1页 / 共72页
wincc-全套脚本总结.doc_第2页
第2页 / 共72页
wincc-全套脚本总结.doc_第3页
第3页 / 共72页
点击查看更多>>
资源描述
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 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 TagNameInAction 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/ WINCC: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,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()if (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-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, 确定要停机?, 停机警告, 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);#pragma 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语句。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-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("MyBitVariable");/获得变量值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=GetTagBit("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、在脚本中加入以下代码: #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文件中,可根据上面示例自行完成添加用户,修改权限等功能。 14、WinCC如何实现鼠标OnMouseOVer事件 用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值相减得鼠标在WINCC frame上的相对位置。用全局脚本(设定为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,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=pPos.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.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 | GetTagFloat(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(GetTagFloat(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主油泵出口压力低.wav,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:DCSDATACG_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_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, LPCTSTR lpszObjectName)函数,指定取消激活状态的闪烁背景色读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 Flash col_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。 2. long int GetBackFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的背景闪烁颜色。读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 Flash col_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。1). 读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2). 执行处理返回值的自定义代码。 3. long int GetBorderFlashColorOff(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定取消激活状态的边框或线闪烁颜色。读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。4. long int GetBorderFlashColorOn(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定激活状态的边框或线闪烁颜色。读出闪烁颜色的实例long int flashcol_on;/获得背景闪烁颜色 flashcol_on = GetBackFlashColorOn(lpszPictureName,Group 1);/自定义代码/在那里用户可以使用返回值做某事GetBackFlashColorOn函数参数:“lpszPictureName”是在其中组态该对象的画面的名称。“Group 1”是该对象的名称。5. BOOL GetFlashBackColor(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,指定是否激活背景闪烁。读出“闪烁背景激活”属性的实例BOOL bflash_col;/了解闪烁是开还是关 bflash_col = GetFlashBackColor(lpszPictureName,Group 1);if(bflash_col)/ 自定义代码/ 闪烁是否被激活else/ 自定义代码/ 闪烁是否被取消激活GetFlashBackColor函数参数:“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 lpszObjectName)函数,使用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 lpszPictureName, LPCTSTR lpszObjectName)函数,使用I/O域时,它指定错误输入后是否激活删除内容。6. long int GetDataFormat(LPCTSTR lpszPictureName, LPCTSTR lpszObjectName)函数,对于I/O域,它指定域内容的数据类型。读出布尔型属性的实例BOOL bHiddenInput;/获得隐藏输入的状态 bHiddenInput = GetHiddenInput(lpszPictureName,IO Field 1);if(bHiddenInput)/ 自定义代码/ 隐藏输入是否被激活else/ 自定义代码/ 隐藏输入是否被取消激活21 tag脚本使用来自Tag组的函数可以设置或调用变量。1. BOOL GetTagBitStateWait(Tag Tag_Name, PDWORD lp_dwstate)函数,建立数据类型“二进制变量”的过程变量的数值。直接从PLC读取该数值。 也返回变量的状态。读出二进制类型变量的实例DWORD dwstate;BOOL bValue;dwstate = 0xFFFFFFFF;/获得该变量值 /dwstate是变量状态 bValue = GetTagBitStateWait(gs_tag_bit,&dwstate);/创建包含该变量值的字符串if (bValue) / 自定义代码/ 该变量的数值是否是true.else/ 自定义代码 / 该变量的数值是否是falseGetTagBitStateWait函数参数:“gs_tag_bit”是该变量的名称。“&dwstate”是应在其中存储变量状态的变量地址。1). 读出该变量值以及bstate中的缓冲区。 该函数将变量状态存储在dwstate中。2). 根据该函数的返回值执行自定义代码。 22、Wincc项目脚本使用来自WinCC组的函数可以在运行系统中定义各种设置。使用System子组中的函数可以操作WinCC运行系统。1. BOOL DeactivateRTProject()函数,取消激活该项目。取消激活WinCC运行系统的实例/取消激活运行系统DeactivateRTProject ();该函数取消激活WinCC运行系统。 2. BOOL ExitWinCC()函数,终止WinCC3. 退出WinCC的实例/退出winccExitWinCC ();该函数终止WinCC。 WinCC组包含影响整个WinCC系统的函数。 1.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!