解决方案
- 格式:doc
- 大小:850.50 KB
- 文档页数:13
方案1:直接从WINCC 的 SQL SERVER数据库导出实时数据和历史数据到 本地数据库,
一、操作步骤 1. 打开SQL Server管理工具 SQL Server 2005和SQL Server 2000在界面上还是有很大不同的,原来的企业管理器变成了SQL Server Management Studio (SSMS)。
图1. 启动SSMS 2. 选择身份认证方式: WinCC 系统在SQL Server中注册了自己的账户,如 WinCCAdmin、WinCCConnect等,所以,WinCC使用到了SQL Server的认证方式。外部程序访问数据库时,可以采用Windows 集成的认证方式。 图2. 选择身份认证方式 图3. WinCC在SQL Server中注册的用户 3. 查看ValueID和ValueName的对应关系 图4. 查看ValueID和ValueName的对应关系 4. 查看组态的消息
图5. 查看组态的消息 5. 查看归档片段的消息 图6. 查看归档片段的消息 6.数据传输服务
图7. 选择数据导出服务 图8. 选择数据源(与原来的DTS类似)
图9. 设置数据源 图10. 选择目标地
图11. 选择查询并传输 图12. 输入查询语句
图13. 源和目标列的对应关系 图14. 选择立刻执行传输
图15. 传输执行前的提示 图16. 传输执行结果报告
图17. 查看传输结果 7. 在Excel中编程利用WinCC OLE-DB访问WinCC数据库 方法及程序同原来的教材,原来的教材的程序同样适用。 8. 归档变量设置和归档数据库片段设置和原来版本类似。 方案2:WINCC 中 采用 VBS 脚本访问本地数据库的方法 1、WinCC V6.0用VBS连接数据库的几点说明 运行数据库DSN WinCC内部变量:@DatasourceNameRT,如:CC_MyTest_06_04_08_09_05_14R
2、普通连接的ConnectionString (1)连接运行数据库
strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=CC_MyTest_06_04_08_09_05_14R;Data Source=.\WINCC"
(2)连接其它数据库,如:Northwind strSQL="Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Northwind;Data Source=.\WINCC"
注:普通连接方式下,所有标准的SQL语句都可以使用。 3、归档数据库的ConnectionString strSQL="Provider=WinCCOLEDBProvider.1;Catalog=CC_MyTest_06_04_08_09_05_14R;Data Source=.\WinCC"
在此连接方式下,只能用WinCCOLEDBProvider提供的方法访问归档数据库: (1)单个归档变量查询: strSQL = "TAG:R,10,'2006-04-12 16:00:00','2006-04-13 15:59:59'" 或 strSQL = "TAG:R,'Archive1\Tag1','2006-04-12 16:00:00','2006-04-13 15:59:59'" (2)多个归档变量查询: strSQL = "TAG:R,(10;14;15),'2006-04-12 16:00:00','2006-04-13 15:59:59'" 或 strSQL = "TAG:R,('Archive1\Tag1';'Archive2\Tag1';'Archive2\Tag2'),'2006-04-12 16:00:00','2006-04-13 15:59:59''" 注:如果需要对查询结果再作过滤,可以使用Recordset.Filter属性再次过滤。 (3)报警信息的查询: strSQL = "ALARMVIEW:Select * From AlgViewEnu Where DateTime>='2006-04-12 16:00:00' And DateTime<='2006-04-13 15:59:59' And MsgNR=11"
在WinCC中如何访问数据库(VBS) 一、声名全局变量 在全局脚本中声明全局变量,如下:Public gocn 2、建立连接,如下: Set gocn = CreateObject("ADODB.Connection") gocn.open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=GJS_SY;Data Source=LGL"
3、执行代码。例如插入一条记录: gocn.Execute "insert into TB_FJ_DATA(LSH,GKH,T_time) VALUES('1',99,GETDATE( ))"
二、访问数据记录和查询 脚本如下 1、查询。代码如下: On Error Resume Next Dim NoOfRecords Set NoOfRecords = HMIRuntime.Tags("NoOfRecords") Dim CurrentRec Set CurrentRec = HMIRuntime.Tags("CurrentRec") Dim AuthorID Set AuthorID = HMIRuntime.Tags("Au_ID") Dim AuthorFirstName Set AuthorFirstName = HMIRuntime.Tags("AuthorFirstName") Dim AuthorLastName Set AuthorLastName = HMIRuntime.Tags("AuthorLastName") Dim AuthorsQueryRan Set AuthorsQueryRan = HMIRuntime.Tags("AuthorsQueryRan") ActivateDBHandling() If gocn.State = 0 Then HMIRuntime.Trace "no connection ... reconnecting" ConnectDB() End If gorsAuthors.open "SELECT au_id, au_fname, au_lname, contract FROM Authors ORDER BY au_lname", gocn, 1, 3 If Not gorsAuthors.Eof Then NoOfRecords.Write gorsAuthors.RecordCount gorsAuthors.MoveFirst AuthorID.Write gorsAuthors.Fields(0).Value AuthorFirstName.Write gorsAuthors.Fields(1).Value AuthorLastName.Write gorsAuthors.Fields(2).Value CurrentRec.Write 1 AuthorsQueryRan.Write 1 Else MsgBox "No Data Returned", vbOK, "Query Results" End If On Error Goto 0
2、插入 On Error Resume Next Dim AuthorID Set AuthorID = HMIRuntime.Tags("Au_ID_INSERT") Dim AuthorFirstName Set AuthorFirstName = HMIRuntime.Tags("AuthorFirstName_INSERT") Dim AuthorLastName Set AuthorLastName = HMIRuntime.Tags("AuthorLastName_INSERT") Dim sSql ActivateDBHandling() If gocn.State = 0 Then HMIRuntime.Trace "no connection ... reconnecting" ConnectDB() End If
Set gorsAuthorsChange = CreateObject("ADODB.Recordset") sSql = "INSERT INTO Authors(au_id, au_fname, au_lname, contract) VALUES('" + AuthorID.Read + "','" + AuthorFirstName.Read + "', '" + AuthorLastName.Read + "',1)" gorsAuthorsChange.open sSql, gocn, 1 MsgBox "Added new author", vbOKOnly, "INSERT" Set gorsAuthorsChange = Nothing On Error Goto 0