WinCC问与答 点击:535 | 回复:0



小小德

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 0回
  • 年度积分:0
  • 历史总积分:9
  • 注册:2006年12月18日
发表于:2006-12-18 14:09:00
楼主
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); 
  }
   


热门招聘
相关主题

官方公众号

智造工程师