专利名称:一种实现快速数据采集的方法
技术领域:
本发明属于对流程工厂中的过程数据进行采集的技术领域,特别是提供了一种实现快速数据采集的方法,实现了对PLC —侧快速数据采集的一种方法,可以实现对少量快速数据点IOms采集周期的采集需求。
背景技术:
对于流程工厂来说,过程数据采集系统设备运行过程中和生产过程中的过程数据,对设备的调试、生产过程数据的优化、生产过程故障问题的再现和分析都起着不可或缺的作用。一般来说,对于一般的过程数据,不论是用于生产过程分析还是过程优化,500ms 的采样周期已经足够。但是在某些特殊情况下,例如在连铸系统中对结晶器设备的前期调试过程,会需要采集周期为IOms甚至周期更短的快速数据。而对于PLC数据采集,如果采用常用第三方的通讯技术,采样周期最快只能达到50ms,无法满足此类数据IOms的周期要求。同时,即便PLC可以按照IOms采样周期或者Ims的周期完成对该部分数据的采集,对 PLC数据频繁进行发送的同时,还会给网络带来很大的负载,造成网络的不稳定。
发明内容
本发明提供一种在不增加硬件设备的前提下对PLC数据实现高速采集的一种方法,其可以实现少量点IOms的快速数据采集需求,而且不会给网络带来很大的负载从而影响网络的稳定性。本发明解决上述问题工艺步骤如下步骤1 对PLC数据缓冲池内的数据进行基本数据类型的压缩对于BOOL型数据,按照一个字节进行存储,对于float型和long型数据,在精度允许范围内,转换成short类型进行存储,将存储空间从4字节有效的降低为2字节,经过这样的处理,在开辟的固定大小的存储区中能够尽可能多的存储数据采集点,以满足有些数据采集点稍多的情况;步骤2 利用PLC控制程序的功能块,首先开辟两块固定大小的数据缓冲区,两个网络通路,用于保存PLC —侧IOms快速变化数据;为了实现以上方法,首先对数据块格式和顺序进行定义,S7-400发送给快速数据采集系统的数据块是按照一定(数据的类型和采集的先后顺序的)的格式和顺序进行定义的存储区,其原理是利用PLC将每个循环周期所采集的过程值以一定(数据缓冲池内数据结构的)的顺序存放在存储区内,数据包中包含了采样值的信息开始标志、信息结束标志, 不会因为数据管理系统收到数据包的时刻不同而产生采样值的时间标记误差。经过类型压缩后的数据块如表1所示
权利要求
1. 一种实现快速数据采集的方法,其特征在于。工艺步骤如下(1)对PLC数据缓冲池内的数据进行基本数据类型的压缩对于BOOL型数据,按照一个字节进行存储,对于float型和long型数据,在精度允许范围内,转换成short类型进行存储,将存储空间从4字节有效的降低为2字节,经过这样的处理,在开辟的固定大小的存储区中能够尽可能多的存储数据采集点,以满足有些数据采集点稍多的情况;(2)利用PLC控制程序的功能块,首先开辟两块固定大小的数据缓冲区,两个网络通路,用于保存PLC —侧IOms快速变化数据;具体步骤为首先对数据块格式和顺序进行定义,S7-400发送给快速数据采集系统的数据块是按照数据的类型和采集的先后顺序的格式和顺序进行定义的存储区,其原理是利用PLC将每个循环周期所采集的过程值以数据缓冲池内数据结构的顺序存放在存储区内,数据包中包含了采样值的信息开始标志、信息结束标志,不会因为数据管理系统收到数据包的时刻不同而产生采样值的时间标记误差;经过类型压缩后的数据块如下第--组信息:地址字节名称报文头0 .3HEAD报文头4一13第1组变量5*2个字节14 '-23第2组变量5*2个字节24 '-33第3组变量5*2个字节194-—203第20组变量5*2个字节206-—209TAIL报文尾;第二组信息210-—213HEAD报文头214-—223第1组变量5*2个字节224-—233第2组变量5*2个字节234-—243第3组变量5*2个字节404-—413第20组变量5*2个字节416—419TAIL报文尾;其次是建立数据块,用于存储这些快速数据;数据块里信息是不断更新变化的,依据 IOms的采样周期,程序必须被放在0B35循环中断组织块里调用;首先填写每个变量的头文件信息,为保证时间的准确性,该信息必须在第一个采样周期内写入;程序依次将数值写入第一组信息的数据块,写入第1个变量的第1个数值以后,就将指针跳转到下一个变量的第1个数值的地址,写完最后一个变量第1个数值后,循环写入第1 个变量第2个数值,依次类推当程序写完第20组变量后,这时开始写入第二组信息,两组信息交替被写入,完成两组信息数据块的数据采集、存储,完成数据块的建立;(3)采用系统功能块AG_SEND对缓冲区内的数据发送到接收端,当程序写完第一组信息采样值后,就完成了整个数据块的数据采集、存储,这时调用发送程序AG_SEND,将数据块发送给快速数据接收端;第一组数据块完成数据采集后,立刻对第二组数据块进行信息采样,写完后开始调用发送程序AG_SEND,这样两组信息交替发送给数据接收端,完成数据发送;两组信息交替发送解决了数据采集过程中经常发生的丢帧问题,突破了单个过程值采样对实时性的要求,达到了高速数据采集的目的;(4)开发如下专用服务,通过以太网接收PLC周期发送的数据包针对发送方PLC侧采用双通道发送数据块的模式,对于每一个PLC,在PC侧启动两个监听线程,在指定的两个端口上进行监听;服务采用C++语言,在VS2008下开发,通过SOCKET 和windows API函数对该服务进行编写;服务具有如下功能对PLC发送过来的快速数据和普通数据进行接收;对网络情况进行判断,当网络出现异常的时候,停止和PLC的当前连接,等待PLC再次提出连接请求。
全文摘要
一种实现快速数据采集的方法,属于对流程工厂中的过程数据进行采集的技术领域。工艺步骤为对PLC数据缓冲池内的数据进行基本数据类型的压缩;利用PLC控制程序的功能块,首先开辟两块固定大小的数据缓冲区,两个网络通路,用于保存PLC一侧10ms快速变化数据;采用系统功能块AG SEND对缓冲区内的数据发送到接收端,当程序写完第一组信息采样值后,就完成了整个数据块的数据采集、存储,这时调用发送程序AG SEND,将数据块发送给快速数据接收端;开发专用服务,通过以太网接收PLC周期发送的数据包。优点在于,开发专用服务,通过以太网接收PLC周期发送的数据包。
文档编号G05B19/418GK102413035SQ20111023532
公开日2012年4月11日 申请日期2011年8月16日 优先权日2011年8月16日
发明者左永红, 李亮举, 李彦斌, 沈会良, 胡丕俊, 蒋学军 申请人:北京首钢自动化信息技术有限公司