wincc的n个经典问题解答
- 格式:doc
- 大小:76.50 KB
- 文档页数:18
1、Wincc online trend控件实现多条曲线查询项目要求,查询任意时段内的两条曲线的历史数据1、首先在变量记录中设置需要记录的变量,如果需要在一个控件内显示两条曲线,做数据归档时,归档属性最好是一致的,归档属性不一样是否会出现问题,这个没测试,有兴趣的可以测试一下。
2、数据记录设置OK后,新建画面插入online trend控件,我的项目需要把趋势打印出来,所以把控件的工具栏全部隐藏。
3、双击online trend控件,添加需要显示的归档变量。
选择公共X,Y轴等参数。
坐标显示根据自己使用选择,基本上不用设置太多参数。
4、添加需要显示的历史归档变量后,就需要写脚本了,西门子工控网论坛有实例,实例提示针对于一条曲线时使用,咨询西门子技术支持,如果需要同时显示两条曲线时,需要对两条曲线分别进行设置属性“控件.index=0,1”,但是测试其实只设置index=0的起始及结束时间就OK,就是论坛给的实例不是只针对于一条曲线,两条曲线时同样适用,再多的曲线就没测试了。
5、西门子默认的时间格式为“MM-DD-YYYY HH-MM-SS”格式,所以在设置趋势起始及结束时间时需要注意。
6、注:导入归档数据需要一定的时间,建议按钮触发。
尝试在画面打开时触发脚本,有的时候会出现历史数据加载不上来。
7、脚本如下,仅供参考Dim objConnectionDim strConnectionStringDim strSQLDim objrsDim chaxun'定义曲线控件Dim TRENDDim strval_1Dim strval_2Dim strval_t1Dim strval_t2'初始化程序,省略N行。
'初始化程序,省略N行。
chaxun=HMIRuntime.Tags("管号查询输入").Read strConnectionString = "Provider=MSDASQL;DSN=REPORT;UID=;PWD=;" strSQL = "select * from report where guanhao='"&chaxun&"';"Set objConnection = CreateObject("ADODB.Connection") objConnection.ConnectionString = strConnectionString objConnection.OpenSet objrs = CreateObject("ADODB.RecordSet")objrs.open strSQL,objConnection/赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,//赋值程序,省略,,,,,,,,,,,,,,,,,,,,,,/objrs.closeSet objrs = NothingobjConnection.CloseSet objConnection = Nothing'趋势时间设定Set trend = ScreenItems("控件1")strval_r=HMIRuntime.Tags("测试日期_read").Readstrval_t1=HMIRuntime.Tags("开始时间_read").Readstrval_t2=HMIRuntime.Tags("测试时间_read").Readstrval_1=strval_r+" "+strval_t1strval_2=strval_r+" "+strval_t2trend.Index=0trend.Online=Falsetrend.TimeRange=Falsetrend.BeginTime=strval_1trend.EndTime=strval_2mand="Reload"实际效果如下:2、Wincc ODBC连接ACCESS数据库,MshflexGird控件显示数据1、wincc自带安装SQL数据库,连接不上,退而求其次只能使用ACCESS数据库了,好多人说ODBC方法过时了,但是对于我们这些对数据查询量较小,查询频率较低的高级语言初学者来说,该方法还是比较实用。
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 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之经典问题1、问:如何触发计算机扬声器的声音?答:编写如下C-Action:#pragma code("kernel32.dll");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("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对话框实现。
新建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,互相不影响,也可单独卸载某个实例。
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 | 标签:|字号大中小订阅/l eishuang2005/blog/item/e6ce8c47654a2a046b63e50e.html我从别人那考了一个WINCC例子看可是为什么一打开就是显示“组态服务器不可用,是否打开项目,将本地计算机作为服务器”我点了启动本地服务器为什么总是错误,望高人指点问题在于你直接拷贝人家已经在使用的项目文件夹,哪个文件夹是共享的,特别是人家正在运行的项目,这样的项目文件直接复制过来是不能用的,会缺少文件.正确的复制方法:1)关闭正在运行的WINCC项目,可以在WINCC浏览器里关闭,也可以在开始彩单->运行->输入CMD ->在里面窗体输入命令RESET WINCC来强制关闭WINCC及相关文件.2)取消项目文件夹的共享标记.然后复制项目文件夹(当然项目中也可能调用其它可执行文件,这些你需要向设计方了解),也可以是WINCC安装路径里面的项目复制器复制项目到指定计算机.只有用这样的方法复制的项目文件才能保证WINCC功能部分软件是完整可用的(WINCC内部直接调用可执行文件的执行的功能除外).你如果是拷贝的整个项目的话,你需要启动本地服务器,然后更改项目里面的计算机名字为你的本机名字,然后关闭wincc再重新打开wincc。
当运行时消息出现时,如何在用户指定的"GMsgFunction()"动作中确定消息文本和过程值?使用说明:在组态消息时,如果设置了属性 "This message triggers an action" , 那么运行时当有指定消息事件(到来,离开,被确认...)时,动作将会被触发。
( 15 KB )图. 01在此 C动作中,可以自己编程来响应指定的报警事件。
"GMsgFunction()" 作为默认的动作被调用。
有关"GMsgFunction()" 的详细的信息:• WinCC 信息系统下的 "Working with WinCC > ANSI-C for Creating Functions and Actions > Function description > Standard Functions > Alarm > GMsgFunction"•条目24842903 - 该条目描述了当该动作执行时的报警事件和"Status" ("St:")数值的意义。
利用该值可以在动作中确定报警的状态。
如果某些情况下,想要用户指定的动作在特定的报警事件(到来,被确认,消息发送或堵塞)时被执行,那么这个状态值和重要。
"GMsgFunction()" 函数可以在全局脚本编辑器中的 "Standard functions > Alarm > GMsgFunction"中找到。
下面下载例子中的 "GMsgFunction()"提供了两个例程,分别判断消息文本和过程值。
GMsgFunction.zip ( 8 KB )重要事项:•确定在修改文件"gmsgfunc.fct" (../Siemens/WinCC/aplib/Alarm)前,先保存原始备份。
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的n个经典问题解答1、问:如何触发计算机扬声器的声音?答:编写如下C-Action:#pragma code("kernel32.dll");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("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,char*lpszPropertyName){ProgramExcute("c:\\win98\\control.exe timedate.cpl");}其中执行的程序路径,需根据具体情况填写。
5、问:如何在WinCC中调用SQL语言?答:1、创建一个SQL文件,此文件在ISQL中建立,文件内包含所要执行的SQL语句。
Windows对话框实现。
具体如下:2、在WinCC中用C Script 调用上述SQL文件,如下所示:#include"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);ProgramExcute(a);}下面是一个简单的SQL文件内容:select *from pde#hd#t#test;output to e:\\test2.txt FORMAT ascii注意:文件名及路径中不要带空格。
6、问:如何整点启动归档?答:在"Globle Script"下的Project function编写程序函数:cyclicarchiveBOOL 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.#include "apdefap.h"void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName){BOOL z;z=GetTagBit("MyBitVariable");if (z==0)SetTagBit("MyBitVariable",1);elseSetTagBit("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 millisecondsWarning: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"21:WINCC--如何在程序中动态修改用户密码1、点击“开始”--》“设置”--》“控制面板”--》“管理工具”--》“数据源(ODBC)”,打开ODBC数据源管理器2、在用户DSN页面的用户数据源中找到与当前项目所关联的一项,其名称为“CC_项目名_项目建立日期时间”,记下该项的名称3、在脚本中加入以下代码:#pragma code("UseGen.dll")#include "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("oldpassword"),GetTagChar("passw ord"),err)) //修改密码,user,oldpassword,password分别为存贮用户名,原密码,新密码的内部变量,类型为文本变量8位字符集{//密码修改成功后的操作,如给用户提示等}}PWGENDisconnect(err); //断开与数据库的联接4、编译运行程序5、工作完成6、与用户管理相关的函数定义存贮在APPLIB目录下的USEGENAP.H文件中,可根据上面示例自行完成添加用户,修改权限等功能。