如何更改 WinCC 图形对象的变量连接?support.automation.siemens/CN/view/zh/17515413
解答:
在 Graphics Designer 中有两种方式可以更改 WinCC 图形对象的变量连接。
在 Graphics Designer 中有两种方式可以更改 WinCC 图形对象的变量连接。
∙ 可以使用 Graphics Designer 中的“Linking”功能变更,或者
∙ 使用 WinCC Explorer 中的“Cross Reference”对话框。
现在选择选项卡“Find and Replace”更改变量连接,选择您需要的行,或者如果您希望链接到整个结构,选择所有对象。在“Replace with”框中选择一个新变量。如果您点击“Preview”,新的变量名即与将被替代的变量名并排显示。如果点击“Replace”,对象的链接即被更改。所有选中的变量连接均被替换。
如何批量替换 WinCC 对象 C 脚本中的变量名呢?
1.首先,C 脚本要使用一定的格式,如下:
#include "apdefap.h"
1.首先,C 脚本要使用一定的格式,如下:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma option(mbcs)
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
{
#pragma option(mbcs)
// WINCC:TAGNAME_SECTION_START
// syntax: #define TagNameInAction "DMTagName"
// next TagID : 1
// WINCC:TAGNAME_SECTION_END
// WINCC:PICNAME_SECTION_START
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
}
2.将变量定义写在注释语句// WINCC:TAGNAME_SECTION_START 和 // WINCC:TAGNAME_SECTION_END 之间,格式如下:
// syntax: #define PicNameInAction "PictureName"
// next PicID : 1
// WINCC:PICNAME_SECTION_END
}
2.将变量定义写在注释语句// WINCC:TAGNAME_SECTION_START 和 // WINCC:TAGNAME_SECTION_END 之间,格式如下:
#define Tag_1 "M100_0"
3.脚本内的语句直接使用 Tag_1 来代替变量 M100_0。
4.复制这个对象,粘贴若干个。
5.右键点击对象,选择 Linking -> Tag Connections -> Find and Replace选项卡,填入你要替换的原变量名和新变量名,选中筛选出来的结果(如果要全部替换点击 Select all),点击 Preview 预览替换结果,确认无误点击 Replace,再点击 OK 保存。
3.脚本内的语句直接使用 Tag_1 来代替变量 M100_0。
4.复制这个对象,粘贴若干个。
5.右键点击对象,选择 Linking -> Tag Connections -> Find and Replace选项卡,填入你要替换的原变量名和新变量名,选中筛选出来的结果(如果要全部替换点击 Select all),点击 Preview 预览替换结果,确认无误点击 Replace,再点击 OK 保存。
相对路径调用.chm文件的C脚本大家参考:
(只要把做好的编译好的.chm文件放在项目的文件夹下,就不用管项目的路径如何变化,都不用去更改.chm的路径了)
如果是wincc v6.0sp3的话用VBS来调用估计更方面。
下面的部分调试用的代码完全可以省略。
#i nclude "apdefap.h"
void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyN
ame, UINT nFlags, int x, int y)
{
char szProjectFile[_MAX_PATH+1];
DM_DIRECTORY_INFO dmDirInfo;
CMN_ERROR Error;
char * psz=NULL;
char dir[255];
if(DMGetRuntimeProject(szProjectFile,_MAX_PATH+1,&Error)==FALSE)
{
printf("\r\nError in DMGetRuntimeProject()\r\n\t%s\r\n",Error.szErrorText);
return;
}
if(DMGetProjectDirectory("",szProjectFile,&dmDirInfo,&Error)==FALSE)
{
printf("\r\nError in DMGetProjectDirectory()\r\n\t%s\r\n",Error.szErrorText);
{
char szProjectFile[_MAX_PATH+1];
DM_DIRECTORY_INFO dmDirInfo;
CMN_ERROR Error;
char * psz=NULL;
char dir[255];
if(DMGetRuntimeProject(szProjectFile,_MAX_PATH+1,&Error)==FALSE)
{
printf("\r\nError in DMGetRuntimeProject()\r\n\t%s\r\n",Error.szErrorText);
return;
}
if(DMGetProjectDirectory("",szProjectFile,&dmDirInfo,&Error)==FALSE)
{
printf("\r\nError in DMGetProjectDirectory()\r\n\t%s\r\n",Error.szErrorText);
return;
}
printf("\r\nInstallationDirectory:\r\n%s\r\n",dmDirInfo.szProjectDir);
strcat(dmDirInfo.szProjectDir,"help.chm");
sprintf(dir,"%s",dmDirInfo.szProjectDir);
printf("\r\ndmDirInfo.szProjectDir=%s\r\n",dmDirInfo.szProjectDir);
printf("\r\ndir=%s\r\n",dir);
sprintf(dir,"C:\\windows\\hh.exe %s",dmDirInfo.szProjectDir);
printf("\r\ndir=%s\r\n",dir);
ProgramExecute(dir);
}
printf("\r\nInstallationDirectory:\r\n%s\r\n",dmDirInfo.szProjectDir);
strcat(dmDirInfo.szProjectDir,"help.chm");
sprintf(dir,"%s",dmDirInfo.szProjectDir);
printf("\r\ndmDirInfo.szProjectDir=%s\r\n",dmDirInfo.szProjectDir);
printf("\r\ndir=%s\r\n",dir);
sprintf(dir,"C:\\windows\\hh.exe %s",dmDirInfo.szProjectDir);
printf("\r\ndir=%s\r\n",dir);
ProgramExecute(dir);
为什么有时候字符“i”和“u”会与标签值一起显示?
描述:
在被测值后面会显示代表“interpolated”和“invalid”(uvb所有代码代表德语单词“ungültig”,意思是“无效”)的“i”,“u.”或“i.u.”。“interpolated”意味着显示的值处于两个归档的被测值之间。“invalid”的意
在被测值后面会显示代表“interpolated”和“invalid”(uvb所有代码代表德语单词“ungültig”,意思是“无效”)的“i”,“u.”或“i.u.”。“interpolated”意味着显示的值处于两个归档的被测值之间。“invalid”的意
思是,只有变量的初始值是可见的,或者没有 连接。
在WinCC在线帮助的“ WinCC Information System > Working with WinCC > Archiving Process Values > Output of Process Values > Process Value Output in Process Screens > Process Value Output in Trend Curve
在WinCC在线帮助的“ WinCC Information System > Working with WinCC > Archiving Process Values > Output of Process Values > Process Value Output in Process Screens > Process Value Output in Trend Curve
时间显示在文本框
#include "apdefap.h"
char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code("kernel32.dll")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime);
#pragma code()
SYSTEMTIME sysTime;
char szTime[20]="";
GetLocalTime(&sysTime);
sprintf(szTime,"%04d-%02d-%02d",sysTime.wYear,sysTime.wMonth,sysTime.wDay);
return szTime;
}
将WINCC数据写进EXCEL单元格
Sub OnObjectChanged(Byval Item)
Dim objExcelApp,oWorkBook
Set objExcelApp=CreateObject("Excel.Application.9")
objExcelApp.Visible=False
Set oWorkBook=objExcelApp.Workbooks.Open("d:\数据\出仓数据库\汇总问题0402.xls")
Dim iBlankLine
iBlankLine=oWorkBook.ActiveSheet.Columns(1).Find("").Row
objExcelApp.Cells(iBlankLine,1).Value=HMIRuntime.Tags("text_1").Read
objExcelApp.Cells(iBlankLine,2).Value=HMIRuntime.Tags("text_4").Read
objExcelApp.Cells(iBlankLine,3).Value=HMIRuntime.Tags("text_5").Read
objExcelApp.Cells(iBlankLine,4).Value=HMIRuntime.Tags("text_6").Read
objExcelApp.Cells(iBlankLine,5).Value=HMIRuntime.Tags("text_7").Read
objExcelApp.Cells(iBlankLine,6).Value=HMIRuntime.Tags("text_8").Read
oWorkBook.Save
objExcelApp.Workbooks.Close
objExcelApp.Quit
Set objExcelApp=Nothing
End Sub
登陆WINCC系统
#pragma code ("UseAdmin.DLL")
#include "pwrt_api.h"
#pragma code ()
char szUserName[255];
char szPassword[255];
strcpy(szUserName,GetInputValueChar(lpszPictureName,"@LoginIn"));
strcpy(szPassword,GetInputValueChar(lpszPictureName,"@PasswordIn"));
if (PWRTSilentLogin(szUserName,szPassword) == FALSE)
{
MessageBox(NULL,"用户名或者密码错误","注意",MB_OK|MB_ICONSTOP|MB_SETFOREGROUND|MB_SYSTEMMODAL);
}
else SetTagBit("showquit",0);
}
退出WINCC系统
#pragma code("USEADMIN.DLL");
#include "PWRT_API.H";
#pragma code( )
PWRTLogout( );
用户名的更改处
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
密码的更改处
SetOutputValueChar(lpszPictureName,lpszObjectName,GetInputValueChar(lpszPictureName,lpszObjectName));
*以当天日期为名保存EXCEL*
Dim XlsName
Dim objExcelApp,oWorkBook
Set objExcelApp=CreateObject("Excel.Application.11")
objExcelApp.Visible=False
Set oWorkBook=objExcelApp.Workbooks.Open("d:\book1.xls")
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论