1、SIMATICSIMATIC HMISIMATIC WinCC 相关连接 2003-9-23 9:26:01 95 如何触发计算机扬声器的声音? 首先必须在画面中插入报警控件,可以用以下两种方式来确认信息: 可以用如下的函数来确认单条信息: 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*lpszObje 如何实现从 WinCC 运行画面跳转至 WinCC 控制中心? 最好的方式是在 WinCC 运行画面上做一个按钮,该按钮应该置为密码保护,在该按钮上设置 C-action。 低于 WinCC V5.0: #pragma code(“user32.dll“) Bo
3、ol SetForegroundWindow(HWND); #pragma code() HWND handle; Handle=FindWindow(“MCPFrameWndClass“,NULL); If(!SetForegroundWindow(handle)printf(“rn SetForeground fails“); 5.0 版本和高于此版本的 WinCC: #pragma code(“user32.dll“) Bool SetForegroundWindow(HWND); #pragma code() HWND handle; Handle=FindWindow(“WinCCE
4、xplorerFrameWndClass“,NULL); If(!SetForegroundWindow(handle) printf(“rn SetForeground fails“); 如何在 WinCC 中读取计算机系统时间? 可以编写如下的 C-action: #pragma code(“kernel32.dll“); Void GetLocalTimes(SYSTEMTIME* lpst); #pragma code(); SYSTEMTIME time; GetLocalTime( SetTagWord(“Varname“,time.wYear ); SetTagWord(“Var
5、name“,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 ); 如何经由 Windows 对话框设置日期和时间? 可以将修改日期、时间的 Windows 对话框调出来,调
6、用程序如下: #include “apdefap.h“ void onClick(char*lpszPictureName,char*lpszObjectName, char* lpszPropertyName) ProgramExecute(“C:WIN95control.exe timedate.cpl“); 注意:您在使用此程序时,需根据您的 Control Panel 安装的具体路径来填写。 如何在 WinCC 里用 C 语言调用 SQL 语言? 1、创建一个 SQL 文件。 此文件在 ISQL 中创建,文件内容是所希望执行的 SQL 语句。 2、在 WinCC 的 C Script
7、中编写程序调用此 SQL 文件,如以下程序所示: #include “apdefap.h“ void OnLButtonDown(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) char*a=“C:SIEMENSCommonSQLANYISQL-q-b-c UID=DBA;PWD=SQL;DBF=E:testsqltestsqlRT.DB; DBN=CC_testsql_99-12-03_12:48:26R;READ E:testsqltest.sql
8、“; printf(“%srn“,a); ProgramExecute(a); 下面是一个简单的 SQL 文件内容: select * from pde#hd#t#test; output to E:test2.txt FORMAT ascii 注意:文件名及路径中不要带空格。 如何整点启动归档? 在“Global Script“下的 Project functions 编写函数:cyclicarchive BOOL cyclicarchive() #pragma code (“kernel32.dll“); void GetLocalTime (SYSTEMTIME* lpst); #pra
9、gma code(); SYSTEMTIME time; Int t1; GetLocalTime( t1=time.wMinute; if(t1=00) SetTagBit(“startarchive“,1); return(BOOL)(GetTagBit(“startarchive“); 在 Tagloging 中的“Properties of process tag“中的“Archive Tag“tab 下的 Archiving type 选择 Cycle-selective,在“Event“标签下的“Start Event“内选择 cyclicarchive 函数。 如何在按键组合被禁
10、用的情况下,从 WinCC 运行环境进入 WinCC Control Center? 最好是做一个按钮,该按钮需要用用户权限保护,在该钮中编写如下 C-action: 低于 WinCC 5.0 版本: #pragma code (“user32.dll“); BOOL SetForegroundWindow(HWND); #pragma code(); HWND handle; handle=FindWindow(“MCPFrameWndClass“,NULL); If (!SetForegroundWindow(handle) Printf (“rn SetForeground fails“
11、); WinCC 5.0 版本以及更高的版本: #pragma code(“user32.dll“); BOOL SetForegroundWindow(HWND); #pragma code(); HWND handle; handle=FindWindow(“WinCCExplorerFrameWndClass“,NULL); If (!SetForegroundWindow(handle) Printf (“rn SetForeground fails“); 怎样对一个 WinCC 的项目进行转换? 当对一个 V4.X 版本的 WinCC 项目升级到 5.X 时,V4.X 下的项目必须进
12、行版本转换。若使用“交叉索引“编 辑器时,必须保证项目已进行了正确无误的转换。 项目转换分下列几步依次完成: 在 WinCC 资源管理器中,选中图形编辑器,击鼠标右健。 1.全局库的转换 在弹出下拉菜单中选中“转换全局库“条目,系统会自动对全局库进行转换, 转换结束后退出。 2.项目库的转换 在弹出下拉菜单中选中“转换项目库“条目,确认后系统自动对库进行转换。 3.图形画面转换 在弹出下拉菜单中选中“转换画面“条目,在弹出画面按“确认“后,系统自动进行所有画面的转换。 注意:包含有“未定义对象“的画面,如在 PC 机上未装相应对象服务器的,决不要转换, 否则画面会被损坏。 4.基本数据转换 分
13、屏向导:在 WinCC 资源管理器中,打开分屏向导(在基本数据项下)的弹出式菜单,并选择“打开“条目。 报警记录向导:在 WinCC 资源管理器中,打开报警记录向导的弹出式菜单(在基本数据项下),并选择“ 打开“条目。 我用 WinCC Web Navigator 时,为什么总是提示错误信息“The maximum permissible number of user is connected to the WinCC-Server“? 您使用 WinCCV5/SP1 和 Web NavigatorV1.0 时,您看到以上错误信息,错误原因是: 实际用户数目超过授权数量限制。 措施:升级 We
14、bNavigator,使其能支持更多的客户端。 缺少授权,WinCC 会提示您所缺少的授权。 措施:添加所缺的授权。 未将“WebNavigatorRT.exe“加在 WinCC 启动列表中。 措施:将此文件加入 WinCC 的启动列表中。 Sound output by C script in WinCC Sound output by C script in WinCC This entry is available in the following languages: Entry ID: 748844 Date: 06/11/2002 QUESTION: How can I outpu
15、t a sound via C script in WinCC? ANSWER: Attached is a small example. This C action is behind a button, so that you just click to the button to produce a sound. C action: #include “apdefap.h“ void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y)
16、 #pragma code (“Winmm.dll “) VOID WINAPI PlaySoundA ( char* pszSound, char* hmode, DWORD dwflag ); #pragma code() PlaySoundA(“C:Winnt.400Mediatada.wav“,NULL,1); Requirement for this function is a sound card. Explanation of the PlaySoundA function: 1. Parameter char* pszSound: Here you specify the co
17、mplete path to where your sound file (*.wav file) is located. 2. Parameter char* hmode: Here you always specify 0. 3. Parameter DWORD dwflag. SND_SYNC = 0x0000: sound file is played once and the script waits until it has been played to the end SND_ASYNC = 0x0001: sound file is played once, the scrip
18、t is processed in parallel SND_NODEFAULT = 0x0002: if the sound file is not found, then no default value is played, but nothing at all. SND_LOOP = 0x0008: repeats the sound file until the next PlaySoundA call comes (only possible with 0x0001) = always specify 0x0009. These parameters can also be com
19、bined but bit-by-bit Ors (e.g.: SND_ASYNC | SND_LOOP) Note: If you want to use the beep of the computers internal loudspeaker instead of a sound file, then implement the following script: Since the internal loudspeaker is addressed, there is no need for a sound card. #include “apdefap.h“ void OnClic
20、k(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName, UINT nFlags, int x, int y) #pragma code (“Kernel32.dll“) BOOL Beep( DWORD dwFreq, DWORD dwDuration); /dwFreq defines the frequency of the beep in hertz /dwDuration specifies the duration of the beep in milliseconds #pragma code()
21、 Beep(1000,100); /Example: frequency 1000 hertz, 100 milliseconds Give us your feedback. Questions / suggestions re this Entry ID WINCC 系统报警消息说明系统报警消息说明 编号 错误消息/描述 1000000 WCCRT:出错 1000100 WCCRT:驱动程序出错 1000200 WCCRT:状态 1000300 WCCRT:驱动程序状态 1001000 PDLRT:常规错误 1001001 PDLRT:操作员动作未激活 1001002 PDLRT:错误的画
22、面格式 1001003 PDLRT:画面未找到 1001004 PDLRT:画面中无动态激活 1001005 PDLRT:变量不能写 1001006 PDLRT:在画面中,动态动作未激活 1002000 TLGRT:常规错误 1002001 TLGRT:在初始化时出错 1002002 TLGRT:装载运行系统数据时出错 1002003 TLGRT:语言切换时出错 1002004 TLGRT:访问数据库时出错 1002005 TLGRT:建立运行系统对象时出错 1002006 TLGRT:在线组态时出错 1002007 TLGRT:在客户机/服务器环境中出错 1002008 TLGRT:在存储器
23、管理中出错 1002009 TLGRT:记录测量值时出错 1002010 TLGRT:处理记录测量值时出错 1002011 TLGRT:归档测量值时出错 1002012 TLGRT:格式 DLL 出错 1002013 TLGRT:在用户归档选项中出错 1002014 TLGRT:过程控制归档时出错 1002015 TLGRT:API 出错 1002016 TLGRT:应用程序窗口出错 1002017 TLGRT:系统错误 1002018 TLGRT:错误 数据库队列溢出 1003018 ALGRT:消息不需要确认,试图确认不需要确认的消息。 1003019 ALGRT:消息已经确认,试图确认已
24、经确认的消息。 1003020 ALGRT:消息等级未找到,属于该消息的消息等级不存在。 1003021 ALGRT:不能处理消息状态,不能解释消息的状态(到达、离开、确认.)。 1003022 ALGRT:消息被锁定,通过 API 试图触发被锁定的消息时出现消息。 1003023 ALGRT:消息日期/时间标志无效,不能解释来自 PLC 的日期/时间标志。 1003032 ALGRT:消息窗口模板的名称未知,在图形编辑器中已组态好的消息窗口在随后被删除时,出现 错误。在客户机-服务器项目中,网络通讯上的问题也会产生消息。 1003033 ALGRT:不能创建消息窗口。 1003034 ALG
25、RT:消息窗口 - 数据无效组态数据错误。 1003048 ALGRT:位在变量范围之外 例如:试图寻址一个 16 位变量的第 18 个位。 1003049 ALGRT:无变量改变 1003050 ALGRT:消息变量(位)已经被消息占用。消息变量的位已经互连到消息。 1003051 ALGRT:确认变量(位)已经被消息占用,确认变量的位已经与消息互连。 1003052 ALGRT:状态变量(位)已经被消息占用。状态变量的位已经与消息互连。 1003053 ALGRT:转换变量数据类型时出错 1003054 ALGRT:消息变量(位)已经分配到其它类型 1003055 ALGRT:事件-变量或
26、变量类型无效,消息变量的数据类型无效。例如:试图使用一个有符号的变 量。 1003056 ALGRT:确认-变量或变量类型无效,确认变量的数据类型无效。例如:试图使用一个有符号的变 量。 1003057 ALGRT:状态-变量或变量类型无效,消息变量的数据类型无效。例如:试图使用一个有符号的变 量。 1003058 ALGRT:处理无效,通过 API 访问时会发生错误消息。 1003059 ALGRT:选择标准无效,通过 API 访问时会发生错误消息。 1003060 ALGRT:资源-语言 DLL 无效,其中一个依赖于语言的文件丢失。 1003061 ALGRT:创建存储器映射文件时出错,该
27、内部错误指示存储器问题。 1003062 ALGRT:创建同步机制时出错。操作系统过载时出错。 1003063 ALGRT:错误参数,通过 API 访问时会发生错误消息。 1003064 ALGRT:传送缓冲区太小,通过 API 访问时会发生错误消息。 1003065 ALGRT:功能当前不可用,通过 API 访问时会发生错误消息。 1003066 ALGRT:不能分析格式化 DLL 传送数据 1003067 ALGRT:格式化 DLL。不能执行功能 1003068 ALGRT:在报表中无消息块,检查消息顺序报表。 1003069 ALGRT:无效的报表标识符 1003070 ALGRT:报表
28、打印输出已经激活,试图再次启动一个已经激活的报表。 1003071 ALGRT:消息系统-运行系统 没有初始化,服务器报告在没有报警记录运行系统组件的 情况下激活项目。 1003072 ALGRT:消息顺序报表的打印输出没有开始。 1003073 ALGRT:短期归档报表的打印输出没有开始。 1003074 ALGRT:长期归档报表的打印输出没有开始。 1003075 ALGRT:可以在线组态的最大消息数超出可以在线组态的消息数。在线组态的消息号超出(缺省 设置 600)。 1003076 NRMS7:S7-DOS 参数错误到 S7-DOS 的接口发生参数错误。 1003077 NRMS7:A
29、LGRT 参数错误,到 ALGRT 的接口发生参数错误。 1003078 NRMS7:TLGRT 参数错误,到 TLGRT 的接口发生参数错误。 1003079 NRMS7:带有附加数据的参数错误,消息的附加数据错误。 1003080 NRMS7:AR_SEND 汇编时参数出错,AR-SEND-用户数据的汇编出错。 1003081 NRMS7:常规错误,发生了一个不能被明确指出的内部错误。 1003082 NRMS7:消息丢失,通讯过载。消息会丢失。 1004000 RPTRT:常规错误 1005000 TXTRT:常规错误 1005001 TXTRT:退出运行系统应用程序时出错 100500
30、2 TXTRT:登录运行系统应用程序时出错 1005003 TXTRT:MMF 初始化时出错。显示一个存储器错误。 1005004 TXTRT:装载 MMF 时出错。访问数据库时出错 1005005 TXTRT:打开 MMF 时出错。显示存储器错误。 1005006 TXTRT:创建服务窗口时出错。 1005007 TXTRT:未发现语言。 1005008 TXTRT:未发现文本 ID。未在文本库中发现请求的文本 ID 1005009 TXTRT:拒绝到 MFF 的读访问。 1005010 TXTRT:未发现语言。在文本库中未组态请求的语言。 1005011 TXTRT:不能打开语言表格,数据
31、错误或在数据库中表格被锁定。 1005012 TXTRT:不能打开文本表格。,数据错误或在数据库中表格被锁定。 1005013 TXTRT:无效的语言指定。,指定的语言 ID 无效。 1005014 TXTRT:DB 连接出错,没有到建立到数据库的连接。 1006000 GSCRT:错误 1007000 SCRIPT:溢出,溢出;在过短的周期内完成太多的动作或动作暂停(无终止的回路,对话框输出) 以及所有其它的动作排队等待和不能被处理。 1007001 SCRIPT:动作错误 发生下列错误中的一种: - 异常动作 (未知的原因) - 访问返回结果时异常(相关存储器的 char*无效) - 动作
32、执行时成批数据溢出 - 动作中除以 0 - 在动作时访问不存在的图标 - 在动作中访问超出范围对于 WinCC V4.0 版本, 可以链接 OnErrorExecute 函数到脚本用于更精确的错误分 析。 1007002 SCRIPT:溢出,内部列表已经溢出。 1007003 SCRIPT:连接错误,服务器连接中断。 1007004 SCRIPT:动作错误 1,调用的函数未知。确定函数调用正确拼写和正确执行。 1007005 SCRIPT:动作错误 2,错误可以有多种原因: -动作不包含 P 代码。重新编译动作。 -函授不能装载是因为例如,函数名称不正确。 -函数返回值的类型无效。对于 Win
33、CC V4.0 版本,可以链接 OnErrorExecute 函数到脚本用于更精确的错误 分析。 1007006 SCRIPT:变量错误 在 10 秒钟内控制系统没有发送请求的变量。确保变量名称拼写正确。对于外部变量,在控制中心和控件中 可能出现通讯问题。对于 WinCC V4.0 版本,可以链接 OnErrorExecute 函数到脚本用于更精确的错误分析。 1007007 SCRIPT:信息,为内部用途保留。 1007009 SCRIPT:线程错误,为内部用途保留。 1008000 USERT:到芯片卡阅读器的连接中断 1008001 USERT:登录名称/口令失败 1008002 USE
34、RT:通过芯片卡登录名称/口令错误 1008003 USERT:手动登录 1008004 USERT:通过芯片卡登录 1008005 USERT:手动退出 1008006 USERT:通过芯片卡退出 1008007 USERT:通过时间控制自动退出 1009000 LBMRT:错误 1010000 STRRT:错误 1010001 Storage:错误或在 LW 归档中充满数据介质 1010002 Storage:在归档应用程序中的内部错误 1011000 CSIG:错误 1011001 CSIG:不更新组显示层次 1012001 SYNC:当前时间主站故障 1012002 SYNC:信号质量
35、差/故障 1012003 SYNC:不能存放时间电报 1012004 SYNC:不能接收时间电报 1012200 REDRT:伙伴站故障 1012201 REDRT:伙伴站重启动 1012202 REDRT:项目在功能上不一致 1012203 REDRT:归档比较错误 1012204 REDRT:冗余的内部错误 1012205 REDRT:到伙伴站的连接错误 1012206 REDRT:重新建立到伙伴站的连接 1012207 REDRT:伙伴服务器-WinCC 未激活 1012208 REDRT:归档比较开始 1012209 REDRT:归档比较结束 1012210 REDRT:变量记录比较
36、1012211 REDRT:变量记录比较结束 1012212 REDRT:报警记录比较 1012213 REDRT:报警记录比较结束 1012214 REDRT:用户归档比较 1012215 REDRT:用户归档比较结束 1012216 REDRT:中断比较 1012217 SWITCH:自动切换客户机 1012218 SWITCH:手动切换客户机 1013000 SWRED:最初连接 1%s 出错 1013001 SWRED:最初连接 1%s 准备 1013002 SWRED:保留连接 1%s 出错 1013003 SWRED:保留连接 1%s 准备 出现出现 WINDOWS 的选择对话框的
37、选择对话框 # include “apdefap.h” void Onclick(char* lpszPictureName,char* lpszObjectName, char* lpszProper) HWND hwnd=NULL; hwnd=FindWindow(NULL,”Wincc c-course”); MessageBox(hwnd,”wincc c-course raised unkown Exeption!”,”Error”,Mb_ok|MB_ICONSTOP|MB_APPLMODAL); 确认按钮 MB_OK 显示出错符号 MB_ICONSTOP 处于模态 MB_APPLM
38、ODAL 是/否按钮 MB_YESNO (系统内部返回值 YES 为 6,NO 为 7) 问号 MB_ICONQUESTION 操作许可脚本:操作许可脚本: 作用:可以通过校验登陆用户的权限使某些操作屏蔽。作用:可以通过校验登陆用户的权限使某些操作屏蔽。 #pragma code (“UseAdmin.DLL“) #include “pwrt_api.h“ #pragma code () #define NO_MESSAGEBOX 1 CMN_ERROR err; DWORD pwlevel = 0; pwlevel = (DWORD) GetPasswordLevel(lpszPictureName,lpszObjectName); if (pwlevel=0) return(TRUE); else return(PWRTCheckPermissionOnPicture(pwlevel,lpszPictureName,NO_MESSAGEBOX,