1——————1、wincc全局脚本动作-------隐藏控件——————#includeapdefap.hintgscAction(void){//WINCC:TAGNAME_SECTION_START//syntax:#defineTagNameInActionDMTagName//nextTagID:1//WINCC:TAGNAME_SECTION_ENDintvalue;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:#definePicNameInActionPictureName//nextPicID:1//WINCC:PICNAME_SECTION_ENDreturn0;}=====================================================说明:在触发器里选择变量IM_in——————2、wincc全局脚本动作----提示框——————#includeapdefap.hintgscAction(void){//WINCC:TAGNAME_SECTION_START//syntax:#defineTagNameInActionDMTagName//nextTagID:1//WINCC:TAGNAME_SECTION_ENDintvalue;2value=GetTagBit(IM_in);if(value==1){MessageBox(NULL,请确认三厅相关门是否关好,或者请解锁。,提示框,MB_OK|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);}//WINCC:PICNAME_SECTION_START//syntax:#definePicNameInActionPictureName//nextPicID:1//WINCC:PICNAME_SECTION_ENDreturn0;}=============================说明:在触发器中选择变量触发。——————3、趋势面板——————————char*str_a=NULL;intHi;intLo;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,ProcessValueArchive\\PT111);//Return-Type:BOOLSetTagSWord(TrendHi,200);SetTagSWord(TrendLo,0);SetTagByte(Trenden,1);——————————————————————————————5、调用登陆函数——————#pragmacode(useadmin.dll)#includePWRT_API.H#pragmacode()if(strcmp(GetTagChar(@CurrentUser),)==0){PWRTLogin('c');3}-------------------------------------——————6、时间同步——————voidSetCpuTime(){#pragmacode(kernel32.dll);voidGetLocalTime(SYSTEMTIME*lpst);#pragmacode();SYSTEMTIMEtimeBOOLret;//printf(StartfunctionSetCpuTime\r\n);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、对话框调用——————BOOLA;BOOLB;HWNDhwnd=NULL;intRetMsg;A=GetTagBit(TJ_ANNIU);//Return-Type:BOOLhwnd=FindWindow(NULL,WinCC-运行系统-);if(A==0)4{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);}elseB=0;}else{}------------------------------------------——————8、声音报警——————#pragmacode(Winmm.dll)VOIDWINAPIPlaySoundA(char*pszSound,char*hmode,DWORDdwflag);#pragmacode()if(GetTagFloat(LIST555)500)PlaySoundA(D:\\DCSDATA\\CG_wincc\\Horn\\Horn_Attention.wav,NULL,1);if(GetTagFloat(LIST555)300)PlaySoundA(D:\\DCSDATA\\CG_wincc\\Horn\\alsndmgr.wav,NULL,1);-----------------------------------------------——————9、水平移动——————建立内部变量BOOL-Q,无符号32位-P全局动作inta;inta1;a=GetTagBit(Q);a1=GetTagDWord(P);if(a==1){a1=a1+10;}if(a1=100){a1=0;5}SetTagDWord(P,a1);然后用一个按钮控制二进制变量Q,为启动信号。物体的X位置对应的是变量P,设置为模拟量。当P为1的时候对应的X位置。P为2的时候对应X的位置,以此类推,就可以做出物体移动画面了,要做全局脚本-----------------------------------------------——————10、WinCC中调用SQL语言——————1、创建一个SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL语句。Windows对话框实现。具体如下:2、在WinCC中用CScript调用上述SQL文件,如下所示:#include"apdefap.h"voidOnLButtonDown(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName,UINTnFlags,intx,inty){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*frompde#hd#t#test;outputtoe:test2.txtFORMATascii注意:文件名及路径中不要带空格。——————11、设置或重置一个变量——————voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName){BOOLz;z=GetTagBit("MyBitVariable");//获得变量值if(z==0)SetTagBit("MyBitVariable",1);//设置变量值elseSetTagBit("MyBitVariable",0);}——————12、运行时图形产生动态旋转——————#include"apdefap.h"long_main(char*lpszPictureName,char*lpszObjectName,char*6lpszPropertyName){staticintx=25,y,z;//x为半径的初始值为25,y为切换变量,z为搅拌机运行状态变量z=GetTagBit("202搅拌机运行");//取得PLC搅拌机的运行状态if(z!=0){switch(y){case0:x=x-4;if(x<=0)y=1;break;default:x=x+4;if(x>=25)y=0;break;}}returnx;}——————13、WINCC--如何在程序中动态修改用户密码——————1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#pragmacode(UseGen.dll)#includeUSEGENAP.H#pragmacode()LPCMN_ERRORerr;//定义的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位字符集{//密码修改成功后的操作,如给用户提示等}}7PWGENDisconnect(err);//断开与数据库的联接4、编译运行程序5、工作完成6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。——————14、WinCC如何实现鼠标OnMouseOVer事件———