2009-02-20
WINCC 经验 (1)
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
WD=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中的"
roperties 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"
10:快捷地切换画面
通常要将所有的设备都显示在一张画面里是不可能的,所以将设备按照处理工艺的功能步骤分级在多张画面内,以一个污水处理厂为例分为电泳线、前处理线、生化线、加药线等,之间的切换使用按钮的鼠标动作来实现。这对于用WinCC现成的鼠标动作来实现是很简单的,但是不是要在每张图上都使用相同数量且位置排列顺序一致的按钮呢?(出于对操作的一致性考虑,不能让操作人员在不同的图上,不同的位置找想要操作的按钮)这个问题的解决我们使用WinCC的脚本编程,在按钮动作中调用它的内部函数来实现。首先,组态一幅背景画面,其中包括要显示的静态文本、OLE(例如,时钟)、所有的图形切换按钮及推出关机按钮。第二,在背景画面中插入智能对象(Smart Object)中的画面窗口(Picture Window),并且使其的尺寸与其分级画面相同。第三,在相应的切换按钮的属性->事件->鼠标动作中编写如下C语言脚本代码:
#i nclude\"apdefap.h\"
void onClick(char *lpsz PictureName,
char *lpsz ObjectName,char *lpsz PropertyName)
{
SetPictureName(\"背景画面\", \"画面窗口\", \"电泳处理线\");
} //\"背景画面\"即为始终显示地静态背景的属性名,\"画面窗口\"即为在背景画//面中插入地画面窗口(Picture Window)属性名,\"电泳处理线\"即为分级画面//的名称
这样就能方便快捷地切
评论4
楼主 2009/2/15 20:16:59
楼主 2009/2/15 20:17:42
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")
#i nclude "PWRT_API.H"
#pragma code()
if (PWRTSilentLogin("username", "PassWord"))
{
//登录成功后的处理
}
其中"USERNAME","PASSWORD"可以用存储用户名和密码的变量替换.如:
PWRTSilentLogin(GetTagChar("user"), GetTagChar("PassWord"))
当登录成功时,函数返回值为真;如登录失败,则返回值为假。
36:WINCC-如何使用自定义的对话框实现用户退出?
实现登陆:
#pragma code(""useadmin.dll)
#i nclude "PWRT_api.h"
#Pragma code()
PWRTlogin('1');
实现退出:
#pragma code(""useadmin.dll)
#i nclude "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”输入激活码激活授权即可。
楼主 2009/2/19 15:34:12
Good for us. ths for sharing and I'd like to add to favorites.
楼主 2009/2/20 19:14:28