当前位置:文档之家› WINCC的n个经典问题解答 之一1

WINCC的n个经典问题解答 之一1

WINCC的n个经典问题解答 之一1
WINCC的n个经典问题解答 之一1

标动作来实现。这对于用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;

break;

default :

x=x+4;

if(x>=25)

y=0;

break;

}

}

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”的选择。

WINCC常用功能

WINCC常用功能(2012-06-13 11:22:46) 标签:wincc 功能 问题 文化分类:自动控制 1问:如何触发计算机扬声器的声音? 答:编写如下C-Action: #pragmacode("kernel32.dll"); BOOLBeep(DWORDdwFreq,DWORDdwDuration); #pragmacode(); Beep(500,500); 2、问:如何通过C脚本来确定报警信息? 答:首先必须在画面中插入报警控件,可以用如下两种方式来确认信息: (1)、确认单条信息 4版本和高于此版本的WinCC BOOLOnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName) 5版本和高于此版本的WinCC BOOLAXC_OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName) (2)、确认报警窗口所有可见的报警 4版本和低于此版本的WinCC BOOLOnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName) 5版本和高于此版本的WinCC BOOLAXC_OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName) 3、问:如何在WinCC中读取系统时间? 答:通过如下C-Action: #pragmacode("kernel32.dll"); VoidGetLocalTimes(SYSTEMTIME*lpst); #pragmacode(); SYSTEMTIMEtime; 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" voidonClick(char*lpszPictureName,char*lpszObjectName, char*lpszPropertyName) {ProgramExcute("c:\\win98\\control.exetimedate.cpl");} 其中执行的程序路径,需根据具体情况填写。 5、问:如何在WinCC中调用SQL语言? 答:1、创建一个SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL语句。Windows对话框实现。具体如下: 2、在WinCC中用CScript调用上述SQL文件,如下所示: #include"apdefap.h" voidOnLButtonDown(char*lpszPictureName, char*lpszObjectName, char*lpszPropertyName, UINTnFlags,intx,inty) { 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*frompde#hd#t#test; outputtoe:\\test2.txtFORMATascii 注意:文件名及路径中不要带空格。 6、问:如何整点启动归档? 答:在"GlobleScript"下的Projectfunction编写程序函数:cyclicarchive BOOLcyclicarchive() { #pragmacode("kernel.dll"); voidGetLocalTime(SYSTEMTIME*lpsz); #pragmacode(); SYSTEMTIMEtime; Intt1; GetLocalTime(&time); T1=time.wMinute; If(t1==00) { SetTagBit("startarchive",1); Return(BOOL)(GetTagBit("startarchive")); } } 在Tagloging中的"Propertiesofprocesstag"中的"archivetag"Tab下的Archivetype选择Cycle-selective,在"Event"标签下的"StartEvent"内选择cyclicarchive函数。 7、问:HowcanIsetandresetaWinCCvariablebymouseclickwithCscript? 答:ThefollowingfunctionshowshowyoucanalternatelysetandresetaWinCCvariablebymouseclick. #include"apdefap.h" voidOnClick(char*lpszPictureName,char*lpszObjectName,char*lpszPropertyName) { BOOLz; z=GetTagBit("MyBitVariable"); if(z==0) SetTagBit("MyBitVariable",1); else SetTagBit("MyBitVariable",0); } 8、问:HowcanIprogramawaitingfunction(Sleep)inWinCC? 答:Thefollowingsampleprogramshowshowthe"Sleep"isused. #pragmacode("Kernel32.dll") voidSleep(intmilliseconds);

WinCC部分考试题目

WinCC部分 笔试考题: 1、生成一个新的项目的时候,该项目默认的路径是。该项目的路径由用户自己选择想要放置的驱动器和文件夹。 A.安装WinCC的目录中的projects文件夹中,不能。 B.安装WinCC的目录中的projects文件夹中,可以。 C.C:\ Program Files\WINCC\projects文件夹中,不能。 D.C:\ Program Files\WINCC\projects文件夹中,可以。 答案:B 2、一个项目的要和西门子400系列的PLC进行通讯,我们要在变量标签中添加一个驱动器,该驱动器是。它的作用是。A.SIMATIC S5 Ethernet ,使PLC和WinCC进行通讯。 B.SIMATIC S5 Programmers Port ,在PLC和WinCC之间生成一个逻辑接口。C.SIMATIC S5 Profibus ,使PLC和WinCC进行通讯。 D.SIMATIC S7 Protocol ,在PLC和WinCC之间生成一个逻辑接口。 答案:D 3、当我们要调用一个历史趋势图的控件,并将变量的数值反映到趋势图当中,我们需要将这个变量建立到,主要设置其属性。 A.变量管理器、类型和地址。 B.报警记录、报警等级。 C.变量记录、采集周期。 D.报表设计、周期或时间。 答案:C 4、在WinCC项目名称的属性里有一个刷新周期,如果刷新周期如果设置得比较长,会对生产造成什么影响? 答:会造成WinCC项目对现场实际情况的采集数据失真,使画面不能反映现场的实际情况。(或刷新周期是WinCC系统访问一次过程数据的时间,设置的时间过长,会造成数据失真) 5、当我们要将计算机A里运行过的项目拷贝到另一台计算机B里,并且要在同一个网络上进行同时运行时候,我们需要修改和注意那些方面的问题? 答:1、我们要检查两台计算机的名称是否重复,如果重复,我们要将计算机B的名称进行修改。 2、我们要检查计算机B的IP地址,不能与计算机A和PLC的IP地址重复。 3、我们要将计算机B里刚拷贝过来的项目打开,修改其计算机属性里的计算机名, 使它和计算机B的名字相同。查看变量标签中的驱动器里的TCP/IP属性,看 其网卡的驱动和计算机里的网卡是否一致。

WINCC安装出现的2个问题及解决方法

WINCC安装出现的2个问题及解决方法 [530] 有一种似是而非的说法:“WINCC应该在WIN2000下运行更为稳定和方便。” 我觉得在6.0之前似乎是这样的。但这种说法现在不具有指导意义了,WINCC可以在WINCXP下很完美的运行。目前XP的先进程度是2000不能比拟的。 还有一种似是而非的说法是:“WINCC应该安装在纯净的XP系统之下,所以我们应该使用XP光盘一步一步的安装,而不能使用市面上常用的GHOST盘来克隆XP”。这种说法有一定的道理,但是也不是全部,因为大家应该都有感觉,并不是所有的克隆XP都不能安装WINCC。那么到底原因是什么呢?原因是在于市面上某些克隆XP为了系统速度将WINDOWS 的一些服务关闭了,而这些不常用的服务正是WINCC正常运行的关键。下面就两个典型错误来阐述: 1、WINCC在创建项目时出现“找不到网络路径”错误,一旦出现,项目即不能被创建,WINCC无法正常运行。这种错误是由于在安装WINCC的时候没有关闭防火墙所致。WINCC安装时系统会提醒使用者关闭防火墙,很多使用者忽略了,在大多数不关闭防火墙就安装的情况下,WINCC也能正常运行,但是有一定概率出现这个“找不到网络路径”错误。 那么解决办法呢?最根本的解决办法是重装系统(这个也是网上大多数同仁推荐的),但是这很麻烦。我推荐的办法是,先关闭防火墙(所有的!包括WINDOWS自带的,各种杀毒软件附加的,和360SAFE!!)看错误是否能解决,经验证有可能能恢复正常,如果WINCC 能创建项目了,那么在创建项目之后再把防火墙都启动,使系统仍受其保护。如果还是不能恢复正常,就进入安全模式将防火墙卸载再回到正常启动的XP,看是否芙饩觯 绻 芙饩鼍椭刈胺阑鹎剑 绻 舛疾恍校 蔷椭缓弥刈跋低沉恕K 苑阑鹎皆赪INCC之后再安装是非常重要的,这一点在使用瑞星防火墙的用户尤其关键,如果将瑞星装在WINCC前面,系统都进不去!!! 2、WINCC出现“Automation License Manager has not been started Please start the service”错误。这个错误会在两种情况下出现: (1)系统硬件发生了变化,WINCC对系统要求似乎比较高,某些同仁实在受不了开发机器缓慢的速度,就直接给系统添加了内存。殊不知一旦系统硬件发生变化,WINCC即认为重新被安装在了其他机器上了,根据授权的原则,就会出现这个错误。 (2)对于某些克隆XP的用户来说是由于系统默认将Automation License Manager service关闭了所致。 那么解决办法呢?网上大多数方法是进入“控制面板”----“管理工 具”--------“服务”-----将“Automation License Manager service”开启,似乎是很完美的,在有些时候的确能解决问题。但是有些情况下却不行,WINCC仍然报“Automation License Manager has not been started Please start the service”错,这个时候我们就需要检查一下,进入“服务”之后发现刚刚开启的“Automation License Manager service”居然又是关闭的了!!!仔细观察才发现原来在这个服务上面的“Automation

wincc标准函数介绍

标准函数 该系统包含标准函数。可以按需要修改这些函数。此外,还可以自己创建标准函数。 该系统包括一个标准函数集。 一、Alarm - 简短描述 Alarm组包含控制WinCC报警控件的函数。标准函数可用于工具栏中的每一个按钮。这些函数可用来创建自定义工具栏,例如选择画面,或者定义控件上的设置。 1.void AcknowledgeMessage(DWORD MsgNr)函数,确认消息系统中带编号的消息,该编号被传递为参数。 使用标准函数操作WinCC报警控件的实例 {//确认选择的报警记录消息 AcknowledgeMessage(GetTagWord("U08i_MsgNr")); } 指定待确认的消息号。在本例中是从变量读取的。 2.BOOL AXC_OnBtnArcLong(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在长期归档中。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst("gs_alarm_00","Control1"); } AXC_OnBtnMsgFirst函数参数: “gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 3.BOOL AXC_OnBtnArcShort(char* lpszPictureName, char* pszMsgWin)函数,在消息窗口中该函数表示消息存储在短期归档中。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst("gs_alarm_00","Control1"); } AXC_OnBtnMsgFirst函数参数: “gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 Control 1是WinCC报警控件的对象名。 4.BOOL AXC_OnBtnComment(char* lpszPictureName, char* pszMsgWin)函数 外部消息窗口操作,该函数显示先前所选消息的注释。 使用标准函数操作WinCC报警控件的实例 {// 跳转到WinCC报警控件中的第一条消息 AXC_OnBtnMsgFirst("gs_alarm_00","Control1"); } AXC_OnBtnMsgFirst函数参数: “gs_alarm_00”是在其中组态WinCC报警控件的画面的名称。 Control 1是WinCC报警控件的对象名。 5.BOOL AXC_OnBtnEmergAckn(char* lpszPictureName, char* pszMsgWin)函数,外部消息窗口操作,此函数打开确认对话框(紧急确认/复位)。

wincc中使用vbs常用函数.

wincc 中使用vbs 常用函数 1. 函数array() 功能: 创建一个数组变量 格式:array(list) 参数:list 为数组变量中的每个数值列,中间用逗号间隔 例子: <% i = array ( “1”, ”2”, ”3”) %> 结果: i 被赋予为数组 2. 函数Cint() 功能: 将一表达式/ 其它类型的变量转换成整数类型(int) 格式:Cin t(expressio n_r) 参数:expression」是任何有效的表达式/其它类型的变量 例子: <% f = ” 234” response.write cINT(f) + 2 %> 结果: 236 函数Cint() 将字符” 234”转换成整数234.如果表达式为空, 或者无效时, 返回值为0; 3. 函数:Creatobject() 功能: 创建及返回一个ActiveX 对象. 格式:Creatobject(obname)

参数bname 是对象的名称 例子: <% Set con = Server.CreateObject( “ADODB.Connection”) %> 结果: 4. 函数Cstr() 功能: 将一表达式/其它类型的变量转换成字符类型(string) 格式:Cstr(expression_r) 参数:expression」是任何有效的表达式/其它类型的变量例子: <% s = 3 + 2 response.write ”The result is: ” & cStr(s) %> 结果: 函数Cstr() 将整数 5 转换成字符” 5”. 5. 函数Date() 功能: 返回当前系统(server 端) 的日期 格式: Date() 参数:无 例子<% date () %> 结果:05/10/00

Wincc系统函数

报警 1、ClearAlarmBuffer 应用:删除HMI设备报警缓冲区中的报警。说明:尚未确认的报警也被删除。 2、ClearAlarmBufferProtoolLegacy 应用:该系统函数用来确保兼容性。 它具有与系统函数“ClearAlarmBuffer”相同的功能,但使用旧的ProTool编号方式。参数:Alarm class number 将要删除其消息的报警类别号: -1 (hmiAllProtoolLegacy) = 所有报警/事件 0 (hmiAlarmsProtoolLegacy) = 错误 1 (hmiEventsProtoolLegacy) = 警告 2 (hmiSystemProtoolLegacy) = 系统事件 3 (hmiS7DiagnosisProtoolLegacy) = S7 诊断事件 3、SetAlarmReportMode 应用:确定是否将报警自动报告到打印机上。 4、ShowAlarmWindow 应用:隐藏或显示 HMI 设备上的报警窗口。 5、ShowSystemAlarm 应用:将已传递参数的值显示为 HMI 设备上的系统报警。 编辑位 1、InvertBit 应用:对给定的“Bool”型变量的值取反。如果变量具有值 1(真),它将被设置为 0(假)。如果变量具有值 0(假),它将被设置为 1(真)。说明:不要使用循环事件或递归事件或具有外部变量的系统函数。 在画面中创建一个开关。该开关连接到外部布尔类型变量“Tag1”。将系统函数“InvertBit”分配给“更改”事件。该系统函数连接到外部变量“Tag1”。 在运行期间,这会导致无法预料的行为。 2、InvertBitInTag 应用:对给定变量中的位取反:如果变量中的位为值 1(真),它将被设置为 0(假)。如果变量中的位为值 0(假),它将被设置为 1(真)。 在改变了给定位之后,系统函数将整个变量传送回 PLC。不检查此过程期间变量中是否有其它位发生更改。在变量被传送回 PLC 之前,操作员和 PLC 对变量具有只读访问权限。 说明:如果 PLC 支持 BOOL 型变量,不要使用该系统函数。而是使用“InvertBit”系统函数。不要使用循环事件或递归事件或具有外部变量的系统函数。 在画面中创建一个开关。该开关连接到外部布尔类型变量“Tag1”。将系统函数“InvertBitInVariable”分配给“更改”事件。该系统函数连接到外部变量“Tag1”。 在运行期间,这会导致无法预料的行为。 3、ResetBit 应用:将“Bool”型变量的值设置为 0(假)。 4、ResetBitInTag 应用:将给定变量中的一个位设置为 0(假)。 在改变了给定位之后,系统函数将整个变量传送回 PLC。不检查此过程期间变量中是否有其它位发生更改。在指示的变量被传送回 PLC 之前,操作员和 PLC 对变量具有只读访问权限。说明:如果 PLC 支持 BOOL 型变量,不要使用该系统函数。而使用系统函数“ResetBit”。 5、SetBit 应用 将“Bool”型变量的值设置为 1(真)。

WinCC 授权的使用方法及常见问题处理

WinCC7.0授权的使用方法及常见问题处理 WinCC 软件受法律保护,且只能在具有有效许可证的完整状态下使用。安装的每个软件以及所用的每个选件都需要获得有效的许可证,才能不受限制地使用 WinCC。从WinCC7.0开始,亚洲版(Asia)的WinCC实行硬狗授权的模式,即WinCC在使用的过程中既要检测系统里是否安装了匹配的授权文件,同时还检测LICENSE_KEY硬件狗是否插在电脑上。下面就如何正确使用WinCC7.0授权以及在使用过程中出现的常见问题的处理方法进行简单介绍。 1授权的使用方法 购买了WinCC7.0的授权后,会得到一套WinCC安装软件和一个用来安装授权的LICENSE_KEY,LICENSE_KEY中包含所购买WinCC功能的授权,LICENSE_KEY外观如图1。 图1 安装好WinCC软件后,将此LICENSE_KEY插到电脑的USB口上,然后通过Automation License Manager (授权管理器,随WinCC软件一起提供,且使用Automation License Manager不需要授权)将 LICENSE_KEY中的授权导入到电脑中,只有标记有“Hardlock”字样的LICENSE_KEY,在传送完授权后仍然需要插到电脑上。导入授权的方法如下:打开Automation License Manager,如果安装了SIMATIC Logon,将会弹出一个登录对话框,如图2, 图2 点“Cancel”将进入如下界面,如图3。 图3

用鼠标选中“LICENSE_KEY”,右边会列出LICENSE_KEY中的授权文件,选中LICENSE_KEY中的授权文件拖拽到电脑的目标盘(不建议放到系统盘,避免系统崩溃造成授权文件丢失);或者用鼠标选中 LICENSE_KEY中的授权文件,点击右键,如图4。 图4 选Transfer(传送),选中目标路径,如图5,至此WinCC的授权导入就完成了。 图5 注意:a. WinCC的一套授权只能同时在一台电脑中使用(不支持复制),如果想将授权转移到其他电脑中使用,按照如上方法将授权传送回LICENSE_KEY,传送授权时需要关闭WinCC,正在使用的授权是不能传送的。授权的状态检查可以参考图4,点击Check,会弹出授权状态信息,如图6。 图6 b.WinCC7.0授权只有RT和RC类授权检测硬件狗,也就是说这两种型号授权对应的LICENSE_KEY必须插在电脑上,而其他型号的WinCC授权,只需要将授权文件通过Automation License Manager将授权文件导入电脑,对应的LICENSE_KEY是不需要插在电脑上的,比如,一用户购买了WinCC7.0的一套RC128点授权和一套Server授权,那用户就会收到两个LICENSE_KEY,将LICENSE_KEY中的授权文件导入到电脑中,此时只需将RC128点的LICENSE_KEY硬件狗插在电脑上, Server授权的LICENSE_KEY是不需要插在电脑上

wincc经典问题

、问:如何触发计算机扬声器的声音? 答:编写如下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");} 其中执行的程序路径,需根据具体情况填写。

WINCC问答_1

1、WINCC在进入某一画面时出现 Unhandled exception was raised.Lookfile"c:\program Files\semens\wincc \Diagnose\PDLRTSEH.LOG"for details. 出现这种情况前只是删除了该画面的一个矩形图。 --------------------------------------------------------------简单的矩形图删除不会有这个问题的,打开记事本看看进一步的错误信息,有什么错误代码.才能进一步找到错误原因. 2、在停电之后5611网卡通讯不上,硬件图标上有黄色的叹号,点测试显示“错误0x0382:未找到内部驱动程序信息 (L2)”--------------------------------------------------------黄色的叹号或者感叹号说明没有给CP5611驱动,请手动查阅目录C:\WINDOWS\INF或者C:\WINNT\INF,驱动的信息(OEM**.INF)会在这些目录中,卸载CP5611重新安装即可. CP5611完全卸载方法步骤:1.设备管理器卸载. 2.打开注册表WINDOWS START MENU->RUN->"REGEDIT",删除下面路径中的所有的条 目:HKEY_LOCAL_MACHINE\SOFTWARE\SIEMENS\SINEC\LOGDEVIES. 3.重新启动计算机,再次安装5611驱动. WINCC组态服务器不可用,是否打开项目,将本地计算机作为服务器 2011-11-21 15:07:56| 分类:iphone | 标签:|字号大中小订阅 https://www.doczj.com/doc/dc9641823.html,/leishuang2005/blog/item/e6ce8c47654a2a046b63e50e.html 我从别人那考了一个WINCC例子看可是为什么一打开就是显示“组态服务器不可用,是否打开项目,将本地计算机作为服务器”我点了启动本地服务器为什么总是错误,望高人指点 问题在于你直接拷贝人家已经在使用的项目文件夹,哪个文件夹是共享的,特别是人家正在运行的项目,这样的项目文件直接复制过来是不能用的,会缺少文件. 正确的复制方法: 1)关闭正在运行的WINCC项目,可以在WINCC浏览器里关闭,也可以在开始彩单->运行->输 入CMD ->在里面窗体输入命令RESET WINCC来强制关闭WINCC及相关文件. 2)取消项目文件夹的共享标记.然后复制项目文件夹(当然项目中也可能调用其它可执行文件, 这些你需要向设计方了解),也可以是WINCC安装路径里面的项目复制器复制项目到指定计算机. 只有用这样的方法复制的项目文件才能保证WINCC功能部分软件是完整可用的(WINCC内部直接调用可执行文件的执行的功能除外). 你如果是拷贝的整个项目的话,你需要启动本地服务器,然后更改项目里面的计算机名字为你的本机名字,然后关闭wincc再重新打开wincc。就好了。

WINCC的安装注意问题

关于一些已知的安装问题的解决方法 当内部错误286的信息弹出时的做法 当你在runtime卸载将要完成(即文件已删除)时出现‘内部错误286’信息时,此时在windows注册项中仍显示为已安装以致SP1的安装会被取消。这意味着SP1的工程部分不能在系统中安装。 解决方法: 只需在windows注册项中的注册码删除: HKEY_LOCAL_MACHINE\Software\Siemens\AUTSW\HmiRtm 我们建议同时删除运行时间系统中所有的安装文件(如果仍存在)。请检查原始安装文件夹中的无属性的文件。 如果你需要重新安装已安装过的WinCC flexible Runtime. 请查看‘怎样安装WinCC flexible Runtime’一章。 之后你需要重新安装服务包(请查看‘怎样重新安装服务包’一章)。 安装软件时HmiEs.exe 冲突 安装WinCC flexible 2004 incl. SP1时,我们过早建立一些高速缓冲存储器.这有时会引致一个叫HmiEs.exe的冲突过程. 解决方法: 忽略这个冲突,继续安装。 没有任何副作用!当你第一次申请,创建一个新项目时,会完成高速缓冲存储器的建立。 安装无法完成(重建高速缓冲存储器时出现锁机) 这种安装无法完成(Windows任务管理器显示CPU有段时间不运转)的现象有时会出现。安装WinCC flexible 2004时,已知一些不能创建一些高速缓冲存储器的状况。 解决方法: 你只需在Windows任务管理器中结束叫HmiEs.exe的程序。 没有副作用!当你第一次运行WinCC flexible 2004 ,创建新项目时,高速缓冲存储器会建立。 申请时HmiEs.exe冲突 可能WinCC Flexible 2004 的SP1未正确安装。 解决方法: 执行在“怎样重新安装服务包”一章中描述的步骤。 不能创建新项目 成功安装完WinCC flexible 2004之后,可能会出现不能创建新项目的状态(会出现一个消息告诉你原因)。 不能安装SP1 在一些情况下有必要重新安装SP1,尤其在修改安装时。执行“怎样重新安装服务包”一章中的步骤。一般来说,点击开始→SIMANTIC→信息→已安装软件,其中会告知WinCC flexible 2004的版本为V1.0。 安装硬件支持包(HSP) 目前没有不能安装HSP的案例。 唯一可以检查的是你已经安装了WinCC flexible 2004 包括 SP1。 对解决以上问题有用的安装步骤

wincc的n个经典问题解答之三

wincc的n个经典问题解答之三 作者:激情如火,2005-12-27 17:23:00 发表于:《Siemens自动化软件论坛》共有15人回复, 送留言 部分非本人原创,整理在一起旨在给大家提供方便! 41:用C编程解决授权点数不够用的问题(acsun提供) 当需要的工艺参数超过WinCC版本限制的Tag数目,可以用C语言编程实现多个工艺参数打称重系统有146个参数超过了WinCC的128个Tag的限制就可以用C语言编程决这一问题而不需 基本思想就是把多个参数在下位机内存中连续排列然后在WinCC中定义一个Tag它的长度是多个分成多个参数 例如下位机有两个参数LTN44001和LTN44023都是16位整数分别存放在DD99.DW146和DD99.DW1在WinCC中定义一个外部Tag命名为PackageTag类型为32位整数并联地址为DD99.DBD146再定LTN44023在 Global Script全局脚本中C语言编程如下 Union { Long Dword Int Word[2] }union Union.Dword=GetTagDword("PackageTag") SetTagWord("LTN44001",Union.Word[0]) SetTagWord("LTN44023",Union.Word[0]) 这样两个参数LTN44001和LTN44023就通过一个Tag传送上来了理论上只要下位机内存足够可以版本外部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-c

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"); V oid 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,

wincc中使用vbs的常用函数

wincc中使用vbs的常用函数 1.函数array() 功能:创建一个数组变量 格式:array(list) 参数:list为数组变量中的每个数值列,中间用逗号间隔 例子: <%i=array(“1”,”2”,”3”)%> 结果:i被赋予为数组 2.函数Cint() 功能:将一表达式/其它类型的变量转换成整数类型(int) 格式:Cint(expression) 参数:expression是任何有效的表达式/其它类型的变量 例子: <% f=”234” response.write cINT(f)+2 %> 结果:236 函数Cint()将字符”234”转换成整数234.如果表达式为空,或者无效时,返回值为0; 3.函数:Creatobject() 功能:创建及返回一个ActiveX对象. 格式:Creatobject(obname) 参数bname是对象的名称 例子: <% Set con=Server.CreateObject(“ADODB.Connection”) %> 结果: 4.函数Cstr() 功能:将一表达式/其它类型的变量转换成字符类型(string) 格式:Cstr(expression) 参数:expression是任何有效的表达式/其它类型的变量 例子: <% s=3+2 response.write”The result is:”&cStr(s) %> 结果:函数Cstr()将整数5转换成字符”5”. 5.函数Date() 功能:返回当前系统(server端)的日期

格式:Date() 参数:无 例子<%date()%> 结果:05/10/00 6.函数Dateadd() 功能:计算某个指定的时间和 格式:dateadd(timeinterval,number,date) 参数:timeinterval是时间单位(月,日..);number是时间间隔值,date是时间始点. 例子: <% currentDate=#8/4/99# newDate=DateAdd(“m”,3,currentDate) response.write newDate %><% currentDate=#12:34:45PM# newDate=DateAdd(“h”,3,currentDate) response.write newDate %> 结果: 11/4/99 3:34:45PM 其中 “m”=”month”; “d”=”day”; 如果是currentDate格式,则, “h”=”hour”; “s”=”second”; 7.函数Datediff() 功能:计算某量个指定的时间差 格式:datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]]) 参数:timeinterval是时间单位;date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear是任意选项. 例子: <% fromDate=#8/4/99# toDate=#1/1/2000# response.write”There are”&_ DateDiff(“d”,fromDate,toDate)&_ “days to millenium from8/4/99.” %> 结果:There are150days to millenium from8/4/99. 8.函数day() 功能:返回一个整数值,对应于某月的某日 格式:day(date)

WINCC VBSCRIPT常用函数

WinCC VBscript常用函数 1.数值型函数: abs(num):返回绝对值 sgn(num):num>01;num=00;num<0-1;判断数值正负 hex(num):返回十六进制值直接表示:&Hxx最大8位 oct(num):返回八进制值直接表示:&Oxx最大8位 sqr(num):返回平方根num>0 int(num):取整int(99.8)=99;int(-99.2)=100 fix(num):取整fix(99.8)=99;fix(-99.2)=99 round(num,n):四舍五入取小数位round(3.14159,3)=3.142中点数值四舍五入为近偶取整round(3.25,1)=3.2 log(num):取以e为底的对数num>0 exp(n):取e的n次幂通常用num^n sin(num):三角函数,以弧度为值计算(角度*Pai)/180=弧度con(num); tan(num);atn(num) 2.字符串函数: len(str):计算字符串长度中文字符长度也计为一! mid(str,起始字符,[读取长度]):截取字符串中间子字符串 left(str,nlen):从左边起截取nlen长度子字符串 right(str,nlen):从右边起截取nlen长度子字符串 Lcase(str):字符串转成小写 Ucase(str):字符串转成大写 trim(str):去除字符串两端空格 Ltrim(str):去除字符串左侧空格 Rtrim(str):去除字符串右侧空格 replace(str,查找字符串,替代字符串,[起始字符,替代次数,比较方法]):替换字符串 注:默认值:起始字符1;替代次数不限;比较方法区分大小写(0) InStr([起始字符,]str,查找字符串[,比较方法]):检测是否包含子字符串可选参数需同时选返回起始位置 InStrRev(str,查找字符串[,起始字符][,比较方法]):反向检测是否包含子字符串返回起始位置 space(n):构造n个空格的字符串 string(n,str):构造由n个str第一个字符组成的字符串 StrReverse(str):反转字符串 split(str,分割字符串[,次数][,比较方法]):以分割字符串为分割标志将字符串转为字符数组可选参数需同时选 3.数据类型转换函数:

WINCC c语言基础

要使对象动态化,在WinCC中有多种不同的选项可用。其中包括变量连接.动态对话框和直接连接。通过它们可以实现复杂的动态。然而,随着要求的增加它们会有限制。对于用户来说,组态C动作、项目函数或动作可以有更广的范围。它们在WinCC 脚本语言C中创建。对于许多应用来说,不必具备非常全面的C语言知识。它足以为现有函数提供参数。然而,为了使用WinCC脚本语言C的全部功能,需要具备有关这种编辑语言的基本知识。本课程可以为用户提供这些知识。 本课程用来为不熟悉C语言的人员提供有关编辑语言C的常规应用的基本知识。具备C语言编辑经验的编程员可以学习C语言应用于WinCC时的特性。 C脚本的开发环境 对于C脚本的创建,WinCC提供两个不同的编辑器。一个是图形编辑器中的动作编辑器,用于在对象处创建C动作;另一个是全局脚本编辑器,用于创建项目函数和全局动作。脚本语言的语法与采用ANSI的标准C语言相一致。 在WinCC中编辑语言C的另一个应用领域是关于动态向导的创建。为此,可以使用一个单独的编辑器。 图形编辑器的动作编辑器 在图形编辑器中,可以通过C动作使对象属性动作化。同样,也可以使用C动作来响应对象事件。 1.动作编辑器 对于C动作的组态,可以使用动作编辑器。此编辑器可以在对象属性对话框中通过以下方法打开,即点击鼠标右键期望的属性或事件,然后从显示的弹出式菜单中选择C动作。已经存在的C动作在属性或事件处用绿色箭头标记。 在动作编辑器中,可以编写C动作。对于属性的C动作,必须定义触发器。对于事件的C 动作,由于事件本身就是触发器所以不必再定义。完成的C动作必须进行编译,如果编译程序没有检测到错误,则可以通过单击确定退出动作编辑器 2.动作的结构 通常,一个C动作相当与C中的一个函数。C动作由两种不同类型:为属性创建动作和为事件创建的动作。通常,属性的C动作用于根据不同的环境条件控制此属性的值(例如变量的值)。对于这种类型的C动作,必须定义触发器来控制其执行。事件的C动作来响应此事件。 3.属性的C动作 #include apdefap h long-main(char* * *lpszPropertyName)

相关主题
文本预览
相关文档 最新文档