2023年wincc全套脚本总结.docx

上传人:夺命阿水 文档编号:969978 上传时间:2024-02-04 格式:DOCX 页数:100 大小:245.23KB
返回 下载 相关 举报
2023年wincc全套脚本总结.docx_第1页
第1页 / 共100页
2023年wincc全套脚本总结.docx_第2页
第2页 / 共100页
2023年wincc全套脚本总结.docx_第3页
第3页 / 共100页
2023年wincc全套脚本总结.docx_第4页
第4页 / 共100页
2023年wincc全套脚本总结.docx_第5页
第5页 / 共100页
点击查看更多>>
资源描述

《2023年wincc全套脚本总结.docx》由会员分享,可在线阅读,更多相关《2023年wincc全套脚本总结.docx(100页珍藏版)》请在课桌文档上搜索。

1、1、winCC全局脚本动作.一一隐藏控件#includeapdefap.hintgSCActiOn(void)a/WINCC:TAGNAME_SECTlON_STARTa/syntax:#defineTagNameInActionDMTagName/nextTagID:1/WINCC:TAGNAME_SECTTON_ENDintvalue;AVaIUe=GetTagBit(IM_in);“IMin为触发的变量。if(value=l)ASetVisib1e(1ianxi.pd”按钮8,TRUE);/1ianxi.pdl为控制对象所在画面名,“按钮8”为对象名称Relse*CSetVisib1e(

2、lianxi.pd1,按钮8”,FALSE);/1ianxi.pd1aa/WINCC:PICNAME_SECTION_START/syntax:ItdefinePicNameInAction,PictureName,a/nextPicID:Ia/WINCC:PICNAME_SECTION_ENDreturnO;说明:在触发器里选择变量IM_in2、wincc全局脚本动作-提醒框#includeapdefap.hA/WINCC:TAGNAME_SECTION_STARTsyntax:#defineTagNameInActionDMTagName/nextTagID:1WINCC:TAGNAME_

3、SECTIONENDAintvalue;Ava1ue=GetTagBit(IMin);if(value=1)(MessageBox(NULL,请确认三厅相关门是否关好,或者请解锁。,“提醒框,MB_OKMB_icONexclamationub_setforegroundmb_systemmodal);a)/WINCC:PTCNAME_SECTION_START/syntax:#definePicNameInActionPictureNamea/nextPicID:Ia/WINCC:PICNAME_SECTION_ENDareturn0;a说明:在触发器中选择变量触发。3、趋势面char*str

4、_a=NULL;intHi;intLo;str_a=GetTagChar(nTrendTagNamel,);1.o=GetTagSWord(,TrendLo);Hi=GetTagSWord(,TrendHi);SetPropWord(lpszPictureName,qushi,TrendIndex,0);SetPropChar(IpszPictureName,qushi,TrendTagName,str_a);SetPropWord(lpszPictureName,qushi,Va1ueAxisBeginValue,Lo);SetProPWord(lpszPictureName,qushi,V

5、alueAxisEndValue,Hi);4、获取位号SetTagChar(TrendTagName1,ProcessValueArchivePT111,);/Return# Type:BOOLSetTagSWordCTrendHin,200);SetTagSWord(TrendLo0);SetTagByte(Trenden,l);5、调用登陆函数# pragmacode(useadmin.d11)# indudePWRT_API.H# Pragmacode()if(strcmp(GetTagChar(CurrentUser),)=O)(PWRTLogin(c);6、时间同步-voidSetC

6、puTime()(#pragmacode(,kerne132.dll);voidGetLoca1Time(SYSTEMTIME*1pst);#pragmacode();SYSTEMTIMEtimeBOOLret;/printf(StartfunctionSetCPuTimern,);GetLocalTime(&time);ret=SetTagMu1tiWait(,%d%d%d%d%d%d%d,data_year,time.wYear-2023,data_month,time.wMonth,data_day,time.wDay,data_hour,time.wHour,data_MINUTE,t

7、ime.wMinute,data_SECOND,time.wSecond,data_FLAG”,1)7、对话框调用BOOLA;BOOLB;IIWNDhwnd=NULL;intRetMsg;A=GetTagBit(TJ_ANNIU);/Return-Type:BOOLhwnd=FindWind。W(NULLJWinCC运营系统-if(A=O)(RetMsg=MessageBox(hwnd,”拟定要停机?“,“停机警告”,MB_OKCANCELMB_SYSTEMM0DALMB_SETFOREGROUND);if(RetMsg=IDOK)(SetTagBit(TJ_ANNIU,1);MessageB

8、ox(hwnd,“停机“,“停机警告,MB_0KlMB_SYSTEMMODAL|MB_SETFOREGROUND);SetTagBitCTLANNIU,O);)elseB=O;1eIse8、声音报警#pragmacode(,Winmm.d11)OVOlDWINAPIPlaySoundA(char*PSZSOUnd,char*hmode,DWORDdwf1ag);PragmaCOde()if(GetTagF1oat(,LIST555)500)gPlaySOundA(,D:DCSDATACG_winccHornHorn_Attention.wav,NULL,1);if(GetTagF1oat(,L

9、IST555,)=100)aal=0;AASetTagDW0rd(,P,al);然后用一个按钮控制二进制变量Q,为启动信号。物体的X位置相应的是变量P,设立为模拟量。当P为1的时候相应的X位置。P为2的时候相应X的位置,以此类推,就可以做出物体移动画面了,要做全局脚本10、WinCC中调用SQL语言1、创建一个SQL文献,此文献在ISQL中建立,文献内包含所要执行的SQL语句。WindOWS对话框实现。具体如下:A2、在WinCC中用CScript调用上述SQL文献,如下所示:#iclude"apdefap.h";voidOnLButtonDown(char*IpszPiCt

10、ureName,char*IpszbjectName,char*IpszPropertyName,AUlNTnFlagS,intx,intychar*a="c:siemenscommoSQLANYISQL-q-bCAUID=DBA;PWD=SQL;DBF=E:testsqltestsqIRT.DB;aDBN=CC_testsql_99-12-03-12:48:26R;READaE:testsq1test.sq1":Printf("%srn",a);APrOgramEXCUte(a);下面是一个简朴的SQL文献内容:select*fromPde#hd#t#

11、test;outputtoe:test2.txtFORMATascii注意:文献名及途径中不要带空格。11、设立或重置一个变量VoidOnCIick(char*IpszPiCtureName,char*IpszObjectName,char*1pszPropertyName)aBOOLz;z=GetTagBit(";MyBitVariable");获得变量值Aif(z=0)ASelTagBit(":MyBitVariab1e&qUo设立变量值elseasetTagBit(":MyBitVariable",0);)12、运营时图形产生动态旋转#inc1

12、ude"apdefap.h";AIong_main(char*IpszPictureName,char*1pszObjectName,char*AlPSZPropertyName)kstaticintx=25,y,z;/x为半径的初始值为25,y为切换变量,z为搅拌机运营状态变量z=GetTagBit(";202搅拌机运营";);/取得PLC搅拌机的运营状态if(z!=O)switch(y)aacaseO:AX=X4;if(<=O)Ay=1;break;AdefaUIt=+4;if(x>=25)y=0;Abreak;returnx;)13、WlNC

13、C一如何在程序中动态修改用户密码1、点击“开始”一“设立”“控制面板”一“管理工具”“数据源(ODBC)”,打开ODBC数据源管理器2m在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#Pragmacode(UseGen.dII)#includeUSEGENAP.II,会#Pragmacode()1.PCMN.ERRORerr;/定义的LPCMN_ERROR型变量,在函数调用中需使用Aif(PWGENC0nnect(CC_ass_O4-09-21_16:35:22,err)/建立与数据库的联接,其中C

14、C_ass_04-09-21_16:35:22用第二步中记下的名称取代aif(PWGENChangePassword(GetTagChar(,user,),GetTagChar(oIdpasSword),GetTagChar(password,),err)/修改密码,user,oldpasSWord,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集(/密码修改成功后的操作,如给用户提醒等AAPWGENDiSconnect(err);断开与数据库的联接4、编译运营程序A5、工作完毕6、与用户管理相关的函数定义存贮在APPIJB目录下的USEGENAP.H文献中

15、,可根据上面示例自行完毕添加用户,修改权限等功能。14、WinCC如何实现鼠标OnMOIISeOVer事件用WIND0WAPI函数GaCUSOrPOS获取当前鼠标位置,用GelWindOWReCI函数获取窗口位置,两值相减得鼠标在WINCCframe上的相对位置。用全局脚本(设定为1S定期刷新),然后获取要OnMOUSeoVer事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动作。#incIudeapdefap.h,intgscAction(void)(#pragmacode(user32.d1,);BOOLGetCusorPos(POINTIPPoint);获取鼠标的位置(绝对位

16、置-相应屏幕分辨率)BOOLGetWindowRect(HWNDhwnd,LPRECTIPReCt);获取窗体位置#pragmacode();APOINTpPos;RECTrRec;HWNDhwnd;BOOLbRet,bRet2;a!ong1Left,1To,IWidth,lHeight;long1X,IY;acharszStr100;hwnd=FindWindow(NULL,WinCC-Runtime-);如语言为中文应为“WinCC运营系统if(hwnd=0)(printf(,mError!WinCcHandIeis%d,hWnd);gotoover;bRet=GetCursorPos(&

17、pPos);if(bRet=O)gotoover;bRet2=GetWindowRect(hwnd,=lLeft)&(lY=llbp)&(1X=!Left+1Widlh)&(1Y5O0)/热井液位(gP1aySoundA(D:DCSDATACG_winccHorn热井液位高1.wav,NULL,O);)if(GetTagF1oat(,LIST555)100GetTagF1oat(,TE42IB)100GetTagFloat(,TE423A,)100GetTagFloat(TE423B,)100IGetTagF1oat(,TE425)100GetTagF1oat(TE427)100GetTagF

18、1oat(,TE442)l00)/轴瓦温度(。P1aySoundA(D:DCSDATACG_winccHorn轴瓦温度高1.wav,NULL,0);aif(GetTagFloat(TIE485)45)/冷油器出口油温PlaySoundA(D:WDCSDATACG_winccHorn冷油器出口油温高.wav,NULL,0);if(GetTagFloat(PT09,)40)真空低由。OPlaySoundA(DNDCSDAACG_winccWHom排汽压力高.wavu,NULL,0);1Af(GetTagFloat(PT13)0.05GetTagFloat(,PDT215)0.05GetTagBit

19、(PDSO7)=0GetTagBit(PDSO73,)=0)/滤油器差压。(。PlaySoundA(D:DCSDATACG_WinCcHorn滤油器差压.wav,NULL,O);。Oif(GeITagFloat(PTl21,)O.65)/主油泵出口压力P1aySound(D:DCSDATACG_winccHorn主油泵出口压力低.wav”,NULL,。);)。if(GetTagFIoat(LIST55,)52Ge(TagF1oat(,VE737A)52GetTagFloat(VE745A,)52GetTagBit(XE202,)=1GetTagBit(/振动大XE204,)=lHGetTagB

20、it(,XE206,)=1)0。IEPlaySoundA(,rDDCSDATACG_winccHom轴瓦振动高.wav”,NULL,O);2)。if(GetTagFloat(,ZE769n)0,4GetTagFloat(,ZE769,)3GetTagFloat(ZDE785,)324O)/转速(皿PlaySOUndA(D:DCSDATACG_winccHom汽轮机转速高.wav,NULL,0);Ooooif(GetTagBit(DI_0175u)=1GetTagBit(DI_0180)=1)/保护跳闸。OPIaySoUndA(,D:DCSDATAWCG_winCcHorn发电机保护跳闸.wav

21、”,NULL,0);。)。if(GetTagBit(DI_0177,)=1GetTagBit(DI_0181)=1)定子转子一点接地PlaySoundA(,DDCSDATACG_winccHorn发电机转子接地.wav”,NULL,0);2)if(GetTagBit(DI_O176)=1)过负荷(。PlaySoUndA(,D:DCSDATACG_winccHom发电机过负荷.wav,NULL,O);)if(GetTagBit(DI_O182)=1)/失磁(。P1aySoundA(,DADCSDATACG_winccHorn发电机失磁.wav,NULL,0);if(GetTagBit(S0E_1

22、50)=1)/ETS动作sgOP1aySoundAC,DDCSDATACG_winccHomETS动作.wav,NULL,O);)19、闪烁边框图片的脚本Flash-简短描述使用Flash组中的函数可以修改或调用各种闪烁属性。1.1ongintGetBaCkFlashCoIor0ff(LPCTSTRIpszPictureName,LPCTSTR1pszbjectName)函数,指定取消激活状态的闪烁背景色读出闪烁颜色的实例IOngiIltf1ashcol_on;获得背景闪烁颜色FIashcol_on=GetBackFlashCo1orn(1pSzPictureName,Group1,);/自定

23、义代码在那里用户可以使用返回值做某事1GetBackFlashCoIorOn函数参数:“IpszPicUireName”是在其中组态该对象的画面的名称。“Group1”是该对象的名称。1) .读出该对象的开状态的当前背景闪烁颜色以及flashcol_on中的缓冲区。2) .执行解决返回值的自定义代码。2.1ongintGetBackF1ashColorOn(LPCTSTRIpszPictureName,LPCTSTRIpszObjectName)函数,指定激活状态的背景闪烁颜色。读出闪烁颜色的实例longintfIashco1_on;/获得背景闪烁颜色Flashco1_on=GetBackF1

24、ashCo1orn(1pszPictureName,Group1);自定义代码/在那里用户可以使用返回值做某事1GetBackF1ashColorn函数参数:“1PSzPictureName是在其中组态该对象的画面的名称。“Group1”是该对象的名称。1. .读出该对象的开状态的当前背景闪烁颜色以及flaShcoLon中的缓冲区。2. .执行解决返回值的自定义代码。3. longintGetBorderFlashColorOff(LPCTSTR1pszPictureNameLPCTSTR1pszbjectName)函数,指定取消激活状态的边框或线闪烁颜色。读出闪烁颜色的实例(Iongintf

25、1ashcol_on;获得背景闪烁颜色flashcol_on=GetBackFlashCoIorn(lpszPictureName,Group1);自定义代码/在那里用户可以使用返回值做某事1GetBackFlashColorn函数参数:“IpszPictureNamew是在其中组态该对象的画面的名称。“Grou1”是该对象的名称。4. 1ongintGetBorderF1ashColorn(LPCTSTRIpszPictureName,LPCTSTRIpszObjeCtName)函数,指定激活状态的边框或线闪烁颜色。读出闪烁颜色的实例(1ongintfIashco1_on;获得背景闪烁颜色f

26、lashco1_on=GetBackF1ashColorOn(lpszPictureName,Group,);自定义代码在那里用户可以使用返回值做某事GetBaCkFIashCoIorOn函数参数:IpszPictureName”是在其中组态该对象的画面的名称。“Group1w是该对象的名称。5. BOOLGetFlashBackColor(LPCTSTRIpszPictureName,LPCTSTRIPSZobjeCtName)函数,指定是否激活背景闪烁。读出“闪烁背景激活”属性的实例(BOOLbf1ash_col;了解闪烁是开还是关bflashcol=GetFlashBackColor(I

27、pszPictureName,Group1);if(bf1ash_col)(/自定义代码/闪烁是否被激活else/自定义代码/闪烁是否被取消激活11GetFlashBackCoIor函数参数:alpszPicmreName”是在其中组态该对象的画面的名称。“Group1”是该对象的名称。1) .读出背景色闪烁是否被激活以及bflash_col中的缓冲区。2),根据该函数的返回值执行自定义代码。20、I/0脚本使用i_。组中的函数可以修改或调用影响输入和输出值的各种属性。1. char*GetAssignments(LPCTSTRIpszPictureName,LPCTSTR1pszbjectName)函数,对于列表,分派文本给数值范围2. BOOLGetAsSumenExit(LPCTSTR1PszPictureName,LPCTSTRIpsz0bjectName)函数,使用I/O域时,它指定退出该域时是否应用输入的数值。3. BO0LGetAssumenFull(LPCTSTR1pszPictUreName,LPCTSTRIpszObjectName)函数,使用I/O域时,它指定完毕输入时是否应用输入的数值。4. IongintGetBitNumber(LPCTSTRIpszPictureName,LPCTSTRIPSZobjeCtName)函数,使用列表类型“位”

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 在线阅读 > 生活休闲


备案号:宁ICP备20000045号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000986号