wincc的n个经典问题解答 点击:908 | 回复:5



love2006

    
  • 精华:5帖
  • 求助:0帖
  • 帖子:209帖 | 1300回
  • 年度积分:23
  • 历史总积分:3382
  • 注册:2006年2月21日
发表于:2008-08-05 20:22:54
楼主
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 time;  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#test;  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 time;  Int t1;  GetLocalTime(&time);  T1=time.wMinute;  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;  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 hilf;  int min, sec;   p=SysMalloc(10);  hilf=GetTagDWord("Time");  min=hilf/60000;  sec=hilf%60000/1000;   sprintf(p,"%



wenjian1

  • 精华:1帖
  • 求助:0帖
  • 帖子:10帖 | 600回
  • 年度积分:15
  • 历史总积分:1083
  • 注册:2006年11月14日
发表于:2008-08-06 10:01:02
1楼

好                                      

salahu

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:1
  • 注册:2008年8月06日
发表于:2008-08-06 13:07:01
2楼
好东西啊,给我们大家节约了很多时间和精力啊!

学习小样儿

  • 精华:1帖
  • 求助:0帖
  • 帖子:41帖 | 937回
  • 年度积分:0
  • 历史总积分:802
  • 注册:2006年3月31日
发表于:2008-08-06 13:07:58
3楼
如果能排版一下就更好了.

老愚者

  • 精华:1帖
  • 求助:0帖
  • 帖子:9帖 | 2253回
  • 年度积分:0
  • 历史总积分:10007
  • 注册:2006年8月20日
发表于:2008-08-06 14:02:02
4楼

不是楼主不排版,是工控网的缘故。

采用复制--把文章粘贴到工控网上,原先排好版的就会乱了,变成上文这样。

任浩宇

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 1回
  • 年度积分:0
  • 历史总积分:0
  • 注册:2010年5月15日
发表于:2010-05-15 09:38:47
5楼

好东西,谢谢搂,正不错啊!


热门招聘
相关主题

官方公众号

智造工程师