多变量时间序列数据(共4篇)
多变量时间序列数据 篇1
0 引 言
随着股票市场的发展,股票时间序列预测开始成为人们研究的热点。目前对于时间序列预测采用的预测方法主要有自回归模型,滑动平均模型,灰色预测法,神经网络预测法,支持向量机。支持向量机基于结构风险最小化原则,从理论上保证算法的全局最优;而且,支持向量机用核函数思想,能够解决维数灾难问题,使得计算大大简化。支持向量机SVM由Vapnik及其研究小组于1995年提出[1],通过非线性变换将非线性数据转化为某个高维空间中的线性问题,被广泛用于分类、预测和回归,应用于时间序列预测研究有很好的效果。
股票数据是一种特殊的时间序列数据,其变化受各种因素的影响,因而,要对股市时间序列数据进行预测也变得比较困难。目前,有很多学者研究股市时间序列的预测,杨稣等人使用支持向量机进行股市时间序列预测[2],然而预测准确度并不令人满意。之后又使用基于小波变换域的支持向量机进行了股市时间序列预测[3],以提高预测准确度。姚洪兴等人使用小波神经网络进行预测[4]。杨一文等人。考虑用多变量的方法进行股票时间序列预测,同样采用神经网络的方法[5],然而神经网络存在若干缺陷,比如过学习,维数灾难等。支持向量机可以解决小样本、高维度的问题。但是,目前对支持向量机回归预测的研究应用中,大多数使用单变量进行预测。而现实中,每个被预测变量是受多个变量影响的,变量之间存在相互依赖关系,仅由单一变量建立回归预测模型应用于时间序列预测并不能准确预测其变化趋势,导致预测的泛化能力受到影响。例如在气象领域、股票领域,进行预测时应该考虑多变量预测方法。文献[2,3]中使用支持向量机进行预测,然而仅仅考虑了单要素的影响,所以预测精度受到了影响。
本文提出使用多变量进行基于SVM的股市时间序列预测。为了保证SVM训练模型具有好的预测能力,我们采用交叉验证方法进行参数的优选。同时,在采用交叉验证方法时,考虑到交叉验证的效率问题,我们将交叉验证方法并行化,提高了算法的效率,从而缩短了选择参数的时间。然后采用较优参数进行训练,得到训练模型,最后使用训练模型进行预测。实验证明,该方法的预测准确度较之单变量预测方法的准确度有大幅度的提高,证明了该方法的合理性和有效性。
1 相关原理
1.1 支持向量机(SVM)回归原理
支持向量机是从统计学习理论发展而来的,其形式化表示为,设给定训练样本集G={(xi,yi)}
回归问题,是输入变量和输出变量通过函数关系表示,并以此函数为规则,通过输入新的变量,得到新的输出作为预测值。对于包含n个样本{xi,yi}
在支持向量机回归中,输入样本首先用非线性映射映射到一个n维的特征空间,然后在这个特征空间中建立一个线性模型:
f(x,w)=w·Φ(x)+b (1)
其中,f(x,w)是估计函数;w为权向量;Φ(x)为输入的非线性映射集合;b为阈值。其正确性是由损失函数来衡量的。1964年,Huber提出基于噪声模型选择损失函数的最佳方法。然而Huber所提出的损失函数不能使得支持向量稀疏,仍然不适用于支持向量机。为了解决这个问题,Vapnik提出了ε不敏感损失函数:
如果对于每个输入向量xi,f(xi,w)和yi的差值很小,则认为这样的f(x,w)能通过x准确的预测y,其中ε≥0,用来表示预测值与实际值的最大差距,该算法称为ε-SVR(ε-Support Vector Regression)[6,7]。本文采用ε-SVR作为预测实验中的回归算法[8,9]。
依据结构风险最小化准则,确定系数w和b,用数学语言表达,SVR所要求解的问题是:
s.t.
其中,常数C(C>0)用来调整训练模型, 用于平衡结构风险和置信风险。
利用对偶Lagrange,得出式(1)中的w可表示成x的线性组合:
f(x)的复杂度取决于支持向量(αi-α*i≠0的项),同时当满足Mercer条件时,有k(x,x′)=Φ(x)·Φ(x′),Φ(x)为将n维向量映射到其它维度的映射。则式(4)中x·xi项由满足Mercer条件的核函数k(x·xi)取代,得到:
本文采用径向基核函数作为支持向量机的核函数。径向基核函数为:
1.2 交叉验证原理
参数的取值对支持向量机有很重要的影响,选择合适的参数,能够使支持向量机既有好的学习能力,又有好的泛化能力。参数选择的方法有交叉验证法,经验公式法,遗传算法等。
交叉验证是度量SVM回归结果的首选方法,并且它具有指导参数选择的能力。交叉验证是在错误分析中用来估计错误率的,是由Hills [10]、Lachenbruch 和 Mickey [11]提出的。交叉验证被称为是对泛化误差的无偏估计[12,13],是统计学习中的著名方法,其本质是通过在训练集上训练模型,使之既具有一定的训练精度,又获得良好的泛化性能。P. Jonathan等人[14]在预测模型的性能估计中使用了交叉验证。交叉验证分为三种,保持法、K折交叉验证方法和弃一法交叉验证。
K折交叉验证(k-fold cross-validation)原理是将训练样本分成数据量相同的k个子集,执行训练算法k次。对于每个子集i (i=1,2,…,k),在第i次训练时,要用除去第i个子集后的k-1个子集作为训练集训练模型,用第i个子集作为测试集计算模型预测的误差。最后将k次预测的平均误差值作为模型的的近似误差值。下面给出K折交叉验证算法:
输入: 数据集D,k
输出: 平均误差
(1) Partition (D,k);
(2) for (i=0;i<k;i++){
(3) T=D-Di; //划分D的子集T为训练集
(4) Training(T); //训练T
(5) Testing(Di); } //使用Di测试
(6) mean_error=
该方法的缺点是,训练算法要进行k次,所以,它是非常耗时的。
2 算法以及流程
2.1 并行K折交叉验证方法
K折交叉验证法广泛地应用于当前的参数选择方法中,其缺点是计算量大,当样本数很大时会存在时间效率特别低的问题。例如,我们使用K折交叉验证,当样本数很大,并且k也比较大的时候,需要训练k次,而每训练一次的时间代价是O(n2),所以,提高该算法的时间效率是有必要的。交叉验证原理是将样本分成k组,每次训练除了测试集以外的k-1个组,所以,每次训练是独立的,互不影响的。可以将该算法并行化。
本文提出并行化K折交叉验证算法(PCV),以提高该算法的效率。该并行方法采用MPI消息传递机制,我们将每次训练指定到一个节点进行,最后由所有从节点将结果发送到主节点,由主节点计算最终的误差。下面给出并行化K折交叉验证算法的形式化表述。
算法PCV是运行在分布式内存并行环境下的并行算法。算法中,函数svm_train根据参数param训练数据集subprob,得到训练模型submodel。函数svm_predict是预测函数,返回预测值。在算法中,每个处理器(包括处理器0)单独地训练分到该处理器上的训练样本子集,最后,从处理器(从节点)将每个子集的训练误差值发送到处理器0(主节点),处理器0计算最终误差值。
PCV 算法
输入: 数据集D,k
输出: 平均误差
(1) MPI_Comm_size(MPI_COMM_WORLD,&size);
(2) MPI_COMM_rank(MPI_COMM_WORLD,&myid);
(3) init(i);
(4) init(num);
/*初始化i和每个节点做交叉验证的次数num*/
(5) for(;num>0;i++,num--){
/*每个组的开始和结束点在整个样本中的位置*/
(6) begin=fold_start[i];
(7) end=fold_start[i+1];
(8) subprob.1=1-(end-begin);
(9) init(subprob.x,subprob.y,end,begin);
//初始化k-折交叉验证的训练集和测试集
(10) struct svm_model*submodel=svm_train(&subprob,param);
(11) for(j=begin;j<end;j++)
(12) target[perm[j]]=svm_predict(submodel,prob->x[perm[j]]);}
/*将结果发送到节点0*/
(13) if(myid!=0)
MPI_Send(&result,1,MPI_DOUBLE,0,90,MPI_WORLD);
/*节点0接收消息*/
(14) else
MPI_Send(&result,1,MPI_DOUBLE,x,90,MPI_COMM_WORLD,&status);
(15) Caculate(total_error,sumv,sumy,sumvv,sumyy,sumvy);
2.2 基于SVM的多变量股市时间序列预测算法
利用支持向量机进行多变量时间序列预测的思路是,假设时间序列的预测要素x有在m个时间段内的观测值(样本),这些观测值是由d个变量构成的,则预测时间序列可以表示为:
Y(t)=F(X(t0),X(t1),…,X(tm-1))
式中,ti=t0+i×Δt,i=0,1,…,m-1,X={x1,i,x2,i,…,xd,i},则该序列是在有界可测集T(时间坐标上的t0,t0+Δt,…,t0+(m-1)Δt)上的可测函数Y(t)。通过SVM回归模型求解Y(t),作为根据要素x的m-1个时间段历史样本,预测x在m时刻的值的函数。
基于SVM的多变量股市时间序列预测算法有如下4个步骤:
Step1 样本的获取与数据预处理
样本的性能对模型的学习有着极为重要的影响,合适的样本能够为提高预测模型的正确率提供良好的支持。
我们选取股票收盘价作为被预测要素,考虑到每日股票的收盘价同时受开盘价,最高价和最低价的影响,所以在预测过程中采用多变量分析和预测,使用开盘价、最高价、最低价和收盘价四个变量,对收盘价进行预测。
数据预处理主要是训练数据格式的归一化处理,即将所有具有不同量纲指标的值规范化到[-1,1]区间内,以减少训练过程中数值计算的复杂度。归一化的公式如下:
其中,xmax和xmin分别为样本数据中的最大值和最小值,x′i为归一化后的数据。
对于时间序列{x1,x2,…,xN},前n个数据作为训练样本,后N-n个数据作为测试集。选定时间序列的时延窗口m为5,当前时刻为t,数据值为xt,x的相关要素为x′,x″和x,则训练数据可表示为:
其中,xi,x′i,x″i和xi是归一化后的数据,i∈[t-1,t-4],xt是原数据。
Step2 参数的确定
支持向量机能够解决有限样本和维数灾难等问题,在预测中,必须构造准确的SVM回归预测模型,关键是选取合适的核函数和参数,从而使训练模型具有较高的预测精度。SVM回归预测中,主要参数是核函数的参数σ,ε,C。文章中,采用并行的K交叉验证方法进行参数选择,以误差值最小时的参数作为较优参数。
Step3 用训练样本数据建立模型
选择好参数后,使用SVM方法构造回归函数Yt,将m维的输入空间变换到另一个高维特征空间,并根据结构风险最小化原理,综合考虑函数复杂度和回归误差,求得最优回归曲线,建立回归模型。
Step4 将待预测的数据输入模型,得到预测结果
使用Step3得到的模型,用测试样本进行预测。本文对实验的预测结果采用如下2个统计量检验其拟合效果和预测效果:
(1) 均方根误差:
(2) 平均绝对百分比误差:
预测算法流程如图1所示。
3 实验结果以及分析
实验中,实验数据为深圳成指2000至2009年上半年的数据。选取每日收盘价作为预测数据,实验的主要参数有时间序列的时间延迟窗口m,核函数的参数σ,ε,C。
并行交叉验证算法是在甘肃省计算中心的曙光4000L超级计算机上进行的。
3.1 参数选择
参数的取值对支持向量机有很重要的影响。实验中用到的主要参数有:时延窗口m,和支持向量机核函数参数δ,ε,C。
给定时延窗口m=4,使用并行交叉验证方法,得到该实验中较优的核函数参数。令γ=1/δ2,则γ=1,ε=0.001,C=100。
取核函数参数γ=1,ε=0.001。变化惩罚参数C值,在实验中根据误差值变化C值跨度,得到预测误差比较如表1所示。
由表1可以看出,当C值增大时误差逐渐减小,当C值在[200,300]区间时误差达到最小,当C值超过300后,误差不再有明显变化。且在C值变化中,平均绝对百分比误差始终保持在10%以内。
3.2 预测准确度分析
为了更好地说明采用多变量预测的合理性和准确性,采用单变量的支持向量机股市时间序列回归预测结果作为对比。取时延窗口m=5,核函数参数γ=1,ε=0.001,C=100。图2显示了取N-n为57的预测结果。图3显示的是随机从样本中选取一个测试集,剩下的作为训练集的预测结果。由图2和图3可以看出,采用多变量进行预测后,预测准确度得到了大幅度的提高,证明了该方法在预测精度方面的优越性。
同时,我们考查了预测的均方根误差随C值变化的情况。图4说明了均方根误差随C值变化的曲线。
由图4可以看出,当C值大于等于100时,均方根误差变化减小,趋于稳定。所以,在实验中取C值为100,即可以满足训练质量要求。
实验结果表明,采用多变量的支持向量机进行股票时间序列预测时,可以将误差控制在较小的范围内。采用该方法的泛化能力要强于单变量的SVM回归预测。
3.3 相对加速比分析
为了度量相对加速比,在实验中保持数据集不变,改变节点数目。具有p个节点的相对加速比的度量方法如下:
相对加速度
对于样本数据集,我们选择三个不同大小的数据集测试相对加速度,从图5可以看出,随着节点数目增加,相对加速度先呈增长趋势,然后又下降趋势。最高的相对加速度值为9.08,证明了该方法在时间方面的优越性。相对加速度值下降是由于当节点数目增大时,节点间消息传递时间占总运行时间的比例较大,所以相对加速度值出现了下降趋势。对于数据集data1和data2,当节点数增加到8时,出现下降趋势,而数据集data3,当节点数增加到7时,就有下降趋势,是由于数据集data3数据量最小的原因。综上分析,对于数据量比较大的情况,并行K折交叉验证方法可以显示其优越性。
4 总 结
大多数时间序列数据的外部控制因素多变,包括股市时间序列,因此,仅仅依靠单一变量进行时间序列分析与预测并不能很好地预测出时间序列的变化趋势。本文提出应用多变量进行基于SVM的股市时间序列预测,建立多变量的支持向量机时间序列回归预测模型,优点是使用多变量进行预测,较之单变量预测具有高的精确度,另外使用并行K折交叉验证方法缩短了选择参数时间,实验显示出了较好的预测效果。今后工作主要致力于SVM训练方法的并行化研究,以提高训练的时间效率。
摘要:目前在股市时间序列预测中,大多数采用单变量时间序列预测算法,导致预测准确度不够高。提出采用基于支持向量机SVM(Support Vector Machines)的多变量股市时间序列预测算法,来提高预测准确度。SVM训练算法中,合适的参数可以使训练模型具有更好泛化能力。交叉验证具有指导参数选择的能力,然而考虑到交叉验证算法效率不高的问题,将其并行化,既达到了参数优选的目的,又避免了传统交叉验证效率低的问题。然后,根据较优参数建立多变量SVM时间序列回归预测模型,进行预测。实验证明,预测平均绝对百分比误差控制在10%以内,并且较之单变量的SVM回归预测有更好的泛化能力。
关键词:支持向量机,回归,多变量,交叉验证,并行
多变量时间序列数据 篇2
西门子PLC广泛应用于工业控制,尤其在汽车生产线上,汽车生产工艺越来越复杂,人机化要求越来越高,精度要求越来越苛刻,所需求的变量随之增加,普通的一条生产线变量就要成千上万个,批量数据的传送与处理,给工业控制提出了难题,针对大数据多变量问题,设计可靠、方便、易读的控制程序尤为重要,充分合理的利用PLC控制技术,是实现自动化汽车生产的关键。在此,对于多变量系统,程序上进行了研究与验证,传统的PLC寻址方式[1],包括直接寻址,存储器、寄存器间接寻址以及POINTER指针[2]数据类型都满足不了多变量大数据的控制,而且传统控制稳定性低,停台时间长等。基于某汽车侧围生产线上西门子PLC S7-400控制平台,利用ANY数据指针作为变量,开发出一种新应用。
ANY指针数据类型是10字节指针类型,用来传递DB块号、数据地址、数据数量以及数据类型。灵活采用高级编程语言中的一些技巧,实现变量的批量处理与控制,解决了传统PLC编程难以实现此控制的难题[3]。
1 汽车侧围生产线工作过程
1.1 侧围生产线简介
侧围生产线为提高生产节拍是由若干个工位组成,每个工位根据生产工艺,成一定数量的冲压件焊接,最后完成侧围生产的半自动生产线。由于侧围冲压件多,为固定零件方便焊接,需要的气缸数量庞大且种类繁多。每个气缸需要检测原位和终点信号。侧围生产线控制除了气缸还有多种检测信号,比如零件占位检测,侧围外板检测,气源检测等,而且需要人工参与的协调控制。
1.2 侧围生产线硬件系统配置
某汽车侧围生产线包括左右两侧,38个工位,16块触摸屏,左右各8块,选择HMI 2为例,如表1HMI 2控制工位气阀,表2HMI 2控制工位开关数量所示,HMI2控制三个工位,分别为AF03010,AF03015,AF03020,共96个气缸,19个检测信号,共需要211个输入点,20个输出点。从表中三个工位可以看出控制所需硬件和传感器繁多。据不完全统计,此侧围生产线共需要1300个气缸,180个检测信号,4000多组报警显示。
1.3 侧围生产线软件系统简介
首先,满足侧围生产工艺上的基本控制功能。要求人性化的HMI[3](人机操作界面)。清晰的实时状态显示。准确的故障诊断,缩短故障的排除时间,减少停台时间[5]。这都大大增加了数据处理与传送的繁琐。在生产线中,各个工位的控制是相似的,因此对于所有工位的逻辑控制是一致的,可以将其提炼为一个公共的FB控制块,在所有工位控制中调用此FB块,实现逻辑控制。但由于各个工位在控制对象的数量、形式以及逻辑步骤之间的连接差异等,需要在调用FB块时给出不同的形参值,为此设计了图1工位控制参数设定画面。所以上述功能的实现都需要以大量的数据交换作为基础,为了达到上述目的,在程序中使用了ANY指针变量。
2 西门子ANY指针
2.1 软件ANY指针声明
ANY指针是一种传递指针[6]的形参数据类型,用于逻辑块(FB、FC)之间传递参数,可以传递DB块号、数据地址、数据数量及数据类型。
在ANY数据类型参数中,数据区的含义如表3所示。
ANY指针由10个字节组成。其指针数据格式如表4所示,指针变量的数据格式,表5绝对(相对于地址等于0的地址指针对应指针数据格式的)地址分配。
2.2 举例说明ANY指针赋值形式
1)对数据类型参数进行赋值时可以选择指针显示方式直接赋值,与其他指针相比,ANY类型指针可以表示一段长度的数据。例如:P#DB10.DBX0.0 BYTE 654,表示指向DB10.DBB0~DB10.DBB654 654个字节。
2)当在FB FC接口中定义了输入ANY指针变量时,指针按照指针的数据格式形式赋值。以模式命令指针为例:
3)I/O起始地址进行自定义指针#PLC_Use.HMI_Setting.IO_Start_Address
3 程序应用实现
3.1 程序结构分析
针对侧围生产线大数据多变量的问题,程序采用结构化编程[4,7]和ANY指针实现,在编程时需要规划整体结构[8,9],采用层次化分别对每个工位进行控制,控制程序结构如图2所示。以FC101为例,FC101对应于触摸屏HMI2,可以实现AF03010,AF03015,AF03020工位的自动控制,与FB101,FB102,FB103分别对应,AF03010的控制包括FB95(Led_Exist_Sub),FB96(Exist_check_Avail),FB97(Orig_Complete_sub),FB98(Orig_Valve_Control)等,其余FC102,FC103,FC104,FC105等为其他工位的控制。结构与FC101相似。
3.2 ANY指针interface
根据工位具体情况,每块触摸屏控制的工位数不同,侧围生产线操作员通过触摸屏选择,控制不同工位。
以HMI的设计为例说明ANY指针[10]的应用。HMI是生产线上的重要部件,主要完成指令的输入和运行状态的显示及故障的报警输出。从数据流[11]向来看分为从HMI到PLC CPU的控制指令输出和从PLC CPU到HMI的显示数据的输入。在图3[3]中,按钮和模式选择是到PLC的输出数据,各种状态显示及报警是输入的数据,因此在FB101的接口定义中定义了Mode_Command_P、Ex_Var_Button_P等到PLC的输出数据指针和LED_Point、HMI_IO_Dis_Point等到HMI的数据输入指针。
FB101[12~14]调用过程如图4所示。
在接口信号的输入端设置HMI_IO_Dis_Point为ANY指针数据变量,数据长度设置为320 byte,此时的ANY指针为形参变量,由于PLC内部的逻辑运算需要定义相应的临时变量,把临时变量赋值给输入的指针,使HMI_IO_Dis_Point指针指向实际地址DB10.DBX1768.0,程序通过SFC20(块传送)把逻辑运算结果传送至临时变量temp T_HMI_IO_Dis_Point指针所指位置。并显示至触摸屏上。
举例说明,设置两组阀分别设置4个气缸,设置MZ11夹紧,MZ12松开,I/O状态显示变量设置为整型量,当数值为2时显示黄色闪烁,代表气缸伸出或缩回的过程中,当数值为3时黄色不闪烁,代表缩回到位,当数值为4时,代表气缸报警。逻辑运算结果转化成数字量送入指针地址寄存器。I/O状态显示[3]如图5实例I/O状态显示所示。
4 结束语
某汽车侧围生产线采用ANY指针方法的控制程序两年来得到了良好的效果,相比采用传统[15]的控制方法,CPU的工作内存明显减少,在CPU选型上可节省成本达25万元,再者,甲乙两班生产的停台时间由原来的平均每班组30分钟降低为5分钟,按10分钟两台侧围左右骨架计算,每个侧围骨架估价12000元,成本2000元。两年因减少停台而增加的利润为(30-5)×2×30×12×2÷5×(12000-2000)=7200万。
不仅在经济效益上有所提高,而且采用结构化和ANY指针编程的方法,易于调试,可移植性强,易读性强,易于分析逻辑关系,程序代码效率高,结构化编程和ANY指针的使用可简化程序设计过程,减小代码长度,提高编程效率,比较适合于较复杂自动化控制任务的设计。
摘要:针对工业现场多变量大数据特点,提出了一种西门子可编程控制器ANY指针编程方法。与传统逻辑控制编程方法相比,ANY指针编程可以对大量的数据进行批处理,速度快,实时性好,是对传统控制更好的应用和创新。以某汽车公司侧围生产线为例,给出了ANY指针编程方法的应用实例,详述了FB101功能块创建、ANY指针引用和定义以及ARRAY、STRUCT、UDT及多背景数据块的使用等方法,运用高级语言编程技巧显示人机界面,直观灵活的展现工业实时状况,很好地实现了结构化编程。应用结果表明该系统性能稳定,运行可靠,人机界面操作简便。
多变量时间序列数据 篇3
1 变量归档
在Wincc Explorer界面中打开变量记录, 点击归档, 在右方区域点击右键, 选择归档向导, 根据向导的提示步骤创建归档变量。若想改变采集周期, 可点变量属性, 分别设置采集、归档、显示时间, 完成后再保存。另需在计算机属性的起动设置中要给变量记录系统打勾才能正常调用。
2 数据采集软件的编写
本文中, Wincc作为上位机组态软件, 将发出的指令与采集回来的数据经过变量归档实时地存入数据库SQL server2005中, 为了便于不同专业科研人员对于数据的处理, 利用Excel内嵌的VBA编程语言, 对数据库内的数据进行采集。
打开excel, 在视图选项栏下, 首先录制一个空的宏, 保存在当前工作簿中, 然后选择查看宏, 点击编辑, 进入了VBA界面, 在This Work Book中, 写入Excel文件打开预代码Private Sub Workbook_Open () 。
程序的实现:
首先声明获取计算机名称函数
在Private Sub Workbook_Open () 下, 主要写入以下代码:
'定义一个由16个空格组成的字符串, 获取计算机名称
'将Excel表格中时间起始文本框、服务器下拉列表框用变量代替
'将Excel表格中数据类型下拉列表框用变量代替
'将文本框中的内容填写为今天, 并且起始间距为1小时
'Wincc的数据库中提供一个时间段内的最小值, 最大值, 平均值, 第一个值, 最后一个值, 总和, 数据总数等一些我们所经常需要的数据, 这里我们只选择最小值, 最大值或平均值。
Time Calc.Get Time Zone
'由于记录到SQL server数据库的时间是格林尼治时间, 和中国的东8区有8个小时的时间差, 也就是说记录的时间比本机PC时区晚8小时。
程序中新建了一个Time Calc的模块, 其中定义了函数Get Time Zone。
声明API函数GetTimeZoneInformation, TimeZoneInformation有个成员叫bias, 就是与格林尼治时间的时差, 以分钟为单位, 比如中国就是-480。
在Sheet1中写入数据库变量读取、写入代码
以上代码详细表述了打开数据库、Excel各项属性等重要过程。在做多变量查询的过程中, 我们还需要依次做几个数据集的循环, 用如下数据库连接字符串读取相关变量的数据。
最后一个数字要求选出的数据类型, 5代表平均值, 1代表第一个值, 2代表最后一个值, 3为最小值, 4为最大值, 6为总和, 7为区间数据采集数量, 512为质量代码。Time Step表示数据区间内的采集时间间隔。我们还需要注意的是str Start Time和str End Time一定要通过函数先转换成UTC时间。
3 程序运行步骤与结果
首先选择主机为本机, 填写要读取的时间段, 时间段内的读取间隔, 以及要选取的数据类型, 点击read按键, 可依次读取各变量各时间段相应数据。
4 结论
通过Excel访问Wincc数据库SQL server2005, 实现对各变量多类型数据的读取, 为后续基础报表、科研研究提供了有效全面的数据。文章提供了程序编制所需的主要过程及代码, 有利于对数据库访问和读取。
摘要:通过Excel中的VBA (Visual Basic for Application) 脚本读取Wincc数据库SQLserver2005中的变量数据, 实现了多时间段、各变量多数据类型的读取。
关键词:Excel,VBA,Wincc,SQLserver2005
参考文献
[1]赵晓廉.Excel通过OPC访问Wincc数据实验[J].冶金自动化, 2009, S2:911-914.
[2]李新军.VB环境下通过OPC接口访问Wincc数据的实现[J].信息化技术与控制, 2007, S1:59-62.
多变量时间序列数据 篇4
Microsoft SQL Server 2005是一个全面的数据库平台, 使用集成的商业智能 (BI) 工具提供了企业级的数据管理。Microsoft SQL Server 2005数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能。在本文中, SQL Server 2005是联系Wincc与Excel的桥梁和纽带。
Wincc在西门子工业自动化领域已经得到广泛的应用, 各种各样的报表要求几乎都能满足。本文中从实际角度出发, 提供一种直接使用Excel VBA编写客户端访问Wincc数据库SQL Server 2005的方法, 针对用户对变量的要求, 从数据库中同时挑选多个变量, 不同的时间段、时间间隔, 实现了不同要求的数据采集。本实例中提供了关键的Excel示例代码, 有一定的实用价值。
1 数据采集软件的编写
本文中, Wincc作为上位机组态软件, 将发出的指令与采集回来的数据经过变量归档实时地存入数据库SQL server2005中, 为了便于不同专业科研人员对于数据的处理, 利用Excel内嵌的VBA编程语言, 对数据库内的数据进行采集。
打开excel, 在视图选项栏下, 首先录制一个空的宏, 保存在当前工作簿中, 然后选择查看宏, 点击编辑, 进入了VBA (Microsoft Visual Basic for Applications) 界面, 在This Work Book中, 写入Excel文件打开预代码Private Sub Workbook_Open () 。
在Sheet1中写入数据库变量读取、写入代码
以上代码详细表述了打开数据库、Excel各项属性等重要过程。在做多变量查询的过程中, 我们还需要依次做几个数据集的循环, 用如下数据库连接字符串读取相关变量的数据。
最后一个数字要求选出的数据类型, 5代表平均值, 1代表第一个值, 2代表最后一个值, 3为最小值, 4为最大值, 6为总和, 7为区间数据采集数量, 512为质量代码。Time Step表示数据区间内的采集时间间隔。
我们还需要注意的是str Start Time和str End Time一定要通过函数先转换成UTC时间。
2 程序运行步骤与结果
首先选择主机为本机, 填写要读取的时间段, 时间段内的读取间隔, 以及要选取的数据类型, 点击read按键, 可依次读取各变量各时间段相应数据。
3 结束语