wincc5.0怎么看硬盘有没有坏有没有授权成功

You are here:
已解决问题
已解决问题数:86014
待解决问题数:158
快到期问题
热点活动:
无满意答案关闭:
WINCC 6.0无法激活项目移植器移植的项目
使用WINCC6.0项目移植器对WINCC5.0的项目文件进行移植,移植成功,但是激活时一直不能完成。这是为什么?需要先升级到WINCC5.1吗?怎样升级
问题补充:激活到50%多的时候死机,退出再启动仍不行。别的画面也出现这种情况
产品版区:提问时间: 09:20:09&&&提问者: -
问题ID: 68994
如果是早于V5.0&SP2的WinCC版本,则项目必须首先移植到WinCC&V5.0&SP2或WinCC&V5.1状态,然后才可以移植到WINCC&6.0。检查WINCC&6.0与操作系统的兼容性,旧项目确保使用项目复制器备份而不是直接拷贝。另外,可以参考“水草”的建议。
置评专家:西门子人机界面产品支持& 10:39:16
作者/最新回复
最后回复时间
需要先升级到WINCC5.1,装WINCC5.1运行下项目即可
回答者:- &
激活时一直不能完成,是什么现象,有什么提示,可以说明白点吗,应该是没问题的,我以前移植过项目
回答者:- &
使用Wincc6的项目移植功能开始菜单-》SIMATIC-&WINCC-&TOOLS-&Project Migrator前提条件:1 您的Wincc项目建立版本不能低于Wincc5.0 Sp2,否则请手动升级为Wincc5.0Sp2后再使用项目移植功能。2 执行项目移植的系统上应安装有Sysbase数据库,如果您没有,请安装,安装方法:选择Wincc6安装盘内的Sysbase目录下执行Setup,然后根据屏幕提示操作,安装过程中需要Wincc5.1的安装盘。如果您没有安装盘,您可以自行寻找Powerbuilder这个软件,安装该软件上的Sysbase数据库也是相同的效果。以上几个问题请注意。因为WInCC6.0的数据库是SQL Server2000;而WinCC5.0的数据库是Sybase。升级过程中一定要注意数据库的升级。不能单纯升级程序。另外,请参考
回答者:- &
必须是WINCC5.0&SP2以后的才可用WINCC&6.0的进行移植;若是WINCC5.0&SP2以后的仍出现问题,可能是移植过程中出错,首先必须用项目复制器进行项目复制,才能进行移植
回答者:- &
版本不匹配!使用Wincc6.0的项目复制器只能复制WINCC5.0&SP2以后版本的项目。升级的过程,你可以参看Wincc随机手册里面详细说明,因为每个版本升级移植的步骤都不尽相同!
回答者:- &
不会是把这个项目放在了以中文命名的文件夹里了吧?那是不可以的。
回答者:- &
先在6.0系统下新建个项目(项目名字和项目所在的路径不能包含中文字符),然后启动报警和变量纪录,看新项目是否能正常运行,能正常运行,证明您的系统没有问题;然后检查一下您移植项目名字和项目所在的路径是否包含中文字符,如果有,更改一下,确保没有中文字符再试一下
回答者:- &
20秒帮我们优化支持中心!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
欢迎您来到找答案
在“找答案”,已有超过7万个被解决的技术问题供您参考!
西门子技术专家亲自把关!常规的,简单的问题,在这里您都可以找到答案!
遇到了问题,就来“找答案”提问。
点击搜索框右侧的提问按钮,只需2步就能成功提交问题!分分钟就有无数大侠前来帮你。
在“找答案”每天都有大量的新问题。
别犹豫,只需要点击问题下方的“我要回答”就能参与。答题不光有积分相送,也会给您积攒大侠人气。
“找答案”定期开展各种有奖活动期待您的参与。
更有机会参加西门子高端用户峰会。领略西门子的博大精深!huxiumei0124
文章数:24
年度积分:50
历史总积分:449
注册时间:
请教高手,用WINCC5.0开发的程序出现进入运行主画面后,无法打开下一级组态画面,提示“不许可”,是何原因,以前运行正常,现在只能直接运行单个画面,帮忙分析分析!谢了!
wangyu872256
文章数:14
年度积分:50
历史总积分:440
注册时间:
与下一级组态画面的链接是怎样实现的?是写的C脚本吗?试试把WINCC里的后缀名为.DB的文件更新。
huxiumei0124
文章数:24
年度积分:50
历史总积分:449
注册时间:
对于WINCC的组态我仅知道皮毛,问个你也许觉的可笑的问题,.DB文件如何更新,有“一”、“二”两套程序,分别控制两套同样的设备,“一”运行正常,是否可以用“一”中的.DB文件替换“二”中的文件,我试了一下,用“一”中的server.db文件覆盖“二”中的server.db文件,”二“的画面就可以链接了,但实时数据无显示。“二”的备份文件也出现同样的毛病,还有什么办法吗???
文章数:7152
年度积分:1515
历史总积分:15789
注册时间:
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
DB文件通过从安装目录下复制Wincc。DB文件到你项目目录,然后将这个文件改名为 & & & & & 项目名RT.DB ,从而覆盖你原来的DB文件,其结果就是历史归档等数据丢失,一般主要在DB文件过大,一般达到3G左右,才进行这样的操作。
从1号机复制过来的DB文件不能运用在2号机上。
由于你的问题没有很好的描述清楚,由于你以前能正常运行,你应该检查你的组态是否被更改过。
MSN:
此帐号男女混用,男的狂妄自大,女的谦虚好学……
衡量技术水平的唯一标准——你挣了多少
技术能力不是决定挣钱多少的关键因素,关键因素是做人的能力,这也就解决了为什么技
术水平很高却挣不多的原因。
如果整天想着别人“喂”你,这样的人都懒的理……
huxiumei0124
文章数:24
年度积分:50
历史总积分:449
注册时间:
最初就是因为DB文件过大,硬盘空间不够,程序运行不起来,我就用备份中的DB文件进行了覆盖,但覆盖后程序依然无法运行,后来直接运行备份程序,就出现了上述问题,组态应该没有改过,如果是组态有问题了,我应该从哪些方面着手恢复。或者有高手,我可以直接将程序发给你,帮忙看看。厂家已无法联系,事情很棘手。先谢谢了。
文章数:2149
年度积分:107
历史总积分:5318
注册时间:
压缩发给我啦,,另外劝你不要用siemens的软件啦
我就是道路,我就是真理!
为人民服务:赚钱然后奴役她们就会爽.
huxiumei0124
文章数:24
年度积分:50
历史总积分:449
注册时间:
PQSH我已将程序发到你的邮箱里了,注意查收,并希望尽快得到你的答复,谢谢了!
文章数:2149
年度积分:107
历史总积分:5318
注册时间:
我看了.你的按钮授权被改成了"error".暂没时间找出怎么产生的,如何一次性解决全部按钮,但有解决办法:右键点"按钮"--选"属性"--选"其它"--改"授权"--"没有访问保护"--ok啦!
我就是道路,我就是真理!
为人民服务:赚钱然后奴役她们就会爽.
huxiumei0124
文章数:24
年度积分:50
历史总积分:449
注册时间:
PQSH,能否将程序改过后,发到我的邮箱里,我试了一下,实在找不到头绪。“按钮”属性中没有“其他”项呀,难道不是从图形编辑器中修改吗?迷茫......
huxiumei0124
文章数:24
年度积分:50
历史总积分:449
注册时间:
问题已经解决,在此郑重向PGSH表示感谢,谢谢无私援助,祝好人一生平安!!!
工控学堂推荐视频:WINCC的n个经典问题解答
&& WINCC的n个经典问题解答
WINCC的n个经典问题解答
1、问: 如何触发计算机扬声器的声音?   答: 编写如下C-Action:  #pragma code(&kernel32.dll&);  BOOL Beep(DWORD dwFreq,DWORD dwDuration);  #pragma code();  Beep(500,500);     2、问: 如何通过C脚本来确定报警信息?   答: 首先必须在画面中插入报警控件,可以用如下两种方式来确认信息:  (1)、确认单条信息  4版本和高于此版本的WinCC  BOOL OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)   5版本和高于此版本的WinCC  BOOL AXC_OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)  (2)、确认报警窗口所有可见的报警  4版本和低于此版本的WinCC  BOOL OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)   5版本和高于此版本的WinCC  BOOL AXC_OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)       3、问: 如何在WinCC中读取系统时间?   答: 通过如下C-Action:  #pragma code(&kernel32.dll&);  Void GetLocalTimes(SYSTEMTIME*lpst);  #pragma code();  SYSTEMTIME  GetLocalTime(&time);  SetTagWord(&Varname&,time.wYear);  SetTagWord(&Varname&,time.wMonth);  SetTagWord(&Varname&,time.wDayOfWeek);  SetTagWord(&Varname&,time.wDay);  SetTagWord(&Varname&,time.wHour);  SetTagWord(&Varname&,time.wMinute);  SetTagWord(&Varname&,time.wSecond);  SetTagWord(&Varname&,time.wMilliseconds);     4、问: 如何经Windows对话框设置日期时间?   答: 通过调用Windows对话框实现。具体如下:  #include&apdefap.h&  void onClick(char*lpszPictureName,char*lpszObjectName,  char*lpszPropertyName)  {ProgramExcute(&c:\\win98\\control.exe timedate.cpl&);}  其中执行的程序路径,需根据具体情况填写。      5、问: 如何在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:\\siemens\\common\\SQLANY\\ISQL-q-b-c  UID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;  DBN=CC_testsql_99-12-03-12:48:26R;READ  E:testsql\\test.sql&;  Printf(&%s\r\n&,a);  ProgramExcute(a);  }  下面是一个简单的SQL文件内容:  select *from pde#hd#t#  output to e:\\test2.txt FORMAT ascii  注意:文件名及路径中不要带空格。  &  6、问: 如何整点启动归档?   答: 在&Globle Script&下的Project function编写程序函数:cyclicarchive  BOOL cyclicarchive()  {  #pragma code(&kernel.dll&);  void GetLocalTime(SYSTEMTIME*lpsz);  #pragma code();  SYSTEMTIME  Int t1;  GetLocalTime(&time);  T1=time.wM  If(t1==00)  {  SetTagBit(&startarchive&,1);  Return(BOOL) (GetTagBit(&startarchive&));  }  }  在Tagloging中的&Properties of process tag&中的&archive tag&Tab下的Archive type选择Cycle-selective,在&Event&标签下的&StartEvent&内选择cyclicarchive函数。       7、问: How can I set and reset a WinCC variable by mouse click with C script?   答: The following function shows how you can alternately set and reset a WinCC variable by mouse click.  #include &apdefap.h&  void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)  {  BOOL  z=GetTagBit(&MyBitVariable&);  if (z==0)   SetTagBit(&MyBitVariable&,1);   else  SetTagBit(&MyBitVariable&,0);   }        8、问: How can I program a waiting function (Sleep) in WinCC?   答: The following sample program shows how the &Sleep& is used.   #pragma code(&Kernel32.dll&)  void Sleep(int milliseconds);  #pragma code()   Sleep(1000); //time specification in milliseconds   Warning:  If you use Sleep(), processing the C script is interrupted for the time indicated. Requests for the interrupted function cannot be processed during this time.           9、问: How can I output a SIMATIC timer minutes and seconds in WinCC?   答: If you want to output a SIMATIC Timer in minutes and seconds in WinCC, then in WinCC please use a static text in the Graphics Designer to which you interface the following action:   char* _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)  {  char *p;  DWORD  int min,   p=SysMalloc(10);  hilf=GetTagDWord(&Time&);  min=hilf/60000;  sec=hilf%;   sprintf(p,&%d min %d sec&,min,sec);    }   The &Time& variable linked to the I/O field must have the following properties:   &Data type &32-bit value without sign&   &Format adaptation &DwordToSimaticBCDTimer&   &Address: data area &Times& and addressing &Word&
  10:快捷地切换画面  通常要将所有的设备都显示在一张画面里是不可能的,所以将设备按照处理工艺的功能步骤分级在多张画面内,以一个污水处理厂为例分为电泳线、前处理线、生化线、加药线等,之间的切换使用按钮的鼠标动作来实现。这对于用WinCC现成的鼠标动作来实现是很简单的,但是不是要在每张图上都使用相同数量且位置排列顺序一致的按钮呢?(出于对操作的一致性考虑,不能让操作人员在不同的图上,不同的位置找想要操作的按钮)这个问题的解决我们使用WinCC的脚本编程,在按钮动作中调用它的内部函数来实现。首先,组态一幅背景画面,其中包括要显示的静态文本、OLE(例如,时钟)、所有的图形切换按钮及推出关机按钮。第二,在背景画面中插入智能对象(Smart&Object)中的画面窗口(Picture&&Window),并且使其的尺寸与其分级画面相同。第三,在相应的切换按钮的属性-&事件-&鼠标动作中编写如下C语言脚本代码:&&&&&&  #include\&apdefap.h\&&&&&&&  void&onClick(char&*lpsz&PictureName,&&&&&&  char&*lpsz&ObjectName,char&*lpsz&PropertyName)&&&&&&  {&&&&&&  SetPictureName(\&背景画面\&,&\&画面窗口\&,&\&电泳处理线\&);&&&&&&  }&//\&背景画面\&即为始终显示地静态背景的属性名,\&画面窗口\&即为在背景画//面中插入地画面窗口(Picture&&&&&&&Window)属性名,\&电泳处理  线\&即为分级画面//的名称  这样就能方便快捷地切换画面。  11:必须始终显示的报警记录,用画面颜色闪烁来提示操作者有故障发生,可以用同样的C语言脚本(当然不是加在鼠标动作中)在背景画面的底部留下一条类似Windows状态栏的报警栏,当出现故障报警的时候在报警栏显示最近一条报警记录,操作人员可以利用按钮切换到主报警记录画面了解故障的完全信息。  12:单个部件的组态  WinCC在其内部的图库里集成很多的图形对象,如水箱、电机、阀门等等,对于污水处理用的最多的是水池,搅拌机等等。为了使组态画面贴近实际,能够更好的反应现场工况,图库里的元素并不能满足要求。我们可以利用WinCC的画图工具自己绘制适应实际的图形元素,并且使用C脚本使其产生动画效果。  对于调节池,反应池等可以用矩形来表示,以图形的填充高度来示意其液位的高度。这里要注意的是一些数值地转化,由于一些仪表例如E+H的超声波液位计,是以4~20毫安的电流信号进入PLC,对于表的参数设定好以后4毫安就对应相应池子的液位最低点,而20毫安对应于池子的液位最高点。所以在显示数字高度的时候要将PLC相对4、20毫安的数值转化为实际池子的高度范围例如,0.5~5.5米。但是对于图形填充的时候是按照百分数来表示的所以还要将PLC数值转化为0~100%的度量范围。  搅拌机的组态可以使用C脚本使其产生动画,在其运行时产生视觉上的旋转。实际上搅拌机的图形是用两个部分椭圆组成的,在椭圆的属性-&几何-&半径中加入代码如下:&&&&&&  #include&\&apdefap.h\&&&&&&&  long&_main(char*&lpszPictureName,&char*&lpszObjectName,&char*&&&&&&&lpszPropertyName)&&&&&&  {&&&&&&  static&int&x=25,y,z;//x为半径的初始值为25,y为切换变量,z为搅拌机运行状态变量&&&&&&  z=GetTagBit(\&202搅拌机运行\&);&//取得PLC搅拌机的运行状态&&&&&&  if(z!=0)&&&&&&  {&&&&&&  switch(y)&&&&&&  {&&&&&&  case&0:&&&&&&  x=x-4;&&&&&&  if(x&=0)&&&&&&  y=1;&&&&&&  &&&&&&  default&:&&&&&&  x=x+4;&&&&&&  if(x&=25)&&&&&&  y=0;&&&&&&  &&&&&&  }&&&&&&  }&&&&&&  return&x;&&&&&&  }  13:语音报警的组态  在工业现场安全是极其重要的,无论从那个角度讲我们应该利用一切手段减少故障的发生。在故障已经发生的时候,应该在第一时间以多种方式通知操作人员有故障发生。现代微处理计算机的处理速度可以完全胜任对于图形,语音地同时处理。所以我们可以利用计算机的声卡和音箱在有故障发生的时候产生语言报警,但是问题是WinCC本身并不能产生语音的功能,而且其内部的上千个函数也没有提供处理声音的函数。解决这个问题的方法归功于微软开发的WinCC与操作系统地完美结合,因为在WinCC中可以直接调用Windows的API函数。实现的具体C脚本代码如下:&&&&&&  long&_main(char*&lpszPictureName,&char*&lpszObjectName,&char*&&&&&&&lpszPropertyName)&&&&&&  {&&&&&&  #pragma&code(\&Winmm.dll\&)&&&&&&  void&WINAPI&PlaySoundA(char&*pszSound,char&*hmode,DWORD&dwflay);&&&&&&  #pragma&code()&&&&&&  if(GetTagBit(\&112排泥备泵故障\&))&&&&&&  PlaySoundA(\&d:\\\\\\\\winnt\\\\\\\\media\\\\\\\\Mircosoft&sound.wav\&,NULL,8);&&&&&&  return&1020;&&&&&&&  }  有一个值得主意的问题是此段代码的加入点,通过反复多次的实践得出结论,即这个点必须加在始终显示于屏幕上的任何图形元素的属性中,这样才能达到语言报警的预期效果。&
  14:当为WinCC指定PC名时应注意什么?  解答:  计算机名不能包含特殊字符如空格、退格和下划线,并前13个字符必须是唯一的。由于操作系统的原因,名字的长度不能超过15个字符。因此推荐只使用a&to&z,&A&to&Z,&0&to&9这些字符。必须以子母开头。  从SIMATIC&WinCC&V6.0起,有如下限制:计算机名可包含下划线。然而,当使用DNS主机名时,不能使用下划线。  15:和plc用S7通讯为什么产生连接错误代码:D801?&  解答:  这个错误代码表示WinCC变量地址错误,检查每个变量的地址和通讯连接是否正确,如果变量的地址不属于控制器的地址范围,则会报这个错误代码。&  16:和plc用S7通讯怎样清除错误代码8304?&  解答:  WinCC运行时的画面不再更新,WinCC的日志文件中有错误代码8304,这个错误码表明WinCC和S7连接出现问题。&  解决方法:  停止AS站的循环读服务,在&WinCC&Explorer&&&变量管理&&&SIMATIC&S7&PROTOCOL&SUITE&中。右键单击出现问题的S7连接,选择&系统参数&,清除复选框&周期管理&通过PLC&的选择。  17:在动态值域对话框中怎样才能按逻辑连接两个因变量到一个结果?&  解答:由于在WinCC动态值域对话框中的布尔数学体系运算符,您可以根据C脚本惯例运用这些符号。下面是符号及其意思的概括:&与&位比较&&&与&表达式比较&&&&或&位比较&|&或&表达式比较&||&非&&&!&通过Object&&&Properties&&&Dynamic进入WinCC动态值域对话框&,&&&&并右击&Dynamic&Value&Ranges&dialog&&按照需要输入表达式即可。  18:WinCC图形编辑器中是否存在通过鼠标点击达到增加/减少变量值的对象?&  解答:&  可以使用OCX&SpinButton&实现这个功能。下面描述了如何合并和联系这个对象。&  在WinCC图形编辑器中,插入一个&Control&类型的小对象。在打开的窗口中选择进入Microsoft&Forms&2.0&SpinButton并以OK来确认。  右击打开对象&SpinButton&的属性。在控制属性中使用您想要的变量来连接&Value&属性。但要注意:  使用第三方的ActiveX控件会导致错误(例如内存丢失,性能降低,系统阻塞)。&&软件应用者应该对由于使用第三方ActiveX控件而造成的任何问题负责。  ActiveX控件事件连接C脚本  如果连接C脚本到ActiveX控件事件,那么应该确认这个事件名至少5个字符长。如果这个事件名少于5个字符长,那么C脚本不被执行。  19:重新启动后,不使用登录窗口如何以一个缺省用户的身份自动登录?怎样确保运行期间有个缺省用户始终处于登入状态?即使另外一个用户已经预先退出。&  解答:  重新启动以及在运行期间,您希望HMI系统达到最小的实用性而不使用登录窗口。然而,对于高级操作,登录功能应当保留。此外,如果没有用户&登录,则有一个缺省的用户自动登录。缺省用户的权限可以在用户管理器中根据需要设定。&  可使用下面的C脚本执行此项功能,请按照下列步骤进行:&将附件中的函数&Silentlogin.pas&复制到项目中的&PAS&子文件夹中。&&在项目中选择Global&Script&&&C&Editor&&&Actions&&&Global&Actions并打开全局动作(Global&Action)&Silentlogin.pas&。&在&PWRTSilentLogin&(&Login&,&Password&);&一行中,用缺省的用户名替换用户&Login&,用&缺省用户的口令代替&Password&。&编译和保存C脚本。&&用变量@CurrentUser设置一个变量触发器,周期选择为&&2&s&。这确保了系统不会因脚本而负荷过重。在所述的例子中,变量&@CurrentUser(包含当前登录的用户)每隔&2&秒钟被询问一次察看有无变化。只有当用户变化时才调用脚本,例如当前用户退出时。&确保已经在计算机的属性&Startup&选项卡上激活了&Global&Script&Runtime&。  除此之外,SIMATIC&PCS&7(SIMATIC&PCS&7&V6.0&SP1及更高版本)用户还需执行下列步骤:&将系统画面@Welcome.pdl复制到一个安全的位置,以便可以恢复原始画面。&使用Graphics&Designer打开画面@Welcome.pdl。&打开保存在选定画面中的C脚本,(右击)&&Event&&&Picture&Object&&&Miscellaneous&&&Open&Picture)。&注释掉&PASSLoginDialog(Screen);&一行,以&//&作为注释的前缀。&编译C脚本。&保存系统画面@Welcome.pdl。
  20:如何进行WinCC&和&S7之间的时间同步?&  回答:下面的方法只能进行时间设置而不能完成时间同步的功能。因为必须考虑到延迟,比如报文的处理时间,C&脚本的运行时间等,因此这个方法在精度方面不如真正的时间同步精确。&&&&1.创建一个数据块&,其中有一个&&DATE_AND_TIME&&类型的变量和一个布尔变量。当元素&Flag&&在WinCC中被置1,程序就调用系统函数SFC0&&&SET_CLK&。D&B1中的触发变量&Flag&&(&DB1.DBX&8.0)在WinCC脚本中被SetTagBitWait(&DB1_FLAG&,TRUE)&置1。&因此仅当此C脚本在WinCC中被调用时,时间才被设置。SFC0&必须先添加到Step7程序的块文件夹中。&在此段程序中,DB块中的各个时间变量被写到作为&SFC0参数的&DATE_AND_TIME&类型的本地变量&DateAndTime&中。&用&&SET_CLK&&设置完时钟后,触&发变量&Flag&被复位。&注意:&在此段程序中,本地变量&DateAndTime&存储在以0为起始地址的本地数据堆栈中。如果不得已要把这个变量分配到别的地址,同&时对传送指令参数化时,必须要考虑到地址分配的问题。&&&2.为&年&新建一个&&Unsigned&8-bit&value&类型的变量,对其进行格式变换&ByteToBCDByte,然后为其在DB块中选择相应的字节地址:&&在WinCC&中创建剩下的变量。&选择&Unsigned&16-bit&value&&类型然后改变格式为&WordToBCDByte&,然后在DB块中选择实际的字节地址。&&&3.最后,在WinCC中创建一个C脚本来读取系统时间并进行拆分,然后把它们写到DB1中。&S7&PLC中的时钟设置是被脚本中的&DBI_FLAG&变量触发的。
21:WINCC--如何在程序中动态修改用户密码    1、点击&开始&--》&设置&--》&控制面板&--》&管理工具&--》&数据源(ODBC)&,打开ODBC数据源管理器    2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为&CC_项目名_项目建立日期时间&,记下该项的名称    3、在脚本中加入以下代码:    #pragma code(&UseGen.dll&)    #include &USEGENAP.H&    #pragma code()    LPCMN_ERROR //定义的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位字符集    {    //密码修改成功后的操作,如给用户提示等     }    }    PWGENDisconnect(err); //断开与数据库的联接    4、编译运行程序    5、工作完成    6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。  22:WinCC6.0 中归档时和5.1版本为什么不同了?   WinCC V6.0 的后台数据库采用了MS SQL Server 2000,所以归档方式与V5.1 有所不同,它的运行数据存放在数据片段(segment)当中,工程师可以根据尺寸需求组态最大容量或根据时间周期启动新的数据库归档片段。将归档数据连续的写入数据库,单个数据片段的尺寸到达或者时间界限到达时,系统会自动开启另一个数据片段进行归档。当数据片段的总体尺寸达到最大时,最早的数据片段就会被覆盖,重新开始新的归档。    23:WinCC6.0 中如何设定归档周期?   WinCC V6.0 版本中的快慢速归档的归档周期界限可以由用户自行设  定,该参数在快速归档属性的第三个标签项中设置。    24:如何计算慢速归档数据库的尺寸?   慢速归档时一条变量归档记录占用32 字节的空间,每个变量以2 分钟为归档周期,一周之内会产生5040 条记录,若有5000 个变量的归档,则单个数据片段的大小计算为:  32&= byte ==& 约等于800MB  考虑到留出20%的余量,设定单个数据片段为1G  所有数据归档期限是两个月,因此所有段的尺寸为单个片段尺寸乘以单个片段的个数,  即:1GB&9=9GB    25:如何计算快速速归档数据库的尺寸?   快速归档时一条变量归档记录占用3 字节的空间,每个变量以2 秒钟为归档周期,一周之内会产生302400 条记录,若有50 个变量的归档,则单个数据片段的大小计算为:  3&50&360000 byte ==& 约等于46MB  考虑到留出20%的余量,设定单个数据片段为60MB  所有数据归档期限是两个月,因此所有段的尺寸为单个片段尺寸乘以单个片段的个数,即:60MB&9=540MB    26:所有的归档变量都可以计算出它占用的数据库大小吗?   只有周期连续归档的数据才能定量的计算其占用的数据库尺寸,因此当您对应设定的时间期限计算并设置数据库尺寸大小时,需要考虑其他数据归档类型的数据,留出相应的余量。    27:WinCC V5.1 中文版的安装要求是什么?   1)WinCC V5.1 亚洲版只有V5.1 这一个版本,不再有后继版本,WinCC V5.1 亚洲版应安装在Windows 2000 SP2 操作系统上   2) WinCC 的语言版本应和操作系统的语言版本相对应,不建议将中文WinCC 装在英文操作系统上    28:有没有快捷的方法如何将WinCC的实时数据通过OPC DA记录到MS Access、MS SQL Server和Oracle数据库中?   可以使用WinCC Industrial Data Bridge将WinCC的实时数据通过OPC DA记录到MS Access、MS SQL Server和Oracle数据库中,但是需要授权,分为以128、 512、2K和10K    29:WinCC 能提供的最高变量刷新速度是多少?   对于一般的网络通讯方式来说,WinCC 能提供的最高刷新速度是250 毫秒,但WinCC 采用RawData 归档数据链接的方式可以实现对S7-400PLC 的高速数据采集。    30:如何实现WinCC 高速数据采集?   WinCC 采用RawData 归档数据链接的方式可以实现对S7-400PLC 的高速数据采集。原理是PLC 将每个循环周期所采集的过程值(或PLC 以其他方式得到的数据或数据包)以一定的顺序存放在具有一定的格式的DB 块中,当到达一定的数量后,PLC 可以调用系统功能块 SFB37(AR_Send)将这个DB 块主动地发送给WinCC, 然后WinCC 会在后台自动调用标准化DLL 来拆解数据,并将其按时间顺序保存在数据库中。在WinCC 的过程画面中,可以使用在线趋势控件或在线表格控件来查看所采集的数据。   由于是批量传送,可以有效地提高通讯效率,使高速数据采集成为可能,而这时所谓的采集频率就取决于你对保存在DB 块中的各过程值间的时间间隔的定义。可以定义的最小的时间间隔是1 毫秒。但如果是PLC 每个循环周期采样一次,那么定义的时间间隔应大于PLC 循环周期。DB 块的最大尺寸是16KB。   技巧:可以考虑使用多DB 块进行缓冲并添加程序控制DB块的写入和发送顺序,能够实现连续的采集,但要充分考虑CPU 的负载和循环周期。  31:WinCC 高速数据采集的前提条件是什么?   1) WinCC 的版本为 V5.1 或更高   2) S7-400 系列CPU   3) WinCC 站与S7 400 站建立S7 连接(包括MPI,ProfiBus,TCP/IP,工业以太网都可以实现)    32:为什么我无法从WinCC里调用STEP 7 变量?   从WinCC里调用STEP 7 变量的前提条件是,WinCC的项目文件必须是集成在STEP 7项目中的。   在安装所有Simatic 软件前,请查阅软件的安装注意事项,确定操作系统与软件的兼容性。该文档一般位于:CD\Documents\&语言版本&\InstallNotes.chm。   要使用WinCC与STEP 7的集成功能,WinCC和STEP 7必须安装在同一台计算机上,必须在安装WinCC之前安装STEP 7。STEP 7 与WinCC的版本必须一致。    33:如何把现成的WinCC项目集成到STEP 7 项目中?   如果你在一台计算机上已经安装了兼容的WinCC和STEP 7,并且有了一个单独使用的WinCC项目,想把它集成到一个已有的STEP 7项目中去。那么,你必须先添加与集成相关的WinCC组件。把WinCC光盘放入光驱,并启动WinCC的安装程序。添加与集成相关的WinCC组件。  按如下步骤把已有WinCC项目文件插入STEP 7项目文件  1.在STEP 7项目文件中插入一个OS站,然后把它改名为已有的WinCC项目名称。  2.在STEP 7项目里删除因仅插入OS站而产生的WinCC项目文件,其位置在STEP 7 项目文件夹里的wincproj文件夹下,例如:d:\siemens\STEP7\S7proj\STEP7_Integration\wincproj\'Name of the OS'   3.最后在项目复制器里用&Save as&把已有的WinCC项目文件存储到STEP 7项目路径下。项目复制器位于开始菜单项&Start & SIMATIC & WinCC & Tools&。  注意:对于集成STEP 7项目里的WinCC项目,你也可以使用压缩工具(Packer)来归档WinCC项目。
  34:wincc怎样和s7plc-sim连接?&&&&要访问PLCSIM模拟软件,必须按如下方法操作,按照以下的顺序来安装程序:&&&&&&&&&&&&&STEP&7&V&5.x&&&&&&&&&&&&&PLCSIM&V4.x以上&&&&&&&&&&&&WinCC&V5.x&&&&&&&&&&&&&选择用户自定义安装。&对于SIMATIC&WinCC&V5&&&&&&&&&&&&&SP1及以下版本的用户,在&通讯&组件下,必须选择&S7Dos&和&对象管理器&组件。&&&&&&&&&&&&对于SIMATIC&WinCC&V5&&&&&&&&&&&&&SP2及更高版本的用户,&S7Dos&是自动安装的。就是说不再需要在&用户自定义安装&下选择该选项。在PG/PC界面上做如下设置:在控制面板中双击&设置PG/PC界面&。在&应用程序的访问点&域中,选择&MPI&&&&&&&&&&&&&(WinCC)&。在&使用的界面参数&域中选择&&无&&。启动应用程序STEP&7:&&&&&&&&&&&&&启动SIMATIC管理器&&&&&&&&&&&&&启动PLCSIM&&&&&&&&&&&&&打开要模拟的项目或组态一个项目。&&&&&&&&&&&&&在项目中添加一个OS。&&&&&&&&&&&&&在PLCSIM中加载项目。&&&&&&&&&&&&&启动WinCC并创建一个新项目或打开已有的项目。&&&&&&&&&&&&&WinCC&&&&&&&&&&&&&添加&SIMATIC&S7&PROTOCOL&SUITE&到变量管理器。&&&&&&&&&&&&&在MPI下添加一个新连接。&&&&&&&&&&&&&右击该连接然后选择&属性&。&&&&&&&&&&&&&点击&属性&按钮。&&&&&&&&&&&&&在&连接&标签中指定MPI地址和已在STEP&7中组态好的CPU的插槽。&&&&&&&&&&&&&确认所做的指定。&&&&&&&&&&&&&激活WinCC项目。&&&&&&&&&&&&&进入&开始&&&SIMATIC&&&WinCC&&&工具&&&通道诊断&。在&通道连接&下可以显示连接的状态。&&&&&&&&&&&&&如果连接没能设好:在WinCC资源管理器中的&系统参数&-&MPI&&&单元&中,启用选项&自动设置&。&&&&&&&&&&&&&在&系统参数&-&MPI&&&通道&中,取消&使用PLC的循环读取服务&选项。&&&&&&&&&&&&&wincc和西门子PLC仿真通讯需要PLCSIM&,先将PLCSIM&&&&&&&&&&&&&运行,建立一个WINCC项目,使用MPI通讯即可,说白了跟MPI通讯一样,只是PLC是用PLCSIM&在计算机上模拟的&&&&&&&&&&&&&但是有一点要注意的是,这种方式下不能使用输入区(I区),凡是有输入的地方都要用M区来代替&&&&&&&&&&&&可以使用输入区(I区),只是有些特殊功能不能用。  35:WINCC-如何使用自定义的对话框实现用户登录?  在登录按钮中加处以下脚本:  #pragma&code(&useadmin.dll&)   #include&&PWRT_API.H&   #pragma&code()  if&(PWRTSilentLogin(&username&,&&PassWord&))  {  //登录成功后的处理  }   其中&USERNAME&,&PASSWORD&可以用存储用户名和密码的变量替换.如:  PWRTSilentLogin(GetTagChar(&user&),&GetTagChar(&PassWord&))  当登录成功时,函数返回值为真;如登录失败,则返回值为假。  36:WINCC-如何使用自定义的对话框实现用户退出?&  实现登陆:#pragma&code(&&useadmin.dll)#include&&PWRT_api.h&#Pragma&code()PWRTlogin('1');  实现退出:#pragma&code(&&useadmin.dll)#include&&PWRT_api.h&#Pragma&code()PWRTlogout();&  37:如何把GIF图片放到wincc中?  首先插入aniGIF.ocx这个ole控件,然后双击它,在GIF属性中选择您需要显示的GIF图片就可以了。  38:如何将低版本创建的项目移植到WinCCV6.0中?  将项目移植到WinCC&V6.0的工作步骤:  WinCC&V6.0与其以前的版本相比在数据组织方面有着显著的不同。为了使在WinCC&V5.0&Service&Pack2或WinCC&V5.1中创建的项目在WinCC&V6.0中也能工作,项目数据必须首先通过移植作相应的调整。为此,WinCC&V6.0提供了一个项目移植器,用于自动移植项目的组态数据、运行系统数据和归档数据在移植之前,建议为原版本的项目做一个备份。与此有关的信息参见WinCC信息系统中的主题&使用WinCC&&&使用项目&&&复制和归档项目&。  已归档的文件:如果必须访问先前版本的归档数据,则必须将归档移植到WinCC&V6.0。请使用项目移植器移植归档数据和dBASE&III归档。  多用户项目:为了使利用WinCC&V5.0&SP2或V5.1所创建的多用户项目在WinCC&V6.0中能够正常工作,可进行如下操作:  移植系统中所有服务器上的单个多用户项目。如果原来的项目使用了多客户机,则分别单独移植多客户机的项目数据。正常操作中的冗余系统,不用取消激活操作就可在冗余系统中对项目进行升级。此时,将按规定的次序升级服务器、客户机和多客户机。章节&在正常操作中升级冗余系统&中提供了有关的详细说明。  警惕:为了不影响系统操作,必须遵守所描述的步骤次序,且完成所有步骤时不能有任何长时间的中断。  早于WinCC&V5.0&Service&Pack&2的WinCC版本:对于早于WinCC&V5.0&SP2的WinCC版本所创建的项目,必须一步一步地进行移植,将系统先升级到WinCC&V5.1,并移植项目。安装WinCC&V6.0,并使用项目移植器移植项目。&  39:wincc6.0中支持ab&plc的驱动吗?  WinCC&V6.0将不再提供下列通讯通道:&&&&&&&&&&&&Allen&Bradley&DH&DH+&DH485&&&&&&&&&&&&Allen&Bradley&Serial&DF1&&&&&&&&&&&&Applicom&Multi&Protocol&Interface&&&&&&&&&&&&GE&Fanuc&SNP&SNPX&&&&&&&&&&&&Mitsubishi&FX&&&&&&&&&&&&Modbus&Protocol&Suite&&&&&&&&&&&&Modbus&Serial&&&&&&&&&&&&SIMATIC&S5&PMC&Ethernet&&&&&&&&&&&&SIMATIC&S5&PMC&Profibus&&&&&&&&&&&&SIPART&&&&&&&&&&&&可以用OPC来替代。某些通道需附加件的支持。  40:WINCC的授权坏了,显示&Authorization&SIK/SIMATIC&WINCC&RT&128&PowerTags&is&faulty.&,重新安装显示已经存在此授权,请问要怎么处理?&&&&可以询问原来的销售商索要一个激活码,可以在authorsw中manageauthorization中右键单击选择&recover&autrorization&输入激活码激活授权即可。
41:用C编程解决授权点数不够用的问题(acsun提供)  当需要的工艺参数超过WinCC版本限制的Tag数目,可以用C语言编程实现多个工艺参数打包成一个Tag传送.例如某个配料称重系统有146个参数超过了WinCC的128个Tag的限制就可以用C语言编程决这一问题而不需要购买更高的授权.  基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定义一个Tag它的长度是多个参数之和取得这个Tag后编程将其分成多个参数  例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放在DD99.DW146和DD99.DW148在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联地址为DD99.DBD146再定义两个内部tag名为LTN44001和LTN44023在&Global&Script全局脚本中C语言编程如下Union{Long&DwordInt&Word[2]}unionUnion.Dword=GetTagDword(&PackageTag&)SetTagWord(&LTN44001&,Union.Word[0])SetTagWord(&LTN44023&,Union.Word[0])这样两个参数LTN44001和LTN44023就通过一个Tag传送上来了理论上只要下位机内存足够可以传送任意数量的参数而不受WinCC版本外部Tag数目的限制.  42:如何在WinCC里用C语言调用SQL语言?&&&&&&1、创建一个SQL文件。此文件在ISQL中创建,文件内容是所希望执行的SQL语句。&&&&&2、在WinCC的C&Script中编写程序调用此SQL文件,如以下程序所示:&#i&nclude&&apdefap.h&void&OnLButtonDown(char*&lpszPictureName,&char*&lpszObjectName,char*&lpszPropertyName,&UINT&nFlags,&int&x,&int&y){char*a=&C:\\SIEMENS\\Common\\SQLANY\\ISQL-q-b-cUID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;DBN=CC_testsql_99-12-03_12:48:26R;READE:\\testsql\\test.sql&;printf(&%s\r\n&,a);ProgramExecute(a);}下面是一个简单的SQL文件内容:select&*&from&pde#hd#t#output&to&E:\\test2.txt&FORMAT&ascii注意:文件名及路径中不要带空格。  43:如何整点启动归档?&  在&Global&Script&下的Project&functions编写函数:cyclicarchive&BOOL&cyclicarchive(){#pragma&code&(&kernel32.dll&);void&GetLocalTime&(SYSTEMTIME*&lpst);#pragma&code();SYSTEMTIME&Int&t1;GetLocalTime(&time);t1=time.wMif(t1==00){SetTagBit(&startarchive&,1);return(BOOL)(GetTagBit(&startarchive&));}}&在Tagloging中的&Properties&of&process&tag&中的&Archive&Tag&tab下的Archiving&type选择Cycle-selective,在&Event&标签下的&Start&Event&内选择cyclicarchive函数。&  44:如何在按键组合被禁用的情况下,从WinCC运行环境进入WinCC&Control&Center?&  最好是做一个按钮,该按钮需要用用户权限保护,在该钮中编写如下C-action:&低于WinCC&5.0版本:#pragma&code&(&user32.dll&);BOOL&SetForegroundWindow(HWND);#pragma&code();HWND&handle=FindWindow(&MCPFrameWndClass&,NULL);If&(!SetForegroundWindow(handle))Printf&(&\r\n&SetForeground&fails&);WinCC&5.0版本以及更高的版本:#pragma&code(&user32.dll&);BOOL&SetForegroundWindow(HWND);#pragma&code();HWND&handle=FindWindow(&WinCCExplorerFrameWndClass&,NULL);If&(!SetForegroundWindow(handle))Printf&(&\r\n&SetForeground&fails&);&  45:WinCC如何实现鼠标OnMouseOVer事件?  用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值相减得鼠标在WINCC&frame上的相对位置。用全局脚本(设定为1s定时刷新),然后获取要OnMouseOver事件的物体的位置,并与鼠标位置相比较,如一致则触发自己定义的动作。&#i&nclude&&apdefap.h&&int&gscAction(&void&)&{&#pragma&code(&user32.dll&);&BOOL&GetCusorPos(POINT&lpPoint);&&//获取鼠标的位置(绝对位置-对应屏幕分辨率)&BOOL&GetWindowRect(HWND&hwnd,LPRECT&lpRect);&//获取窗体位置&#pragma&code();&POINT&pP&RECT&rR&HWND&&BOOL&bRet,bRet2;&long&lLeft,lTop,lWidth,lH&long&lX,lY;&char&szStr[100];&hwnd=FindWindow(NULL,&WinCC-Runtime&-&&);&&//如语言为中文应为&WinCC&运行系统-&&if&(hwnd==0)&{printf(&\r\nError!&WinCc&Handle&is&%d&,hwnd);goto&}&bRet=GetCursorPos(&pPos);&if&(bRet==0)&goto&&bRet2=GetWindowRect(hwnd,&rRec);&if&(bRet2==0)&goto&&lX=pPos.x-rRec.&&&//鼠标&对{置&lY=pPos.y-rRec.&&&//鼠标&位置&//如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度&//printf(&The&Current&Cusor&Pos&is&x:%d,y:%d\r\n&,pPos.x,pPos.y);&//printf(&The&Cusor&Pos&in&Window&is&x:%d,y:%d\r\n&,pPos.x-lLeft2,pPos.y-lTop2);&lLeft=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&int&if&((lX&=lLeft)&&(lY&=lTop)&&(lX&=lLeft+lWidth)&&(lY&=lTop+lHeight))&{&sprintf(szStr,&%d,%d&,lX,lY);&SetText(&NewPdl0.Pdl&,&Text1&,szStr);&&&&&&//Return&-&Type&:char*&}&//printf(&The&Text1&Pos&is&x:%d,y:%d\r\n&,lLeft2,lTop-lTop2);&over:&return&0;&}&  46:如何实现ASP与WinCC&V6数据库sql&server&2000的连接?  WinCC&V6用ODK获取DSN名,{后生成网址字符串,再用shellExecuteA函数打开网页&//----------------------------------------------------------------------------------&#pragma&code(&shell32.dll&)&long&ShellExecuteA(HWND,LPCTSTR,LPCTSTR,LPCTSTR,LPCTSTR,int);&#pragma&code()&char&dsnStr[100];&HWND&&sprintf(dsnStr,&,GetDSN(1));&&&&&&//Return-Type:&LPCTSTR&printf(&\r\n%s&,dsnStr);&hwnd=FindWindow(NULL,&WinCC&-&Runtime&&);&ShellExecuteA(hwnd,&open&,dsnStr,NULL,&C:\\&,SW_SHOWNORMAL);&//-------------------------------------------------------------------------------------&ASP方面需要注意的是连接字符串的形式与普通acess&ODBC不太一样,而且需要用户名和密码&由于WINCC封装的sa用户的密码暂时不知道,所以必须用SQL&Server&EnterPrise&Manager建立自己的用户,添加system&Administrator权限就可以了!否则会出现错误提示&Microsoft&OLE&DB&Provider&for&SQL&Server&错误&'80040e4d'&Login&failed&for&user&'sa'.&'--------------------------------------------------------------------------------------&dsnStr=request(&dsnStr&)&set&conn=server.createobject(&adodb.connection&)&set&rs=server.createobject(&adodb.recordset&)&conn.Provider&=&&sqloledb&&conn.open&&Server=DCOUNT\WINCC;Database=&&&&dsnStr&&&&;UID=pwd=;&&rs.open&&select&*&from&test&,conn,1,1&response.write&rs.recordcount&do&while&not&rs.eof&&&&&&&response.write&rs(&f1&)&&&&---&&&&rs(&f2&)&&&&---&&&&rs(&f3&)&&&&&&&rs.movenext&loop&rs.close&conn.close  47:如何在退出WINCC监控时直接关闭电脑?&&1.利用动态向导&&2.在脚本中加入&&DMExitWinCCEx&(DM_SDMODE_SYSTEM);也可以&48:如何通过WINCC&API函数读出当前报警消息?&&&&1、使用GMsgFunction中读出当前报警信息的ID(dwMsgNr);&&&&&2、使用MSRTGetMsgCSData函数读出该报警信息ID对应文本库TEXTLIB中的文本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&tM&MSG_CSDATA_STRUCT&sM;&CMN_ERROR&&&BOOL&bR&DWORD&dwTextID1;&DWORD&dwMsgN&char&&szMsg[255];&#define&TAG_MSG&&MSG&&&&MSG_RTDATA_STRUCT&mRT;&&&memset(&&mRT,&0,&sizeof(&MSG_RTDATA_STRUCT&)&);&&&if(&pszMsgData&!=&NULL&)&&&{&&&&&&&&&&&&&printf(&&Meldung&:&%s&\r\n&,&pszMsgData&);&&&&&sscanf(&pszMsgData,&&&%ld,%ld,%04d.%02d.%02d,%02d:%02d:%02d:%03d,%ld,&%ld,&%ld,&%d,%d&,&&&&&&&&mRT.dwMsgNr,&&&&&&&&&&&&&&&&&&&//&Meldungsnummer&&&&&&&&mRT.dwMsgState,&&&&&&&&&&&&&&&&&&&&//&Status&MSG_STATE_COME,&.._GO,&.._QUIT,&.._QUIT_SYSTEM&&&&&&&&mRT.stMsgTime.wYear,&&&&&&&&&&&&&//&Tag&&&&&&&&mRT.stMsgTime.wMonth,&&&&&&&&&&&&&//&Monat&&&&&&&&mRT.stMsgTime.wDay,&&&&&&&&&&&&//&Jahr&&&&&&&&mRT.stMsgTime.wHour,&&&&&&&&&&&&&//&Stunde&&&&&&&&mRT.stMsgTime.wMinute,&&&&&&&&&&&&//&Minute&&&&&&&&mRT.stMsgTime.wSecond,&&&&&&&&&&&&&//&Sekunde&&&&&&&&mRT.stMsgTime.wMilliseconds,&&&&&&//&Millisekunde&&&&&&&&mRT.dwTimeDiff,&&&&&&&&&&&&&&&&&&//&Zeitdauer&der&anstehenden&Meldung&&&&&&&&mRT.dwCounter,&&&&&&&&&&&&&&&&&&//&Interner&Meldungsz?hler&&&&&&&&mRT.dwFlags,&&&&&&&&&&&&&&&&&&//&Flags(&intern&)&&&&&&&&mRT.wPValueUsed,&&&&&&&&mRT.wTextValueUsed&);&//**************************************************************************************code&for&dcount&if&(mRT.dwMsgState==MSG_STATE_COME)//信息到达处理&{&&&&&&&dwMsgNum=mRT.dwMsgNr;&&&&&&&printf(&\r\nThe&Alarm&Message&No&is&%d&!\r\n&,dwMsgNum);&&&&&&&bRet=MSRTGetMsgCSData(dwMsgNum,&sM,&err);&&&&&&&if&(bRet==TRUE)&&&&&&&&{&&&&&&&&&&&&&dwTextID1=sM.dwTextID[0];&&&&&&&&&&&&&printf(&\r\nThe&TextID&of&The&MessageNr&%d&&is&%d&!\r\n&,dwMsgNum,dwTextID1);&&&&&&&&&&&&&bRet=MSRTGetMsgText(1,dwTextID1,&tMeld,&err);&&&&&&&&&&&&&if&(bRet==TRUE)&&&&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&sprintf(szMsg,&%s&,tMeld.szText);&&&&&&&&&&&&&&&&&&&printf(&\r\nThe&Text&of&TextID&&%d&&is&%s&!\r\n&,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&&&&&}&&&printf(&Nr&:&%d,&St:&%x,&%d-%d-%d&%d:%d:%d.%d,&Dur:&%d,&Cnt&%d,&Fl&%d\r\n&&,&&&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,&&&mRT.dwCounter,&mRT.dwFlags&)&;&SetTagChar(TAG_MSG,szMsg);&&&&&&&&&return(&TRUE&);&}&
  49:如何实现用户登陆日志(wincc中用c脚本实现?)(&柳树成林原创)  用户登陆日志:(包括用户的登陆退出信息,以便查询在什么时间段是哪个用户在使用这个监控软件)#i&nclude&&apdefap.h&int&gscAction(&void&){#pragma&code(&kernel32.dll&)VOID&GetLocalTime(LPSYSTEMTIME&lpSystemTime);#pragma&code()char*&&char&buf[128];static&char&preuser[128];unsigned&a,b,c,d,e,f;FILE*&SYSTEMTIME&sysT//读取系统时间,并且复制给变量a,b,c,d,e,fGetLocalTime(&sysTime);a=sysTime.wH&b=sysTime.wM&c=sysTime.wS&f=sysTime.wY&e=sysTime.wM&d=sysTime.wD//得到当前用户名称username&=&GetTagChar(&@CurrentUser&);fp=&fopen(&c:\\wincclog.txt&,&&a+&);&if(strcmp(username,&preuser)!=0)&&&&//如果当前用户名称和前一个用户名不同{&&&&&&&if((strcmp(username,&&&)&&!=&0)&&(strcmp(preuser,&&&)&==&0))&&&&&//如果当前用户名称不空同时前一个用户名为空&&&&&&&&&{&&&&&&&&&&&&&&&&&sprintf(buf,&&用户:%s\t登陆时间是:\t&%d-%d-%d,%d-%d-%d\n&,&username,a,b,c,d,e,f);&&&&&&&&&&&&&&&&fputs(buf,&fp);&&&&&&&&}&&&&&&&else&&&&&&&{&&&&&&&&&&&&&&&&if((strcmp(username,&&&)&==&0)&&(strcmp(preuser,&&&)&&!=&0))&&&&&//如果当前用户名称为空同时前一个用户名不空&&&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&sprintf(buf,&&用户:%s\t退出时间是:\t&%d-%d-%d,%d-%d-%d\n&,&preuser,a,b,c,d,e,f);&&&&&&&&&&&&&&&&&&&&&&&&&fputs(buf,&fp);&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&sprintf(buf,&&用户:%s\t退出时间是:\t&%d-%d-%d,%d-%d-%d\n&,&preuser,a,b,c,d,e,f);&&&&&&&&&&&&&&&&&&&&&&&&&fputs(buf,&fp);&&&&&&&&&&&&&&&&&&&&&&&&&sprintf(buf,&&用户:%s\t登陆时间是:\t&%d-%d-%d,%d-%d-%d\n&,&username,a,b,c,d,e,f);&&&&&&&&&&&&&&&&&&&&&&&&&fputs(buf,&fp);&&&&&&&&&&&&&&&}&&&&&&&&}}strcpy(preuser,&username);fclose(fp);return&0;}  50:在wincc画面编辑器里注册的OCX控件,由于开发时没有考虑到wincc标准控件中具备层次哪个属性!所以不能够通过画面编辑器里的菜单进行设置OCX控件的层次关系!  建议不要把wincc中注册的OCX控件和wincc本身的标准控件重叠放置,否则wincc本身的标准控件将被覆盖!
Powered By:}

我要回帖

更多关于 怎么看有没有被蹭网 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信