CN103197948B - 一种电力智能设备通信规约脚本解析方法 - Google Patents
一种电力智能设备通信规约脚本解析方法 Download PDFInfo
- Publication number
- CN103197948B CN103197948B CN201310117240.5A CN201310117240A CN103197948B CN 103197948 B CN103197948 B CN 103197948B CN 201310117240 A CN201310117240 A CN 201310117240A CN 103197948 B CN103197948 B CN 103197948B
- Authority
- CN
- China
- Prior art keywords
- message
- communication
- stipulations
- script
- reception
- 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
Landscapes
- Communication Control (AREA)
Abstract
本发明公开了一种电力智能设备通信规约脚本解析方法,定义一种通信规约描述语言,并提供了相应的解析方法,在获得通信规约后,首先将通信规约分解为若干通信过程,通信过程再分解为一个或多个通信活动,将通信活动根据通信规约描述语言转换为规约脚本,规约脚本解析器分析规约脚本,按照脚本控制和解析通信过程,实现和电力智能设备的数据交换,避免通信规约解析模块的重复开发。
Description
技术领域:
本发明属于电力系统和厂矿企业自动化通信管理机领域,具体涉及一种电力智能设备通信规约脚本解析方法。
背景技术:
随着电力系统和厂矿企业自动化水平的不断提高,越来越多的电力智能设备,如直流屏、小电流接地、消弧、消谐系统、光伏逆变器等,需要通过本地通信管理机接入到当地监控系统中。尽管MODBUS、IEC103、IEC61850等标准规约已经被广泛应用,然而,由于各智能设备厂家技术实力不一,使用的通信规约仍然有很多是自定义或者在标准通信规约基础上的扩展,即使有些厂家使用了标准通信规约,各厂家对标准通信规约的理解和实现也都存在不一致性。这样的情况在电力系统和厂矿企业自动化系统项目中普遍存在。
通过多年的实践和分析发现大多数电力智能设备的通信规约并不复杂,通信规约的内容也没有太大的差异,有的仅仅是在标准通信协议的基础上进行了微小的改动。然而,尽管这样,为了使这些电力智能设备能够接入到监控系统中,通信管理机仍然需要针对每一个电力智能设备的通信规约编写一个相应的规约解析程序或脚本以实现和它们的互联。
现有的通信规约解析方法通常有两种,一种是通过C/C++之类的高级语言在已有通信管理机框架基础上开发规约解析模块,绝大数自动化厂商都采用了这种方式。另一种是利用通信管理机对高级脚本语言的支持,使用VBScript等脚本语言编写脚本,使用这种方法通常是因为使用了第三方的通信软件而没有获得源代码,需要自己通过编写脚本实现电力智能设备的接入。这两种方式没有本质的区别,C/C++之类的高级语言需要编译后执行,执行效率比较高,但是一旦需要移植到新的平台,通信规约解析模块的可移植性就相对较低。VBScript等脚本语言是解释性语言,执行效率相对较低,由于高级脚本语言本身由于平台的限制,其可移植性也很难恭维。无论是上述哪种方法,都需要编写复杂的代码或脚本来解析通信规约。由此,长期以来形成了:一旦出现新的通信规约或者在原有通信规约基础上的扩展,就需要修改或新开发通信规约解析程序,这导致了大量低层次的软件重复开发,可移植性较差,同时频繁的软件升级也给监控系统的稳定性埋下一定的隐患。
发明内容
本发明所要解决的技术问题是:在将一个电力智能设备接入到自动化系统时,避免重复开发通信解析程序。
为解决上述技术问题,本发明提供一种电力智能设备通信规约脚本解析方法,其特征在于,包括以下步骤:
1)根据规约描述语言的语法,将通信规约文本转换为规约脚本;
2)在运行时,通信管理机的规约脚本解析模块按照规约脚本控制和解析通信过程,实现和电力智能设备的数据交换。
规约描述语言在语法上接近于通信规约文本的描述形式,这样使得描述一个通信规约变得简单和直观,并且不需要考虑和通信底层环境相关的事项,例如通信管理机如何操作通信介质,如何发送报文,如何接收报文以及操作数据库等。
通信规约描述语言和VBScript等传统的高级脚本语言有着本质的区别,规约描述语言直接面向通信规约,在语法和关键字的设计上以通信规约的报文域为基础,而传统的高级脚本语言基于虚拟的机器指令,先将脚本编译成中间代码,再通过虚拟机解释中间代码完成脚本的功能,它为了实现某个功能所编写的脚本和传统的C/C++语言所编写的代码除了因语法和关键字不同外,没有本质区别。
所述通信规约描述语言的关键字和语法分别为:
A.关键字的定义以报文域和字节为基本单位,根据功能划分,关键分为6类:常数类、校验码类、报文长度类、应用数据类、标记类、逻辑算术类;
B.语法接近于通信规约文本的描述形式,并且便于通信管理机解析,将每个报文帧的内容按照通信规约的描述划分为“报文域”,根据每个报文域的作用,它由关键字或常数组成,其所关联的实际内容是报文中的某一个字节或者多个字节,每个报文域之间通过“/”符号隔开,并以“/”结束。
每个报文域有相应的属性以进一步对该域进行描述,报文域的属性通过字符“[”和“]”中的脚本描述,属性的属性使用“(”和“)”中的脚本描述,报文域的多个属性之间通过“:”符号分隔。
脚本中最左边的常数或关键字先获得解析或者其关联的实际报文内容先发送。
在所述步骤1)中,使用规约描述语言描述通信规约,一个通信规约由若干个通信过程组成,每个通信过程由多个通信活动组成,若干个通信活动完整地描述了一个通信规约,使用规约描述语言描述通信规约,包括以下步骤:
11)将一个通信过程划分为“报文标识”、“发送选项”、“发送报文”、“接收选项”、“接收报文”五个规约描述脚本,
“报文标识”是一个数值,唯一地标识通信上下文中的一个通信过程;
“发送选项”标识发送报文时通信上下文环境,包括:标识发送报文定时发送时间(tmr)、标识发送报文不需要对方回复(nack)、标识发送频率(frq)、标识发送报文后等待接收的超时时间(aot)、标识发送报文不参与轮询(npol)、标识该报文是初始化报文(init)、标识发送报文是遥控报文(rcso,rcsc,rceo,rcec,rcexe)、标识发送报文是否是遥调报文(rsexe)、是否和其他通信过程具有相同的发送报文(same);
“发送报文”描述具体的报文发送内容;
“接收选项”标识接收报文时的上下文环境,包括:遥信存放起始地址(yxs)、遥测存放起始地址(ycs)、遥脉存放起始地址(yms)、遥测系数(ycxs)、遥脉系数(ymxs)、事件消除方式(cle,clse,clrev)、是否只有接收报文(nsnd)、标识遥控选择成功或失败(rcsls,rcslf)、标识遥控执行成功或失败(rces,rcef)、标识接收报文后的跳转状态(goto)、标识接收报文有多种解析方式(mre);
“接收报文”标识该通信过程应该接收到的报文格式,将实际接收到的报文和“接收报文”脚本进行匹配,如果匹配成功,则按照“接收报文”脚本解析实际接收报文中的应用数据;
12)将所要解析的通信规约分解为若干个通信过程,每个通信过程是“一问一答”的通信过程、只有“发送报文”的过程或只有等待“接收报文”的过程;
13)根据所述步骤11)和步骤12),将每个通信过程通过“报文标识”、“发送选项”、“发送报文”、“接收选项”、“接收报文”描述,对于只有发送报文的通信过程,在“发送选项”中使用“nack/”关键字,标识该发送报文不需要对方回复,同时“接收报文”中使用“nul/”标识“空”,对于只有接收报文的通信过程,在“接收选项”中使用“nsnd/”关键字标识“没有发送报文”,同时“发送报文”中使用“nul/”关键字标识“空”;
14)根据所述步骤13)完成所有通信过程的脚本化,将脚本提交给通信管理机的规约脚本解析模块;
所述步骤2)中,对生成的规约脚本使用规约脚本解析模块进行解析,包括以下步骤:
21)通信管理机规约脚本解析模块读取所有通信过程的规约脚本,并判别语法是否正确;
22)扫描各通信过程的所有脚本配置项,根据语法规则,将规约脚本中的报文域存储为二叉树的根节点,报文域的属性存储为该根节点的叶节点,并根据通信过程中的“报文标识”将这些脚本信息存储到相应的通信过程控制结构中;
23)创建“接收报文”脚本项的报文匹配模式,包括:
231)在接收报文脚本中找出常数域或者在实际通信之前可以转换为常数的报文域(例如描述设备地址的关键字“addr”),通过常数域快速识别报文头或者结束符以初步判定该报文是否符合规约规定;
232)预先识别将要接收到的报文长度,如果规约中没有“长度”域,那么规约规定的接收报文一定是定长的,如果规约中有长度域,根据长度域所表述的长度范围,在实际接收时,判定是否接收到完整的报文;
233)如果规约中有校验码域,那么在接收到完整报文后,通过校验码关键字描述的校验算法和校验范围计算校验码,以评估报文在传输过程中是否丢失或受到干扰,以确定是否信任该报文为有效报文;
24)找到“发送选项”中标识了“init/”关键字的通信过程,如果找到,把该通信过程设为当前通信过程,否则,缺省情况下,选取第一个通信过程为当前通信过程;
25)根据当前通信过程的“发送选项”和“接收选项”的“nack/”、“nsnd/”判定该通信过程是只有发送报文,还是只有接收报文,还是先发送报文,再等待接收报文;
26)根据所述步骤25),选择发送报文或者等待接收报文,发送报文时先获取该通信过程控制信息结构,并实时将发送报文的规约脚本转换为实际需要发送报文,并将报文从通信管理机指定的通信端口发送出去;
27)判断是否接收到报文,如果没有接收到,判断是否接收超时,如果接收超时,根据“发送选项”选择下一个通信过程;
28)如果接收到报文,根据所述步骤23)的报文匹配方法进行匹配,如果匹配成功,再根据“接收报文”脚本项对应用数据的描述提取应用数据,如果匹配不成功,则不解析应用数据,进行报文匹配后,根据“接收选项”选择下一个通信过程作为当前通信过程,如果没有接收到报文,根据“发送选项”选择继续等待接收报文,还是已经接收超时从而选择下一个通信过程作为当前通信过程;
29)重复所述步骤25)至步骤28),完成对通信规约的解析。
与现有方法相比较,本发明的有益效果是根据规约描述语言将通信规约脚本化,在运行时,解析模块根据规约脚本解析发送和接收报文,实现和电力智能设备的数据交换,规约脚本的语法和关键字直接面向通信规约,简单直观,具有很强的可移植性,避免了使用高级编译语言或高级脚本语言开发新的通信解析模块,达到大幅减少软件重复开发的目的。
附图说明
图1为使用规约描述语言描述通信规约和解析的总流程;
图2为规约解析模块解析规约脚本的步骤;
图3为实际通信规约的规约脚本解析实施示例;
图4为图3实施例中一个可能的通信报文;
图5为规约脚本的存储结构。
具体实施方式
图1为使用规约描述语言描述通信规约和解析的总流程,在获得通信规约文本后,分析通信规约,将通信规约分解为若干个通信过程,每个通信过程分解为一个或多个通信活动,根据规约描述语法,将每个通信活动转换为规约脚本,并将所有规约脚本提交给规约脚本解析模块,通信管理机的规约解析模块读取所有通信过程的规约脚本,分析语法结构,创建规约脚本的匹配方法,根据规约脚本,控制和分析通信过程,完成和电力智能设备的数据交换,为使本发明的实施方案和优点更加清晰,下面将结合附图实施例作进一步说明。
1)通信规约描述语言的语法和关键字
通信规约描述语言将报文内容划分为各个“报文域”,在图3的实施示例中10发送报文中“地址”、“功能码”等为报文域,根据这些报文域的作用,它可以由关键字或常数来描述,其所表示的内容是实际报文中的某一个字节或者多个字节,图3实施例中14为10和11的脚本描述,其中“地址”报文域使用“addr”关键字描述,在实际报文中它表示的报文长度是1个字节。
每个报文域之间通过“/”符号隔开,并以“/”结束,图3实施例中14规约脚本,报文域之间均通过“/”符号隔开,并以“/”符号结束。
每个报文域根据其特点可以有相应的属性对该域进行进一步的描述,报文域的属性通过字符“[”和“]”中的脚本描述。属性的属性使用“(”和“)”中的脚本描述,报文域的多个属性之间通过“:”符号分隔。脚本的顺序从左至右为报文的发送或接收顺序。图3实施例中14规约脚本中描述CRC校验码的关键字“crcl”和“crch”带有属性“[0~end-2]”,校验码通常需要给定一个校验的范围,“[0~end-2]”作为crcl和crch报文域的属性描述了CRC校验码的校验范围是从报文头(0),至报文倒数第3个字节(“end”关键字描述报文倒数第一个字节)。报文中每个字节的顺序位置可以有两种定位方式,一种是从报文头开始定位,即数值0标识报文的第0个字节,也可以从报文末尾标识,即使用关键字“end”标识报文(不是指实际的报文,而是指规约规定的报文)的最后一个字节。
在通信规约中,通常一帧报文的某些内容是已知的,例如固定的报文头等,而一些内容是未知的,例如报文长度、应用数据和校验码等,未知的内容只有在实际发送或者接收报文时根据参数设置或者实际接收到的报文或者计算才能获得。对于已知的报文内容在通过通信规约描述语言描述时,可以通过常数表示,而未知内容则通过关键字表示。
根据电力系统通信规约和应用数据的特征,通信规约描述语言的关键字基本分为6类,分别为:常数类、校验码类、报文长度类、应用数据类、标记类、逻辑算术类。其特征在于包括:
A.常数类
常数分为两种,一种常数用于描述报文域,例如固定的报文头,而另一种常数用于描述报文域的属性,用于描述报文域的常数直接通过一个十六进制数值表示,把常数也归于关键字,通常是指用于描述报文域的常数,这是由于已知报文内容在进行报文匹配时至关重要。在图3的实施例中14规约脚本“addr/03/00/00/00/02/crcl[0~end-2]/crch[0~end-2]/,其中/03/00/等直接通过一个十六进制数描述了已知的报文内容。而“[0~end-2]”中作为属性的常数“0”则通过十进制数来描述,这一类常数不属于关键字。
常数报文域对报文匹配至关重要,在接收报文时,通过实际报文和常数报文域及校验码的比对,来确定实际接收到的报文是否符合通信规约的规定,以进一步决定是否解析报文所携带的应用数据。
B.校验码类
校验码通常用于检测报文在传输过程中是否丢失或者受到干扰,特别是基于串行通信的通信规约。和常数报文域一样,校验码是报文匹配的判据之一。校验码类通常带有属性,用于描述校验码的校验范围,图3实施例中14和15规约脚本“crcl[0~end-2]/”描述了CRC校验的校验范围从报文头到报文倒数第3个字节。校验码类定义了常见的校验码,这些关键字可以扩展。
C.报文长度类
报文长度类在接收报文时用于预知预定报文的报文长度,也是报文匹配的判据之一。和校验码类相同,报文长度类通常带有属性,用于描述校验码的校验范围,图3实施例中14和15规约脚本“len[3~end-2]/”描述了该报文域的长度描述的是从报文第3个字节(基于0计算)到报文倒数第3个字节。报文长度类定义了常见两种类型,一种是单字节描述的报文长度,一种是双字节描述的报文长度,可以进行扩展。
D.应用数据类
电力系统的应用数据基本可以概括为遥信、遥测、遥脉、遥控、遥调。遥测和遥脉关键字按照字节数目,是否带符号位,是否是浮点数以及字节顺序分别定义,遥控关键字按照遥控选择和遥控执行定义,在实际项目中并不限定于这两个过程,可以通过灵活的组态实现复杂的遥控过程。遥信关键字描述了全遥信格式和变化遥信格式,全遥信通过一个字节表示一个遥信和一个位表示一个遥信描述,变化遥信通过事件类型和事件代码描述,在实际项目中,可以通过灵活的组态实现复杂的变化遥信过程。在接收报文,通常一些应用数据是不关心的,应用数据类定了“omt”关键字,用于忽略一些数据。
E.标记类
标记类关键字用以描述通信上下文的环境,包括通信流程控制,发送报文控制,接收报文控制以及一些具有特定含义的符号。
F.逻辑算术类
逻辑算术类关键字用于接收报文时对应用数据的分析和处理,包括常用的逻辑运算、算术运算和条件判断。
1)通信规约描述语言的规约描述过程
一个通信规约总是由若干个通信过程组成,每个通信过程由多个通信活动组成,若干个通信活动完整地描述了一个通信规约。一次发送报文或者一次接收报文可以作为一次通信活动,一个通信过程可能是一次发送报文的过程,也可能是一次接收报文的过程,或者是一次发送报文和相应接收报文的过程。因此,通过“报文标识”、“发送选项”、“发送报文”、“接收选项”、“接收报文”这五个规约脚本可以描述任何一种通信过程。对于只有发送报文没有相应回复报文的通信过程,在“发送选项”中通过“nack/”关键字标识,表示该发送报文不需要对方回复,同时“接收报文”中使用“nul/”标识“空”。对于只有接收报文而没有发送报文的通信过程,在“接收选项”中必须使用“nsnd/”关键字标识“没有发送报文”,同时“发送报文”中使用“nul/”关键字标识“空”。
图3实施例中描述了一个实际通信规约的描述过程,包括以下步骤:
A.分析该通信规约,将通信规约分解成两个通信过程,通信过程1为“取遥信遥测”过程,通信过程2为“定时取遥脉”过程。
B.将所述步骤A通信过程1分解为通信活动10(主站发送取遥信遥测报文)和通信活动11(子站回复报文),将所述步骤A通信过程2分解为通信活动12(主站发送取遥脉报文)和通信活动13(子站回复报文)。
C.将通信过程1转换为规约脚本。通信活动10和11共同组成了通信过程1,通信活动10为发送报文,规约中“地址”域通过关键字“addr”描述,“功能码”、“寄存器起始地址”、“寄存器数目”对于主站来说是已知的,因此直接通过常数表示,“CRC校验码”通过关键字“crcl”和“crch”表示,“CRC校验码”的校验范围通过属性“[0~end-2]”描述,标识范围从“地址”域到“寄存器数目”域,这样通信活动10按照语法可转换为规约脚本142。通信活动11为通信活动10的回复报文,11中“地址”域通过关键字“addr”描述,根据规约规定,回复报文的功能码必须和发送报文的功能码相同,因此这里“功能码”域使用常数03表示,根据规约规定,发送报文请求的寄存器长度是两个寄存器,回复报文应该是4个字节,然而这里为了适应于一般情况,假设报文长度是未知的,使用关键字“len”表示,长度域的描述范围是从第4个字节(从1计)到倒数第3个字节,通过属性“[3~end-2]”表示。应用数据“开入0~7”和“开入8~15”为开关量遥信,数据的每一位表示一个遥信状态,通过关键字“st”表示,由于是两个同一类型的应用数据,使用属性“[2]”描述了有2个“st”关键字。应用数据“有功(高)”和“有功(低)”为“有功”的两字节遥测的表示形式,可通过关键字“muh2”表示,CRC校验码通过关键字“crcl”和“crch”表示,CRC校验码的校验范围通过属性“[0~end-2]”描述,标识范围从“地址”域到“寄存器数目”域,这样通信活动11按照语法可转换为规约脚本144。这样通信活动10和通信活动11已经转换为相应的规约脚本142和144,仅仅规约脚本142和144还不足以描述通信过程1,需要通过“报文标识”、“发送选项”和“接收选项”进一步描述通信上下文环境。“报文标识”通过一个十进制数值表示,它在整个通信环境中必须是唯一的,“发送选项”描述了如何发送报文,规约脚本141使用“nul/”标识了缺省的发送报文环境。规约脚本143描述了“接收选项”,关键字“yxs[0]/”描述了该接收报文中的遥信数据在遥信库中的起始存放地址,关键字“ycs[0]/”描述了该接收报文中的遥信数据在遥信库中的起始存放地址。
D.同所述步骤C一样,将由通信活动12和13组成的通信活动2转换为实施例中规约脚本15。和所述步骤C不同的是,规约脚本15中151使用关键字“tmr[10]”表示“发送报文”152定时发送,周期为10秒。和所述步骤C不同的另一个是,规约脚本15中154使用关键字“puh4”描述了应用数据遥脉。
E.所述步骤C和D分别完成了图3实施例中通信过程1和通信过程2向规约脚本的转换,规约脚本14和15完整描述了图3实施例所述通信规约。将规约脚本提交给通信管理机规约脚本解析模块,步骤3)详细描述了规约脚本的解析过程。
2)规约脚本的解析方法
图2描述了规约脚本的解析流程,根据所述步骤2),图3实施例中所提交的规约脚本14和15,通信管理机规约脚本解析模块按照脚本完成所有通信活动。解析过程包括如下步骤:
A.检查图3实施例中规约脚本14和规约脚本15的语法是否正确,如果不正确,退出解析过程,如果正确,执行步骤B。
B.将图3中规约脚本14存储为图5所示的二叉树链表结构,所有的报文域均存储为二叉树的根节点,报文域的属性存储为二叉树的叶节点。将图3中规约脚本15存储为和图5类似的二叉树链表结构。
C.根据图3实施例中规约脚本144,创建接收报文规约脚本的匹配方法,包括:C1)在接收报文脚本中找出常数域或者在实际通信之前可以转换为常数的报文域(例如描述设备地址的关键字“addr”),通过常数域快速识别报文头或者结束符以初步判定该报文是否符合规约规定;C2)预先识别将要接收到的报文长度,如果规约中没有“长度”域,那么规约规定的接收报文一定是定长的,如果规约中有长度域,根据长度域所表述的长度范围,在实际接收时,判定是否接收到完整的报文;C3)如果规约中有校验码域,那么在接收到完整报文后,通过校验码关键字描述的校验算法和校验范围计算校验码,以评估报文在传输过程中是否丢失或受到干扰,以确定是否信任该报文为有效报文。
D.找到“发送选项”中标识了“init/”关键字的通信过程,如果找到,把该通信过程设为当前通信过程,否则,缺省情况下,选取第一个通信过程为当前通信过程,图3实施例中,通信过程2为定时发送报文,如果当前定时时间为计数完成,则选取通信过程1作为当前通信过程。
E.根据当前通信过程的“发送选项”和“接收选项”的“nack/”、“nsnd/”关键字判定该通信过程是只有发送报文,还是只有接收报文,还是先发送报文,再等待接收报文。图3实施例中,通信过程1由通信活动10和11组成,通信活动10发送报文,通信活动11为相应的回复报文,作为主站,将首先选择通信活动10发送报文。
F.根据所述步骤E,图3实施例中通信活动10发送脚本,将发送脚本转换为实际发送报文,常数域直接转换为实际报文内容,使用实际的设备地址替换“addr”关键字,根据“crcl[0~5]/”选择CRC校验算法,依据校验范围计算出实际的校验码,替换“crcl”和“crch”报文域,这样实际发送报文组织完成,下表显示了脚本转换的过程。
G.判断是否接收到报文,如果没有接收到,判断是否接收超时,如果接收超时,根据“发送选项”选择下一个通信过程,图3实施例中“发送选项”没有指定通信超时后的处理方式,因此使用缺省方式,如果接收超时,将继续选择该通信过程为当前通信过程。
H.如果接收到报文,图3实施例中规约脚本144,根据所创建的接收报文的规约匹配方法,关键字“addr”在实际通信之前,可以通过实际配置的设置地址替换,因此其可以作为常数域用作快速识别报文头,常数“03”作为常数也用于快速识别报文。长度域关键字“len[3~end-2]/”用实际接收到的该位置的报文内容替换关键字“len”,并根据长度域所表述的范围计算出实际的报文长度,图4列出了一个可能的通信过程,当规约解析模块接收到报文后,将接收报文和接收脚本进行匹配,如下表所示,实际接收的报文长度域为4,即:len=4,由于长度描述的范围是从报文第3个字节(从0计)开始到倒数第3个字节,有5个字节没有包含在报文长度域的描述范围,因此可以确定报文的总长度=4+5=9,当报文的总长度确定后,描述报文位置的关键字“end”可以确定为8(从0计算,总长度是9,最后一个字节的位置为8),当“end”关键字确定后,crcl校验码的实际校验范围也可以确定为从第0个字节到第6(end-2=8-2=6)个字节。根据“crcl”校验算法校验报文数据是否传输正确,如果正确,按照规约脚本中对应用数据的脚本描述提取应用数据。最后,根据“接收选项”选择下一个通信过程作为当前通信过程。表.接收报文匹配过程
I.根据所述步骤H,完成了通信过程1的解析过程,并根据当前说选择的通信过程,重复所述步骤E到所述步骤H的过程,从而按照脚本完成对所有通信过程的解析。
根据上述对本发明实施例的详细描述,本发明将图3实例通信规约文本转换为规约脚本,规约脚本的语法和通信规约文本十分接近,脚本本身不需要考虑通信底层的处理,例如如何收发报文,如何存储数据等等,脚本只关心通信规约本身所描述的通信过程。这样,在将一个电力智能设备接入到自动化系统时,可以避免重复开发相似度很高的通信解析程序,只需要将通信规约转换为规约脚本,将规约脚本提交给本发送所述的规约脚本解析器,脚本解析器按照规约脚本的描述,完成对通信过程的控制和解析。
虽然,本发明通过实例进行了图示和描述,但是该领域的普通技术人员应该了解,可以在规约描述语言的语法和关键字的定义上作各种变化,以及根据自身通信管理机软件框架结构对规约解析器的解析方法进行调整,而不偏离所附权利要求书所限定的本发明的精神和范围。
Claims (2)
1.一种电力智能设备通信规约脚本解析方法,其特征在于,包括以下步骤:
1)根据规约描述语言的语法,将通信规约文本转换为规约脚本;
2)在运行时,通信管理机的规约脚本解析模块按照规约脚本控制和解析通信过程,实现和电力智能设备的数据交换;
所述规约描述语言的关键字和语法分别为:
A.关键字的定义以报文域和字节为基本单位,根据功能划分,关键分为6类:常数类、校验码类、报文长度类、应用数据类、标记类、逻辑算术类;
B.语法接近于通信规约文本的描述形式,并且便于通信管理机解析,将每个报文帧的内容按照通信规约的描述划分为“报文域”,根据每个报文域的作用,它由关键字或常数组成,其所关联的实际内容是报文中的某一个字节或者多个字节,每个报文域之间通过“/”符号隔开,并以“/”结束;
每个报文域有相应的属性以进一步对该域进行描述,报文域的属性通过字符“[”和“]”中的脚本描述,属性的属性使用“(”和“)”中的脚本描述,报文域的多个属性之间通过“:”符号分隔;
脚本中最左边的常数或关键字先获得解析或者其关联的实际报文内容先发送;
在所述步骤1)中,使用规约描述语言描述通信规约,一个通信规约由若干个通信过程组成,每个通信过程由多个通信活动组成,若干个通信活动完整地描述了一个通信规约,使用规约描述语言描述通信规约,包括以下步骤:
11)将一个通信过程划分为“报文标识”、“发送选项”、“发送报文”、“接收选项”、“接收报文”五个规约描述脚本,
“报文标识”是一个数值,唯一地标识通信上下文中的一个通信过程;
“发送选项”标识发送报文时通信上下文环境,包括:标识发送报文定时发送时间、标识发送报文不需要对方回复、标识发送频率、标识发送报文后等待接收的超时时间、标识发送报文不参与轮询、标识该报文是初始化报文、标识发送报文是遥控报文、标识发送报文是否是遥调报文、是否和其他通信过程具有相同的发送报文;“发送报文”描述具体的报文发送内容;
“接收选项”标识接收报文时的上下文环境,包括:遥信存放起始地址、遥测存放起始地址、遥脉存放起始地址、遥测系数、遥脉系数、事件消除方式、是否只有接收报文、标识遥控选择成功或失败、标识遥控执行成功或失败、标识接收报文后的跳转状态、标识接收报文有多种解析方式;
“接收报文”标识该通信过程应该接收到的报文格式,将实际接收到的报文和“接收报文”脚本进行匹配,如果匹配成功,则按照“接收报文”脚本解析实际接收报文中的应用数据;
12)将所要解析的通信规约分解为若干个通信过程,每个通信过程是“一问一答”的通信过程、只有“发送报文”的过程或只有等待“接收报文”的过程;
13)根据所述步骤11)和步骤12),将每个通信过程通过“报文标识”、“发送选项”、“发送报文”、“接收选项”、“接收报文”描述,对于只有发送报文的通信过程,在“发送选项”中使用“nack/”关键字,标识该发送报文不需要对方回复,同时“接收报文”中使用“nul/”标识“空”,对于只有接收报文的通信过程,在“接收选项”中使用“nsnd/”关键字标识“没有发送报文”,同时“发送报文”中使用“nul/”关键字标识“空”;
14)根据所述步骤13)完成所有通信过程的脚本化,将脚本提交给通信管理机的规约脚本解析模块。
2.根据权利要求1中所述的电力智能设备通信规约脚本解析方法,其特征在于:所述步骤2)中,对生成的规约脚本使用规约脚本解析模块进行解析,包括以下步骤:
21)通信管理机规约脚本解析模块读取所有通信过程的规约脚本,并判别语法是否正确;
22)扫描各通信过程的所有脚本配置项,根据语法规则,将规约脚本中的报文域存储为二叉树的根节点,报文域的属性存储为该根节点的叶节点,并根据通信过程中的“报文标识”将这些脚本信息存储到相应的通信过程控制结构中;
23)创建“接收报文”脚本项的报文匹配模式,包括:
231)在接收报文脚本中找出常数域或者在实际通信之前可以转换为常数的报文域,通过常数域快速识别报文头或者结束符以初步判定该报文是否符合规约规定;
232)预先识别将要接收到的报文长度,如果规约中没有“长度”域,那么规约规定的接收报文一定是定长的,如果规约中有长度域,根据长度域所表述的长度范围,在实际接收时,判定是否接收到完整的报文;
233)如果规约中有校验码域,那么在接收到完整报文后,通过校验码关键字描述的校验算法和校验范围计算校验码,以评估报文在传输过程中是否丢失或受到干扰,以确定是否信任该报文为有效报文;
24)找到“发送选项”中标识了“init/”关键字的通信过程,如果找到,把该通信过程设为当前通信过程,否则,缺省情况下,选取第一个通信过程为当前通信过程;
25)根据当前通信过程的“发送选项”和“接收选项”的“nack/”、“nsnd/”判定该通信过程是只有发送报文,还是只有接收报文,还是先发送报文,再等待接收报文;
26)根据所述步骤25),选择发送报文或者等待接收报文,发送报文时先获取该通信过程控制信息结构,并实时将发送报文的规约脚本转换为实际需要发送报文,并将报文从通信管理机指定的通信端口发送出去;
27)判断是否接收到报文,如果没有接收到,判断是否接收超时,如果接收超时,根据“发送选项”选择下一个通信过程;
28)如果接收到报文,根据所述步骤23)的报文匹配方法进行匹配,如果匹配成功,再根据“接收报文”脚本项对应用数据的描述提取应用数据,如果匹配不成功,则不解析应用数据,进行报文匹配后,根据“接收选项”选择下一个通信过程作为当前通信过程,如果没有接收到报文,根据“发送选项”选择继续等待接收报文,还是已经接收超时从而选择下一个通信过程作为当前通信过程;
29)重复所述步骤25)至步骤28),完成对通信规约的解析。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310117240.5A CN103197948B (zh) | 2013-04-03 | 2013-04-03 | 一种电力智能设备通信规约脚本解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310117240.5A CN103197948B (zh) | 2013-04-03 | 2013-04-03 | 一种电力智能设备通信规约脚本解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103197948A CN103197948A (zh) | 2013-07-10 |
CN103197948B true CN103197948B (zh) | 2016-02-10 |
Family
ID=48720543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310117240.5A Active CN103197948B (zh) | 2013-04-03 | 2013-04-03 | 一种电力智能设备通信规约脚本解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103197948B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104572055B (zh) * | 2013-10-23 | 2018-12-28 | 北大方正集团有限公司 | 拼版脚本生成装置和拼版脚本生成方法 |
CN104320395A (zh) * | 2014-07-02 | 2015-01-28 | 许继电气股份有限公司 | 针对iec61850报告服务数据通讯传输的改进方法 |
CN104270273B (zh) * | 2014-09-30 | 2018-09-25 | 许继电气股份有限公司 | 一种自配置通讯管理机 |
CN104333540B (zh) * | 2014-10-22 | 2018-02-13 | 国电南瑞科技股份有限公司 | 一种变电站自动化系统通信协议动态实现方法 |
CN104795893B (zh) * | 2015-03-13 | 2017-02-22 | 华南理工大学 | 适用于传统电力微机实验设备的9‑2le报文实现方法 |
CN105468444B (zh) * | 2015-11-18 | 2019-01-04 | 国电南瑞南京控制系统有限公司 | 一种事件信息的调度方法 |
CN105516317B (zh) * | 2015-12-14 | 2020-03-10 | 北京科东电力控制系统有限责任公司 | 一种用电信息多层级负载均摊高效采集方法 |
CN106227707B (zh) * | 2016-07-13 | 2019-03-29 | 北京四方继保自动化股份有限公司 | 一种基于元模型的报文规约定义文件的配置方法 |
CN108134699A (zh) * | 2017-12-22 | 2018-06-08 | 南京南瑞继保电气有限公司 | 一种组串式光伏逆变器远程下载固件的系统及方法 |
CN108322437B (zh) * | 2017-12-28 | 2021-07-27 | 山东鲁软数字科技有限公司智慧能源分公司 | 用于多规约设备之间的自适应通讯方法和装置 |
CN109597652B (zh) * | 2018-10-31 | 2021-10-08 | 青岛益和电气集团股份有限公司 | 规约解析方法、系统、计算机可读存储介质及通讯管理机 |
CN112217802B (zh) * | 2020-09-18 | 2022-09-16 | 国网福建省电力有限公司检修分公司 | 一种基于多级归类方式的iec103报文解析方法及装置 |
CN112311627B (zh) * | 2020-10-29 | 2022-09-09 | 许昌许继软件技术有限公司 | 一种基于xml格式的规约描述文件的电力规约通用测试方法及系统 |
CN113096476B (zh) * | 2021-04-07 | 2023-03-21 | 国网浙江省电力有限公司检修分公司 | 一种监控系统的调试平台 |
CN114338736B (zh) * | 2021-12-07 | 2023-08-01 | 中国人民解放军总医院 | 物联网设备的数据传输管理系统、方法和计算机装置 |
CN114257655A (zh) * | 2021-12-17 | 2022-03-29 | 国网河北省电力有限公司 | 一种基于5g通信的iec104规约处理方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101105747A (zh) * | 2006-07-11 | 2008-01-16 | 北海银河高科技产业股份有限公司 | 一种电站通信系统及其规约库实现方法 |
CN101933314A (zh) * | 2008-02-01 | 2010-12-29 | 三菱电机株式会社 | 通信解析装置以及通信解析方法 |
-
2013
- 2013-04-03 CN CN201310117240.5A patent/CN103197948B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101105747A (zh) * | 2006-07-11 | 2008-01-16 | 北海银河高科技产业股份有限公司 | 一种电站通信系统及其规约库实现方法 |
CN101933314A (zh) * | 2008-02-01 | 2010-12-29 | 三菱电机株式会社 | 通信解析装置以及通信解析方法 |
Non-Patent Citations (5)
Title |
---|
Agent Technology used in Power Systems;Ralf Biernatzki 等;《AFRICON, 2004. 7th AFRICON Conference in Africa》;20040917;第2卷;第705-710页 * |
基于Agent技术的通信规约接口设计;伍少成 等;《电网技术》;20060531;第30卷(第10期);第100-104页 * |
基于模板的电力保护系统通信规约研究;张艳林 等;《继电器》;20071116;第35卷(第22期);第23-26,32页 * |
基于编译器的通信规约自动解析研究;张艳林 等;《电力系统保护与控制》;20100116;第38卷(第2期);第101-105页 * |
电力信息采集的通用型通信规约解析系统研究与设计;蒋湘涛 等;《电力系统保护与控制》;20120501;第40卷(第9期);第118-122页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103197948A (zh) | 2013-07-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103197948B (zh) | 一种电力智能设备通信规约脚本解析方法 | |
CN112100054B (zh) | 一种面向数据管控的程序静态分析方法和系统 | |
CN107193917B (zh) | 基于iid的全站系统配置文件无损数据更新方法 | |
US9122540B2 (en) | Transformation of computer programs and eliminating errors | |
CN109684838B (zh) | 一种针对以太坊智能合约的静态代码审计系统及方法 | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN104063325A (zh) | 一种针对嵌入式软件的测试用例自动化生成装置及其方法 | |
CN109508355A (zh) | 一种数据抽取方法、系统及终端设备 | |
CN102880468A (zh) | 一种用于ecu程序开发的代码智能提示方法及其系统 | |
CN102955697B (zh) | 基于面向方面的构件库构建方法 | |
CN105809309A (zh) | 一种电力系统安控策略仿真系统及其仿真方法 | |
CN109446155B (zh) | 智能站描述文件导入导出配置方法及系统 | |
CN110442371A (zh) | 一种发布代码的方法、装置、介质及计算机设备 | |
CN105447246A (zh) | 一键生成电气原理图的方法与系统 | |
CN108563561B (zh) | 一种程序隐性约束提取方法及系统 | |
CN105260223A (zh) | 一种scpi命令定义、解析、执行和测试的方法 | |
CN103235757B (zh) | 基于自动化造数对输入域测试对象进行测试的装置和方法 | |
CN105488293B (zh) | 一种配置scd中虚端子连线的方法及系统 | |
CN107797996A (zh) | 一种词条翻译方法及装置 | |
CN110633318A (zh) | 一种数据提取的处理方法、装置、设备和存储介质 | |
CN112417852B (zh) | 一种代码片段重要性的判断方法和装置 | |
CN102629213A (zh) | 一种c语言仿真模型的剖析及监控方法 | |
CN109254774A (zh) | 软件开发系统中代码的管理方法和装置 | |
CN109710809B (zh) | 一种基于专家库的scd文件虚端子自动连接方法 | |
CN109858169B (zh) | 一种基于Modelica的模型平坦化方法 |
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 |