ImageVerifierCode 换一换
格式:DOC , 页数:72 ,大小:225.50KB ,
资源ID:4070814      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-4070814.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(wincc脚本全集.doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

wincc脚本全集.doc

1、11、wincc 全局脚本动作-隐藏控件#include “apdefap.h“int 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 为控制对象所在画面名, “

2、按钮8”为对象名称elseSetVisible(“lianxi.pdl“,“按钮8“,FALSE);/lianxi.pdl/ WINCC:PICNAME_SECTION_START/ syntax: #define PicNameInAction “PictureName“/ next PicID : 1/ WINCC:PICNAME_SECTION_ENDreturn 0;=说明:在触发器里选择变量 IM_in2、wincc 全局脚本动作-提示框#include “apdefap.h“int gscAction( void )/ WINCC:TAGNAME_SECTION_START/ sy

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

4、tureName“/ 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“,“Tren

5、dTagName“,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、调用

6、登陆函数#pragma code(“useadmin.dll“)#include “PWRT_API.H“#pragma code()if (strcmp(GetTagChar(“CurrentUser“),“)=0)PWRTLogin(c);3-6、时间同步void SetCpuTime()#pragma code(“kernel32.dll“);void GetLocalTime(SYSTEMTIME *lpst);#pragma code();SYSTEMTIME timeBOOL ret;/printf(“Start function SetCpuTimern“);GetLocalTi

7、me(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 hwn

8、d=FindWindow(NULL,“WinCC-运行系统 - “);if (A=0)4RetMsg =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 cod

9、e(“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);5然后用一个按钮控制二进制变量 Q,为启动信号。物体的 X 位置对应的是变量 P,设置为模拟量。当 P 为1的时候对应的

10、X 位置。P 为2的时候对应 X 的位置,以此类推,就可以做出物体移动画面了,要做全局脚本-10、 WinCC 中调用 SQL 语言 1、创建一个 SQL 文件,此文件在 ISQL 中建立,文件内包含所要执行的 SQL 语句。Windows 对话框实现。具体如下:2、在 WinCC 中用 C Script 调用上述 SQL 文件,如下所示:#includeapdefap.hvoid OnLButtonDown(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName,UINT nFlags,int x,int y)cha

11、r*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* lpszPict

12、ureName, char* lpszObjectName, char* lpszPropertyName)BOOL z;z=GetTagBit(MyBitVariable);/获得变量值if (z=0) SetTagBit(MyBitVariable,1); /设置变量值elseSetTagBit(MyBitVariable,0); 12、运行时图形产生动态旋转#include apdefap.hlong _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)static int x=25,y,z;

13、/x 为半径的初始值为 25,y 为切换变量, z 为搅拌机运行状态变量6z=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_项目名_项目

14、建立日期时间”,记下该项的名称 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(“ol

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

16、sorPos 获取当前鼠标位置,用 GetWindowRect 函数获取窗口位置,两值相减得鼠标在 WINCC frame 上的相对位置。用全局脚本(设定为1s 定时刷新) ,然后获取要 OnMouseOver 事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动作。#include “apdefap.h“int gscAction( void ) #pragma code(“user32.dll“); BOOL GetCusorPos(POINT lpPoint); /获取鼠标的位置(绝对位置 -对应屏幕分辨率) BOOL GetWindowRect(HWND hwnd,LPREC

17、T 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( if (bRet

18、=0) goto over;bRet2=GetWindowRect(hwnd, 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); l

19、Left=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) SetText(“NewPdl0.Pdl“,“Text1“,sz

20、Str); /Return - Type :char* /printf(“The Text1 Pos is x:%d,y:%drn“,lLeft2,lTop-lTop2); 8over: return 0; 15、如何在退出 WINCC 监控时直接关闭电脑 1.利用动态向导 2.在脚本中加入 DMExitWinCCEx (DM_SDMODE_SYSTEM);也可以 16、过 WINCC API 函数读出当前报警消息 1、使用 GMsgFunction 中读出当前报警信息的 ID(dwMsgNr) ; 2、使用 MSRTGetMsgCSData 函数读出该报警信息 ID 对应文本库 TEXTLI

21、B 中的文本ID(dwTextID1) ; 3、使用 MSRTGetMsgText 函数读出该文本 ID 的文本。 信息到达处理:如果读取文本成功,则置文本变量 MSG。 信息离去处理:如果 MsgNr 与上一次相同,则复位 MSG,如果不是,则继续保持信息。 具体函数说明请看 ODK 文档 BOOL GMsgFunction( char* pszMsgData) #pragma code(“msrtcli.dll“) i nclude “msrtapi.h“ #pragma code();MSG_TEXT_STRUCT tMeld; MSG_CSDATA_STRUCT sM; CMN_ERR

22、OR err; BOOL bRet; DWORD dwTextID1; DWORD dwMsgNum; char szMsg255; #define TAG_MSG “MSG“MSG_RTDATA_STRUCT mRT; memset( if( pszMsgData != NULL ) printf( “Meldung : %s rn“, pszMsgData ); sscanf( pszMsgData, “%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld, %ld, %ld, %d,%d“, /*code for dcount if (mRT.dw

23、MsgState=MSG_STATE_COME)/信息到达处理 dwMsgNum=mRT.dwMsgNr; printf(“rnThe Alarm Message No is %d !rn“,dwMsgNum); bRet=MSRTGetMsgCSData(dwMsgNum, if (bRet=TRUE) dwTextID1=sM.dwTextID0; printf(“rnThe TextID of The MessageNr %d is %d !rn“,dwMsgNum,dwTextID1); bRet=MSRTGetMsgText(1,dwTextID1, if (bRet=TRUE) s

24、printf(szMsg,“%s“,tMeld.szText); printf(“rnThe Text of TextID %d is %s !rn“,dwTextID1,szMsg); if (mRT.dwMsgState=MSG_STATE_GO)/信息离去处理 dwMsgNum=mRT.dwMsgNr; if (dwMsgNum=GetTagDWord(TAG_MSG_NR) SetTagChar(TAG_MSG,“); /*code for dcount/ Meldungsdaten einlesen/ Prozesswerte lesen, falls gew?1nscht prin

25、tf(“Nr : %d, St: %x, %d-%d-%d %d:%d:%d.%d, Dur: %d, Cnt %d, Fl %drn“ , mRT.dwMsgNr, mRT.dwMsgState, mRT.stMsgTime.wDay, mRT.stMsgTime.wMonth, mRT.stMsgTime.wYear, mRT.stMsgTime.wHour, mRT.stMsgTime.wMinute, mRT.stMsgTime.wSecond, mRT.stMsgTime.wMilliseconds, mRT.dwTimeDiff, 10mRT.dwCounter, mRT.dwFl

26、ags ) ;SetTagChar(TAG_MSG,szMsg);return( TRUE ); 17、实现用户登陆日志(wincc 中用 c 脚本实现?) 用户登陆日志:(包括用户的登陆退出信息,以便查询在什么时间段是哪个用户在使用这个监控软件)i nclude “apdefap.h“int gscAction( void ) #pragma code(“kernel32.dll“) VOID GetLocalTime(LPSYSTEMTIME lpSystemTime); #pragma code()char* username; char buf128; static char preu

27、ser128; unsigned a,b,c,d,e,f; FILE* fp; SYSTEMTIME sysTime;/读取系统时间,并且复制给变量 a,b,c,d,e,f GetLocalTime(a=sysTime.wHour; b=sysTime.wMinute; c=sysTime.wSecond; f=sysTime.wYear; e=sysTime.wMonth; d=sysTime.wDay;/得到当前用户名称 username = GetTagChar(“CurrentUser“); fp= fopen(“c:wincclog.txt“, “a+“); if(strcmp(username, preuser)!=0) /如果当前用户名称和前一个用户名不同 if(strcmp(username, “) != 0) fputs(buf, fp); else

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。