CN102215164B - 一种传输数据的方法 - Google Patents
一种传输数据的方法 Download PDFInfo
- Publication number
- CN102215164B CN102215164B CN 201110138246 CN201110138246A CN102215164B CN 102215164 B CN102215164 B CN 102215164B CN 201110138246 CN201110138246 CN 201110138246 CN 201110138246 A CN201110138246 A CN 201110138246A CN 102215164 B CN102215164 B CN 102215164B
- Authority
- CN
- China
- Prior art keywords
- measuring point
- data
- quality codes
- transmission
- fiducial time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Abstract
本发明公开了一种传输数据的方法。在首次向OPC服务器传输数据时,除直接传输各测点的开关量和质量码之外,还以基准时间结合偏移量的形式传输各测点的时间戳,数据报文中包含OPC标准规定的所有字段,保证了数据的完整性和准确性,另外,由于在每个数据报文中只包含一个占据8字节的基准时间,并且各测点的偏移量以不少于20bits传输即可,所以在保证数据报文完整性的前提下,缩减了向OPC服务器传输的数据容量,不需进行数据压缩就可以向OPC服务器传输数据,保证了数据传输的实时性;在非首次向OPC服务器传输数据时,只传输发生变化的质量码,进一步缩减了向OPC服务器传输的数据容量。
Description
技术领域
本发明属于通信技术领域,尤其涉及一种传输数据的方法。
背景技术
工业控制领域中经常有大量散布的仪表,这些仪表的数据往往需要以OPC(用于过程控制的对象连接与嵌入)标准的方式汇集到OPC服务器,再由OPC服务器将数据提供给上层应用系统如集中监控软件,并且这个过程同时要求数据的实时传输能力(即要求数据能够迅速从仪表上传到OPC服务器)。目前业界的标准解决方法是通过使用一个嵌入式数据采集设备连接邻近的一台或者多台仪表,由该嵌入式数据采集设备从连接的仪表上实时采集数据并将数据打包以后发送给OPC服务器;再由OPC服务器以标准的OPC接口对上层应用系统开放接口,使得上层应用系统能够从OPC服务器采集这些数据。
在现实中,由于这些仪表以及相应的嵌入式数据采集设备的地理分布往往非常分散,很多情况下没有高速网络连接,甚至很多是通过无线方式(如GPRS或者卫星通讯链路)接入的,因此数据传输的带宽非常有限。根据OPC标准,要求传输的数据包括仪表中各测点采集的数值、质量码(16bits)和时间戳(64bits),因此需要传输的数据总量很大。
目前基于窄带网络(一般以传统的电话线拨号上网速率的上限56Kbps为分界,将56Kbps及其以下的接入称为窄带,在现实应用中基于无线的GPRS网络或者卫星通讯链路都是典型的窄带网络)向OPC服务器传输数据的方式主要有两种:一、仅向OPC服务器传输仪表中各测点采集的数值,而不向其传输OPC标准规定的时间戳和质量码,以此适应较小的带宽,之后,OPC服务器将接收到数据报文的时间作为OPC数据的时间戳、统一采用192(数据正常)作为OPC数据的质量码;二、通过采用通用数据压缩技术(如LZW技术)将所有数据进行压缩以后再传输给OPC服务器。
但是,上述两种方式均存在缺陷:对于第一种方式,由于未传输质量码和时间戳,因此OPC服务器得到的数据信息是不完整的,进而导致数据的准确性较低,例如底层数据源上测点数据的置信度可能已经是无效的,但是OPC服务器依然认为其是有效的;对于第二种方式,为了达到较好的压缩效果需要较多的数据样本,因此需要在积累数个数据采集周期的数据以后再进行一次压缩,这将会延迟数据上传的时间,导致数据的实时性得不到保证。
发明内容
有鉴于此,本发明的目的在于提供一种传输数据的方法,可以解决现有技术中在窄带网络中向OPC服务器传输数据过程中存在的数据信息不完整、准确性低、不能保证实时性的问题。
为实现上述目的,本发明提供如下技术方案:
一种传输数据的方法,用于在窄带网络中向OPC服务器传输数据,包括:
采集各个开关量仪表中测点的位号数据,所述位号数据包括时间戳、质量码和开关量;
确定多个时间戳中的一个为基准时间,计算各个时间戳与所述基准时间之间的偏移量;
如果是首次向所述OPC服务器传输数据,则将所述基准时间、各个测点的开关量、质量码、偏移量及测点的数量封装成数据报文并传输;
如果不是首次向所述OPC服务器传输数据,则判断所述各个测点的质量码是否发生变化,确定各个测点的质量码标记,将所述基准时间、各个测点的开关量、偏移量、质量码标记和发生变化的质量码封装成数据报文后传输。
由此可见,本发明上述公开的传输数据的方法,在首次向OPC服务器传输数据时,除直接传输各测点的开关量和质量码之外,还以基准时间结合偏移量的形式传输各测点的时间戳,数据报文中包含OPC标准规定的所有字段,保证了数据的完整性和准确性,另外,由于在每个数据报文中只包含一个占据8字节的基准时间,并且各测点的偏移量以不少于20bits传输即可,所以在保证数据报文完整性的前提下,缩减了向OPC服务器传输的数据容量,不需进行数据压缩就可以向OPC服务器传输数据,保证了数据传输的实时性;在非首次向OPC服务器传输数据时,只传输发生变化的质量码,进一步缩减了向OPC服务器传输的数据容量。
一种传输数据的方法,用于在窄带网络中向OPC服务器传输数据,包括:
采集各个模拟量仪表中测点的位号数据,所述位号数据包括时间戳、质量码和模拟量;
确定多个时间戳中的一个为基准时间,计算各个时间戳与所述基准时间之间的偏移量;
如果是首次向所述OPC服务器传输数据,则将所述基准时间、各个测点的模拟量、质量码、偏移量及测点的数量封装成数据报文并传输;
如果不是首次向所述OPC服务器传输数据,则判断所述各个测点的质量码是否发生变化,确定各个测点的质量码标记,计算所述各个测点当前采集的模拟量与前次采集的模拟量之间的模拟量差值,确定各个测点的数值有效位,所述数值有效位表示所述模拟量差值占据的字节数,将所述基准时间、各个测点的偏移量、质量码标记、模拟量差值、数值有效位和发生变化的质量码封装成数据报文后传输。
由此可见,本发明上述公开的传输数据的方法,在首次向OPC服务器传输数据时,除直接传输各测点的模拟量和质量码之外,还以基准时间结合偏移量的形式传输各测点的时间戳,数据报文中包含OPC标准规定的所有字段,保证了数据的完整性和准确性,另外,由于在每个数据报文中只包含一个占据8字节的基准时间,并且各测点的偏移量以不少于20bits传输即可,所以在保证数据报文完整性的前提下,缩减了向OPC服务器传输的数据容量,不需进行数据压缩就可以向OPC服务器传输数据,保证了数据传输的实时性;在非首次向OPC服务器传输数据时,只传输发生变化的质量码和各测点的模拟量差值,进一步缩减了向OPC服务器传输的数据容量。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明公开的一种传输数据的方法的流程图;
图2为本发明公开的首次传输数据时的一种数据报文结构示意图;
图3为本发明公开的首次传输数据时的另一种数据报文结构示意图;
图4为本发明公开的非首次传输数据时的一种数据报文结构示意图;
图5为本发明公开的非首次传输数据时的另一种数据报文结构示意图;
图6为本发明公开的首次传输数据时的另一种数据报文结构示意图;
图7为本发明公开的首次传输数据时的另一种数据报文结构示意图;
图8为本发明公开的另一种传输数据的方法的流程图;
图9为本发明公开的首次传输数据时的一种数据报文结构示意图;
图10为本发明公开的首次传输数据时的另一种数据报文结构示意图;
图11为本发明公开的非首次传输数据时的一种数据报文结构示意图;
图12为本发明公开的非首次传输数据时的另一种数据报文结构示意图;
图13为本发明公开的首次传输数据时的另一种数据报文结构示意图;
图14为本发明公开的首次传输数据时的另一种数据报文结构示意图。
具体实施方式
对下文中出现的英文缩写或简写进行说明:
OPC:OLE for Process Control,用于过程控制的OLE;
OLE:Object Linking and Embedding,对象连接与嵌入;
GPRS:General Packet Radio Service,通用分组无线服务;
bit:位,用以描述电脑数据量的最小单位,二进制系统中,每个0或1就是一个位;
Byte:字节,计算机信息技术用于计量存储容量和传输容量的一种计量单位,1个字节等于8位二进制。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在工业控制领域,嵌入式数据与多个底层数据源连接,底层数据源多指直接测量电压电流信号的一次仪表,每个仪表上面可以有多个测点,每个测点对应一个电压/电流信号通道。一次仪表采集的数值有两种类型:开关量(只有两种状态,开或关)和模拟量(整数或者浮点数,如34、1.12)。仪表根据其采集的数值也可以划分为开关量仪表和模拟量仪表。
本发明公开了一种传输数据的方法,可以解决现有技术中在窄带网络中向OPC服务器传输数据过程中存在的数据信息不完整、准确性低、不能保证实时性的问题。
参见图1,图1为本发明公开的一种传输数据的方法的流程图。包括:
步骤S11:采集各个开关量仪表中测点的位号数据。
测点的位号数据包括时间戳、质量码和开关量。时间戳是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。根据OPC协议要求时间精确到100纳秒,因此时间戳需用64bit来表示。质量码是指采集到的数据对应的可信度,根据OPC协议使用一个16bit长度的质量码来标识采样数据是否可靠,例如OPC标准规定当质量码为192时表示数据正常,当质量码为0时表示数据无效,实际上从0~65535每个质量码的值都对应着数据的不同状态。开关量仪表中的测点,其开关量只有开或者关两个状态,需用1bit来表示。
步骤S12:确定多个时间戳中的一个为基准时间,计算各个时间戳与所述基准时间之间的偏移量。
在该步骤中,可以在采集到的多个时间戳中任选一个时间戳作为基准时间,并根据该基准时间计算各个时间戳与该基准时间之间的偏移量。由于嵌入式数据采集设备对底层数据源(仪表)的采样周期一般不会高于15分钟=900000毫秒<220毫秒,所以各个时间戳与基准时间之间的偏移量小于220毫秒,在数据报文中用不小于20bit来标识各偏移量已经足够。每个测点的时间戳都由基准时间和相应的偏移量表示。
步骤S13:判断是否为首次向OPC服务器传输数据,若是,执行步骤S14,若否,执行步骤S15。
步骤S14:将所述基准时间、各个测点的开关量、质量码、偏移量及测点的数量封装成数据报文并传输。
首次向OPC服务器传输数据时,将测点的数量、基准时间、各个测点的开关量、质量码和偏移量以嵌入式数据采集设备和OPC服务器所共知的格式进行封装。OPC服务器根据已知格式在数据报文中读取各个数据,之后确定各个测点的时间戳、质量码和开关量,并进行存储。
当对N个测点的数据进行传输时,数据报文中包含1个基准时间和N个偏移量,1个基准时间占用64bits,偏移量以24bits表示(可以表示4.66小时左右的偏差),与传输N个时间戳相比,可以缩减数据报文的数据容量。
需要指出的是,在一个数据报文中最多可以传递65536个测点的位号数据,当测点的数量超过65536时,则分开用2个数据报文发送。在第二个数据报文中,同样包含测点的数量、基准时间、各个测点的开关量、质量码和偏移量。
在首次传输数据过程中数据报文的格式可以如图2所示。数据报文中依次为:测点的数量;基准时间;第1~n个测点的偏移量;第1~n个测点的质量码;第1~n个测点的开关量。
其中,n不大于65536,测点的数量占用2字节,基准时间占用8字节,偏移量不能小于20bits,此处偏移量以3字节表示,质量码占用2字节,开关量占用1bit。由于该数据报文的格式为嵌入式数据采集设备和OPC服务器所共知的,并且各数据的长度固定,所以OPC服务器可以根据测点的数量在数据报文中依次读取相应数据,进行简单运算后,确定各测点的时间戳、质量码和开关量并进行存储。
下面对OPC服务器确定各测点的时间戳、质量码和开关量的过程进行简要说明。
OPC服务器读取数据报文最前端的2字节,确定测点的数量n;读取后续8字节,确定基准时间;在后续数据中依次确定第1~n个测点的偏移量,每个测点的偏移量占用3字节,根据偏移量和基准时间计算各个测点的时间戳,第1~n个测点的偏移量共占用3n字节;在后续字节中依次确定第1~n个测点的质量码,每个测点的质量码占用2字节,第1~n个测点的质量码共占用2n字节;后续数据为第1~n个测点的开关量,依次确定第1~n个测点的开关量。
在首次传输数据过程中数据报文的格式还可以如图3所示。数据报文中依次为:测点的数量;基准时间;第1个测点的偏移量、质量码和开关量;第2个测点的偏移量、质量码和开关量;......第n个测点的偏移量、质量码和开关量。
其中,n不大于65536,测点的数量占用2字节,基准时间占用8字节,偏移量不能小于20bits,此处偏移量以3字节表示,质量码占用2字节,开关量占用1bit。由于该数据报文的格式为嵌入式数据采集设备和OPC服务器所共知的,并且各数据的长度固定,所以OPC服务器可以根据测点的数量在数据报文中依次读取相应数据,进行简单运算后,确定各测点的时间戳、质量码和开关量并进行存储。
下面对OPC服务器确定各测点的时间戳、质量码和开关量的过程进行简要说明。
OPC服务器读取数据报文最前端的2字节,确定测点的数量n;读取后续8字节,确定基准时间;在后续数据中确定第1个测点的偏移量、质量码和开关量,偏移量占用3字节,质量码占用2字节,开关量占用1bit,根据基准时间和偏移量计算出第1各测点的时间戳;在后续数据中依次确定第2~n个测点的偏移量、质量码和开关量,并分别计算第2~n个测点的时间戳。
当然,数据报文的格式并不限于图2和图3所公开的格式。只要以预设格式将基准时间、各个测点的开关量、质量码、偏移量及测点的数量封装成数据报文,OPC服务器都可以通过运算确定各个测点的时间戳、开关量和质量码。
步骤S15:判断所述各个测点的质量码是否发生变化,确定各个测点的质量码标记。
步骤S16:将所述基准时间、各个测点的开关量、偏移量、质量码标记和发生变化的质量码封装成数据报文并传输。
在工业控制实际应用中,底层数据源(仪表)中各测点的质量码在绝大多数的采样周期中是保持不变的,测点的质量码出现频繁变化的概率是很小的,在两次采样周期中,往往只有一部分测点的质量码发生变化。
因此,在非首次向OPC服务器传输数据时,无需传输全部测点的质量码,而只需对发生变化的质量码进行传输。具体的,比较各个测点当前采集的质量码与前次采集的质量码,确定哪些测点的质量码发生了变化,并根据比较结果分别确定各个测点的质量码标记,质量码发生变化的测点的质量码标记与质量码未发生变化的测点的质量码标记不同。
优选的,为了减少OPC服务器传送的数据量,质量码标记在数据报文中占用1bit,即以0或1作为质量码标记,以此来标示测点的质量码是否发生变化。例如,当某个测点当前采集的质量码相对于上次采集的质量码发生变化时,则该测点的质量码标记为1,当某个测点当前采集的质量码相对于上次采集的质量码未发生变化时,则该测点的质量码标记为0;或者当某个测点当前采集的质量码相对于上次采集的质量码发生变化时,则该测点的质量码标记为0,当某个测点当前采集的质量码相对于上次采集的质量码未发生变化时,则该测点的质量码标记为1。
在非首次传输数据过程中,各个测点的位号数据在数据报文中的顺序与在首次传输的数据报文中的顺序严格一致,数据报文的格式可以如图4所示。数据报文中依次为:基准时间;第1~n个测点的质量码标记;第1~n个测点的偏移量;发生变化的质量码;第1~n个测点的开关量。
其中,n不大于65536,基准时间占用8字节,质量码标记占用1bit,用1或0表示,偏移量不能小于20bits,此处偏移量以23bits表示,可以表示2.33小时内的偏移量,质量码占用2字节,开关量占用1bit。
下面对OPC服务器确定各测点的时间戳、质量码和开关量的过程进行简要说明。
在较长的时间内,嵌入式数据采集设备连接的测点数量不变,而嵌入式数据采集设备首次向OPC服务器传输的数据报文中包含了测点数量,因此在非首次向OPC服务器传输数据时,可以不再传输测点的数量n。OPC服务器通过对已存储数据进行查询,就可以确定该嵌入式数据采集设备所传输的测点的数量n。OPC服务器读取数据报文最前端的8字节,确定基准时间;在后续数据中依次确定第1~n个测点的质量码标记,以质量码标记为1表示测点的质量码发生变化、质量码标记为0表示测点的质量码未发生变化为例,第1~n个测点的质量码标记共占用n bits;在后续数据中依次确定第1~n个测点的偏移量,每个测点的偏移量占用23bits,根据偏移量和基准时间计算各个测点的时间戳,第1~n个测点的偏移量共占用23*n bits;在后续的数据中根据已确定的质量码标记依次读取发生变化的质量码,具体的:假如n个质量码标记为10110......,其中有a个1,说明有a个测点的质量码发生了变化,发生变化的质量码在数据报文中占用a*2字节,第1个测点的质量码标记为1,说明第1个测点的质量码发生变化,相应的a*2字节中最前端的2字节即为第1个测点的质量码,第2个测点的质量码标记为0,说明第2个测点的质量码未发生变化,在当前的数据报文中不包含第2个测点的质量码,其余测点的质量码确定过程以此类推;后续数据为第1~n个测点的开关量,依次确定第1~n个测点的开关量。
在非首次传输数据过程中数据报文的格式可以如图5所示。数据报文中依次为:基准时间;第1个测点的质量码标记、偏移量和开关量,当该测点的质量码发生变化时,还包括质量码;第2个测点的质量码标记、偏移量和开关量,当该测点的质量码发生变化时,还包括质量码;......第n个测点的质量码标记、偏移量和开关量,当该测点的质量码发生变化时,还包括质量码。
其中,n不大于65536,基准时间占用8字节,质量码标记占用1bit,用1或0表示,偏移量不能小于20bits,此处偏移量以23bits表示,质量码占用2字节,开关量占用1bit。
下面对OPC服务器确定各测点的时间戳、质量码和开关量的过程进行简要说明。
OPC服务器读取数据报文最前端的8字节,确定基准时间;在后续数据中确定第1个测点的质量码标记、偏移量和开关量,其中质量码标记占用1bit,偏移量占用23bits,开关量占用1bit,根据基准时间和偏移量计算第1个测点的时间戳,并根据质量码标记判断该数据报文中是否包含第1个测点的质量码,以质量码标记为1表示测点的质量码发生变化、质量码标记为0表示测点的质量码未发生变化为例,假如第1个测点的质量码标记为1,说明第1个测点的质量码发生变化,则在后续数据中的前2字节为第1个测点的质量码,假如第1个测点的质量码标记为0,说明第1个测点的质量码未发生变化,则后续数据为第2个测点的相关数据;以此类推,分别确定其余测点的时间戳、质量码和开关量。
当然,数据报文的格式并不限于图4和图5所公开的格式。只要以预设格式将基准时间、各个测点的开关量、偏移量、质量码标记和发生变化的质量码封装成数据报文,OPC服务器都可以通过运算确定各个测点的时间戳、开关量和质量码。
本发明上述公开的传输数据的方法,在首次向OPC服务器传输数据时,除直接传输各测点的开关量和质量码之外,还以基准时间结合偏移量的形式传输各测点的时间戳,数据报文中包含OPC标准规定的所有字段,保证了数据的完整性和准确性,另外,由于在每个数据报文中只包含一个占据8字节的基准时间,并且各测点的偏移量以不少于20bits传输即可,所以在保证数据报文完整性的前提下,缩减了向OPC服务器传输的数据容量,不需进行数据压缩就可以向OPC服务器传输数据,保证了数据传输的实时性;在非首次向OPC服务器传输数据时,只传输发生变化的质量码,进一步缩减了向OPC服务器传输的数据容量。
优选的,在步骤S12确定多个时间戳中的一个为基准时间的过程中,可以确定所述多个时间戳中的最大值为基准时间;或者确定所述多个时间戳中的最小值为基准时间。当任选一个时间戳作为基准时间时,其他时间戳与该基准时间之间的偏移量可能为正值,也可能为负值。而当确定多个时间戳中的最小值为基准时间时,其他各时间戳与该基准时间的差值全部为正值;当确定多个时间戳中的最大值为基准时间时,其他各时间戳与该基准时间的差值全部为负值。此时,偏移量所在的字段中不包含奇偶标志位。
优选的,在首次向所述OPC服务器传输数据时,除了传输测点的数量、基准时间、各个测点的开关量、质量码和偏移量之外,还包括各个测点的位号名称。在OPC协议中,底层数据源上的单个测点用位号表示,一个位号对应于底层数据源的一个测点,并且位号拥有对应的位号名称作为唯一标识。OPC服务器在对各个测点的时间戳、开关量和质量码进行存储的过程中,可以各个测点的位号名称对各个测点数据的存储区域进行命名。
此时,数据报文的格式可以如图6或图7所示。每个位号名称占据m个字节,m个字节中的最高字节表示位号名称所占用的字节数,后续m-1个字节为位号名称。
优选的,在非首次向所述OPC服务器传输数据时,除了传输基准时间、各个测点的开关量、偏移量、质量码标记和发生变化的质量码之外,还包括测点的数量。当OPC服务器接收到数据报文后,由于该数据报文中已经包含了测点的数量,所以不需要通过对已存储数据进行查询来确定测点数量。具体的,测点的数量可以位于数据报文的最前端。
本发明还公开了一种传输数据的方法,可以解决现有技术中在窄带网络中向OPC服务器传输数据过程中存在的数据信息不完整、准确性低、不能保证实时性的问题。
参见图8,图8为本发明公开的一种传输数据的方法的流程图。包括:
步骤S81:采集各个模拟量仪表中测点的位号数据。
测点的位号数据包括时间戳、质量码和模拟量。时间戳是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。根据OPC协议要求时间精确到100纳秒,因此时间戳需用64bit来表示。质量码是指采集到的数据对应的可信度,根据OPC协议使用一个16bit长度的质量码来标识采样数据是否可靠,例如OPC标准规定当质量码为192时表示数据正常,当质量码为0时表示数据无效,实际上从0~65535每个质量码的值都对应着数据的不同状态。模拟量仪表中的测点,其输出的模拟量需用4字节表示。
步骤S82:确定多个时间戳中的一个为基准时间,计算各个时间戳与所述基准时间之间的偏移量。
在该步骤中,可以在采集到的多个时间戳中任选一个时间戳作为基准时间,并根据该基准时间计算各个时间戳与该基准时间之间的偏移量。由于嵌入式数据采集设备对底层数据源(仪表)的采样周期一般不会高于15分钟=900000毫秒<220毫秒,所以各个时间戳与基准时间之间的偏移量小于220毫秒,在数据报文中用不小于20bit来标识各偏移量已经足够。每个测点的时间戳都由基准时间和相应的偏移量表示。
步骤S83:判断是否为首次向OPC服务器传输数据,若是,执行步骤S84,若否,执行步骤S85。
步骤S84:将所述基准时间、各个测点的模拟量、质量码、偏移量及测点的数量封装成数据报文并传输。
首次向OPC服务器传输数据时,将测点的数量、基准时间、各个测点的模拟量、质量码和偏移量以嵌入式数据采集设备和OPC服务器所共知的格式进行封装。OPC服务器根据已知格式在数据报文中读取各个数据,之后确定各个测点的时间戳、质量码和模拟量,并进行存储。
当对N个测点的数据进行传输时,数据报文中包含1个基准时间和N个偏移量,1个基准时间占用64bits,偏移量以24bits表示(可以表示4.66小时左右的偏差),与传输N个时间戳相比,可以极大的减小数据报文的数据容量。
需要指出的是,在一个数据报文中最多可以传递65536个测点的位号数据,当测点的数量超过65536时,则分开用2个数据报文发送。在第二个数据报文中,同样包含测点的数量、基准时间、各个测点的模拟量、质量码和偏移量。
在首次传输数据过程中数据报文的格式可以如图9所示。数据报文中依次为:测点的数量;基准时间;第1~n个测点的偏移量;第1~n个测点的质量码;第1~n个测点的模拟量。
其中,n不大于65536,测点的数量占用2字节,基准时间占用8字节,偏移量不能小于20bits,此处偏移量以3字节表示,质量码占用2字节,模拟量占用4字节。由于该数据报文的格式为嵌入式数据采集设备和OPC服务器所共知的,并且各数据的长度固定,所以OPC服务器可以根据测点的数量在数据报文中依次读取相应数据,进行简单运算后,确定各测点的时间戳、质量码和模拟量并进行存储。
下面对OPC服务器确定各测点的时间戳、质量码和模拟量的过程进行简要说明。
OPC服务器读取数据报文最前端的2字节,确定测点的数量n;读取后续8字节,确定基准时间;在后续数据中依次确定第1~n个测点的偏移量,每个测点的偏移量占用3字节,根据偏移量和基准时间计算各个测点的时间戳,第1~n个测点的偏移量共占用3n字节;在后续字节中依次确定第1~n个测点的质量码,每个测点的质量码占用2字节,第1~n个测点的质量码共占用2n字节;后续数据为第1~n个测点的模拟量,依次确定第1~n个测点的模拟量。
在首次传输数据过程中数据报文的格式还可以如图10所示。数据报文中依次为:测点的数量;基准时间;第1个测点的偏移量、质量码和模拟量;第2个测点的偏移量、质量码和模拟量;......第n个测点的偏移量、质量码和模拟量。
其中,n不大于65536,测点的数量占用2字节,基准时间占用8字节,偏移量不能小于20bits,此处偏移量以3字节表示,质量码占用2字节,模拟量占用4字节。由于该数据报文的格式为嵌入式数据采集设备和OPC服务器所共知的,并且各数据的长度固定,所以OPC服务器可以根据测点的数量在数据报文中依次读取相应数据,进行简单运算后,确定各测点的时间戳、质量码和模拟量并进行存储。
下面对OPC服务器确定各测点的时间戳、质量码和模拟量的过程进行简要说明。
OPC服务器读取数据报文最前端的2字节,确定测点的数量n;读取后续8字节,确定基准时间;在后续数据中确定第1个测点的偏移量、质量码和模拟量,偏移量占用3字节,质量码占用2字节,模拟量占用4字节,根据基准时间和偏移量计算出第1个测点的时间戳;在后续数据中依次确定第2~n个测点的偏移量、质量码和模拟量,并分别计算第2~n个测点的时间戳。
当然,数据报文的格式并不限于图9和图10所公开的格式。只要以预设格式将基准时间、各个测点的模拟量、质量码、偏移量及测点的数量封装成数据报文,OPC服务器都可以通过运算确定各个测点的时间戳、模拟量和质量码。
步骤S85:判断所述各个测点的质量码是否发生变化,确定各个测点的质量码标记。
步骤S86:计算所述各个测点当前采集的模拟量与前次采集的模拟量之间的模拟量差值,确定各个测点的数值有效位。
步骤S87:将所述基准时间、各个测点的偏移量、质量码标记、模拟量差值、数值有效位和发生变化的质量码封装成数据报文后传输。
在工业控制实际应用中,底层数据源(仪表)中各测点的质量码在绝大多数的采样周期中是保持不变的,测点的质量码出现频繁变化的概率是很小的,在两次采样周期中,往往只有一部分测点的质量码发生变化;另外,底层数据源(仪表)中各测点的模拟量在两个采样周期之间的变化往往不大。
因此,在非首次向OPC服务器传输数据时,无需传输全部测点的质量码,而只需对发生变化的质量码进行传输,具体的,比较各个测点当前采集的质量码与前次采集的质量码,确定哪些测点的质量码发生了变化,并根据比较结果分别确定各个测点的质量码标记,质量码发生变化的测点的质量码标记与质量码未发生变化的测点的质量码标记不同,将发生变化的质量码以及各个测点的质量码标记传输至OPC服务器;另外,无需传输各个测点的模拟量,而只需确定各个测点当前采集的模拟量与前次采集的模拟量之间的模拟量差值,并确定各个测点的数值有效位,该数值有效位表示模拟量差值所占据的字节数,将模拟量差值及表示该模拟量差值占据的字节数的数值有效位传输至OPC服务器。
优选的,为了减少OPC服务器传送的数据量,质量码标记在数据报文中占用1bit,即以0或1作为质量码标记,以此来标示测点的质量码是否发生变化。例如,当某个测点当前采集的质量码相对于上次采集的质量码发生变化时,则该测点的质量码标记为1,当某个测点当前采集的质量码相对于上次采集的质量码未发生变化时,则该测点的质量码标记为0;或者当某个测点当前采集的质量码相对于上次采集的质量码发生变化时,则该测点的质量码标记为0,当某个测点当前采集的质量码相对于上次采集的质量码未发生变化时,则该测点的质量码标记为1。
在非首次传输数据过程中,各个测点的位号数据在数据报文中的顺序与在首次传输的数据报文中的顺序严格一致,数据报文的格式可以如图11所示。数据报文中依次为:基准时间;第1~n个测点的质量码标记;第1~n个测点的数值有效位;第1~n个测点的偏移量;发生变化的质量码;第1~n个测点的模拟量差值。
其中,n不大于65536,基准时间占用8字节,质量码标记占用1bit,用1或0表示,偏移量不能小于20bits,此处偏移量以23bits表示,可以表示2.33小时内的偏移量,质量码占用2字节,模拟量差值可能占用1字节、2字节、3字节或4字节,测点的数值有效位用于表示该测点的模拟量差值所占用的字节数,占用2bits,例如:第1个测点的模拟量差值占用1个字节,则该测点的数值有效位为01;第1个测点的模拟量差值占用2个字节,则该测点的数值有效位为10;第1个测点的模拟量差值占用3个字节,则该测点的数值有效位为11;第1个测点的模拟量差值占用4个字节,则该测点的数值有效位为00。
下面对OPC服务器确定各测点的时间戳、质量码和模拟量的过程进行简要说明。
在较长的时间内,嵌入式数据采集设备连接的测点数量不变,而嵌入式数据采集设备首次向OPC服务器传输的数据报文中包含了测点数量,因此在非首次向OPC服务器传输数据时,可以不再传输测点的数量n。OPC服务器通过对已存储数据进行查询,就可以确定该嵌入式数据采集设备所传输的测点的数量n。OPC服务器读取数据报文最前端的8字节,确定基准时间;在后续数据中依次确定第1~n个测点的质量码标记,以质量码标记为1表示测点的质量码发生变化、质量码标记为0表示测点的质量码未发生变化为例,第1~n个测点的质量码标记共占用n bits;在后续数据中依次确定第1~n个测点的数值有效位,该数值有效位表示测点的模拟量差值所占用的字节数,每个测点的数值有效位占用2bits;在后续数据中依次确定第1~n个测点的偏移量,每个测点的偏移量占用23bits,根据偏移量和基准时间计算各个测点的时间戳,第1~n个测点的偏移量共占用23*n bits;在后续的数据中根据已确定的质量码标记依次读取发生变化的质量码,具体的:假如n个质量码标记为10110......,其中有a个1,说明有a个测点的质量码发生了变化,发生变化的质量码在数据报文中占用a*2字节,第1个测点的质量码标记为1,说明第1个测点的质量码发生变化,相应的a*2字节中最前端的2字节即为第1个测点的质量码,第2个测点的质量码标记为0,说明第2个测点的质量码未发生变化,在当前的数据报文中不包含第2个测点的质量码,其余测点的质量码确定过程以此类推;后续数据为第1~n个测点的模拟量差值,根据各个测点的数值有效位依次确定第1~n个测点的模拟量差值,之后结合已存储的模拟量计算嵌入式数据采集设备本次传输的模拟量,并对已存储的模拟量进行更新。
在非首次传输数据过程中数据报文的格式可以如图12所示。数据报文中依次为:基准时间;第1个测点的质量码标记、数字有效位、偏移量和模拟量差值,当该测点的质量码发生变化时,在偏移量和模拟量差值之间还包括质量码;第2个测点的质量码标记、数字有效位、偏移量和模拟量差值,当该测点的质量码发生变化时,在偏移量和模拟量差值之间还包括质量码;......第n个测点的质量码标记、数字有效位、偏移量和模拟量差值,当该测点的质量码发生变化时,在偏移量和模拟量差值之间还包括质量码。
其中,n不大于65536,基准时间占用8字节,质量码标记占用1bit,用1或0表示,偏移量不能小于20bits,此处偏移量以23bits表示,可以表示2.33小时内的偏移量,质量码占用2字节,模拟量差值可能占用1字节、2字节、3字节或4字节。测点的数值有效位用于表示该测点的模拟量差值所占用的字节数,占用2bits。
下面对OPC服务器确定各测点的时间戳、质量码和模拟量的过程进行简要说明。
OPC服务器读取数据报文最前端的8字节,确定基准时间;在后续数据中确定第1个测点的质量码标记、数值有效位、偏移量、质量码和模拟量差值,其中质量码标记占用1bit,数值有效位占用2bits,偏移量占用23bits,质量码占用0字节或2字节(即包含质量码或不包含质量码),模拟量差值占用1个字节、2个字节、3个字节或者4个字节,具体的:依次确定第1个测点的质量码标记、数值有效位和偏移量,根据基准时间和偏移量计算第1个测点的时间戳,根据质量码标记判断该数据报文中是否包含第1个测点的质量码,以质量码标记为1表示测点的质量码发生变化、质量码标记为0表示测点的质量码未发生变化为例,假如第1个测点的质量码标记为1,说明第1个测点的质量码发生变化,则位于偏移量之后的后续数据中的前2字节为第1个测点的质量码,假如第1个测点的质量码标记为0,说明第1个测点的质量码未发生变化,则位于偏移量之后的后续数据为第1个测点的模拟量差值,根据第1个测点的数值有效位确定其模拟量差值,之后结合已存储的模拟量计算嵌入式数据采集设备本次传输的模拟量,并对已存储的模拟量进行更新。以此类推,分别确定其余测点的时间戳、质量码和模拟量。
当然,数据报文的格式并不限于图11和图12所公开的格式。只要以预设格式将基准时间、各个测点的质量码标记、数值有效位、偏移量、模拟量差值和发生变化的质量码封装成数据报文,OPC服务器都可以通过运算确定各个测点的时间戳、模拟量和质量码。
本发明上述公开的传输数据的方法,在首次向OPC服务器传输数据时,除直接传输各测点的模拟量和质量码之外,还以基准时间结合偏移量的形式传输各测点的时间戳,数据报文中包含OPC标准规定的所有字段,保证了数据的完整性和准确性,另外,由于在每个数据报文中只包含一个占据8字节的基准时间,并且各测点的偏移量以不少于20bits传输即可,所以在保证数据报文完整性的前提下,缩减了向OPC服务器传输的数据容量,不需进行数据压缩就可以向OPC服务器传输数据,保证了数据传输的实时性;在非首次向OPC服务器传输数据时,只传输发生变化的质量码和各测点的模拟量差值,进一步缩减了向OPC服务器传输的数据容量。
优选的,在步骤S82确定多个时间戳中的一个为基准时间的过程中,可以确定所述多个时间戳中的最大值为基准时间;或者确定所述多个时间戳中的最小值为基准时间。当任选一个时间戳作为基准时间时,其他时间戳与该基准时间之间的偏移量可能为正值,也可能为负值。而当确定多个时间戳中的最小值为基准时间时,其他各时间戳与该基准时间的差值全部为正值;当确定多个时间戳中的最大值为基准时间时,其他各时间戳与该基准时间的差值全部为负值。此时,偏移量所在的字段中不包含奇偶标志位。
优选的,在首次向所述OPC服务器传输数据时,除了传输测点的数量、基准时间、各个测点的模拟量、质量码和偏移量之外,还包括各个测点的位号名称。在OPC协议中,底层数据源上的单个测点用位号表示,一个位号对应于底层数据源的一个测点,并且位号拥有对应的位号名称作为唯一标识。OPC服务器在对各个测点的时间戳、模拟量和质量码进行存储的过程中,可以各个测点的位号名称对各个测点数据的存储区域进行命名。
此时,数据报文的格式可以如图13或图14所示。每个位号名称占据m个字节,m个字节中的最高字节表示位号名称所占用的字节数,后续m-1个字节为位号名称。
优选的,在非首次向所述OPC服务器传输数据时,除了传输基准时间、各个测点的质量码标记、数值有效位、偏移量、模拟量差值和发生变化的质量码之外,还包括测点的数量。当OPC服务器接收到数据报文后,由于该数据报文中已经包含了测点的数量,所以不需要通过对已存储数据进行查询来确定测点数量。具体的,测点的数量可以位于数据报文的最前端。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种传输数据的方法,用于在窄带网络中向OPC用于过程控制的对象连接与嵌入服务器传输数据,所述窄带网络是指网络接入速率不大于56Kbps的网络,其特征在于,包括:
采集各个开关量仪表中测点的位号数据,所述位号数据包括时间戳、质量码和开关量;
确定多个时间戳中的一个为基准时间,计算各个时间戳与所述基准时间之间的偏移量;
如果是首次向所述OPC服务器传输数据,则将所述基准时间、各个测点的开关量、质量码、偏移量及测点的数量封装成数据报文并传输;
如果不是首次向所述OPC服务器传输数据,则判断所述各个测点的质量码是否发生变化,确定各个测点的质量码标记,将所述基准时间、各个测点的开关量、偏移量、质量码标记和发生变化的质量码封装成数据报文后传输。
2.根据权利要求1所述的方法,其特征在于,首次向所述OPC服务器传输数据时,将所述基准时间、各个测点的开关量、质量码、偏移量、位号名称及测点的数量封装成数据报文并传输。
3.根据权利要求1或2所述的方法,其特征在于,不是首次向所述OPC服务器传输数据时,将所述基准时间、各个测点的开关量、偏移量、质量码标记、测点的数量和发生变化的质量码封装成数据报文后传输。
4.根据权利要求1所述的方法,其特征在于,所述确定多个时间戳中的一个为基准时间,具体为:确定所述多个时间戳中的最大值为基准时间;或者确定所述多个时间戳中的最小值为基准时间。
5.根据权利要求1所述的方法,其特征在于,所述质量码标记占用1位。
6.根据权利要求4所述的方法,其特征在于,当测点的质量码发生变化时,所述测点的质量码标记为1;当测点的质量码未发生变化时,所述测点的质量码标记为0。
7.一种传输数据的方法,用于在窄带网络中向OPC用于过程控制的对象连接与嵌入服务器传输数据,所述窄带网络是指网络接入速率不大于56Kbps的网络,其特征在于,包括:
采集各个模拟量仪表中测点的位号数据,所述位号数据包括时间戳、质量码和模拟量;
确定多个时间戳中的一个为基准时间,计算各个时间戳与所述基准时间之间的偏移量;
如果是首次向所述OPC服务器传输数据,则将所述基准时间、各个测点的模拟量、质量码、偏移量及测点的数量封装成数据报文并传输;
如果不是首次向所述OPC服务器传输数据,则判断所述各个测点的质量码是否发生变化,确定各个测点的质量码标记,计算所述各个测点当前采集的模拟量与前次采集的模拟量之间的模拟量差值,确定各个测点的数值有效位,所述数值有效位表示所述模拟量差值占据的字节数,将所述基准时间、各个测点的偏移量、质量码标记、模拟量差值、数值有效位和发生变化的质量码封装成数据报文后传输。
8.根据权利要求7所述的方法,其特征在于,首次向所述OPC服务器传输数据时,将所述基准时间、各个测点的模拟量、质量码、偏移量、位号名称及测点的数量封装成数据报文并传输。
9.根据权利要求7或8所述的方法,其特征在于,不是首次向所述OPC服务器传输数据时,将所述基准时间、各个测点的偏移量、质量码标记、模拟量差值、数值有效位、测点的数量和发生变化的质量码封装成数据报文后传输。
10.根据权利要求7所述的方法,其特征在于,所述确定多个时间戳中的一个为基准时间,具体为:确定所述多个时间戳中的最大值为基准时间;或者确定所述多个时间戳中的最小值为基准时间。
11.根据权利要求7所述的方法,其特征在于,所述质量码标记占用1位。
12.根据权利要求11所述的方法,其特征在于,当测点的质量码发生变化时,所述测点的质量码标记为1;当测点的质量码未发生变化时,所述测点的质量码标记为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110138246 CN102215164B (zh) | 2011-05-25 | 2011-05-25 | 一种传输数据的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201110138246 CN102215164B (zh) | 2011-05-25 | 2011-05-25 | 一种传输数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102215164A CN102215164A (zh) | 2011-10-12 |
CN102215164B true CN102215164B (zh) | 2013-10-23 |
Family
ID=44746300
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201110138246 Active CN102215164B (zh) | 2011-05-25 | 2011-05-25 | 一种传输数据的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102215164B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103513602B (zh) * | 2012-06-29 | 2016-06-22 | 中国科学院大连化学物理研究所 | 一种精确时间轴的plc波形数据产生及存储方法 |
CN109217986A (zh) * | 2018-10-24 | 2019-01-15 | 杭州倍图自动化系统有限公司 | 一种基于物联网的数据传输方法及系统 |
CN109600162A (zh) * | 2018-12-12 | 2019-04-09 | 国网山西省电力公司大同供电公司 | 一种变电站工控网络实时数据传输方法 |
CN111208806B (zh) * | 2020-03-03 | 2021-05-25 | 浙江中控技术股份有限公司 | 一种仪表设备信号故障的处理方法及装置 |
CN116647775B (zh) * | 2023-07-27 | 2023-10-20 | 哈尔滨凯纳科技股份有限公司 | 一种用于二次供水泵站的远程数据传输终端 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1151809A (zh) * | 1994-05-05 | 1997-06-11 | 斯普林脱通讯有限公司 | 电信控制的方法、系统和装置 |
CN1604066A (zh) * | 2003-09-29 | 2005-04-06 | 中国科学院沈阳自动化研究所 | 嵌入式网络化远程输入输出系统 |
CN101169628A (zh) * | 2007-11-14 | 2008-04-30 | 中控科技集团有限公司 | 一种数据保存方法和装置 |
-
2011
- 2011-05-25 CN CN 201110138246 patent/CN102215164B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1151809A (zh) * | 1994-05-05 | 1997-06-11 | 斯普林脱通讯有限公司 | 电信控制的方法、系统和装置 |
CN1604066A (zh) * | 2003-09-29 | 2005-04-06 | 中国科学院沈阳自动化研究所 | 嵌入式网络化远程输入输出系统 |
CN101169628A (zh) * | 2007-11-14 | 2008-04-30 | 中控科技集团有限公司 | 一种数据保存方法和装置 |
Non-Patent Citations (2)
Title |
---|
基于OPC接口访问过程控制的实现;高翔等;《燃料与化工》;20060131;第37卷(第1期);18-20 * |
高翔等.基于OPC接口访问过程控制的实现.《燃料与化工》.2006,第37卷(第1期),18-20. |
Also Published As
Publication number | Publication date |
---|---|
CN102215164A (zh) | 2011-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102215164B (zh) | 一种传输数据的方法 | |
CN103117879B (zh) | 一种计算机硬件运行参数网络监测系统 | |
CN102820959B (zh) | 在Modbus主站与从站之间进行大数据量通信的方法 | |
CN101331736B (zh) | 使用传输时间作为提高简单网络时间协议精确度的方法 | |
CN102394796A (zh) | 链路时延检测方法、源端、宿端及系统 | |
CN110766928A (zh) | 一种基于物联网的矿山智能传感器数据采集方法 | |
CN109982297B (zh) | 一种在线电子标签的数据传输方法及系统 | |
CN113377815B (zh) | 一种面向实时数据库的写快照断点续传的方法 | |
CN111242807A (zh) | 一种变电站数据接入泛在电力物联网的方法 | |
CN112068865A (zh) | 高效智能燃气表差分固件升级方法 | |
CN104980293A (zh) | 一种oam报文快速发送和检测处理的方法及装置 | |
CN110868458B (zh) | 一种用于稳定控制系统的通信方法及装置 | |
CN113259886B (zh) | 工业边缘端的数据传输方法和装置 | |
US11310353B2 (en) | Data transmission method for creating data structure facilitating data transmission and reception | |
CN101119164B (zh) | 基于嵌入控制信道的数据通信信道透传方法和装置 | |
CN112751722B (zh) | 数据传输质量监控方法和系统 | |
CN104270155A (zh) | 一种曼彻斯特码流接收抗干扰比特解析方法 | |
CN101777999B (zh) | 网元历史性能数据的上传方法、系统及服务器 | |
CN106557550A (zh) | 一种配电终端自描述定点记录的快速存储、检索及补全的实现方法及装置 | |
CN104992288A (zh) | 一种楼宇能耗监测信息系统 | |
CN101827026B (zh) | 一种iec61850高层协议报文发送的管理方法 | |
CN113824724B (zh) | 一种智能变电站的传感器数据被篡改的判断方法、装置及存储介质 | |
CN112671848A (zh) | 对消防设备进行数据采集的方法、装置及消防管理系统 | |
CN111723116A (zh) | 数据回填方法及装置、系统 | |
CN113934650A (zh) | 一种基于ccsds的1553b内存动态分配方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190513 Address after: 310053 4th Floor, Zone D, No. 309 Liuhe Road, Binjiang District, Hangzhou City, Zhejiang Province Co-patentee after: Zhejiang University Patentee after: Zhejiang SUPCON Software Co., Ltd. Address before: 310053 4th Floor, D District, No. 309 Liuhe Road, Binjiang District, Hangzhou City, Zhejiang Province (High-tech Zone) Patentee before: Zhejiang SUPCON Software Co., Ltd. |