注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控论坛 -- 监控组态软件论坛 -- 监控组态软件论坛(非专题) -- 画面技巧

中国工控网搜索:

 登陆:密码:  注册  密码

搜索:

监控组态软件论坛(非专题)分类  

全部论题

功能结构

连接通讯

软件技巧

画面技巧

应用经验

发表人:豆浆汗 发表时间:2008/11/8 8:06:00  

 

 本栏论题: wincc的9个经典问题解答  [2928]

    
   
   
    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对话框实现。具体如下:  #i nclude"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文件,如下所示:  #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-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.  #i nclude "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,"%d min %d sec",min,sec);  return p;  }   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"
   

以下是关于《wincc的9个经典问题解答》论题的回复(共2篇)

回复人:cn18show 

 回复时间:2009/9/18 11:07:00

支持(636) | 反对(397)

 

    大家知道“易展五周年庆 50万感恩回馈”的活动吗?就是这里:http://www.18show.cn/5/?m=189

回复人:yuhaifei 

 回复时间:2011/1/19 9:40:00

支持(449) | 反对(476)

 

    这里面有些好像不用C也可实现

如果要回复本栏论题,请首先中国工控网www.chinakong.com

·如果你已经是中国工控网www.chinakong.com成员,请直接登录。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码

关闭该窗口

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳