利用ODBC访问WINCC的历史数据库

合集下载

wincc的ODBC连接

wincc的ODBC连接

对WinCC的远程ODBC连接显示订货号问题:WinCC V5.1版本的标准设置中,不可以设置ODBC连接。

它被用来通过MS Access, MS Query 等访问WinCC数据库。

需要注意哪些设置?解答:WinCC 站方面的准备(如果要访问运行系统的数据库,必须启动WinCC 运行系统)。

打开“Sybase Central”,确定WinCC的数据库名。

图1:启动“Sybase Central”选择菜单选项“工具> 连接”。

在打开的掩码中按以下输入用户ID:dba口令:sql图2:登录到数据库在Sybase窗口中,可看到WinCC站名在窗口左边。

点击+ 图标放大画面。

现在可看到2个数据库。

记住想要进行远程访问的数据库名。

以RT 结尾的数据库为运行系统数据库,其它的为CS数据库。

图3a: 确定数据库名鼠标右键点击所要数据库的属性,也可以选择数据库名并将它复制到剪贴板。

如果这样做并将名字储存在文本文件中,可以避免符号使用中的错误。

(图3b)。

图3b:复制数据库名到剪贴板远程站上的必要设置(另一台计算机)。

从控制面板中启动“数据源(ODBC)” (Windows NT)或通过“启动> 程序> ODBC数据管理器”(Windows 2000)启动。

图4:ODBC窗口中的设置切换到“系统DSN”标签并选择“添加”(在此需注意“用户DSN”与“系统DSN”间的不同。

有关于它们的解释在同窗口中的蓝色文本框中)图5:选择驱动程序“Adaptive Server Anywhere 7.0”在“ODBC”标签中,输入一个独有的名,例如在数据库中的名(但它也可以是所选择的其他名字)。

必须在“延迟AutoCommit直到语句关闭”下打勾,以便在关闭一个链接着的表格时传送所做的改变。

图6:ODBC标签中的设置请注册如下:(图7):用户ID:dba口令:sql图7:“注册”标签中的条目:“数据库”标签中的输入域(图8)含义如下:“服务器名”是数据库所在的WinCC站的站名“数据库名”是上面所提到的名字(SCVIEW)。

通过ODBC连接数据库

通过ODBC连接数据库

通过ODBC 连接数据库(C++)C++连接数据库的方法有很多种,在Visual C++和SQL server 的实际开发中,一般使用ODBC 或ADO 技术进行开发,相关技术和产品也最为成熟。

我们这里根据课程需要采用ODBC 的方法。

我使用的平台的是VS2010和SQL server 2008,优点是VS2010支持一些比较新的特性,编程方便了很多,缺点是左侧的“服务器资源管理器”不支持SQL server 2000,但是没有关系,在SQL server 2008上是可以连上的,大家如果和我的平台不一样的话在编程细节上可能有些问题要注意下。

有同学表示安装了SQL server 2008之后只能通过“windows 身份验证”登陆本地数据库,无法通过“SQL server 身份验证”登陆,这是由于安装的时候是通过“windows 身份验证”安装的,改一下配置即可:1. 使用“windows 身份验证”登陆数据库,点击“登录名”,右击sa ,选择属性,点击状态,确保设置如左侧图所示。

2. 右击本地服务器名选择属性,更改安全性中的服务器身份验证如下图所示3. 右击地服务器名选择重新启动(这一部很重要)4.如何还有问题的话查看目录“D:\Program Files\Microsoft SQLServer\MSSQL10.MSSQLSERVER\MSSQL\Log”下的ERRORLOG文件,找到错误代码,google之打开SQL server 2008 连接一个我们测试用的数据库,使用的10.214.6.98上的数据库db27,用户名和密码都是user277,执行以下命令:use db27CREATE Table book(bno char(8),category char(10),title varchar(40)not null,press varchar(30)not null,byear int CHECK(byear> 0),author varchar(20)not null,price decimal(7,2)CHECK(price> 0),total int CHECK(total>= 0),stock int CHECK(stock>= 0),CONSTRAINT ck CHECK(stock<=total))INSERT INTO book VALUES('12345678','数据库','数据库系统原理教程','清华大学出版社',1998,'王珊',27.9,3,0)INSERT INTO book VALUES('12342378','数据库','数据库','清华大学出版社',1998,'王珊',27.9,3,0) INSERT INTO book VALUES('12341278','数据库','数据库','清华大学出版社',1998,'王珊',27.9,3,0) INSERT INTO book VALUES('14345678','数据库','数据库','清华大学出版社',1998,'王珊',27.9,3,0)上面SQL语句执行的结果是在db27数据库中创建了一个名为book的表,里面有9列,随后添加了4个测试数据,现在将该数据源添加到ODBC数据源管理器中,打开路径“控制面板\所有控制面板项\管理工具”下的数据源(ODBC),添加新的数据源,选择“SQL Server”名称设置为db27,服务器在10.214.6.98,使用user277用户登录,完成后点击测试数据源看能不能连上,显示测试成功后,在用户数据源中会看到刚刚添加的DSN:我们编写一个简单的图形化界面,打开VS2010,新建项目,选择“MFC应用程序”,建立一个名为“DataBaseODBC”的项目,弹出的向导中更改应用程序类型为“基于对话框”,大家在实际编程中可以需要选择,这里只是为了做个示例,其他保持默认。

wincc odbc 指令

wincc odbc 指令

wincc odbc 指令WINCC ODBC 指令OPC 数据访问(ODBC)是一种行业标准,允许应用程序与关系数据库进行通信。

WINCC 可使用 ODBC 驱动程序连接到外部数据库,从而扩展其数据管理和分析功能。

以下指南概述了使用 ODBC 指令在 WINCC 中访问数据库所需的关键步骤:1. 配置 ODBC 数据源在 Windows 控制面板中打开 ODBC 数据源管理器。

创建一个新的数据源,选择适当的 ODBC 驱动程序,并配置连接参数。

指定数据源名称,该名称将在 WINCC 中用于标识数据库连接。

2. 在 WINCC 中创建 ODBC 连接打开 WINCC 项目并导航到“变量管理”。

右键单击变量组并选择“添加新变量”。

在“变量属性”对话框中,选择“ODBC 数据源”作为变量类型。

输入创建的 ODBC 数据源名称。

3. 编写 ODBC 指令ODBC 指令是 SQL 语句,用于从数据库中检索或修改数据。

在WINCC 中,ODBC 指令可以动态生成或使用预定义的 SQL 查询。

动态 ODBC 指令在变量属性对话框中,选择“动态指令”。

使用脚本语言(如 C 脚本)编写 SQL 查询。

查询可以使用变量作为参数,从而实现动态数据检索。

预定义 SQL 查询在变量属性对话框中,选择“预定义 SQL 查询”。

输入预定义的 SQL 查询,用于检索或修改数据库中的数据。

4. 配置数据交换一旦 ODBC 连接和指令到位,需要配置 WINCC 与数据库之间的周期性数据交换。

在变量组的属性中,选择“数据交换”选项卡。

启用“周期性数据交换”复选框。

指定数据交换的周期和持续时间。

5. 监视 ODBC 数据数据交换完成后,可以在 WINCC 屏幕上监视来自 ODBC 数据源的数据。

在变量列表中,选择与 ODBC 连接关联的变量。

数据值将实时显示。

6. 故障排除如果出现 ODBC 连接或数据检索问题,请执行以下故障排除步骤:检查 ODBC 数据源配置和连接参数是否正确。

数据库原理-实验7-通过ODBC访问数据库

数据库原理-实验7-通过ODBC访问数据库

一、实验目的:1.理解ODBC的相关概念:ODBC、句柄等;2.理解ODBC的工作原理;3.掌握ODBC的工作流程;4.掌握通过ODBC访问数据库的方法二、实验环境:SQL Server 2008、VC++ 6.0三、实验学时:2学时四、实验内容和步骤:(一)配置数据源配置数据源共有两种方法:方法一:运用数据源管理工具来进行配置。

方法二:使用Driver Manager 提供的ConfigDsn函数来增加、修改或删除数据源。

这种方法特别适用于在应用程序中创建的临时使用的数据源。

在本实验中,我们采用第一种方法创建数据源。

我们将其取名为SQLServer。

下面是建立这数据源的具体步骤。

选择『开始』│『设置』│『控制面板』菜单,在弹出窗口中双击“管理工具”图标进入管理工具界面,双击“数据源(ODBC)”图标。

建立SQLServer数据源。

(1)选择“系统DSN”选项,单击【添加(D)…】按钮,系统弹出“创建新数据源”对话框,如下图所示:图1 数据源管理器(2)如图2所示,在ODBC驱动器程序列表中,选择“SQL Server”,单击【完成】按钮,系统弹出“Create New Data Source to SQL Server”对话框,如图2所示:图2 创建数据源配置(3)如图3,输入数据源名称和服务器,单击【下一步】按钮。

图中数据源的名称为SQLServer,服务器为(local)。

如图4,选择身份认证方式,输入用户名和密码,用户名和口令分别为sa和sa(请根据实际情况进行修改,并对源代码进行相应的修图3 SQLServer数据源配置(1)图4 SQLServer数据源配置(2)(4)连续单击【下一步】按钮,这样就创建了一个名为“SQLServer”的SQL Server ODBC数据源。

如图5所示,将弹出一个提示框,提示即将创建一个新的ODBC数据源。

图5 提示框(5)如果要测试和数据源的连接是否成功,可以单击“Test Data Source”,如果连接成功,系统将会显示一个连接成功的消息框,如图6所示。

实验六通过odbc方式访问数据库

实验六通过odbc方式访问数据库

实验六通过ODBC方式访问数据库一、实验条件与环境1.通用PC机2.PC机必须安装Windows 2000系列、Windows XP系列或Windows NT操作系统平台3.PC机还须安装Microsoft SQL Server 2000 任意一版本(个人版、标准版、企业版)4.PC机还须安装VB、VC、C++ Builder、Dehpi等面向对象的可视化程序设计软件5.最好有一台公用的SQL Server 2000 服务器二、实验目的1.通过上机实验了解可视化程序设计语言对数据库进行访问的常用方法2.通过上机实验掌握软件开发工具面向用户提供的ODBC对象接口的概念及其作用3.通过上机实验熟悉SQL语句在面向对象编程语言中的使用4.通过上机实验熟悉通过ODBC接口访问数据库并对数据库进行操作5.通过上机实验熟悉使用ODBC来进行数据库应用程序的设计6.通过上机实验熟悉数据源的概念及数据源的创建方法1.通过上机实验熟悉ADO DATA控件的主要属性、事件、方法及其使用三、实验要求:1.要求学生至少熟悉一门面向对象的可视化程序设计语言(如:VB、VC、C++ Builder、Dehpi等)2.实验前,要求学生充分作好ADO DA TA控件、ODBC数据接口及数据源等相关内容的预习工作3.本实验涉及的实验内容最好能在2课时内完成4.实验完成后需要书写实验报告,本次实验报告需在下次实验课堂上上交四、通过ODBC方式访问数据库并进行各种数据操作的一个实例建立一个名为MyDB的数据库,然后在此数据库中建立一个名为S的数据表,有关数据表S的属性描述为:Sno,学号,数据类型为char(10);Sname,姓名,数据类型为char(8);Ssex,性别,数据类型为char(2);BirthDay,生日,数据类型为datetime(8)。

创建一个名为Students的数据源,然后利用可视化程序设计语言设计一个用户操作界面,通过ODBC数据接口和ADO DATA实现对数据库MyDB中数据表S的查询、插入、删除、修改等数据操作。

wincc通过vbs访问数据库

wincc通过vbs访问数据库

本人通过WINCC的VBS读取SQL2000里的数据或者写入数据,通过在按钮控件做一个动作,当点击时写入数据库一个数据,代码如下: Dim rs,commDim cn,strcnDim is_sql,strSQLSet cn = CreateObject("ADODB.Connection")Set rs = CreateObject("ADODB.Recordset")strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist S ecurity Info=False;Initial Catalog=glj;Data Source=GLJ077\wincc" cn.ConnectionString = strcncn.OpenstrSQL = "INSERT INTO W1 (xm) V ALUES ('glj077') "rs.CursorLocation = adUseServerrs.Open strSQL, cn, 1, 3cn.CloseSet cn = Nothing发现如下问题:此代码在VB6.0中调试通过,可以写入数据glj077,但在WICC里不可以,虽然编译通过,但当按下按钮时,并没有写入数据.请各位高手帮忙看一下,是代码的问题还是需要在WINCC里还要装一些设置,望告之.谢谢!!!以上问题已解决,发现是代码问题,还有楼上那位兄弟说的对,常量不识别,必须用数字代替。

通过这几天的试验,学到了不少东西,现把学到的东西和大家分享一下,希望可以抛砖引玉。

在WINCC里,用VBS读取和写入到SQL2000数据方法有以下几种(仅写出本人实验通过的方法,至于其它方法,本人没有试验过,不在讨论范围)第一种方法代码如下(写入数据)Dim cn,strSQL,strcnSet cn = CreateObject("ADODB.Connection")strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist S ecurity Info=False;Initial Catalog=glj;Data Source=GLJ077\wincc" cn.ConnectionString = strcncn.Open strcnstrSQL = "INSERT INTO W1 (xm) V ALUES ('glj077') "cn.Execute strSQLcn.closeset cn=Nothing以上方法立用了字符串连接函数的Execute方法,实现对数据库的写入操作(改变strSQL字符的值应该可以实现其它操作,不过本人没有实验过)第二种方法代码如下:(可写可读)Dim cn,strSQL,strcnDim rs,rs1Dim RvalueSet cn = CreateObject("ADODB.Connection")Set rs=CreateObject("ADODB.RecordSet")Set rs1=CreateObject("ADODB.RecordSet")strcn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist S ecurity Info=False;Initial Catalog=glj;Data Source=GLJ077\wincc" cn.ConnectionString = strcncn.Open strcnstrSQL = "Select * from W1"rs.CursorLocation = 1(此处必须写数字代替字符串常量)写入数据Set rs1=rs.Open strSQL, cn, 1, 3 (同样,也必须用数字,发现没有,这个和我最初的代码有什么不一样,这也是我最初的程序不能正确执行的关键)rs1.AddNew 新建一条记录rs1.Fields("xm")="glj077" 往数据库表W1字段为xm中写入一条记录,值为glj077rs1.Update读取数据Set rs1=rs.Open strSQL, cn, 1, 3rs1.MovefistRvalue =rs1.Fields("xm") 读取第一条记录的值,修改SQL查询语句可以查找特定记录rs1.closers.closecn.closeset rs=Nothingset rs1=Nothingset cn=Nothing这种方法是利用记录集的方法来操作数据库的。

3使用ODBCAPI访问数据库

3使用ODBCAPI访问数据库

3使⽤ODBCAPI访问数据库主要内容:ODBC API的体系结构使⽤ODBC API开发数据库应⽤程序的⼀般步骤使⽤函数SQLAllocHandle分配句柄使⽤函数SQLConnect、SQLDriverConnect、SQLBrowseConnect 连接数据源使⽤函数SQLPrepare和SQLExecute执⾏SQL语句使⽤函数SQLBindCol()绑定数据库字段使⽤函数SQLGetDiagRec和SQLGetDiagField处理错误使⽤函数SQLFetch移动数据库记录指针使⽤ODBC API 进⾏事务处理使⽤函数SQLDisconnect断开数据源的连接⽬录ODBC API 基础 (3)ODBC API句柄 (3)ODBC数据类型 (5)ODBC诊断 (6)使⽤ODBC API变成建⽴应⽤程序 (8)ODBC API编程模型概述 (8)连接数据库 (11)准备并执⾏SQL语句 (16)获取记录集 (18)记录的添加、删除和更新 (20)错误处理 (23)事务处理 (23)断开数据源连接并释放环境句柄 (25)ODBC API 基础ODBC API句柄ODBC API 实现数据库操作的⼿段是句柄。

在ODBC中,使⽤不同的句柄(HANDLE)来标志环境(environment)、连接(Connection)、语句(statement)、描述符(description)等。

句柄是⼀个应⽤程序变量,系统⽤它来存储关于应⽤程序的上下⽂信息和应⽤程序所⽤到的⼀些对象。

1、环境句柄环境是存取数据的全局性背景,与环境相关的是全局的所有信息。

例如:环境状态、当前环境状态诊断、当前在环境上分配的连接句柄、每个环境属性的当前设置。

在实现ODBC的⼀段代码(Driver Manager或者驱动程序)中,环境句柄标识包含这个信息的结构。

环境句柄在ODBC应⽤程序中不经常⽤。

他们经常⽤来调⽤SQLDataSources和SQLDrivers,⼜是⽤来调⽤函数SQLAllocHandle、SQLEndTran、SQLFreeHandle、SQLGetDiagField和SQLGetDiagReg。

WinCC数据库SQL访问

WinCC数据库SQL访问

查询超时:优化查询语句,减少查询时间,或增加查询超时时间
数据库异常:检查数据库日志,找出异常原因,并修复
权限问题:检查数据库用户权限,确保具有足够的权限访问数据库
打开SQL Server Management Studio
创建新的数据库,命名为"WinCC"
在"WinCC"数据库中创建新的表,命名为"DataTable"
编写SQL语句:根据需求编写SQL语句
处理结果:处理SQL执行结果,如查询结果、更新结果等
断开连接:执行完SQL语句后,断开与数据库的连接
查询结果:返回查询结果集
结果集处理:遍历结果集,获取所需数据
数据处理:对查询结果进行筛选、排序、分组等操作
结果输出:将处理后的数据输出到界面或文件中
连接失败:检查数据库连接设置,确保用户名、密码、服务器地址等正确
UPDATE语句:用于更新数据库中的数据
DELETE语句:用于从数据库中删除数据
WHERE子句:用于指定查询条件
ORDER BY子句:用于指定查询结果的排序方式
SELECT:用于从数据库中检索数据INSERT:用于向数据库中插入新数据UPDATE:用于更新数据库中的数据DELETE:用于从数据库中删除数据CREATE:用于创建新的数据库对象,如表、视图等ALTER:用于修改数据库对象的结构DROP:用于删除数据库对象,如表、视图等 ***MIT:用于提交事务,确保对数据库的更改被保存***MIT:用于提交事务,确保对数据库的更改被保存ROLLBACK:用于回滚事务,取消对数据库的更改TRUNCATE:用于删除表中的所有数据,并重置表的自增计数器
汇报人:
,
01
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WINCC作为一个工控软件,有着工控软件的一系列特征:能显示实时数据,历史数据,生成实时数据曲线与历史数据曲线,并能生成报表。

然而WINCC与其它的工控软件包有不同的地方:它的数据是保存在标准的及功能强大的Sybase SQL Anywhere数据库中,所以,我们可以像访问一般的数据库一样,通过ODBC直接访问WINCC的历史数据库。

一、通过Sybase Central 4.0访问显示数据
Wincc 在安装时就把Sysbase数据引擎与Sybase Central 4.0一同安装到系统中,你可以在Program Files\Sybase\Shared\ 中找到Sybase Central 4.0 ,你可在在其目录下\java\中发现scjview.exe,该程序功能相当于SQL server 的企业管理器。

你可以通过其查看你在WinCC中的归档数据。

使用方法:
1) 运行WINCC,这时WINCC会在ODBC中添加两条数据源:
CC_FY_02-10-16_10:40:18
CC_FY_02-10-16_10:40:18R
其中CC_FY_02-10-16_10:40:18R 是可以通过Sybase Central 4.0 及别的一些工具不用用户名与密码读取的。

这就是我们WinCC的历史数据库。

注意:这两条ODBC名不是一成不变的,它是结构如下
CC_FY_02-10-16_10:40:18R
CC:固有的,指明是WinCC生成的ODBC。

FY:项目名,这是我这个WinCC项目名称
02-10-16:最后一次修改的日期。

10:40:18:最后一次修改的时间。

R:表示是运行库。

2)、运行scjview.exe,点击Adaptive Server AnyWhere 7 按右键,选择Connect。

将会弹出Connect配置界面。

在Identification的页面,选中ODBC SOURCE NAME 点BROWSE则会列出所有对Sybase 数据引擎的ODBC名,选择CC_FY_02-10-16_10:40:18R,点击“OK“、“OK“即可。

这时在Adaptive Server AnyWhere 7下面会出现你的计算机名,并已连通了你的WINCC历史数据库。

好了,我们现在可以查看WinCC的历史数据了。

展开:Adaptive Server AnyWhere 7(DBA)
展开:TABLE
我们现在可以看到数据库的表名与表结构了:
表名:PDE#HQZ#GAS_PRE 组成方式如下
PDE:固有
HQZ:归档名称
GAS_PRE:变量名。

表结构:有三个字段:T, V, F
T:时间
V:值
F:标志
由于没有可靠的资料可查,其F的名值表示的含义就不得而知,不过,在我的使用中,我将F值8392705作为一个合法值,在WINCC的处理中没有出过错,但别的FLAG值的含义,只能问西门子公司了。

二、利用VB编写程序访问WINCC历史数据库。

上面已明确描述了WINCC的历史数据库的结构组成与表结构,那么我们就可以通过编程访问WINCC的历史数据库。

如其它通过ODBC访问的数据一样。

如下面的小例子
在VB中,先引用ADO组件。

并声明ADO变量。

Private cn As ADODB.Connection
Private rs As ADODB.Recordset
Const dsn = “CC_FY_02-10-16_10:40:18R”
Private sub insertData(nowV alue as double)
Dim nowtime as string
Nowtime =now
cn.Open dsn, "", ""
sqlstr=” insert into PDE#HQZ#GAS_PRE(T,V,F) V alues(…”+ Nowtime +”‟,”+ nowV alue +”, 8392705) ”
cn.Execute sqlstr
cn.close
End sub
本程序中的子程序只处理了数据插入,其它读出就更为简单,与其它的ADO访问是一模一样的,这里就不多说了。

三、结语
能通过ODBC访问WINCC的历史数据,给我们提供了更多了解决办法,特别是在企业信息化平台上使用非实时数据方面,可以人为给WINCC添加正确的历史数据,使WINCC的功能更为强大。

由于ODBC名与项目的修改时间有关,所以在项目频繁变化时,请不要使用这个功能。

WinCC在启动时自动添加ODBC名,在关闭时自动删除,所以,在WINCC关闭后,不能再通过ODBC访问ODBC。

本文来自: 中国自学编程网() 详细出处参考:/html/20070419/6927.html。

相关文档
最新文档