CN107301080A - 轨旁控制单元中基于数据配置的c语言代码自动生成系统 - Google Patents

轨旁控制单元中基于数据配置的c语言代码自动生成系统 Download PDF

Info

Publication number
CN107301080A
CN107301080A CN201710526443.8A CN201710526443A CN107301080A CN 107301080 A CN107301080 A CN 107301080A CN 201710526443 A CN201710526443 A CN 201710526443A CN 107301080 A CN107301080 A CN 107301080A
Authority
CN
China
Prior art keywords
interlocking
data
module
language code
expression formula
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.)
Pending
Application number
CN201710526443.8A
Other languages
English (en)
Inventor
王芳萌
李广诚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Thales SAIC Transport System Ltd
Original Assignee
Thales SAIC Transport System Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Thales SAIC Transport System Ltd filed Critical Thales SAIC Transport System Ltd
Priority to CN201710526443.8A priority Critical patent/CN107301080A/zh
Publication of CN107301080A publication Critical patent/CN107301080A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/313Logic programming, e.g. PROLOG programming language

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明公开了轨旁控制单元中基于数据配置的C语言代码自动生成系统,包括数据库解析模块、数据结构模块、联锁规则库模块、逻辑树模块和C语言代码生成模块,数据结构模块定义了联锁表示和逻辑运算所需数据结构;联锁规则库模块定义了基于联锁规范的运算规则;数据库解析模块读取联锁数据和配置数据,结合数据结构模块和联锁规则库模块,将联锁数据表达为复杂逻辑表达式;逻辑树模块将复杂逻辑表达式解析为基本逻辑表达式;C语言代码生成模块以基本逻辑表达式的列表为输入,结合数据结构模块和联锁规则库模块,根据配置数据、联锁数据和现有源代码信息,生成最终的C语言代码文件。准确处理基于数据配置的复杂逻辑表达式的解析和代码编写。

Description

轨旁控制单元中基于数据配置的C语言代码自动生成系统
技术领域
本发明涉及软件代码生成技术。
背景技术
目前,地铁CBTC(Communication Based Train Control,基于通信的列车控制)系统中轨旁控制单元,其联锁软件需要处理基于复杂逻辑表达式的复杂信号场景,软件工程师需要阅读数据表格,以人工方式对复杂逻辑表达式进行解析,再根据解析出的信号逻辑编写代码。在这一过程中,一方面,复杂逻辑表达式逻辑繁杂,数据量大,数据耦合度高,以人工方式进行解析,易出现错误。另一方面,由于基本数据类型的相似度高,相似逻辑的表达式尽管解析算法相似,但由于数据内容不同,造成了大量的重复人工解析过程和代码编写调试过程。如何高效而又准确地处理基于数据配置的复杂逻辑表达式的解析和编写代码,成为本领域技术人员需要解决的问题。
发明内容
本发明的目的在于提供一种用于轨旁控制单元的C语言代码自动生成系统,高效准确地处理基于数据配置的复杂逻辑表达式的解析和代码编写。
实现上述目的的技术方案是:
一种轨旁控制单元中基于数据配置的C语言代码自动生成系统,包括数据库解析模块、数据结构模块、联锁规则库模块、逻辑树模块和C语言代码生成模块,其中,
所述数据结构模块定义了联锁表示和逻辑运算所需数据结构;
所述联锁规则库模块定义了基于联锁规范的运算规则;
所述数据库解析模块读取联锁数据和配置数据,结合基于联锁表示和逻辑运算所需数据结构以及联锁规范的运算规则,将联锁数据表达为复杂逻辑表达式;
所述逻辑树模块基于逻辑树结构将所述复杂逻辑表达式解析为基本逻辑表达式;
所述C语言代码生成模块以所述基本逻辑表达式的列表为输入,结合基于联锁表示和逻辑运算所需数据结构以及联锁规范的运算规则,根据配置数据、联锁数据和现有源代码信息,生成最终的C语言代码文件。
在上述的轨旁控制单元中基于数据配置的C语言代码自动生成系统中,所述数据库解析模块从数据库中读取联锁数据和配置数据。
在上述的轨旁控制单元中基于数据配置的C语言代码自动生成系统中,所述逻辑树模块对复杂逻辑表达式解析的过程为:递归地解析每一个节点,若某个节点具有若干个子节点,则该节点为一个父节点,首先解析其子节点,以此类推,以递归循环的方式,从每一个分支的最底层节点开始解析,只有当底层的所有节点被解析成基本逻辑表达式后,再解析其父节点。在具体的解析过程中,根据节点间的或逻辑关系或者与逻辑关系,分别采用不同的解析算法。
在上述的轨旁控制单元中基于数据配置的C语言代码自动生成系统中,所述C语言代码生成模块将所述基本逻辑表达式的列表转化为C语言代码形式的变量、函数及其实现。
本发明的有益效果是:本发明一方面,自动将复杂逻辑表达式解析为对应基本信号场景的基本逻辑表达式,解析准确率高,解析出的基本逻辑表达式逻辑简单直观,易于理解,便于逻辑分析和代码调试。另一方面,基于现有代码,自动生成与之兼容的C语言代码,避免了人工编写大量相似度极高的代码,并且便于维护和升级,节省了大量开发时间,提高了工作效率。
附图说明
图1a是一种基本逻辑表达式的表达实例;
图1b是另一种基本逻辑表达式的表达实例;
图2是复杂联锁逻辑表达式的逻辑树表达表达实例;
图3是逻辑树对复杂逻辑表达式的解析过程示例;
图4是本发明的轨旁控制单元中基于数据配置的C语言代码自动生成系统的结构图。
具体实施方式
下面将结合附图对本发明作进一步说明。
请参阅图4,本发明的轨旁控制单元中基于数据配置的C语言代码自动生成系统,包括数据库解析模块1、数据结构模块2、联锁规则库模块3、逻辑树模块4和C语言代码生成模块5。
数据结构模块2定义了联锁表示和逻辑运算所需数据结构。联锁规则库模块3定义了基于联锁规范的运算规则。
数据库解析模块1从数据库中读取联锁数据和配置数据,结合基于联锁表示和逻辑运算所需数据结构以及联锁规范的运算规则,在数据校验的基础上,将联锁数据表达为复杂逻辑表达式。对逻辑表达式的语法规则简述如下:
联锁逻辑一般采用变量、与(“*”)、或(“+”)和括号(“(”、“)”)组成逻辑表达式,比如(a+b)*(c+d),其中,每一个子项即变量,比如a,代表一个具体信号设备及其状态的组合,比如:“SW3523_LEFT”表示道岔SW3523处于左位,“X0826ZCJ_HIGH”表示继电器X0826ZCJ处于吸起(高)状态。而最基本的信号场景,是具有若干子项的与逻辑表达式,即:a*b*c,而a+b可以认为是两个基本信号场景a和b的组合。此外,也有少数特别逻辑表达式形式,比如“ALWAYSFALSE”代表逻辑值一直为假即永不成立的逻辑表达式。逻辑表达式可以简单分为复杂逻辑表达式和基本逻辑表达式,基本逻辑表达式可以认为是不包括任何括号、只包含与或逻辑的简单逻辑表达式,而包含括号,具有多层复杂结构的就是复杂逻辑表达式。常见的两种基本逻辑表达式如图1a、1b所示。其中,第一种基本逻辑表达式“a*b*c”只包含一个节点,并且只含有与逻辑;第二种基本逻辑表达式“a+b+c”共包含四个节点,并且只含有或逻辑。显然,对于联锁计算来说,基本信号场景更易于辨识和判定,而基本信号场景可以被表达为第一种基本逻辑表达式。如前所述,复杂逻辑表达式可被解析为由若干个相互间为逻辑或关系的基本逻辑表达式组成的列表,至少有任意一个基本逻辑表达式的值为真时,复杂逻辑表达式的值即为真,以此为依据定义的两种基本逻辑表达式,更便于基本信号场景的表达和辨识。
逻辑树模块4基于逻辑树结构将复杂逻辑表达式解析为基本逻辑表达式。
对逻辑树的特征简要说明如下:一个复杂逻辑表达式“(a+b*c)*(d*e+(f+g)*(h+i))*(j+k+l)”可表示为图2所示逻辑树。将复杂逻辑表达式表达为逻辑树,是解析复杂逻辑的基础。逻辑树由至少一个节点和若干连线组成,连线始端(上层)的节点为父节点,连线终端(下层)的节点为子节点,一个父节点可以有若干个子节点,一个子节点只能有一个父节点,最顶端的父节点称为逻辑树的根节点。根据联锁规则库模块的规定,每个节点的内容可以是单个变量、单个与或逻辑关系符号(“*”或“+”)或由变量和与逻辑关系组成的逻辑表达式。为便于解析,规定解析前的逻辑树,所有节点内容只可以是每个节点的内容可以是单个变量、单个与或逻辑关系符号(“*”或“+”),而不可以是由变量和与逻辑关系组成的逻辑表达式。以此为依据,复杂逻辑表达式处于节点最简单但结构最复杂的初始状态,当包含多个分支和多层次结构时,逻辑树需要通过若干步骤被解析为更简单的结构。
举例说明利用逻辑树解析复杂逻辑表达式的过程。如图3所示,复杂逻辑表达式“a*(b+c)*(d+e+f)”的逻辑树具有三层结构,解析过程为递归地解析每一个节点,若某个节点具有若干个子节点,则该节点为一个父节点,首先解析其子节点,以此类推,以递归循环的方式,从每一个分支的最底层节点开始解析,只有当底层的所有节点被解析成基本逻辑表达式后,再解析其父节点。同时,在具体的解析过程中,会根据节点间的关系,也就是其父节点的内容为或逻辑关系符“+”或者为与逻辑关系符“*”,分别采用不同的解析算法。如图3所示,在本例中,最底层的节点内容是基本逻辑表达式,无需解析,并且其父节点为或逻辑关系符“+”。因此,第一步将最底层的节点解析为其父节点的基本逻辑表达式列表,逻辑树从三层结构简化为二层结构。第二步,第二层的子节点的父节点为与逻辑关系符“*”,因此首先将相邻的两个子节点进行合并,减少子节点个数,并保证每个合并后的子节点内容为基本逻辑表达式列表。第三步,采用与第二步相同的方法,合并子节点,并将最终的基本逻辑表达式列表表示为具有或逻辑关系的若干子节点,此时每一个子节点都是一个基本逻辑表达式,可对应为一个易于理解和辨识的基本信号场景。可以看到,最初的复杂逻辑表达式“a*(b+c)*(d+e+f)”被解析为相互间为或逻辑关系的6个基本逻辑表达式,分别对应为6个基本信号场景,比如基本逻辑表达式“a*b*d”可对应为“BlockG1305_Vacant*Switch1303_Left*ZCJ_Low”,只要其中任意一个基本信号场景出现,则原复杂逻辑表达式的值为真,进而触发相关联锁逻辑,比如进路的授权等。显而易见,相比原复杂逻辑表达式,解析后的基本信号场景的理解和辨识更简单清晰。
复杂逻辑表达式“(a+b*c)*(d*e+(f+g)*(h+i))*(j+k+l)”可被解析为相互间为或逻辑关系的30个基本逻辑表达式。
数据库解析模块1连接C语言代码生成模块5。C语言代码生成模块5以基本逻辑表达式的列表为输入,结合基于联锁表示和逻辑运算所需数据结构以及联锁规范的运算规则,根据配置数据、联锁数据和现有源代码信息,生成最终的C语言代码文件。主要核心任务在于:将基本逻辑表达式的列表转化为C语言代码形式的变量、函数及其实现。基本逻辑表达式“a*b*d”对应的基本信号场景“BlockG1305_Vacant*Switch1303_Left*ZCJ_Low”,作为进路授权条件可转化为函数“ixlConditionCheck_IsRouteAuthorizeConditionSaticfied(UShort routeId)”。如下所示:
以上实施例仅供说明本发明之用,而非对本发明的限制,有关技术领域的技术人员,在不脱离本发明的精神和范围的情况下,还可以作出各种变换或变型,因此所有等同的技术方案也应该属于本发明的范畴,应由各权利要求所限定。

Claims (4)

1.一种轨旁控制单元中基于数据配置的C语言代码自动生成系统,其特征在于,包括数据库解析模块、数据结构模块、联锁规则库模块、逻辑树模块和C语言代码生成模块,其中,
所述数据结构模块定义了联锁表示和逻辑运算所需数据结构;
所述联锁规则库模块定义了基于联锁规范的运算规则;
所述数据库解析模块读取联锁数据和配置数据,结合基于联锁表示和逻辑运算所需数据结构以及联锁规范的运算规则,将联锁数据表达为复杂逻辑表达式;
所述逻辑树模块基于逻辑树结构将所述复杂逻辑表达式解析为基本逻辑表达式;
所述C语言代码生成模块以所述基本逻辑表达式的列表为输入,结合基于联锁表示和逻辑运算所需数据结构以及联锁规范的运算规则,根据配置数据、联锁数据和现有源代码信息,生成最终的C语言代码文件。
2.根据权利要求1所述的轨旁控制单元中基于数据配置的C语言代码自动生成系统,其特征在于,所述数据库解析模块从数据库中读取联锁数据和配置数据。
3.根据权利要求1所述的轨旁控制单元中基于数据配置的C语言代码自动生成系统,其特征在于,所述逻辑树模块对复杂逻辑表达式解析的过程为:递归地解析每一个节点,若某个节点具有若干个子节点,则该节点为一个父节点,首先解析其子节点,以此类推,以递归循环的方式,从每一个分支的最底层节点开始解析,只有当底层的所有节点被解析成基本逻辑表达式后,再解析其父节点。在具体的解析过程中,根据节点间的或逻辑关系或者与逻辑关系,分别采用不同的解析算法。
4.根据权利要求1所述的轨旁控制单元中基于数据配置的C语言代码自动生成系统,其特征在于,所述C语言代码生成模块将所述基本逻辑表达式的列表转化为C语言代码形式的变量、函数及其实现。
CN201710526443.8A 2017-06-30 2017-06-30 轨旁控制单元中基于数据配置的c语言代码自动生成系统 Pending CN107301080A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710526443.8A CN107301080A (zh) 2017-06-30 2017-06-30 轨旁控制单元中基于数据配置的c语言代码自动生成系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710526443.8A CN107301080A (zh) 2017-06-30 2017-06-30 轨旁控制单元中基于数据配置的c语言代码自动生成系统

Publications (1)

Publication Number Publication Date
CN107301080A true CN107301080A (zh) 2017-10-27

Family

ID=60135195

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710526443.8A Pending CN107301080A (zh) 2017-06-30 2017-06-30 轨旁控制单元中基于数据配置的c语言代码自动生成系统

Country Status (1)

Country Link
CN (1) CN107301080A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107943470A (zh) * 2017-11-23 2018-04-20 四川长虹电器股份有限公司 云管理平台代码生成与回收的系统与方法
CN110704742A (zh) * 2019-09-30 2020-01-17 北京三快在线科技有限公司 一种特征提取方法及装置
CN111815460A (zh) * 2020-04-20 2020-10-23 国泰财产保险有限责任公司 基于互联网保险数据平台的保费计算程序生成方法及装置
CN113807078A (zh) * 2021-10-09 2021-12-17 杭州路信科技有限公司 信号联锁系统控制方法、装置、电子设备及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104049976A (zh) * 2014-06-27 2014-09-17 上海自仪泰雷兹交通自动化系统有限公司 基于布尔逻辑的联锁软件自动生成系统
US20150344050A1 (en) * 2013-01-21 2015-12-03 Mitsubishi Heavy Industries, Ltd. Train traffic control inspection device, train traffic control inspection method and program
CN105404497A (zh) * 2015-10-26 2016-03-16 北京锐安科技有限公司 一种逻辑表达式的解析方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150344050A1 (en) * 2013-01-21 2015-12-03 Mitsubishi Heavy Industries, Ltd. Train traffic control inspection device, train traffic control inspection method and program
CN104049976A (zh) * 2014-06-27 2014-09-17 上海自仪泰雷兹交通自动化系统有限公司 基于布尔逻辑的联锁软件自动生成系统
CN105404497A (zh) * 2015-10-26 2016-03-16 北京锐安科技有限公司 一种逻辑表达式的解析方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王晓玲: "城市轨道交通联锁系统软件研究和实现", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107943470A (zh) * 2017-11-23 2018-04-20 四川长虹电器股份有限公司 云管理平台代码生成与回收的系统与方法
CN107943470B (zh) * 2017-11-23 2020-10-23 四川长虹电器股份有限公司 云管理平台代码生成与回收的系统与方法
CN110704742A (zh) * 2019-09-30 2020-01-17 北京三快在线科技有限公司 一种特征提取方法及装置
CN110704742B (zh) * 2019-09-30 2021-04-27 北京三快在线科技有限公司 一种特征提取方法及装置
CN111815460A (zh) * 2020-04-20 2020-10-23 国泰财产保险有限责任公司 基于互联网保险数据平台的保费计算程序生成方法及装置
CN113807078A (zh) * 2021-10-09 2021-12-17 杭州路信科技有限公司 信号联锁系统控制方法、装置、电子设备及存储介质
CN113807078B (zh) * 2021-10-09 2023-03-10 杭州路信科技有限公司 信号联锁系统控制方法、装置、电子设备及存储介质

Similar Documents

Publication Publication Date Title
CN107301080A (zh) 轨旁控制单元中基于数据配置的c语言代码自动生成系统
CN100470480C (zh) 分析程序加速器装置以及更新其的方法
CN109740122A (zh) 思维导图用例文件的转换方法及装置
CN102521380B (zh) 一种电网cim模型及svg图形数据导入的方法
CN105531672A (zh) 解析器生成
CN103645931A (zh) 代码转换的方法及装置
CN105786584A (zh) 一种适应多样式bim建模软件界面解析方法
CN103559727B (zh) 一种梯形图数据结构描述及扫描解析方法
CN104240017A (zh) 一种城市轨道交通线网联网管理的方法
CN104049976A (zh) 基于布尔逻辑的联锁软件自动生成系统
CN105022806A (zh) 基于翻译模板的互联网网页建构移动页面的方法与系统
JP2004246879A (ja) フローデータ生成方法およびフローデータ生成装置
CN101727385A (zh) 用于处理用户接口信息变化的方法和系统
CN105144195A (zh) 解析和呈现结构化图像
CN111507083A (zh) 文本解析方法、装置、设备及存储介质
CN110162297A (zh) 一种源代码段自然语言描述自动生成方法及系统
CN108108567A (zh) 基于故障指示器逻辑位置的配电网单线图自动绘制方法
CN106874442B (zh) 通过数据名称命名实现数据自携带特征信息的方法及装置
CN115345093A (zh) 基于scd模型的智能变电站二次设备回路信息关联映射方法
CN106294294B (zh) 轨道交通信号系统统一格式数据文件的一致性校验方法
KR20060054315A (ko) 구조화된 문서의 코딩 방법
CN109408916A (zh) 一种图形逻辑组态的识别方法
CN115374765B (zh) 一种基于自然语言处理的算力网络5g数据解析系统及方法
CN110162731A (zh) 一种IFC模型构件空间信息在Web显示的方法
CN103235723A (zh) 基于抽象语法树和软件产品特征的应用软件代码提取方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information

Address after: 201206 Shanghai City, Pudong New Area Jinhai Road No. 1000 Building No. 28

Applicant after: Shanghai electric traffic automation system Co., Ltd.

Address before: 201206 Shanghai City, Pudong New Area Jinhai Road No. 1000 Building No. 28

Applicant before: Shanghai is from instrument Tai Leizi traffic automation System Co., Ltd

CB02 Change of applicant information
RJ01 Rejection of invention patent application after publication

Application publication date: 20171027

RJ01 Rejection of invention patent application after publication