wincc-全套脚本总结
wincc-全套脚本总结
)
}
-------------------------------------
——————7、对话框调用——————
BOOL A;
BOOL B;
}
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
return 0;
}
=====================================================
int value;
value=GetTagBit("IM_in");//"IM_in"为触发的变量。
if(value==1)
{
SetVisible("lianxi.pdl","按钮8",TRUE);//lianxi.pdl为控制对象所在画etVisible("lianxi.pdl","按钮8",FALSE);//lianxi.pdl
SetPropWord(lpszPictureName,"qushi","ValueAxisEndValue",Hi);
————————————————————————
——————4、获取位号————————
SetTagChar("TrendTagName1","ProcessValueArchive\\PT111");//Return-Type: BOOL
关于WINCC的C脚本的使用总结
关于WINCC的C脚本的使用总结
Wincc的脚本功能及其强大,可以通过C脚本实现各种功能,但是脚本比较繁琐,始终不得其道,经过对比研究,发现了一些规律
1.全局脚本的实现
打开全局脚本编辑器,在“动作”-“全局动作“-新建动作,出现脚本编辑器的正文
可以看到正文已经有一部分内容,这些内容包括自带的全局脚本的声明及注释内容,都需要更改,也更改不了。
在第一大括号后,我们可以自己编用户脚本了,用户脚本一般是这样的结构:首先对数据和变量进行声明,即对其数据类型进行声明;然后,对变量进行取属性,转换变量,用value1=GetTagDWord("AI0");(这是个例子),意思是把AI0的值取出给value1了,然后就可以对value1进行计算了,计算后再置属性,转换变量,用
SetTagDWord("AI0",value1);
其他的地方注意符号和空格,然后编译,编译过了之后保存,并生成头文件,然后就见证奇迹吧。
下图是依次点亮的脚本
下图是液位高高报警的脚本。
VB操作wincc脚本心得
V B操作w i n c c脚本心得集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#Vbs 操作wincc画面脚本总结一:不使用变量单纯的操作界面1.操作某个画面中控件的属性如(总窗体)下的画面窗口2(画面窗口)Sub OnClick(ByVal Item) Dim objCircleDim screennameDim pwnameSet objCircle= ScreenItems("圆1" )= 60Set screenname=("Home1") creenItems("画面窗口2")Set value=2.更改画面窗口的对象Sub OnClick(Byval Item)Dim opObjectSet opObject= ("Home1").ScreenItems("画面窗口2")=""End Sub3.设置文本Set titleTxt= ("Home1").ScreenItems("静态文本2")=+"EF" Dim objTagDim ATextSet objTag = ("a") vb 中Switch语句的变体Dim objTagDim ATextSet objTag = ("a") 你要求是有是和否两个按钮那么MyVar = MsgBox ("HelloWorld!", 65, "MsgBox Example")中的65改成4就可以了!vbs脚本中:if msgbox("确实要启动设备吗",4,"警告")=6 then("tag1").write 1end if。
WINCC常用 脚本
11、在画面中显示用户名
1.组态静态文本
2.字体属性中的文本,连接系统变量@CurrentUser
----------------------------------------------
(2)新密码设置(C)
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
注:字符串格式的输入输出域》事件》属性主题》输出/输入》输出值》更改》以上代码。
{
MessageBox (Handle, "新密码和旧密码不能相同 !", "请重新输入密码", MB_OK |
MB_ICONEXCLAMATION | MB_SYSTEMMODAL);
}
else
{
// this 2 lines are necessary to get the DSN-Name of the project
a=MsgBox("hello!",vbYesNo)
If vbYes=a Then
objCon2.text="ok" '如点击是,则按钮文本变为ok
Else
objCon2.text="no" '如点击否,则按钮文本变为no
End If
注:放置按钮,起名按钮1.
----------------------------------------------
WINCC脚本字符串处理总结
WINCC脚本字符串处理总结组态注意事项:下面说明了关于在C脚本中处理字符串时最重要的问题。
必须考虑性能和稳定性因素。
在不一致时,内存区可能被覆写,从而使系统锁死。
最坏的情况出现在字符指针。
如果指针设计不当,内存区可能被覆写。
下面是有关错误和正确组态的四个样例。
没有预留内存区:char *a; a=GetTagChar("Tag name"); strcat(a,"xyz"); //有一个连接到文本的指针“a” //没有预留内存区正确:通过查询有效的指针将字符串正确复制到预定义的缓冲器中(来自描述WinCC信息系统的样例):char* pszValue = NULL; char szValue[101]; pszValue = GetTagChar("Varname"); //读标签值并将其缓存到pszValue。
/*如果返回一个有效值,将该函数返回值存入局部字符串szValue中。
最多保存100个字符。
*/if(pszValue !=NULL) //!=NULL是必须执行的检查//以便保证没有NULL指针提交{ st rncpy(szValue,pszValue,100); … } else{ printf("Pointer invalid\r\n"); //使用了无效值} } 没有预留足够的内存区:通常,由于预留的内存区太小导致内存被覆写。
在这些情况下,通常在C中进行字符串处理时,文本结尾的一个附加字符必须始终被保留。
也就是说,必须要比被处理的文本长度多预留出一个字符。
错误:char a[4]; strcpy(a,"1234"); //总是有4个字符被复制到一个4字符的数组中;// 错误:文本的结尾字符被遗漏正确:char a[5]; //内存区的大小必须//总是比被复制的文本多一个字符strcpy(a,"1234");字符*作为项目函数的返回值无效:如果在项目函数中返回“char*”,必须用“SysMalloc”预留相应的内存区。
VB操作wincc脚本心得
Vbs 操作wincc画面脚本总结一:不使用变量单纯的操作界面1.操作某个画面中控件的属性如(总窗体)下的画面窗口2(画面窗口)Sub OnClick(ByVal Item) Dim objCircleDim screennameDim pwnameSet objCircle= ScreenItems("圆1" )= 60Set screenname=("Home1") creenItems("画面窗口2")Set value=2.更改画面窗口的对象Sub OnClick(Byval Item)Dim opObjectSet opObject= ("Home1").ScreenItems("画面窗口2")=""End Sub3.设置文本Set titleTxt= ("Home1").ScreenItems("静态文本2")=+"EF" Dim objTagDim ATextSet objTag = ("a") vb 中Switch语句的变体Dim objTagDim ATextSet objTag = ("a") 你要求是有是和否两个按钮那么MyVar = MsgBox ("Hello World!",65, "MsgBox Example")中的65改成4就可以了!vbs脚本中:if msgbox("确实要启动设备吗",4,"警告")=6 then("tag1").write 1end if。
wincc 全套脚本总结
} -------------------------------------
——————6、时间同步——————
void SetCpuTime() { #pragma code("kernel32.dll"); void GetLocalTime(SYSTEMTIME *lpst); #pragma code(); SYSTEMTIME time BOOL ret; //printf("Start function SetCpuTime\r\n"); GetLocalTime(&time); ret= SetTagMultiWait("%d%d%d%d%d%d%d",
"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)
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()
WINCC脚本整理
切换按钮001SetTagBit("TE_BOOL",!GetTagBit("TE_BOOL"));002BOOL AA=GetTagBit("TE_BOOL");if(A)SetTagBit("TE_BOOL",0);ElseSetTagBit("TE_BOOL",1);003SetTagBit("TE_BOOL ",1-GetTagBit("TE_BOOL "));I O域处的xx输入输出在I/O域的输出值事件处的动作Float F_TAG;F_TAG =GetTagFloat("TE_FLOAT");return(F_TAG /100);WINCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow("PDLRTisAliveAndWaitsForYou",NULL); CloseWindow(WinCCHwnd);WINDOWSxx提供的标准对话框{BOOL bool1;HWND Hwnd;int iRet;Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) printf("\r\nGetWinCC Handle Failed!");iRet=MessageBox(Hwnd,"确认合闸","确认对话框",MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEM MODAL);switch (iRet){case IDYES:printf("user do YES\r\n");SetTagBit("TE_QUEST",1);break;case IDNO:printf("user do NO\r\n");SetTagBit("TE_QUEST",0);break;case IDCANCEL:printf("user do CANCEL\r\n");break;}}本画框的功能是点击按钮的时候弹出windows询问对话框其中“确认合闸”为对话内容,对话框的名称为“确认对话框”用户不同显示不同的按钮你可以在用户管理器给每个用户不同的权限,使他们对按钮有不同的操作权,这是最简便的。
最新WINCC脚本整理
切换按钮001 SetTagBit("TE_BOOL",!GetTagBit("TE_BOOL"));002 BOOL AA=GetTagBit("TE_BOOL");if(A) SetTagBit("TE_BOOL",0);Else SetTagBit("TE_BOOL",1);003 SetTagBit("TE_BOOL ",1-GetTagBit("TE_BOOL "));I O 域处的格式化输入输出在I/O域的输出值事件处的动作Float F_TAG;F_TAG =GetTagFloat("TE_FLOAT");return(F_TAG /100);WINCC运行画面最小化HWND WinCCHwnd;WinCCHwnd=FindWindow("PDLRTisAliveAndWaitsForYou",NULL);CloseWindow(WinCCHwnd);WINDOWS中提供的标准对话框{ BOOL bool1;HWND Hwnd;int iRet;Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) Hwnd = FindWindow(NULL,"WinCC-运行系统- ");if (!Hwnd) printf("\r\nGetWinCC Handle Failed!");iRet=MessageBox(Hwnd,"确认合闸","确认对话框",MB_YESNOCANCEL|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_SYSTEMMODAL);switch (iRet){case IDYES: printf("user do YES\r\n");SetTagBit("TE_QUEST",1);break;case IDNO: printf("user do NO\r\n");SetTagBit("TE_QUEST",0);break;case IDCANCEL: printf("user do CANCEL\r\n");break;}}本画框的功能是点击按钮的时候弹出windows询问对话框其中“确认合闸”为对话内容,对话框的名称为“确认对话框”用户不同显示不同的按钮你可以在用户管理器给每个用户不同的权限,使他们对按钮有不同的操作权,这是最简便的。
wincc脚本全集
——————1、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为控制对象所在画面名,“按钮8”为对象名称}else{SetVisible("lianxi.pdl","按钮8",FALSE);//lianxi.pdl}// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}=====================================================说明:在触发器里选择变量IM_in——————2、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");if(value==1){MessageBox(NULL,"请确认三厅相关门是否关好,或者请解锁。
WINCC-C脚本大全
WINCC C脚本的标准函数 12009-08-06 17:04标准函数该系统包含标准函数。
可以按需要修改这些函数。
此外,还可以自己创建标准函数。
该系统包括一个标准函数集。
一、Alarm - 简短描述Alarm组包含控制WinCC报警控件的函数。
标准函数可用于工具栏中的每一个按钮。
这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。
1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。
使用标准函数操作WinCC报警控件的实例{//确认选择的报警记录消息AcknowledgeMessage(GetTagWord("U08i_Msg Nr"));}指定待确认的消息号。
在本例中是从变量读取的。
2.BOOL AXC_OnBtnArcLong(char* lpszPi ctureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
Control 1是WinCC报警控件的对象名。
3.BOOL AXC_OnBtnArcShort(char* lpszPic tureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。
使用标准函数操作WinCC报警控件的实例{// 跳转到WinCC报警控件中的第一条消息AXC_OnBtnMsgFirst("gs_alarm_00","Contro l1");}AXC_OnBtnMsgFirst函数参数:“gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。
WINCC脚本个人经验总结
lpszPropertyName)
{
#pragma code(\"Winmm.dll\")
void WINAPI PlaySoundA(char *pszSound,char *hmode,DWORD dwflay);
long _main(char* lpszPictureName, char* lpszObjectName, char*
lpszPropertyName)
{
#pragma code(\"Winmm.dll\")
void WINAPI PlaySoundA(char *pszSound,char *hmode,DWORD dwflay);
解答:
重新启动以及在运行期间,您希望HMI系统达到最小的实用性而不使用登录窗口。然而,对于高级操作,登录功能应当保留。此外,如果没有用户登录,则有一个缺省的用户自动登录。缺省用户的权限可以在用户管理器中根据需要设定。
可使用下面的C脚本执行此项功能,请按照下列步骤进行:
将附件中的函数“Silentlogin.pas”复制到项目中的“PAS”子文件夹中。
#pragma code()
if(GetTagBit(\"112排泥备泵故障\"))
PlaySoundA(\"d:\\\\\\\\winnt\\\\\\\\media\\\\\\\\Mircosoft sound.wav\",NULL,8);
return 1020;
}重新启动后,不使用登录窗口如何以一个缺省用户的身份自动登录?怎样确保运行期间有个缺省用户始终处于登入状态?即使另外一个用户已经预先退出。
WINCC常用脚本说明
GetTagByte("WSJ_A_OFWO5");
4.写变量赋值
格式:SetTagByte("",); 实例:SetTagByte("WSJ_A_GDBL",1);
SetTagByte("WSJ_A_OFWO5",1);
setobjcommandnothingobjconnectionclosesetobjrnothingsetobjconnection数据库存储过程操作objcommandcommandtextwsjreport?gdh1??bc1??pch1??ph1??silo1?cl1?cstrnow?3wsjreport?gdh??bc??pch??ph??silo?cl?cstrnow?3?msgbox1bks?objcommandexecute定义变量格式
三、 动态对话框
函数判断取值
实 例 : ('C_SA509_CASING_CUR_1'<=63 || 'C_SA509_CASINபைடு நூலகம்_CUR_2'<=63 || 'C_SA509_CASING_CUR_3'<=63) && 'C_SA509_STATE'==1
四、 WinCC 组包含影响整个 WinCC 系统的函数
实例:Set conn = CreateObject(“ADODB.Connection”)
Conn.open“Provider=SQLLEDB.1;Integrated Security = SSPI; Persist Security Info = false ; Initial Catalog = CC_OpenArch; Data Source = .\WinCC”
wincc-全套脚本总结
——————1、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为控制对象所在画面名,“按钮8”为对象名称}else{SetVisible("lianxi.pdl","按钮8",FALSE);//lianxi.pdl}// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}=====================================================说明:在触发器里选择变量IM_in——————2、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");if(value==1){MessageBox(NULL,"请确认三厅相关门是否关好,或者请解锁。
Wincc常用C脚本及常用功能
Wincc常用C脚本及常用功能打开用户管理器ProgramExecute("Passcs.exe"); 取消激活#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,UINT nFlags, int x, int y){#pragma option(mbcs)HWND hwnd=NULL;int iRet;hwnd=FindWindow(NULL,"WinCC-运行系统 - "); //获得句柄iRet=MessageBox(hwnd,"是否取消激活?","Deactivate",MB_OKCANCEL|MB_ICONWARNING|MB_APPLMODAL);if(iRet==1)DeactivateRTProject (); //Return-Type: BOOL}关闭计算机#include "apdefap.h"void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,UINT nFlags, int x, int y){#pragma option(mbcs)HWND hwnd=NULL;int iRet;hwnd=FindWindow(NULL,"WinCC-运行系统 - ");iRet=MessageBox(hwnd,"是否关闭计算机?","ShutDown",MB_OKCANCEL|MB_ICONWARNING|MB_APPLMODAL);if(iRet==1)DMExitWinCCEx(DM_SDMODE_SYSTEM); }==================================================================== ==登陆代码:#pragma code(“useadmin.dll”)#include <pwrt_api.h>#pragma code()PWRTLogin (…e?);==================================== 取消激活(Deactivate)DeactivateRTProject();====================================== Wincc变量操作GetTagDWord(“变量名称”); 获取Wincc变量值SetTagDWord(“变量“,设定值); 设置Wincc变量对文本读写操作写操作#include "apdefap.h"void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,UINT nFlags, int x, int y) {#pragma option(mbcs)FILE* lpFile;char *shuzhu[6]={"tag_1","tag_2","tag_3","tag_4","tag_5","tag_6"};char* lpszStr;int i,j;lpszStr=SysMalloc(60); //Return-Type: void*lpFile = fopen("D:\\test.txt", "w+");for(i=0;i<6;i++){lpszStr=GetTagChar(shuzhu[i]); strcat(lpszStr,"\r\n");if(lpFile == NULL){ printf("can not open file\r\n"); return;}fprintf(lpFile, lpszStr); }SysFree(lpszStr);fclose(lpFile);}读操作#include "apdefap.h"void OnLButtonUp(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName,UINT nFlags, int x, int y) {#pragma option(mbcs)char* shuzhu[6]={"tag_1","tag_2","tag_3","tag_4","tag_5","tag_6"}; char tmp[255];int i=0;int ChrNumLine=38;FILE *fp;fp=fopen("D:\\test.txt","r"); if (fp==NULL){return;}else{rewind(fp);while(!feof(fp)){fgets(tmp,ChrNumLine,fp);SetTagChar(shuzhu[i],tmp);i++;}}fclose(fp);}画面窗口显示界面切换SetPictureName(lpszPictureName,"PicWindow_button","produce_manage_bu tton.pdl");SetVisible(lpszPictureName,"PicWindow_button",1);注:PicWindow_button是画面窗口名称;produce_manage_button.pdl是要显示的子画面。
wincc常用C脚本
wincc常用C脚本第一篇:wincc常用C脚本.用户注销:#pragma code(“useadmin.dll”)#include “PWRT_api.h” #pragma code()PWRTLogout();2.用户登录:#pragma code(“useadmin.dll”)#include “PWRT_api.h” #pragma code()PWRTLogin('c');3.关闭项目并退出wincc:ExitWinCC();4.退出运行到wincc资源管理器:DeactivateRTProject();按钮变三种颜色#include “apdefap.h” long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){ #pragma option(mbcs)if(GetTagWord(“TX/ZSH001”)==1)return0x0000ff00;else if(GetTagWord(“TX/ZSL001”)==1)return 0x000000ff;else return 0x00c0c0c0;} 一个调用按钮变色#include “apdefap.h” long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){ #pragma option(mbcs)if(GetTagWord(“NewTag”)==0)return0x0000ff00;else return 0x00ffffff;}5.结束监控并关闭计算机(会弹出确认对话框)HWND hWnd = NULL;//Author:Smartsys int iRet;hWnd = FindWindow(NULL,“WinCC-运行系统”);//如果运行语言为英文if(WinCCHwnd==0)WinCCHwnd=FindWindow(NULL,“Win CC-运行系统-”);//如果运行语言为中文CloseWindow(WinCCHwnd);10.显示或不显示(其中hiddVtext 为内部的二进制变量)if(GetTagBit(“hiddVtext”)==0)//Return-Type: BOOL { SetTagBit(“hiddVtext”,TRUE);//Return-Type: BOOL //Return-Type: BOOL } else {SetTagBit(“hiddVtext”,FALSE);} 10.打开编辑画面的脚本#pragma option(mbcs)#ifdef RUN_ON_WEBNAVIGATOR #elseHWND hExplorerWindow= NULL;HWND hRuntimeWindow= NULL;hExplorerWindow=FindWindow(“WinCCExplorerFrameWndClass”,NULL);hRuntim eWindow=FindWindow(“PDLRTisAliveAndWaitsForYou”,NULL);if(hExplor erWindow){ ShowWindow(hExplorerWindow, SW_MINIMIZE);// This entry is only necessary for Windows 2000 ShowWindow(hExplorerWindow,SW_SHOWNORMAL);SetForegroundWindow(hExplorerWindow) ;} else printf(“rn SetForeground failed”);#endif 11.如何在WINCC中制作一个保持型按钮方法1:if(GetTagBit(“M10”))SetTagBit(“M10”,0);elseSetTagBit(“M10”,1);方法2:SetTagBit(“M1.0”,(SHORT)!GetTagBit(“M1.0”));求反指令,如果为1点击变为0,如果为0点击变为1 方法3:或者做两个按钮,按钮一:显示,直接连接m1.0,是--不显示,否--显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
——————1、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为控制对象所在画面名,“按钮8”为对象名称}else{SetVisible("lianxi.pdl","按钮8",FALSE);//lianxi.pdl}// WINCC:PICNAME_SECTION_START// syntax: #define PicNameInAction "PictureName"// next PicID : 1// WINCC:PICNAME_SECTION_ENDreturn 0;}=====================================================说明:在触发器里选择变量IM_in——————2、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");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","ValueAxisEndV alue",Hi); ——————————————————————————————4、获取位号————————SetTagChar("TrendTagName1","ProcessValueArchive\\PT111"); //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 timeBOOL ret;//printf("Start function SetCpuTime\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、对话框调用——————BOOL A;BOOL B;HWND hwnd=NULL;int RetMsg;A=GetTagBit("TJ_ANNIU"); //Return-Type: BOOLhwnd=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:\\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全局动作int a;int a1;a=GetTagBit("Q");a1=GetTagDWord("P");if(a==1){a1=a1+10;}if(a1>=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注意:文件名及路径中不要带空格。