当前位置:文档之家› LabVIEW中实现Oracle大对象数据存储的一种方法

LabVIEW中实现Oracle大对象数据存储的一种方法

由于波形序列数据类似于声音流数据,应该保存为二进制 数据流, 故 采 用 %)#% 数 据 类 型 来 存 储 。 如 表 @ 数 据 表 结 构 表 最后一行, 波形数据以 %)#% 类型存入振动历史数据表。
"
数据存储的实现 数据存储模块的具体实现过程如图 @ 所示。
!
数据存储过程的说明 在旋转机械振动状态监测系统中的数据存储的大致过程是
这样的: 被测量点的振动信号经过传感器转化为电信号, 再经过 信号调理电路由采集卡按一定的采样频率采集并转化成数字信 将 号。工控机上的 )123"45 程序通过调用采集卡的驱动程序, 数据存放在内存中的数据缓存区, 进行相应的处理, 并实时显示 在界面上。 在需要保存数据时, 再将指定的数据连同测量点的一 些属性及参数 (如 工 作 站 编 号 、 机组编号、 通道编号、 记录时间、 峰峰值 等 ) 作 为 一 个 条 目 存 入 #617,8 数 据 库 相 应 的 >?9 电压、 数据表中。
PXБайду номын сангаас
)123"45 中实现 #617,8 大对象数据存储的一种方法
!"#$%&’ 中实现 ()"*+, 大对象数据存储的一种方法
孙熙文
(P@QQER) 王友钊 浙江大学数字技术及仪器研究所
#$%&’()& *S8 160/7,8 J8=76/28= 1 T80S+J 0+ =0+68 ,16F8 +2G870 J101 /K0+ #617,8 J10121=8 2I M=/KF #617,8 N687+TN/,86 96+:&;&<< 1KJ &"! +L )123"45U1KJ 2I 0S/= T80S+JUO8 O/,, 681,/V8 0S8 J101 =0+61F8 /K D+010/KF B17S/K86I &+KJ/0/+K B+K/0+6/KF ’I=08TA *+,-.’/%W)123"45U#617,8U)#%=UJ101 =0+61F8 摘 要
@A@ 数据表结构
为保存测量数据和相关的参数,在数据库中创建振动历史 数据表 (*B4?’CD4$?*4 ) , 表结构如表 @ 所示。 表 @ 数据表结构
EA@ &"! 节点的使用 &"! (&+J8 "K086L178 !+J8) 是 )123"45 用 来 提 供 将 用户可将需调用 &;&<<代码链接到 )123"45 的一个功能节点, 的 &;&<< 代 码 编 译 成 )123"45 能 识 别 的 格 式 (A,=2 ) 后与此节 点相连,当此节点执行时, )123"45 将 自 动 调 用 与 此 节 点 相 连 的 &;&<<代码, 并从 &"! 获得相应的数据结构和向 &"! 传递特
!" 公司提供的基于 #$%& 的数据库开发工具 ’() *++,-. /0 为 )123"45 提 供 了 良 好 的 数 据 库 接 口 , 可 以 很 方 便 地 在 由于数据库大多 )123"45 中实现数据库的访问和存取。 但 是 ,
不支持数组这样的数据结构,在遇到诸如在线监测领域中通常 会有大量的连续的波形数据的存储需求时,只好考虑用适当编 码的方法绕开 ’() 语法的保留字符将数据存为长的字符串。虽 然这种方法在一定的情况下可行,但是存储的效率和程序的运 行 效 率 都 十 分 低 下 。 本 文 将 通 过 )123"45 的 & 接 口 &"! 和 #617,8 的 预 编 译 器 96+:&;&<< 的 使 用 , 介 绍 一 种 高 效 的 基 于 ()#%= ) 存取的方法, 并用该方法实现在旋 #617,8 的大对象数据 转机械状态监测系统中的数据存储。
@AE )#%= 数据类型 (,16F8 +2G870 ) 数据类型。 )#%= 类型分 #617,8 支持 )#%=
为以下几种: 一 种 包 含 没 有 格 式 的 二 进 制 数 据 的 )#%= , 最大容 %)#%: 量为 H>2I08;
&)#% : 一 种 包 含 大 容 量 字 符 数 据 的 )#%= , 最 大 容 量 为 H>2I08。
向 数 据 库 表 LQS^EeTSM^LS 插 入 波 形 数 据 (dV\d ) 数 时, 先 是 插 入 一 个 空 的 dV\d 数 据 , 然 后 在 不 断 地 从 V<=_)SO 的波形数组中读到缓冲 (=-110.) 当中, 再由缓冲 (=-110.) 复制到 空的 dV\d 数据中。具体的流程如流程图 g 所示。 接下来是实现存入 dV\d 数据的主要代码。
本文通过 #617,8 的预编译器 96+:&;&<< 和 )123"45 的 & 接口 &"! 的应用, 介 绍 了 一 种 在 )123"45 下 实 现 #617,8 大对象数据 ()#%= ) 存储的方法, 并将该方法成功应用在大型旋转机械振动状态监测系统中。 关键词: 数据存储 )123"45, #617,8 , )#%= ,
图C
Y.,(&Z&[[处理过程
在 Y.,(&Z&[[ 源程序的设计过程中, 宿主变量 (N,+9 _<.2‘
<=30)是实现嵌入 E]V 语句与主程序之间的 通 信 的 主 要 方 式 。 嵌入 E]V 语句中使用的主语 宿主变量是指在 Y.,(& 源程序中, 言程序变量。 宿主变量既可以由应用程序对其赋值, E]V 语句引 用, 又可以由 E]V 语句对其赋值, 返回给应用程序。通过宿主变 量,可以方便的实现将外 部 & 程 序 中 的 数 据 插 入 到 数 据 表 中 。 只需在变量名前面加上一个 “: ” 。 E]V 语句在引用宿主变量时, 以 下 是 在 & 语 言 中 使 用 嵌 入 式 E]V 语 言 实 现 模 块 功 能 的
’ ( 错误处理和连接数据库的 E]V 语句 ( ’ ScS& E]V ONS*S_ST E]VSTT\T M\ 2+0..,.h+j3k0..,. U7\T^‘ &VS 0..,.iiZ57XG ScS& E]V &\**S&L l-+0.5<D0 )MS*L)f)SM dm lA<++?,.6 eE‘ )*n l6=+9.25RG ’ ( 将数据项插入数据表的 E]V 语句 ( ’ ScS& E]V )*ESTL )*L\ LQS^EeTSM^LS _^VeSEUl2?,.P+9<92,5Wl 2D</;25026W …… SQYLmkdV\dUXX TSLeT*)*n M^L^f)VS )*L\ l=3,= G
图@ 模块实现流程图
首先按照 &"! 的接口规范用 & 语言编写好模块的代码, 所 有和数据库访问相关的代码按照 #617,8 嵌入 式 ’() 的 规 范 内 嵌相应的 ’() 语句。 接下来经过 96+:&;&<< 预编译器的预编译,将所有的内嵌 这样代码 ’() 语句转换成 #617,8 动态链接函数库的函数调用。 转换成标准的 & 代码, 就符合 )123"45 的 & 语言接口规范。 最 后 经 过 &"! *++,= 将 代 码 编 译 成 )123"45 特 定 的 A,=2 文件, )123"45 就可以通过 &"! 节点调用 A,=2 文 件 从 而 调 用 数 据库存储模块功能。
图!
&)* 节点的接口图
对应的 & 代码。 ’ ( &)* +,-./0 1230 ( ’ 425/3-60 7089/,60:;7 ’ ( 3<=>20? 中数组的数据结构的定义 ( ’ 9@A0601 +9.-/9 B259C! 62DE2F0G 259$H *-D0.2/I$JGK LM!G 9@A0601 LM! ((LM!N63G 9@A0601 +9.-/9 B-)59C! 2O,.P+;,AG …… LM!N63 <..<@6<9<GK LM$G ’ ’ 数据条目的结构声明 QRS.. &)*T-5UVE9.N<5630 (-+0.W VE9.N<5630 (A<++?,.6W VE9.N<5630 (6=5<D0W LM$ (6<9</3-+90.W VE9.N<5630 (0..,.+9.25RW -)59C! (0..,./,60XG ’ ’ /25 的接口声明
……
2?,.P+9<92,5h6<9</3-+90.ib2O,.P+;,AG
据条目到宿主变量
’ ’ 拷贝待插入数据库的数
2D</;25026h6<9</3-+90.ib2Q</;250G
……
!:! Y.,(&Z&[[预编译器的使用 利用 \.</30 公司提供的预编译器 Y.,!&Z&[[可以实现 对嵌入 E]V 语言的 & 程序的预编译, 其工作原理是: 程序员使 用 & 语言编写嵌入 E]V 语句的 Y.,!&Z&[[源程序 (!:A/ 文 把嵌入的 E]V 语句 件) 。然后运行预编译程序 Y.,!&Z&[[, 同时生成纯 & 语言格式的目标 转换为标准的 \T^&VS 调用, 源程序。 Y.,(&Z&[[的处理过程如图 C 所示。
相关主题