admin 管理员组

文章数量: 887021


2024年2月26日发(作者:使用通配符怎么打)

KingSCADA

历史库及其他关系数据库

常见问题解答

北京亚控科技发展有限公司

2013年02月

“数据库”常见问题解答

目 录

1. KingSCADA历史库 ...............................................................................................1

1.1 KingSCADA保存的历史数据,我希望对其进行修改,可以吗? .........1

1.2 启动KingSCADA运行系统,信息窗口提示找不到历史服务? ............1

1.3 启动KingSCADA运行系统,信息窗口提示历史服务无法启动?新建一

个工程,运行正常。.................................................................................................1

1.4 启动KingSCADA运行系统,提示加载历史库服务失败?新建一个工

程,运行正常。.........................................................................................................1

1.5 我使用了自己编写的VC等程序,希望能调用KingSCADA保存的历史数

据文件,请问可以实现吗?.....................................................................................2

1.6 请问目前版本的KingSCADA软件历史数据存储及文件格式是什么? 2

1.7 请问如何访问KingSCADA历史库中的数据?KingSCADA中的历史库

文件是否可以使用其他应用程序打开?.................................................................3

1.8 KingSCADA历史库文件是否可以修改、删除?如果不慎删除后能否恢

复?.............................................................................................................................3

1.9 在KingSCADA软件中变量的历史记录方式有哪几种? ........................3

1.10 KingSCADA的历史库容量有多大?历史信息能存多少天的? ...........4

1.11 在KingSCADA运行环境中能否动态修改历史数据记录的存储天数?

.....................................................................................................................................4

1.12 用什么方式查询KingSCADA历史库中保存的原始数据? ..................4

1.13 查询出来的KingSCADA历史库中原始数据后面的质量戳代表什么含

义?.............................................................................................................................4

2. 其他数据库............................................................................................................4

2.1 KingSCADA采集的数据能保存到第三方的数据库如SQL、ORACLE等

吗?.............................................................................................................................4

2.2 我希望KingSCADA将采集的数据保存到网络中的另一台计算机上的

SQL或ORACLE等数据库,如何操作? .................................................................5

2.3 请问KingSCADA软件与SQL数据库交互的一般配置过程如何?.........5

2.4 KingSCADA对SQL数据库写数据,写入没有成功,请问需要注意什么

问题?.........................................................................................................................5

北京亚控科技发展有限公司 i

“数据库”常见问题解答

2.5 如何判断KingSCADA与外部数据库的连接状态? ................................5

2.6 在KingSCADA中能否对Access数据库进行压缩,该如何实现?.........5

2.7 利用表格模板和SQLCreateTable()函数创建数据库表格,为什么创建不

成功?.........................................................................................................................6

2.8 用SQLDropTable()函数删除一个数据库表格,为什么删不掉? ..........6

2.9 用SQLGetRecord()函数为什么不能返回当前选择集中的指定序号的记

录?.............................................................................................................................6

2.10 KS与SQL2008 连接,在 2008server 64 位操作系统,使用SQLconnect

()函数时,信息窗口提示:”[Microsoft][ODBC 驱动程序管理器] 在指定的

DSN 中,驱动程序和应用程序之间的体系结构不匹配“...................................6

2.11 KS的离散类型变量不能直接插入到Oracle数据库中,其他的数据类型

可以?.........................................................................................................................7

2.12 MYSQL数据库建立ODBC数据源时,服务器地址使用 127.0.0.1 或local

都能测试连接成功,用本机IP就连接失败?? .....................................................7

2.13 通过调用数据集函数KDBGetDataset()对access数据库进行操作时,

一直报错“对象关闭时,不允许操作。 DBAccess: Open the source recordset

failed!”?.....................................................................................................................7

北京亚控科技发展有限公司 ii

“数据库”常见问题解答

1. KingSCADA 历史库

1.1 KingSCADA 保存的历史数据,我希望对其进行修改,可以吗?

不可以,KingSCADA 保存的历史数据文件不开放用户来修改。

1.2 启动 KingSCADA 运行系统,信息窗口提示找不到历史服务?

1)360 阻止卸载了 KingSCADA 的报警、历史服务程序。关闭 360,或在 360 里把

KingSCADA 设为例外,重装 KingSCADA。

2)也可以手动安装 KingSCADA 的报警、历史服务程序:

在操作系统-开始-运行里执行:

C:Program –I

C:Program –I

1.3 启动 KingSCADA 运行系统,信息窗口提示历史服务无法启动?新建一个工程,运

行正常。

工程为网络模式,但是所设 IP 地址非本机 IP,改为单机模式,或设置正确 IP。

1.4 启动 KingSCADA 运行系统,提示加载历史库服务失败?新建一个工程,运行正常。

可能是工程的历史数据存储路径不是默认的工程路径下,设置的路径不存在,改一

下存储路径。

北京亚控科技发展有限公司 1

“数据库”常见问题解答

1.5 我使用了自己编写的 VC 等程序,希望能调用 KingSCADA 保存的历史数据文件,

请问可以实现吗?

KingSCADA 针对用户的这种需求,提供了 100 多个 API 接口,可以实现与

KingSCADA 系统的数据交互。

详情请跟亚控技术部联系。

1.6 请问目前版本的 KingSCADA 软件历史数据存储及文件格式是什么?

KingSCADA 历史记录文件有下面四种类型的文件:

(1)临时数据文件(*.ArcTmp)

存储最近一段时间的原始数据。

文件名格式为 ,YYYY——年,MM——月,

DD——日,HH——小时,XXXXXXX——文件序号。年、月、日、小时的数值是根据

生成数据时刻的格林威治时间确定。若在临时文件没有被压缩到 arc 文件前,重新启动,

会重新生成一个临时文件。

(2)归档文件(*.arc)

保存的是一天内的压缩数据,文件名格式为

(3)特征值文件(*.ev)

存放的是原始数据特征值,文件名格式为

北京亚控科技发展有限公司 2

“数据库”常见问题解答

(4)临时特征值文件(*.EvTmp)

这是存储临时特征值数据的文件,将根据特征值算法过滤出的数据,在下个月到来

归档之前,先存放在临时特征值文件中。文件名格式为 。

1.7 请问如何访问 KingSCADA 历史库中的数据?KingSCADA 中的历史库文件是否可

以使用其他应用程序打开?

KingSCADA 中的历史库文件是 KingSCADA 自定义的文件格式,所以无法使用其

他应用程序打开,可以通过 KingSCADA 提供的报表控件、历史趋势曲线来获取历史库

中的数据。

1.8 KingSCADA 历史库文件是否可以修改、删除?如果不慎删除后能否恢复?

KingSCADA 历史库文件用户是不能够修改的,只能够进行查询。

KingSCADA 历史库文件是以文件格式保存在计算机里的,所以可以删除掉的,但

是要注意如果一旦删除此文件,将无法查询到该时期的历史数据。

如果不慎将历史库文件删除的话,将无法进行恢复。

1.9 在 KingSCADA 软件中变量的历史记录方式有哪几种?

无:选择该项,则该变量不进行历史记录

改变:系统运行时,变量的实时值在发生变化,如果变量的当前值与上一次记录的

历史数据值之间的差值大于设置的死区范围时,该变量的值才会被记录到历史库中,这

种方式适用于数据变化较快的场合。

间隔:无论变量变化与否,系统运行时按定义的时间间隔将变量的值记录到历史库

中,每隔设定的时间对变量的值进行一次记录。最小定义时间间隔单位为 1 秒,范围

1-3600。这种方式适用于数据变化缓慢的场合,缺省设置为 60 秒。

备份:有些设备带有一定数量的数据存储器,可以存储一段时间的设备采集到的数

据,但这些设备往往只是简单的记录数据,而不能进行历史数据的查询、浏览等操作,

而且必须通过上位机的处理才可以看到。此时选择该项,KingSCADA 在运行时,不再

直接向历史库中记录该变量的数值,而是通过驱动程序将设备中存储的历史记录读取上

来,并按照约定的时间格式和变量类型插入到 KingSCADA 的历史库中,这样保证了历

史库的完整性。

每次采集记录:系统运行时,按照变量的采集频率进行数据记录,每到一次采集频

率,记录一次数据。该功能只适用于 IO 变量,内存变量没有该记录方式。该功能应慎

用,因为当数据量比较大,且采集频率比较快时,使用“每次采集记录”,存储的历史

北京亚控科技发展有限公司 3

“数据库”常见问题解答

数据文件会消耗很多的磁盘空间。

1.10 KingSCADA 的历史库容量有多大?历史信息能存多少天的?

KingSCADA 历史库容量本身没有限制,与计算机硬盘大小有关系,历史信息最长

能保存 8000 天。

1.11 在 KingSCADA 运行环境中能否动态修改历史数据记录的存储天数?

不能动态修改。只能在开发环境中通过系统设置-->历史库服务设置-->历史库服务设

置对话框中进行设置。

1.12 用什么方式查询 KingSCADA 历史库中保存的原始数据?

可以用数据集函数 KDBKSRawData(),具体使用方法请参考函数手册。

1.13 查询出来的 KingSCADA 历史库中原始数据后面的质量戳代表什么含义?

质量戳的含义如下:

十进制

262336

262144

1074004000

1879310368

2147745792

1074003968

1879048224

1073741856

描述信息

原始数据、好的数据

原始数据、坏数据

网络连接、原始数据、尚未取得设备数据(没有采集到数据)

开机( Bad ),原始数据,尚未取得设备数据

关机( Bad ),原始数据,坏数据(数据溢出补码:-2147221504)

网络连接,原始数据,坏数据

开机( Bad ),尚未取得设备数据

网络连接,尚未取得设备数据

2. 其他数据库

2.1 KingSCADA 采集的数据能保存到第三方的数据库如 SQL、ORACLE 等吗?

可以,详细说明请参考 KingSCADA 的使用手册。

北京亚控科技发展有限公司 4

“数据库”常见问题解答

2.2 我希望 KingSCADA 将采集的数据保存到网络中的另一台计算机上的 SQL 或

ORACLE 等数据库,如何操作?

可以,但一般不推荐直接在运行 KingSCADA 的计算机上直接配置网络 ODBC 数据

源,因为网络的不稳定会造成一系列的通讯问题。

推荐方式如下:

请在运行 KingSCADA 的计算机和网络中的数据库计算机同时安装SQL或ORACLE

数据库,对这两台计算机上的 SQL 或 ORACLE 数据库进行同步(数据库软件提供同步

的功能),KingSCADA 软件直接与本机的数据库通讯读写数据(这样可以避免网络不

稳定对 KingSCADA 软件的影响,防止数据的丢失)。

2.3 请问 KingSCADA 软件与 SQL 数据库交互的一般配置过程如何?

可以参考 KingSCADA 用户手册的第十八章数据库访问 SQL。同时 KingSCADA 还

支持通过数据集函数与关系库进行数据交换,使用标准的 SQL 语句即可。

2.4 KingSCADA 对 SQL 数据库写数据,写入没有成功,请问需要注意什么问题?

需要注意的事项如下:

A、KingSCADA 与数据源是否连接成功。

B、数据库中的表格的字段名与 KingSCADA 记录体定义的字段名是否相同。

C、数据库表格的字段类型与 KingSCADA 变量的类型是否符合。

D、表格中使用的字段名是否有 date 和 time、in 等关键字,如果有请改为其他字段

名。

E、数据库字段中是否包含有#字,ODBC 数据源不支持该字符使用。

2.5 如何判断 KingSCADA 与外部数据库的连接状态?

通过 SQLConnect 函数的返回值来判断,如果是 0 表明与数据库连接成功,如果是

负数则表明连接失败。

2.6 在 KingSCADA 中能否对 Access 数据库进行压缩,该如何实现?

亚控提供了对 Access 数据库进行压缩处理的批处理程序,在 KingSCADA 中使用

StartApp 函数调用此程序即可,批处理程序可以使用记事本打开并编辑,针对具体的应

用只需要修改批处理程序中的 office 的安装路径以及 mdb 数据库的路径/文件名即可。如

有需要请向亚控索取。

北京亚控科技发展有限公司 5

“数据库”常见问题解答

2.7 利用表格模板和 SQLCreateTable()函数创建数据库表格,为什么创建不成功?

可能原因是表格模板中设置的字段名称与数据库中的关键字冲突(如:date、time

等等)造成的,将其字段名更改为其它名称即可。

2.8 用 SQLDropTable()函数删除一个数据库表格,为什么删不掉?

如果这个表格正在被使用,是不能被删除的。比如刚执行过SQLSelect()命令。

2.9 用 SQLGetRecord()函数为什么不能返回当前选择集中的指定序号的记录?

这个函数如果不用类似 SQLSelect()等函数选择数据库中的某个表,是不能得到

指定序号的记录的。

同理,SQLNumRows(ConnectID)函数也需要先选择数据表。

2.10 KS 与 SQL2008 连接,在 2008server 64 位操作系统,使用 SQLconnect()函数时,

信息窗口提示:”[Microsoft][ODBC 驱动程序管理器] 在指定的 DSN 中,驱

动程序和应用程序之间的体系结构不匹配“

因为操作系统是64 位和32 位的问题,解决方法:

C: 利用这个odbc 为创建就可以连接成功。

下图中默认的是32位的ODBC数据源的快捷方式,需要把路径指定到64位的ODBC

的驱动程序上。

北京亚控科技发展有限公司 6

“数据库”常见问题解答

2.11 KS 的离散类型变量不能直接插入到 Oracle 数据库中,其他的数据类型可以?

Oracle 数据库不支持离散类型的数据,只能把离散类型变量赋值给整形变量或文本,

然后再插入到 oracle 数据库中。

2.12 MYSQL 数据库建立 ODBC 数据源时,服务器地址使用 127.0.0.1 或 local 都能测试

连接成功,用本机 IP 就连接失败??

原因是用户 root 的角色不够。

2.13 通过调用数据集函数 KDBGetDataset()对 access 数据库进行操作时,一直报错“对

象关闭时,不允许操作。 DBAccess: Open the source recordset failed!”?

KDBGetDataset("DatasetName", ConnectStr, "insert into test values('a') "); 或

KDBGetDataset1("DatasetName", "ConnectID", "insert into test values('a')");函数是用来执

行查询语句的(例如:KDBGetDataset("DatasetName", ConnectStr, "select * from test"),

而不是执行那些非查询的语句,所以执行完成之后会保存记录集。如果使用它进行插入

操作,插入操作只会返回影响行数,并不会产生记录集,导致获得记录集的时候发生异

北京亚控科技发展有限公司 7

“数据库”常见问题解答

常 。 因 此 如 果 要 执 行 非 查 询 语 句 的 之 后 , 应 该 使 用 KDBExecuteStatement 或 者

KDBExecuteStatement1 函数。

北京亚控科技发展有限公司 8


本文标签: 历史 数据 数据库 变量 使用