一种适用于多品种计量仪表通讯的参数动态解析方法

文档序号:10615983阅读:264来源:国知局
一种适用于多品种计量仪表通讯的参数动态解析方法
【专利摘要】本发明公开了一种适用于多品种计量仪表通讯的参数动态解析方法,目的在于,对多种不同仪表通讯协议进行串口通讯解析,且通讯解析程序简单,减少工程人员的工作量,提高工作效率,采用的技术方案为:获取的待解析的计量仪表的串口通讯协议,创建仪表读取规则指令和解析规则指令,根据仪表所需读取的参数选择对应的解析规则,获得数据位排列顺序的字符串长度,找到数据位排列顺序的字符串小数点的位置,获得返回代码中对应的规则名称的字符串返回码,获得返回代码中对应的规则名称代表单位的字符串返回码,并将规则名称的字符串返回码存入数组,将小数点前、后的数据位排列顺序字符串分别存入数组,根据解码公式即可得到所需的仪表参数数据。
【专利说明】
-种适用于多品种计量仪表通巧的参数动态解析方法
技术领域
[0001] 本发明属于串口通讯领域,具体设及一种适用于多品种计量仪表通讯的参数动态 解析方法。
【背景技术】
[0002] 在国内,大部分计量仪表都带有RS232/485串行通讯接口,通过相应的通讯协议和 串口通讯程序,可W将采集的数据传输到工控机等上位机,W满足各种形式的后续数据处 理要求。虽然各计量仪表生产厂家生产的仪表串口通讯协议均大致按照建设部CJ/T 188- 2004《户用计量仪表数据传输技术条件》标准进行编写,但实际中通常不同的仪表生产厂家 根据自身因素考量,生产的计量仪表所使用的通讯协议往往在细节方面有所出入,运导致 工程人员在使用过程中需要根据不同的仪表通讯协议量身打造适合此种仪表的串口通讯 解析程序,如果某单位需要同时对多种计量仪表进行串口通讯,运就需要工程人员编写更 多的通讯解析程序,运大大增加了工程人员的工作量,此问题急需解决。

【发明内容】

[0003] 为了解决现有技术中的问题,本发明提出一种能够对多种不同仪表通讯协议进行 串口通讯解析,且通讯解析程序简单,减少工程人员的工作量,提高工作效率的适用于多品 种计量仪表通讯的参数动态解析方法。
[0004] 为了实现W上目的,本发明所采用的技术方案为,包括W下步骤:
[0005] 1)获取待解析的计量仪表的串口通讯协议;
[0006] 2)根据步骤1)获取的串口通讯协议创建仪表读取规则指令;
[0007] 3)根据步骤1)获取的串口通讯协议创建解析规则指令;
[000引4)选择仪表读取规则和解析规则,根据仪表所需读取的参数选择对应的解析规 则;
[0009] 5)通过所选择的仪表读取规则和解析规则进行串口通讯读表:
[0010] 5.1)获得数据位排列顺序的字符串长度n;
[001 U 5.2)找到数据位排列顺序的字符串小数点的位置spotnum;
[0012] 5.3)获得返回代码中对应的规则名称的字符串返回码;
[0013] 5.4)获得返回代码中对应的规则名称代表单位的字符串返回码dw;
[0014] 5.5) W若干个字符为单位将步骤5.3)中的字符串返回码存入数组PO [ i ],i G (0, n);
[001引5.6)将小数点前的数据位排列顺序字符串存入数组Pl [ i]中,i E (0,spotnum),将 pi转为int型存入ruim[i],i G (0,spotnum);将小数点后的数据位排列顺序字符串存入数组 p2[i]中,iG (spotnum,n),将p2转为int型存入num[i];
[0016] 5.7)当1£(0,3口〇1:]1皿),曰=(]1皿[;[]-]111111[3口01:]111111-1])*;[111,日为口0[;[]求和时的幕 次方数;当i E (spotnum,n),b = (num[i-l]-num[spotnum-l] )*im,b为p0[i ]求和时的幕次 方数,解码计算公式为
Coff为数据各位间的进制,从而完成计量仪表的参数动态解析。
[0017] 所述的步骤5.7)中引入单位换算值H统一结果单位,解码计算公式为:
[001 引
[0019] 所述的步骤1)中获取的计量仪表串口通讯协议包括读取指令、返回指令和解析方 式。
[0020] 所述的步骤2)中创建仪表读取规则指令包括创建读表指令的名称和发送字符串 指令。
[0021 ]所述的步骤3)中创建解析规则指令包括:将步骤1)中的仪表返回码分成若干个小 段,每个小段分别为待解析的参数数据,创建解析规则的信息包括:规则名称、对应返回码 的单位长度、对应返回码的起始位下标、数据的终止、录入数据位排列顺序、录入单位代表 字符和其对应的单位换算数据,W及数据各位间的进制Coff。
[0022] 所述的数据各位间的进制为10进制,贝化off = 10;为2进制,贝化off = 2。
[0023] 所述的步骤2)中创建仪表读取规则指令和步骤3)中创建解析规则指令后均进行 存储。
[0024] 所述的方法中采用RS232/485连接工控机和待解析的计量仪表。
[0025] 与现有技术相比,本发明根据获取的待解析的计量仪表的串口通讯协议,创建仪 表读取规则指令和解析规则指令,根据仪表所需读取的参数选择对应的解析规则,获得数 据位排列顺序的字符串长度,找到数据位排列顺序的字符串小数点的位置,获得返回代码 中对应的规则名称的字符串返回码,获得返回代码中对应的规则名称代表单位的字符串返 回码,并将规则名称的字符串返回码存入数组,将小数点前和小数点后的数据位排列顺序 字符串分别存入数组,根据解码公式即可得到所需的仪表参数数据,完成本发明的解析方 法,本发明适用于多品种计量仪表串口通讯的参数动态解析方法适用于多通讯协议仪表, 方法简单,通用性强,从而降低工程人员的劳动,提高了生产自动化程度、通用性、市场竞争 力。
[0026] 进一步,本发明考虑到不同单位代码返回值有多种,单位换算值也相应有多种,为 了让最终计算结果单位统一,则在最终结果中引入单位换算值H。
【附图说明】
[0027] 图1为本发明的方法流程图。
【具体实施方式】
[0028] 下面结合具体的实施例和说明书附图对本发明作进一步的解释说明。
[0029] 参见图1,本发明具体包括W下步骤:
[0030] 1)获得计量仪表的串口通讯协议,包含读取指令、返回指令和解析方式;
[0031] 2)创建读表指令,新建读表指令的名称和发送字符串指令;
[0032] 3)创建解析规则指令,将步骤1)中的仪表返回值分成小段,每个小段分别为待解 析的读表物理量,例如,我们在进行读热量表时通常关注表编号、累积热量、瞬时流量、热功 率等参数,于是就将运些参数对应的返回码分段标记起来,据此来进行解析规则的创建。 创建解析规则需要确定如下信息:
[0033] a)规则名称:即读表的参数名称;
[0034] b)对应返回码的单位长度:对应返回码的字符串单位长度,如"2";
[0035] C)对应返回码的起始位下标;
[0036] d)数据的终止(字符串的长度):从返回码的起始位下标开始,从1开始数到创建的 相应参数小段返回码结束,即提供小段返回码的长度;
[0037] e)录入数据位排列顺序(读取数据的格式):如累积热量的返回值代小段码的字符 长度为10,单位长度为2,总共有5个字节,分别为哩雖苗聲,W2个字符为单位将其标 记为1 2 3 4 5,第5个字符代表单位不解析,据此仪表的通讯协议,解析后其数据格式 为123456.78,即排列顺序432.1;
[0038] f)录入单位代表字符和其对应的单位换算数据:如若规定累积热量的读表单位为 kwh,当步骤e)中累积热量返回值的第5个字符"Xr为"05"时,其单位为kwh,换算数据为 "r ;当第5个字符为"1 r时,其单位为GJ,换算为kwh,IGJ = 280kwh,故换算数据为"280";分 别对应写入"{05; 1}","{11:280}"等,运里不一一列举。运一步需要列举通讯协议中可能出 现的所有单位代码和单位换算值,W便于解析。
[0039] g)数据各位间的进制:如果为10进制,写"10";为2进制,写"2"等。并将新建的解析 规则存入数据库中;
[0040] 4)选择仪表个性化读规则和解析规则,根据仪表所需读取的参数选择对应的变量 解析规则;
[0041] 5)按照所选择的读取和解析规则进行串口通讯读表解析:首先根据选中的读取规 则名称,工控机将其对应的规则指令发送给仪表,仪表返回对应指令值,根据选中的度表解 析规则度表,例如仪表返回指令如下:
[0042;
[0043] 解析协议中累积热量的值为123456.78,05为单位代码,表示kwh,具体算法如下所 示:
[0044] 根据步骤3)中创建的累计热量规则,单位长度用im表示,im=2;对应返回码的开 始下标,用a表示,a = 46;数据的终止(字符串的长度),用Ch表示,Ch = IO;数据位排列顺序 (读取数据的格式)用order表示,order = 432.1;单位代表字符(用化it表示)和其对应的单 位换算数据(用H表示):根据协议,化it = 05(单位为kwh,换算数据为化it = 08(单 位为 Mwh,IMwh = lOOOkwh,换算数据为 1000);H=1000;Unit = 02(单位为wh,lwh = 0.OOlkwh,换算数据为0.001);H=0.001,等等;数据各位间的进制,用Coff表示,Coff =10, 计算步骤:
[0045] ①获得order的字符串长度,order = 432.1长度n = 5;
[0046] ②找到order字符串小数点的位置,order = 432.1小数点位spotruim = 3;
[0047] ③获得返回代码中对应的累积热量的字符串返回码,78 56 34 12 05;
[004引④获得返回代码中对应的累积热量代表单位的字符串返回码,dw = 05;
[0049] ⑤Wim = 2个字符为单位将③中的返回码存入数组口0[1]4£(0,11),@中11 = 5,口0 = {78,56,34,12};
[0050] ⑥将小数点前的order字符串存入数组pl[i]中,iG(0,spotnum),pl = {4,3,2}, 将pi转为int型存入num[i],i G (0,spotnum);将小数点后的order字符串存入数组p2[i] 中,i G (spotnum,n),p2 = {1},将p2转为int型存入num[i],i G (spotnum,n);故得num= {4, 3,2,1};
[0化1 ]⑦当i G (0 ,spo1:num),a = (num[i]-num[spotnum-l] )*im,a为p0[i]求和时的幕次 方数,如当i = 〇时,a = (ruim[0]-ruim[3-l])巧=4;当i G (spotruim,n),
[0化2] b = (num[i-l]-num[spotnum-l])*im,b 为p0[i]求和时的幕次方数,如当 i = 4 时,
[0化3] b = (num[4-l]-num[3-l])巧=-2,解码计算公式为:
[0化4]
[0055]⑧考虑到不同单位代码返回值化it有多种,例如,累计热量的单位代码返回值可 能为05,08,02等,单位换算值H也相应有多种,可能为1,1000,0.001等,为了让最终计算结 果单位统一,则最终结果计算公式为:
[0化6] (1)
[0057] W累计热量为值解析为例,若单位代码为05,最终解析结果为123456.78kwh。
[005引步骤1)中,串口的通讯协议是有计量仪表生产厂家提供。步骤2)中,创建的读表指 令和名称需要进行存储并要符合仪表串口通讯协议。步骤3)中,创建解析规则,将计量仪表 各种不同的读表参数通过与其对应的通讯协议进行创建,并保存,W便后续步骤中进行选 择。步骤4)中,选择的个性化的读表规则和解析规则是通过步骤2)和步骤3)创建的。步骤5) 中,是通过公式(1)得出结果的。
[0059] 本发明的具体实施例:W某型号超声波热量表为例,具体包括W下步骤:
[0060] 1)通过RS232/485连接工控机和被测计量仪表,并确定各种仪表的串口通讯协议, 如某型号超声波热量表读表指令为:
[00| -
[0064]
[0062] 仪表返回值为:[0063]
[0065] 2)创建读表指令:新建读表指令的名称和指令,例如取读规则名称"r,规则指令 "6820010000000000000103901F013D1 护;
[0066] 3)创建解析规则指令:将步骤1中的仪表返回值分成小段,每个小段分别为待解析 的物理量数据,例如,我们在进行读表时通常关注表编号、累积热量、瞬时流量、热功率等参 数,于是就将运些参数对应的返回码分段标记起来,据此来进行解析规则的创建。创建解析 规则需要确定如下代码:
[0067] a)规则名称:如"累积热量";
[006引b)数据的单位长度:如"2";
[0069] C)数据的起始位下标:如在步骤1)中累积热量的返回值代码的第一个下标为46, 故写入"4护;
[0070] d)数据的终止(字符串的长度):如在步骤1)中累积热量的返回值代码的字符长度 为10,故写入"10";
[0071] e)录入数据位排列顺序(读取数据的格式):如在步骤1)中累积热量的返回值代码 的字符长度为10,单位长度为2,那么总共有5个字节,分别为聲,W2个字符为 单位将其标记为1 2 3 4 5,第5个字符"XX"代表单位不解析,据此仪表的通讯协议,解析后 其数据格式为123456.78,即排列顺序432.1,故写入"432. r ;
[0072] f)录入单位代表字符和其对应的单位换算数据:规定累积热量的单位为kwh,当步 骤1)中累积热量返回值得第5个字符为"05"时,其单位为kwh,换算数据为"r ;当第5个字符 为"1 r时,其单位为GJ,换算为kwh,数据为"280";其他单位代表字符和单位换算分别对应 写入"{05; 1}","{11:280}"等,运里不一一列举。运一步需要列举通讯协议中可能出现的所 有单位代码和单位换算值,W便于解析。
[0073] g)数据各位间的进制:如果为10进制,写"10";为2进制,写"2"等。
[0074] 4)选择仪表个性化读规则和解析规则,根据仪表所需读取的参数选择对应的变量 解析规则。
[0075] 5 )若返回值单位代码Unit = 05,则通过公式(1)计算相关物理量的值为 12:3456.78。
[0076] 在本发明的具体实施例中:步骤1)获得计量仪表的串口通讯协议,步骤2)通过协 议创建读表规则,步骤3)通过协议创建通讯解析规则,步骤4)中,个性化配置计量仪表相关 参数,步骤5)中,通过计算按照所配置规则获取参数。
[0077] 本发明适用于多品种计量仪表串口通讯的参数动态解析方法适用于多通讯协议 仪表,方法简单,通用性强,从而降低工程人员的劳动,提高了生产自动化程度、通用性、市 场竞争力。
【主权项】
1. 一种适用于多品种计量仪表通讯的参数动态解析方法,其特征在于,包括W下步骤: 1) 获取待解析的计量仪表的串口通讯协议; 2) 根据步骤1)获取的串口通讯协议创建仪表读取规则指令; 3) 根据步骤1)获取的串口通讯协议创建解析规则指令; 4) 选择仪表读取规则和解析规则,根据仪表所需读取的参数选择对应的解析规则; 5) 通过所选择的仪表读取规则和解析规则进行串口通讯读表: 5.1) 获得数据位排列顺序的字符串长度η; 5.2) 找到数据位排列顺序的字符串小数点的位置spotnum; 5.3) 获得返回代码中对应的规则名称的字符串返回码; 5.4) 获得返回代码中对应的规则名称代表单位的字符串返回码dw; 5.5) ^若干个字符为单位将步骤5.3)中的字符串返回码存入数组9〇[。4£(〇,11); 5.6) 将小数点前的数据位排列顺序字符串存入数组口1山中,巧(0,3口〇佔皿),将口1转 为int型存入11態[。,1£(〇,39〇佔11111);将小数点后的数据位排列顺序字符串存入数组口2 [i]中,ie (spotnum,n),将p2转为int型存入num[i]; 5.7) 当1^(〇,39〇1:]111111),3=(]111111[;[]-]111111[39〇1:]111111-1])*;[111,日为9〇[;[]求和时的幕次方 数;当i e (spotnum,n),b= (num[i-l]-num[spotnum-l] )*im,b为pO[i]求和时的幕次方数, 解码计算公式为:为数据各位间的进制,从而完成计量仪表的参数动态解析。2. 根据权利要求1所述的一种适用于多品种计量仪表通讯的参数动态解析方法,其特 征在于,所述的步骤5.7)中引入单位换算值Η统一结果单位,解码计算公式为:3. 根据权利要求1所述的一种适用于多品种计量仪表通讯的参数动态解析方法,其特 征在于,所述的步骤1)中获取的计量仪表串口通讯协议包括读取指令、返回指令和解析方 式。4. 根据权利要求3所述的一种适用于多品种计量仪表通讯的参数动态解析方法,其特 征在于,所述的步骤2)中创建仪表读取规则指令包括创建读表指令的名称和发送字符串指 令。5. 根据权利要求4所述的一种适用于多品种计量仪表通讯的参数动态解析方法,其特 征在于,所述的步骤3)中创建解析规则指令包括:将步骤1)中的仪表返回码分成若干个小 段,每个小段分别为待解析的参数数据,创建解析规则的信息包括:规则名称、对应返回码 的单位长度、对应返回码的起始位下标、数据的终止、录入数据位排列顺序、录入单位代表 字符和其对应的单位换算数据,W及数据各位间的进制Coff。6. 根据权利要求5所述的一种适用于多品种计量仪表通讯的参数动态解析方法,其特 征在于,所述的数据各位间的进制为10进制,则Coff = 10;为2进制,则Coff = 2。7. 根据权利要求6所述的一种适用于多品种计量仪表通讯的参数动态解析方法,其特 征在于,所述的步骤2)中创建仪表读取规则指令和步骤3)中创建解析规则指令后均进行存 储。8.根据权利要求1所述的一种适用于多品种计量仪表通讯的参数动态解析方法,其特 征在于,所述的方法中采用RS232/485连接工控机和待解析的计量仪表。
【文档编号】H04L29/06GK105978886SQ201610378534
【公开日】2016年9月28日
【申请日】2016年5月31日
【发明人】姜洪权, 高建民, 王宏叶, 梁泽明, 张雪微, 刘文强, 张凡勇, 高瑞琪
【申请人】西安交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1