目标控制器数字孪生系统的研究与设计

news2024/11/18 3:29:58

文章来源:铁路计算机应用,2023,32(10):36-41.

作者:许婧,杨硕,季志均

摘要:随着目标控制器(OC,Object Controller)系统在轨道交通领域的推广应用,其硬件投入较高、研发周期较长、环境搭建较为复杂的问题逐渐显现。文章根据OC系统的架构和特点,基于模块化设计,研究开发了OC数字孪生系统,利用SkyEye进行OC数字孪生系统的开发构建,对OC系统进行软硬件功能仿真,实现对OC系统的虚拟化。OC数字孪生系统已在上海地铁3号及4号线改造工程中上线试运行,运行效果良好,可有效缓解开发调试工作和测试工作形成的资源冲突问题,节省硬件资源和时间成本。

关键词:数字孪生;目标控制器;嵌入式系统;模块化设计;SkyEye

DOI:10.3969/j.issn.1005-8451.2023.10.08

目标控制器(OC,Object Controller)系统可取代传统计算机联锁系统中的继电电路和监测电路,实现对转辙机、信号机、电码化设备等轨旁设备的驱动和采集[1]。OC系统目前被集成于第二代智能安全型全电子计算机联锁系统[2]、列车自主运行系统[3]、列控联锁一体化系统[4-5]中,具有广阔的应用前景。

由于OC系统是在定制的母板上运行嵌入式软件,研发成本高、定制周期长,若其存在硬件设计问题,需要耗费较长时间进行修正。此外,OC系统具备分布式系统和二乘二取二系统的特点,配置灵活多变,负载种类繁多,为验证多种应用场景,需要搭建复杂的实验环境、投入大量的硬件资源;OC系统的研发和测试团队受限于硬件资源和实验室空间,能搭建的真实环境数量较少,开发调试工作和测试工作易形成资源冲突,导致项目进度滞后。

数字孪生技术是指通过数据的交互融合,设计虚拟模型并建立虚拟系统与真实系统的映射关系,进而“镜像”实体的技术[6-7]。数字孪生技术最早被应用于飞机的故障预测[8],目前,已广泛应用于卫星[9]、电力[10]、智慧城市[11]等多个领域。

针对OC系统面临的问题,本文研究和设计一种OC数字孪生系统,通过分析虚拟实体的运行状态,预测真实OC设备的运行结果,及时修正研发方向,从而降低研发成本、提升研发效率。

01.OC系统组成

OC系统的主要功能是根据联锁控制系统主控计算机(MCC,Master Control Computer)的驱动命令,控制室外的信号设备,并将室外设备的状态返回给MCC。OC系统采用模块化设计理念,每种控制模块完成一个独立的功能。其系统组成如图1所示。

▲图1  OC系统组成

OC系统采用二乘二取二架构。二取二是指每个控制模块内部采用双通道架构,每个通道各有1个运算单元,独立得出2个运算结果,结果一样则输出,不一样则不输出。控制模块中的某些关键电路采用双通道差异化设计,能够有效减少共因失效产生的几率。二乘二取二是指系统中相同的2个控制模块互为冗余、相互独立,即使出现了交叉故障,只要互为冗余的2个控制模块不同时失效,系统仍能保持正常功能。

1.1 安全通信模块

用于执行OC系统与MCC间的通信,通过L1安全红网和L2安全蓝网接收来自MCC的命令,根据铁路信号安全协议-I(RSSP-I,Railway Signal Safety Protocol-I)和FSFB/2(Fail Safe Field Bus second generation)协议控制GUEST模块,并且将OC系统的状态上传给MCC。同时,安全通信模块参与维护系统通信,通过L3维护网送出OC系统的维护和诊断信息,支持简单网络管理协议(SNMP,Simple Network Management Protocol)、简单文件传输协议(TFTP,Trivial File Transfer Protocol)、用户数据协议(UDP,User Datagram Protocol)、简单网络时间协议(SNTP,Simple Network Time Protocol)协议。互为冗余的安全通信模块A和B之间通过L7内网相连。

1.2 GUEST模块

GUEST模块是OC系统中负责控制各种信号设备的板卡(如状态采集板卡、道岔驱动板卡、信号机驱动板卡等),根据驱动命令控制室外的信号设备,并采集室外设备的状态。OC系统内2个相同种类的GUEST模块可互为冗余,例如:GUEST模块 Ai 与GUEST模块 Bi 两两配对使用,并通过L4电缆连接到轨道电路、转辙机、信号机、安全继电器、电码化设备、零散设备等室外设备。GUEST模块结构如图2所示。

▲图2  GUEST模块结构示意

各类GUEST模块的结构基本相同,主要由以下2部分组成。

(1)母板。其上集成了特定的硬件组件,例如采集电路、驱动电路、隔离电路、熔丝电路及与这些部件接口的部分现场可编程门阵列(FPGA,Field Programmable Gate Array);

(2)安全控制单元(VCU,Vital Control Unit)扣板。基于二取二架构的模块,其上集成了CPU_A、CPU_B、Flash存储器和随机存取存储器(RAM,Random Access Memory)。

1.3 背板

用于实现OC系统内部的连接和通信,提供电源接口、地址信息接口、配置数据接口、连接安全通信模块和各GUEST模块的控制器局域网(CAN,Controller Area Network)总线接口等。

1.4 CAN总线

每个GUEST模块具有2个独立的CAN通信接口,可以通过背板连接在2个独立冗余的CAN总线上。正常工作时,安全通信模块通过2个CAN总线(CAN_A、CAN_B)与GUEST模块通信。

02.OC数字孪生系统设计

2.1 系统架构

OC数字孪生系统架构包括分析与统计层、测试层、系统环境层、硬件仿真层等4层。各层相互独立、充分耦合,通过接口进行交互,实现物理隔离、逻辑相通,便于功能扩展和系统集成,根据不同使用场景的需求,实现多种运行模式。其系统架构如图3所示。

▲图3  OC数字孪生系统架构示意

(1)硬件仿真层可实现对OC数字孪生系统运行环境的快速构建和部署,根据应用场景的需要组成多配置项、多机测试环境。可在通用计算机中虚拟运行多片CPU及芯片外设,将要测试的嵌入式软件的二进制代码装载到不同的虚拟安全通信模块和虚拟GUEST模块中。

(2)系统环境层是整个OC数字孪生系统的核心层,可实现对真实OC系统各应用场景的全系统虚拟。系统环境层在OC数字孪生系统运行时,动态加载CPU模拟器、外设芯片构成虚拟实例,从而完成整个OC数字孪生系统的运行,包括运行操作系统和应用软件。虚拟实例可通过接口管理与其他相关测试系统进行互联,构成闭环运行环境。在系统环境层中,可根据场景需求,完成执行环境和通信协议的配置。

(3)测试层对测试用例进行管理,根据测试需要完成故障注入,并将需要运行的测试指令传输到系统环境层。

(4)在测试执行后,系统环境层将测试执行期间收集到的测试数据发送到分析统计层,在分析与统计层对故障相关数据进行故障原因分析和记录,最终由分析统计层输出测试结果。

2.2 关键模块的虚拟化

OC系统中的安全通信模块和GUEST模块均以VCU为核心处理单元,扩展不同外围功能电路。根据真实OC系统中的安全通信模块和GUEST模块的结构特点,可在OC数字孪生系统的系统环境层中搭建相应的虚拟模块。

2.2.1安全通信模块虚拟化

安全通信模块主要实现的功能如下。

(1)提供3个对外网口,实现OC系统对外的网络通信;提供1个对内网口,实现与另一个安全通信模块间的内部网络通信;

(2)对于二取二架构中的每个通道,安全通信模块的二进制代码和电子戳存储在虚拟VCU的Flash中;安全通信模块通过2个串行外设接口(SPI,Serial Peripheral Interface)通道,读取相关配置数据,并将数据存储在其他虚拟的Flash外设之中;

(3)通过2条虚拟的CAN总线与系统内的GUEST模块交互数据。

在OC数字孪生系统中,虚拟的VCU是双通道架构,每个通道以1个虚拟的MCF54418 CPU为核心处理器,双通道之间通过模拟的内部串口实现高频二取二交互通信。

2.2.2 GUEST模块虚拟化

GUEST模块的虚拟化架构与安全通信模块类似,但真实OC系统的GUEST模块中有众多继电器、自检电路、ADC数字采样和FPGA等硬件组件。系统环境层根据每类GUEST模块的构造,进行硬件功能的FPGA仿真,通过虚拟的通用输入/输出(GPIO,General Purpose Input/Output)和FPGA接口,与VCU模块进行交互,从而实现模块自检、驱动命令的执行与反馈、开关量的采集和模拟量的采集等功能,为OC数字孪生系统提供必要的自检和运行条件。

硬件仿真层根据应用场景搭建外围设备模块,对OC系统中GUEST模块的负载进行模拟,为OC数字孪生系统提供开关量、模拟量数据。

03.基于SkyEye的开发实例

SkyEye是基于可视化建模的硬件行为级仿真平台,支持用户通过拖拽的方式对硬件进行行为级别的仿真和建模。基于SkyEye搭建的嵌入式系统虚拟化运行环境,研发人员可不受物理硬件限制,随时访问目标系统,快速搭建虚拟硬件模型[12]。本文在Windows操作系统下,进行基于SkyEye平台的OC数字孪生系统的开发,完成对真实OC系统的虚拟化。

3.1 系统开发框架

OC数字孪生系统的开发框架如图4所示,由OC数字孪生系统构建、OC数字孪生运行环境和OC数字孪生配置管理工具构成。

▲图4  OC数字孪生系统开发框架示意

3.1.1 系统构建

本文通过设计通用模块和提供可配置的各类硬件外设接口,灵活构建OC数字孪生系统。构建思路如下:

(1)将通用API接口封装成核心动态库,支持其他模块的接口调用;

(2)采用模块化的设计思想,系统的处理器、内存总线、外围设备等均被设计为独立的模块;

(3)通过硬件配置脚本灵活搭建目标系统,根据硬件配置生成不同GUEST模块的面板显示,并根据程序运行情况点亮面板灯;

(4)实现二进制文件解析和加载功能。

3.1.2 运行环境

在真实OC系统中,最多包含2个安全通信模块和28个GUEST模块。与之对应的,在OC数字孪生系统中,最多虚拟30个VCU模块同时运行的状态,每个VCU包含2个CPU,并对OC系统的内部通信进行虚拟,还原真实系统的运行情况。为实现60个CPU的同时运行,本文设计了多VCU目标机集成方案:启动4个SkyEye进程,再通过时间同步工具进行统一的时钟推进,确保OC数字孪生系统的协同运行。

通过SkyEye集成MCF54418 CPU及芯片外设仿真、时间同步工具和二进制动态编译等组件,提供统一的OC数字孪生系统的部署验证。应用程序可直接在OC数字孪生系统中运行,在与真实OC系统的硬件输入条件相同、运行时间相同时,能得到与真实运行结果相同的输出。运行环境中的时间同步工具是OC数字孪生系统按时序运行的基础,主要有2个功能:

(1)实现单VCU模块内CPU_A和CPU_B的同步;

(2)实现模块之间的同步。

3.1.3 配置管理工具

配置管理工具基于运行环境,提供系统配置管理功能,包括虚拟硬件的设备管理、OC节点管理、节点间网络通信状态管理、日志管理、软件配置文件的加载、系统运行时间与数据同步的设置等。

3.2 VCU建模示例

通过SkyEye对VCU进行建模,虚拟VCU内部设计和多VCU间的通信,如图5所示。VCU_0模块描述VCU内部对双通道的规划,以core、ram、spi、uart、flash、net、gpio、can外设为基础搭建系统。VCU_1描述多个VCU之间通过can_linker的方式进行通信的机制。

▲图5  SkyEye环境下的VCU建模示意

04.试运行情况

本文设计的OC数字孪生系统是真实OC系统设备的数字映射,已于2023年2月,在上海地铁3号及4号线改造工程中上线试运行。研发人员使用OC数字孪生系统在真实OC硬件未制造时提前验证OC系统的硬件设计、软件功能和系统性能,在发现设计缺陷后及时优化,减少了产品研发的迭代次数,将研发时间从半年缩短至2个月左右,节约了研发成本。在排查OC系统的故障时,售后人员利用OC数字孪生系统还原了现场的复杂场景,快速复现了现场问题,及时定位了故障原因,减少了售后工作的人力消耗。

05.结束语

本文基于OC系统架构设计了OC数字孪生系统,介绍了关键模块的虚拟化方式,并基于SkyEye进行开发。该系统已在上海地铁3号及4号线改造工程中上线试运行,运行效果良好,可有效缓解开发调试工作和测试工作形成的资源冲突,缩短研发周期,同时,降低OC系统的维护成本,具有推广价值。

参考文献

[1]郭 阳. 全电子执行模块在信号计算机联锁工程设计中的应用[J]. 铁道标准设计,2010(4):116-118. 

[2]陈 亮. 全电子计算机联锁的发展与规模化应用[J]. 科技视界,2020(15):9-11. 

[3]欧阳玲萍,熊坤鹏,朱程辉,等. 城市轨道交通TACS系统测试探讨[J]. 电子技术与软件工程,2023(3):143-147.

[4]贾春肖,张宏韬,齐志华. 我国铁路列控联锁系统发展趋势研究[J]. 中国铁路,2020(2):1-5. 

[5]梁志国,卢佩玲,付 伟. 铁路列控联锁一体化系统研究[J]. 铁道通信信号,2019,55(S1):98-102. 

[6]陶 飞,刘蔚然,刘检华,等. 数字孪生及其应用探索[J]. 计算机集成制造系统,2018,24(1):1-18. 

[7]Boschert S, Rosen R. Digital twin—the simulation aspect[M]//Hehenberger P, Bradley D. Mechatronic Futures. Cham: Springer, 2016: 59-74.

[8]Grieves M, Vickers J. Digital Twin: Mitigating Unpredictable, Undesirable Emergent Behavior in Complex Systems[M]//Kahlen F J, Flumerfelt S, Alves A. Transdisciplinary Perspectives on Complex Systems. Cham: Springer, 2017: 85-113.

[9]刘蔚然,陶 飞,程江峰,等. 数字孪生卫星:概念、关键技术及应用[J]. 计算机集成制造系统,2020,26(3):565-588. 

[10]刘亚东,陈 思,丛子涵,等. 电力装备行业数字孪生关键技术与应用展望[J]. 高电压技术,2021,47(5):1539-1554. 

[11]王成山,董 博,于 浩,等. 智慧城市综合能源系统数字孪生技术及应用[J]. 中国电机工程学报,2021,41(5):1597-1608.

[12]杨兴伟. 基于SkyEye的SMDK2410硬件仿真平台设计[J]. 可编程控制器与工厂自动化,2009(10):87-90,105. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1537812.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

css background-color属性无效

因为工作需要&#xff0c;最近在帮H5同事开发几个页面&#xff0c;在使用H5进行如下布局的时候&#xff0c;发现设置 background-color为白色无效。 代码如下&#xff1a; <div class "bottomBar"><div style"position: fixed; left: 20px;">…

解决arco-design下拉框回显id的问题

问题描述 下拉框回显选项中没有的选项&#xff0c;就会出现以下情况&#xff0c;只能把uid回显上去 解决方案 使用ui框架自带的属性fallback-option 用法 按以上操作&#xff0c;即可解决选择框回显uid问题

软考91-上午题-【操作系统】-线程

一、线程的定义 传统的进程有两个基本属性: 可拥有资源的独立单位&#xff1b;可独立调度和分配的基本单位。 引入线程的原因是进程在创建、撤销和切换中&#xff0c;系统必须为之付出较大的时空开销&#xff0c;故在系统中设置的进程数目不宜过多&#xff0c;进程切换的频率…

Day43:WEB攻防-PHP应用SQL注入符号拼接请求方法HTTP头JSON编码类

目录 PHP-MYSQL-数据请求类型 PHP-MYSQL-数据请求方法 PHP-MYSQL-数据请求格式 知识点&#xff1a; 1、PHP-MYSQL-SQL注入-数据请求类型 2、PHP-MYSQL-SQL注入-数据请求方法 3、PHP-MYSQL-SQL注入-数据请求格式 PHP-MYSQL-数据请求类型 SQL语句由于在黑盒中是无法预知写法的…

基于python+vue的BBS论坛系统flask-django-nodejs-php

本系统为用户而设计制作BBS论坛系统&#xff0c;旨在实现BBS论坛智能化、现代化管理。本BBS论坛自动化系统的开发和研制的最终目的是将BBS论坛的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的便利和条件。使BBS论坛系统数字化、…

使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓,并自动部署到服务器启动服务

文章目录 使用阿里CICD流水线打包Vue项目到阿里的docker镜像私仓&#xff0c;并自动部署到服务器启动服务1、功能实现原理大家可以看我之前的两篇文章2、打包vue项目和打包咱们的Java项目过程差不多相同&#xff0c;大家可以看着上面的Java打包过程进行实验&#xff0c;下面是v…

关于短群签名论文阅读

参考文献为2004年发表的Short Group Signatures 什么群签名&#xff1f; 群签名大致就是由一组用户组成一个群&#xff0c;其中用户对某条消息的签名&#xff0c;改签名不会揭示是哪一个用户签署的&#xff0c;签名只能表明该消息确实是来自该群的签名。对于群还有一个群管理者…

VTK9.2.0+Qt5.14.0 绘制点云

背景 为了显示结构光重建后的点云&#xff0c;开发QT5.14.0VTK9.2.0的上位机软件&#xff0c;用于对结构光3D相机进行控制&#xff0c;并接收传输回来的3D数据&#xff0c;显示在窗口中。 配置QT和VTK VTK9.2.0下载源码&#xff0c;用Cmake编译&#xff0c;编译好的VTK9.2.0…

Nacos介绍和Eureka的区别

Nacos&#xff08;全称为 Alibaba Cloud Nacos&#xff0c;或简称为 Nacos&#xff09;是一个开源的分布式服务发现和配置管理系统。它由阿里巴巴集团开发并开源&#xff0c;旨在帮助开发人员简化微服务架构下的服务注册、发现和配置管理。 1、Nacos 提供了以下主要功能&#…

短视频矩阵系统----源头开发

短视频矩阵源码技术开发要求及实现流程&#xff1a; 短视频矩阵开发要求具备视频录制、编辑、剪辑、分享等基本功能&#xff0c;支持实时滤镜、特效、音乐等个性化编辑&#xff0c;能够实现高效的视频渲染和处理。开发流程主要包括需求分析、技术选型、设计架构、编码实现、测试…

Binance labs孵化的Swan Chain明牌空投测试网零撸教程

简介&#xff1a;Swan Chain 是一个 Layer2云计算网络&#xff0c;可以将数据、计算、带宽和支付集成到一个套件&#xff0c;为Web3项目提供全面的解决方案。 相关概念&#xff1a;云计算、layer2、infrastructure 融资信息&#xff1a;项目在去年获得bi’an领投的300万美元融…

Flask 与小程序 的图片数据交互 过程及探讨研究学习

今天不知道怎么的&#xff0c;之前拿编程浪子地作品抄过来粘上用好好的&#xff0c;昨天开始照片突的就不显示了。 今天不妨再耐味地细细探究一下微信小程序wxml 和flask服务器端是怎么jpg图片数据交互的。 mina/pages/food/index.wxml <!--index.wxml--> <!--1px …

深度学习知识【CSPNet网络详解】

CSPNet的贡献 1.增强了CNN的学习能力&#xff0c;能够在轻量化的同时保持准确性。 2.降低计算瓶颈。 3.降低内存成本。 CSPNet介绍 在神经网络推理过程中计算量过高的问题是由于网络优化中的梯度信息重复导致的。CSPNet通过将梯度的变化从头到尾地集成到特征图中&#xff0c…

Golang案例开发之gopacket抓包三次握手四次分手(3)

文章目录 前言一、理论知识三次握手四次分手二、代码实践1.模拟客户端和服务器端2.三次握手代码3.四次分手代码验证代码完整代码总结前言 TCP通讯的三次握手和四次分手,有很多文章都在介绍了,当我们了解了gopacket这个工具的时候,我们当然是用代码实践一下,我们的理论。本…

如何在linux环境上部署单机ES(以8.12.2版本为例)

ES安装&#xff08;以8.12.2版本为例&#xff09; 首先创建好对应的文件夹然后在对应的文件夹下执行依次这些命令 1.wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.12.2-linux-x86_64.tar.gz 2.wget https://artifacts.elastic.co/downloads/…

002_avoid_for_loop_in_Matlab避免使用for循环

避免使用for循环 在程序设计思想中&#xff0c;循环是一个很有力的工具。在循环中&#xff0c;计算机很轻松地重复执行相同的操作。循环是汇编之上的编程中最重要的概念之一。Matlab的循环有两个语言构造&#xff0c;一个是for循环&#xff0c;另一个是while循环。在Matlab中&…

Git原理及使用

1、Git初识 Git是一种版本控制器: 对于同一份文件,做多次改动,Git会记录每一次改动前后的文件。 通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 注意: Git其实只能跟踪⽂本⽂件的改动,⽐如TXT⽂件,⽹⻚,所有的程序代码…

基于docker配置pycharm开发环境

开发过程中&#xff0c;为了做好环境隔离&#xff0c;经常会采用docker来进行开发&#xff0c;但是如何快速将docker中的环境和本地开发的IDE链接起来是一个常见问题&#xff0c;下面对其进行简单的总结&#xff1a; &#xff08;1&#xff09;前期准备 开发环境docker和工具p…

【练习】双指针算法思想

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f525;个人专栏&#xff1a;Java算法&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 1. 移动零 1.1 题目描述 1.2 讲解算法原理 1.3 编…

STM32 AD单通道函数设计

单片机学习&#xff01; 目录 文章目录 前言 一、ADC配置步骤 二、详细步骤 2.1 开启RCC时钟 2.2 配置GPIO 2.3 配置多路开关 2.4 配置ADC转换器 2.5 开启ADC电源 2.6 ADC进行校准 2.6.1 复位校准 2.6.2 等待复位校准完成 2.6.3 开始校准 2.6.4 等待校准完成 三、启动AD转换函数…