wincc的n个经典问题解答之三
- 格式:doc
- 大小:43.50 KB
- 文档页数:9
1、WINCC在进入某一画面时出现Unhandled exception was raised.Lookfile"c:\program Files\semens\w incc\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 | 标签:|字号大中小订阅/leishuang2005/blog/item/e6ce8c47654a2a046b63e50e.html我从别人那考了一个WINCC例子看可是为什么一打开就是显示“组态服务器不可用,是否打开项目,将本地计算机作为服务器”我点了启动本地服务器为什么总是错误,望高人指点问题在于你直接拷贝人家已经在使用的项目文件夹,哪个文件夹是共享的,特别是人家正在运行的项目,这样的项目文件直接复制过来是不能用的,会缺少文件.正确的复制方法:1)关闭正在运行的WINCC项目,可以在WINCC浏览器里关闭,也可以在开始彩单->运行->输入CMD ->在里面窗体输入命令RESET WINCC来强制关闭WINCC及相关文件.2)取消项目文件夹的共享标记.然后复制项目文件夹(当然项目中也可能调用其它可执行文件,这些你需要向设计方了解),也可以是WINCC安装路径里面的项目复制器复制项目到指定计算机.只有用这样的方法复制的项目文件才能保证WINCC功能部分软件是完整可用的(WINCC内部直接调用可执行文件的执行的功能除外).你如果是拷贝的整个项目的话,你需要启动本地服务器,然后更改项目里面的计算机名字为你的本机名字,然后关闭wincc再重新打开wincc。
WinCC实用问题问答1、wincc Online Table control 监测的数值有中间划横线、有后面是u的是什么意思?确保WinCC运行正常和通讯没有故障的情况下,出现这种现象的原因:1、归档变量的归档时间点不同;2、归档变量在wincc 在线表格控件中显示时,使用了公共的时间列。
解决方法:1、将要在wincc 在线表格控件中的归档变量的归档周期系数设置成相同、归档/显示周期设置也设置成相同。
2、指定定时器(归档/显示周期所使用的定时器)的循环起始点(如都指定为 0)。
3、取消激活项目,再重新激活项目。
2、两个WINCC和一个PLC通信还是各控制各的如果是前者的话用一个交换机就可以了具体的你可以参考西门子工业网络通讯指南这本书很全面的3、wincc运行时间久了,速度变慢是很正常的。
做一下处理很有必要删除历史数据感觉影响不大,关键是删除归档数据。
先做个备份,然后再删除。
另外,你要注意,有没有配方等数据存在数据库里,如果没有,可以放心删除,如果有,一定要仔细点。
还有,项目的文件,不要放在c盘,否则,系统会更快变慢4、我在笔记本上运行WInCC项目,可以正常运行,可以完成一些组态开发功能,下面提示栏显示变量305/许可证1024,但是我想要激活项目时,进度条第一条显示45%,第二条显示0,不再运行,而且没有任何提示,是什么原因呢?检查:a.项目路径是否有中文名;b.错误的脚本;b.否安装了STEP7,且版本有冲突;c.安装了中文版杀毒软件及防火墙(尤其是瑞星和金山毒霸),建议将你的杀毒软件卸掉;d.更改或删除了项目文件夹内的文件;计算机名、项目存放的完整路径中不能有中文5、用按钮执行settag脚本只能实现一次绑定,当执行之后外部变量如果变化,中间变量就不变化了,怎么样才能实现始终绑定在全局脚本中使用周期脚本比如两秒一个周期,脚本内容:SetTagFLoat("内部变量",GetTagFLoat("外部变量"));6、我用的是内部变量,想用变量模拟器来模拟液位的变化,前几步做完后,到最后一步start simulation是灰色的,为什么?变量模拟器需要在wincc运行时使用,先激活项目,然后开始菜单->SIMATIC->WinCC->Tools->WinCC Tag Simulator ,打开之后edit----->new tag----->选择你需要的变量properties---->选择变量发生类型,有线性的、随机的、布尔型的等。
wincc的经典问题解答123421: WINCC--如何在程序中动态修改用户密码1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#pragma code("UseGen.dll") #i ncl"USEGENAP.H"#pragma code()LPCMN_ERROR err; //定义的LPCMN_ERROR型变量,在函数调用中需使用if (PWGENConnect("CC_ass_04-09-21_16:35:22",err)) //建立与数据库的联接,其中CC_ass_04-09-21_16:35:22用第二步中记下的名称取代{ if (PWGENChangePassword(GetTagChar("user"),GetTagChar("oldp assword"),GetTagChar("password"),err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集{ //密码修改成功后的操作,如给用户提示等 }}PWGENDisconnect(err); //断开与数据库的联接4、编译运行程序5、工作完成6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。
22:WinCC6.0 中归档时和5.1版本为什么不同了?WinCC V6.0 的后台数据库采用了MS SQL Server 2000,所以归档方式与V5.1 有所不同,它的运行数据存放在数据片段(segment)当中,工程师可以根据尺寸需求组态最大容量或根据时间周期启动新的数据库归档片段。
如果需要使用WinCC冗余系统时,请仔细阅读下面的文档,它将解决以下几个问题:(1)WinCC冗余有什么样的功能?(2)需要购买什么样的授权?(3)应该安装在怎么样的系统上?(4)如何为用户配置操作系统的权限?(5)如何创建WinCC的冗余服务器项目?(6)如何创建WinCC的客户机?(7)如何诊断冗余错误和识别冗余工作状态?除此之外,对于需要引申的内容,该文档还提供了相关内容的链接地址和帮助路径,方便用户更加系统地学习WinCC冗余内容。
1.冗余系统简介WinCC冗余是两台互联的WinCC并行工作,并基于事件进行同步,提高了系统的可靠性。
WinCC冗余具有下列功能:(1)故障自动识别,故障恢复后自动同步变量记录、报警消息、用户归档。
(2)在线同步变量记录、报警消息、用户归档。
(3)服务器故障时,客户端自动切换到可用的服务器。
(4)自动识别伙伴服务器的状态,并实时显现主备服务器的工作状态。
(5)自动生成系统故障信息,及时发现服务器软件故障。
如果项目中有上述需求,WinCC冗余可以方便项目的实施。
2.搭建WinCC冗余项目的必要条件2.1 软件和授权表 012.2 安装系统环境建议使用Windows Server 2003或者Windows Server 2003 R2对于单用户的冗余系统,也可使用Windows XP操作系统。
更详细的兼容性列表,可以参考:3.组态WinCC冗余系统3.1 创建Windows用户在两台服务器上,创建相同的用户名和密码。
步骤:(1)在Windows开始管理工具计算机管理里面打开本地用户和组图 01(2)创建一个新用户或者使用默认的Administrator(3)对于新建用户,在隶属于中,为用户分配Administrator,SIMATIC HMI和SQLServer2005MSSQLUSER$本地计算机名称$WinCC三个用户组。
对于默认Administrator用户,检查是否属于上述三个组。
转自西门子网站WinCC Panel IPC/PG论坛,作者西门子Lemon使用 WinCC 有很多禁忌,违反了它们,可能会导致 WinCC 运行不正常,而且通常没有挽救方案。
以下总结了一些常见的禁忌,引以为戒。
1、计算机名称,变量名称等不要含有特殊字符,包括中文字符这些特殊字符或中文字符在某些情况下,将无法被 WinCC 正常解释,可能会导致WinCC 运行异常。
在 WinCC 在线帮助的“使用 WinCC〉使用项目〉附录〉非法的字符”中可以找到那些不允许使用的字符。
2、安装 WinCC 后,不要修改系统时间或时区时间作为项目归档数据的重要参数,如果混乱,将导致数据库紊乱。
/WW/view/en/20423033、WinCC 安装完成后,不要再更改计算机名称因为 WinCC 使用 SQL Server,更改计算机名称后,并非数据库中关联计算机名称的所有参数都能自动更新,这将导致在某些访问下会出错。
如果 WinCC 安装后,发现计算机名称不符合要求,那就请先卸载 WinCC,再卸载 SQL Server,然后再重新安装 SQL Server 和 WinCC 吧。
4、项目名称及存储项目的路径中不要包含中文热线上经常接到 WinCC 项目无法激活的问题,其原因就是项目路径中包含中文字符。
此时只需将项目另存为到纯英文的路径下即可。
5、登录计算机的用户名不要使用中文,密码不要为空默认情况下密码为空的用户权限受限。
虽然可以按照如下设置取消受限,但不建议这么做。
在 Windows 控制面板的“管理工具〉本地安全设置〉本地策略〉安全选项”中,账户:限制密码为空的账户的访问权限。
6、不要轻易修改操作系统的安全设置,DCOM 设置等参数对于 WinCC 的分布式应用,以及 OPC 应用中,这些参数至关重要。
如果由于擅自改动无法正常运行,可以按照如下操作恢复即可(适用于 WinCC 6.2 sp2 以上的版本):开始〉程序〉SIMATIC〉SIMATIC Security Control〉创建设置,单击“应用”按钮即可。
wincc的n个经典问题解答之三作者:激情如火,2005-12-27 17:23:00 发表于:《Siemens自好友发送留言部分非本人原创,整理在一起旨在给大家提供方便!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再定在Global Script全局脚本中C语言编程如下Union{Long DwordInt Word[2]}unionUnion.Dword=GetTagDword("PackageTag")SetTagWord("LTN44001",Union.Word[0])SetTagWord("LTN44023",Union.Word[0])这样两个参数LTN44001和LTN44023就通过一个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-cUID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;DBN=CC_testsql_99-12-03_12:48:26R;READE:\\testsql\\test.sql";printf("%s\r\n",a);ProgramExecute(a);}下面是一个简单的SQL文件内容:select * from pde#hd#t#test;output to E:\\test2.txt FORMAT ascii注意:文件名及路径中不要带空格。
新建WINCC项目的一些相关问题
一、如何与PLC建立连接?
1、添加S7 的通讯协议
2、TCP/IP网线连接:在TCP/IP 中添加:新建驱动程序连接;属性,配置IP 地址
注意:PROFIBUS连接的,也是同样步骤。
IP地址如何查看:STEP 7—打开对应项目—硬件—打开对应的通信模块的属性—诊断
或者打开组态网络查看
3、如果没有通讯上,查看驱动的系统参数是否设置正确。
二、关于激活上的问题
1、项目的存储目录和项目名称不能有中文,否则在激活过程中回卡在50%一直不下去。
尤其在需要运行变量记录系统等记录性的系统。
2、当遇到WINCC卡死时,有不想重启电脑,按win+R键,输入CMD,回车,输入reset_wincc 回车。
三、关于趋势图没有标尺数值,没有数据问题
1、建立归档变量,选择趋势图里需要的变量,利用归档向导添加变量
2、新建趋势画面,并设置曲线相关属性,及对应变量
3、标尺的数字显示,winCC 7.0中的标尺读数时单独控件,需要单独添加的
4、趋势图中的变量,在输入/输出框里是显示数字,但趋势图里不显示数据。
则需要设置计
算机属性。
1.Hresult Error产生的原因及解决方案2: Windows XP SP2下安装WinCC V6.0 SP3 Asia的安装步骤 :1、安装补丁程序WindowsXP-KB319740-v5-x86-CHS.exe 文件长度565 KB (578,800 字节)。
2、关闭Windows XP SP2下的Windows防火墙。
要关闭“Windows 防火墙”,请依次单击“开始”、“控制面板”、“网络和 Internet 连接”。
在“常规”选项卡上,单击“关闭”3、安装消息队列打开操作系统“开始”菜单并选择“设置” > “控制面板” > “添加或删除程序”。
单击左边菜单栏中的“添加或删除Windows组件”按钮。
“Windows组件向导”打开。
选择组件“消息队列”,“详细资料”按钮激活。
单击“详细资料”按钮。
对话框“消息队列”打开。
激活“公共”子部件。
注意取消激活其它所有的子组件,并“确定”进行确认。
4、安装Microsoft SQL Server 2000 SP3a加载SQLSERVER2K_SP3A_WINCC.ISO到虚拟光驱安装或虚拟磁盘,如果已经安装SQL Server2000,需要卸载磁盘文件夹映射成虚拟盘符SUBST [drive1: [drive2:]path]SUBST drive1: /Ddrive1: 指定要指派路径的虚拟驱动器。
[drive2:]path 指定物理驱动器和要指派给虚拟驱动器的路径。
/D 删除被替换的 (虚拟) 驱动器。
D:>subst x: D:MyResourcesWinCC6.0软件SQL_Serv_2k_SP3_winccD:>subst x: /d启动“WinCC V6.0的SQL Server 2000 Service Pack 3a”光盘。
选择条目“安装SQL Server 2000”。
如果需要中文版SQL Server2000 +SP4,可以在安装完成后,在重新安装,这样SQL Server2000将会有两个实例名:localhost,localhost/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的授权导入就完成了。
wincc考试题及答案一、选择题(每题2分,共20分)1. WinCC(Windows Control Center)是一种由哪个公司开发的软件?A. MicrosoftB. SiemensC. IBMD. Oracle答案:B2. WinCC通常用于什么领域?A. 办公自动化B. 企业资源规划C. 数据监控与控制D. 客户关系管理答案:C3. 在WinCC中,用于创建用户界面的组件被称为什么?A. 变量B. 设备C. 图形D. 脚本答案:C4. WinCC的哪一部分负责与PLC进行通信?A. 变量管理器C. 通信管理器D. 脚本编辑器答案:C5. 在WinCC中,可以用于实现自动化控制的编程语言是什么?A. VBScriptB. JavaScriptC. C#D. Python答案:A6. WinCC的报警记录功能可以用来做什么?A. 记录操作员的操作B. 记录系统错误C. 记录设备故障D. 记录所有上述情况答案:D7. 在WinCC中,趋势控件用于显示什么?A. 设备状态B. 系统日志C. 过程变量随时间的变化D. 用户权限答案:C8. WinCC的哪些功能可以帮助提高操作安全性?B. 报警系统C. 归档功能D. 所有上述选项答案:D9. WinCC的动态用户界面是如何实现的?A. 通过脚本B. 通过变量链接C. 通过设备驱动D. 通过通信协议答案:B10. WinCC的哪一项功能可以用于数据的长期存储?A. 实时数据库B. 归档数据库C. 历史记录D. 变量列表答案:B二、判断题(每题1分,共10分)11. WinCC只能与Siemens品牌的PLC进行通信。
(错误)12. WinCC支持多种语言界面,可以根据用户需求进行切换。
(正确)13. WinCC的脚本功能只能用VBScript编写。
(错误)14. WinCC的归档功能可以用于生成历史数据报告。
(正确)15. WinCC的用户管理功能可以设置不同的用户权限。
答:编写如下C-Action:#pragma code("");BOOL Beep(DWORD dwFreq,DWORD dwDuration);#pragma code();Beep(500,500);2、问:如何通过C脚本来确定报警信息答:首先必须在画面中插入报警控件,可以用如下两种方式来确认信息:(1)、确认单条信息4版本和高于此版本的WinCCBOOL OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)5版本和高于此版本的WinCCBOOL AXC_OnBtnSinglAckn(char*lpszPictureName,char*lpszObjectName)(2)、确认报警窗口所有可见的报警4版本和低于此版本的WinCCBOOL OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)5版本和高于此版本的WinCCBOOL AXC_OnBtnVisibleAckn(char*lpszPictureName,char*lpszObjectName)3、问:如何在WinCC中读取系统时间答:通过如下C-Action:#pragma code("");Void GetLocalTimes(SYSTEMTIME*lpst);#pragma code();SYSTEMTIME time;GetLocalTime(&time);SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;SetTagWord("Varname",;4、问:如何经Windows对话框设置日期时间答:通过调用Windows对话框实现。
wincc服务器等问题
1.一台服务器,多台客服机,只有服务器与plc连接?只有服务器组态画面等,客服机不用组态?
2.两台服务器,多台客服机,2台服务器做冗余。
只有2台服务器与plc连接?只有2台服务器组态画面等,客服机不用组态?2台服务器组态画面必须完全相同?
3.分布式结构服务器。
3台服务器,多台客服机,只有3台服务器与plc连接?只有3台服务器组态画面等,客服机不用组态?假若客服机也组态的,那客服机是直接与plc交换数据?客服机可以和服务器用同一组态画面程序吗?
4.wincc做opc服务器,它直接和plc数据交换吗,需要项目组态吗?wincc做opc客服机,它不和plc数据交换吗?
最佳答案
1、只有服务器与plc连接,客户机画面不需组态,但网络需要组态。
2、只有2台服务器与plc连接,客户机画面不需组态,但网络需要组态,2台服务器组态画面必须完全相同。
3、只有3台服务器与plc连接,客户机画面不需组态,但网络需要组态,客户机只与服务器交换数据,客户机可以和服务器用同一组态画面程序。
4、wincc做opc服务器或者opc客户机,和不和plc数据交换取决于需要,当然需要组态。
如果需要使用WinCC冗余系统时,请仔细阅读下面的文档,它将解决以下几个问题:(1)WinCC冗余有什么样的功能?(2)需要购买什么样的授权?(3)应该安装在怎么样的系统上?(4)如何为用户配置操作系统的权限?(5)如何创建WinCC的冗余服务器项目?(6)如何创建WinCC的客户机?(7)如何诊断冗余错误和识别冗余工作状态?除此之外,对于需要引申的容,该文档还提供了相关容的地址和帮助路径,方便用户更加系统地学习WinCC冗余容。
1.冗余系统简介WinCC冗余是两台互联的WinCC并行工作,并基于事件进行同步,提高了系统的可靠性。
WinCC冗余具有下列功能:(1)故障自动识别,故障恢复后自动同步变量记录、报警消息、用户归档。
(2)在线同步变量记录、报警消息、用户归档。
(3)服务器故障时,客户端自动切换到可用的服务器。
(4)自动识别伙伴服务器的状态,并实时显现主备服务器的工作状态。
(5)自动生成系统故障信息,与时发现服务器软件故障。
如果项目中有上述需求,WinCC冗余可以方便项目的实施。
2.搭建WinCC冗余项目的必要条件2.1 软件和授权表012.2 安装系统环境建议使用Windows Server 2003或者Windows Server 2003 R2对于单用户的冗余系统,也可使用Windows XP操作系统。
更详细的兼容性列表,可以参考:87957163.组态WinCC冗余系统3.1 创建Windows用户在两台服务器上,创建相同的用户名和密码。
步骤:(1)在Windows开始管理工具计算机管理里面打开本地用户和组图01(2)创建一个新用户或者使用默认的Administrator(3)对于新建用户,在隶属于中,为用户分配Administrator,SIMATIC HMI和SQLServer2005MSSQLUSER$本地计算机名称$WinCC三个用户组。
对于默认Administrator用户,检查是否属于上述三个组。
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 DwordInt Word[2]}unionUnion.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-cUID=DBA;PWD=SQL;DBF=E:\\testsql\\testsqlRT.DB;DBN=CC_testsql_99-12-03_12:48:26R;READE:\\testsql\\test.sql";printf("%s\r\n",a);ProgramExecute(a);}下面是一个简单的SQL文件内容:select * from pde#hd#t#test;output to E:\\test2.txt FORMAT ascii注意:文件名及路径中不要带空格。
43:如何整点启动归档?在"Global Script"下的Project functions编写函数:cyclicarchive BOOL cyclicarchive(){#pragma code ("kernel32.dll");void GetLocalTime (SYSTEMTIME* lpst);#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下的Archiving type选标签下的"Start Event"内选择cyclicarchive函数。
44:如何在按键组合被禁用的情况下,从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 ("\r\n SetForeground fails");WinCC 5.0版本以及更高的版本:#pragma code("user32.dll");BOOL SetForegroundWindow(HWND);#pragma code();HWND handle;handle=FindWindow("WinCCExplorerFrameWndClass",NULL);If (!SetForegroundWindow(handle))Printf ("\r\n SetForeground fails");45:WinCC如何实现鼠标OnMouseOVer事件?用WINDOWAPI函数GetCusorPos获取当前鼠标位置,用GetWindowRect函数获取窗口位置,两值对位置。
用全局脚本(设定为1s定时刷新),然后获取要OnMouseOver事件的物体的位置,并与己定义的动作。
#i nclude "apdefap.h"int gscAction( void ){#pragma code("user32.dll");BOOL GetCusorPos(POINT lpPoint); //获取鼠标的位置(绝对位置-对应屏幕分辨率)BOOL GetWindowRect(HWND hwnd,LPRECT lpRect); //获取窗体位置#pragma code();POINT pPos;RECT rRec;HWND hwnd;BOOL bRet,bRet2;long lLeft,lTop,lWidth,lHeight;long lX,lY;char szStr[100];hwnd=FindWindow(NULL,"WinCC-Runtime - "); //如语言为中文应为"WinCC 运行系统-"if (hwnd==0) {printf("\r\nError! WinCc Handle is %d",hwnd);goto over;}bRet=GetCursorPos(&pPos);if (bRet==0) goto over;bRet2=GetWindowRect(hwnd,&rRec);if (bRet2==0) goto over;lX=pPos.x-rRec.left; //鼠标对{置lY=pPos.y-rRec.top; //鼠标位置//如果为非全屏模式,需将上述数值中的高height判断减去标题栏的宽度//printf("The Current Cusor Pos is x:%d,y:%d\r\n",pPos.x,pPos.y);//printf("The Cusor Pos in Window is x:%d,y:%d\r\n",pPos.x-lLeft2,pPos.y-lTop2); lLeft=GetLeft("NewPdl0.Pdl","Text1"); //Return - Type :long intlTop=GetTop("NewPdl0.Pdl","Text1"); //Return - Type :long intlWidth=GetWidth("NewPdl0.Pdl","Text1"); //Return - Type :long intlHeight=GetHeight("NewPdl0.Pdl","Text1"); //Return - Type :long intif ((lX>=lLeft)&&(lY>=lTop)&&(lX<=lLeft+lWidth)&&(lY<=lTop+lHeight)) {sprintf(szStr,"%d,%d",lX,lY);SetText("NewPdl0.Pdl","Text1",szStr); //Return - Type :char*}//printf("The Text1 Pos is x:%d,y:%d\r\n",lLeft2,lTop-lTop2);over:return 0;}46:如何实现ASP与WinCC V6数据库sql server 2000的连接?WinCC V6用ODK获取DSN名,{后生成网址字符串,再用shellExecuteA函数打开网页//----------------------------------------------------------------------------------#pragma code("shell32.dll")long ShellExecuteA(HWND,LPCTSTR,LPCTSTR,LPCTSTR,LPCTSTR,int);#pragma code()char dsnStr[100];HWND hwnd;sprintf(dsnStr,"http://dcount/test.asp?dsnStr=%s",GetDSN(1)); //Return-Type: LP printf("\r\n%s",dsnStr);hwnd=FindWindow(NULL,"WinCC - Runtime ");ShellExecuteA(hwnd,"open",dsnStr,NULL,"C:\\",SW_SHOWNORMAL);//----------------------------------------------------------------------------------ASP方面需要注意的是连接字符串的形式与普通acess ODBC不太一样,而且需要用户名和密码由于WINCC封装的sa用户的密码暂时不知道,所以必须用SQL Server EnterPrise Manager建立system Administrator权限就可以了!否则会出现错误提示Microsoft OLE DB Provider for SQL Server 错误 '80040e4d'Login failed for user 'sa'.'-----------------------------------------------------------------------------------dsnStr=request("dsnStr")set conn=server.createobject("adodb.connection")set rs=server.createobject("adodb.recordset")conn.Provider = "sqloledb"conn.open "Server=DCOUNT\WINCC;Database=" & dsnStr & ";UID=dcount;pwd=;"rs.open "select * from test",conn,1,1response.write rs.recordcountdo while not rs.eofresponse.write rs("f1") & "---" & rs("f2") & "---" & rs("f3")rs.movenextlooprs.closeconn.close47:如何在退出WINCC监控时直接关闭电脑?1.利用动态向导2.在脚本中加入 DMExitWinCCEx (DM_SDMODE_SYSTEM);也可以48:如何通过WINCC API函数读出当前报警消息?1、使用GMsgFunction中读出当前报警信息的ID(dwMsgNr);2、使用MSRTGetMsgCSData函数读出该报警信息ID对应文本库TEXTLIB中的文本ID(dwTex3、使用MSRTGetMsgText函数读出该文本ID的文本。