一种仿真MVB的方法、系统、装置和计算机可读介质与流程

文档序号:20061135发布日期:2020-03-06 07:58阅读:268来源:国知局
一种仿真MVB的方法、系统、装置和计算机可读介质与流程

本发明属于轨道交通领域,特别涉及一种仿真mvb的方法、系统、装置和计算机可读介质。



背景技术:

tcn(列车控制通讯网络)规定列车通讯网络分为mvb(多功能车辆总线)和wtb(铰链式列车总线),mvb是总线拓扑结构,专用于车辆内部车载设备间通信,mvb进行数据传输时,总线设备以一定时间间隔输出数据,刷新端口,当其它总线设备需要此数据时,从相应端口读出即可。mvb的互操作性要求数据传输具有实时性和准确性。

如图1和图4所示,在实际的列控车载atp设备间采用mvb通信方式,其特点为互换性和互操作性,设备间交互式数据传输有固定的数据端口,端口数据周期性刷新,总线设备通过读写端口实现通信和交互。

由于mvb的特点,多功能车辆总线在列控车载atp(列车自动防护)中应用较为普遍,列控车载atp在pc机调试过程中,从技术和成本上都很难使用真实的mvb总线;搭建mvb总线需要总线控制器、网关、转发器、连接器和端接器等一系列硬件支持,实验室环境下实现成本较高,现有基于mvb通信的技术方案无法满足这种场景需求。



技术实现要素:

针对上述问题,本发明提出一种仿真mvb的方法、系统、装置和计算机可读介质。

本发明提出的仿真mvb的方法,包括

按照第一时间间隔,接收第一数据;

将第一数据组成socket数据包;

按照第二时间间隔,经以太网发送socket数据包;

按照第二时间间隔,接收经以太网发送的socket数据包,并将socket数据包分解形成第二数据;

接收第二数据并缓存,按照第一时间间隔,发送第二数据。

优选地,socket数据包包括至少一个子包,子包的包头写有源端口或目的端口的端口号;

基于端口号将socket数据包缓存进入相应的目的端口。

优选地,同时接收到多个第二数据,判断多个第二数据大小是否大于目的端口缓存空间,并根据判断结果执行以下步骤,步骤包括:

没有大于多个目的端口缓存空间的情况下,多个第二数据同时缓存进入相应的多个目的端口;

大于多个目的端口缓存空间的情况下,多个第二数据分批缓存进入相应的目的端口。

优选地,socket数据包写有mvb标识。

优选地,接收第一数据后,将第一数据缓存。

优选地,第二时间间隔小于等于第一时间间隔。

本发明还提出了一种仿真mvb的系统,包括:

发送模块,用于按照第一时间间隔,接收第一数据;

组包模块,用于将第一数据组成socket数据包;

传输模块,用于按照第二时间间隔,经以太网发送socket数据包;

解包模块,用于按照第二时间间隔,接收经以太网发送的socket数据包,并将socket数据包分解形成第二数据;

读取模块,用于接收第二数据并缓存,按照第一时间间隔,发送第二数据。

优选地,socket数据包包括至少一个子包,子包的包头写有源端口或目的端口的端口号;

基于端口号将socket数据包缓存进入相应的目的端口。

优选地,读取模块同时接收多个第二数据,读取模块判断多个第二数据大小是否大于多个目的端口缓存空间;

没有大于多个目的端口缓存空间的情况下,多个第二数据同时缓存进入相应的目的端口;

大于多个目的端口缓存空间的情况下,多个第二数据分批缓存进入相应的目的端口。

优选地,socket数据包写有mvb标识。

优选地,发送模块接收第一数据后,将第一数据缓存。

优选地,第二时间间隔小于等于第一时间间隔。

本发明还提出了一种仿真mvb的装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-6中任一项所述仿真mvb的方法的步骤。

本发明还提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述仿真mvb的方法的步骤。

本发明的一种仿真mvb的方法和系统,通过socket和以太网模拟mvb传输,通过一台pc机即可实现设备软件程序的无差别数据传输模拟实验,通过pc机即可快速进行设备软件程序实时调试,提高了开发效率,降低了调试成本。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所指出的结构来实现和获得。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1示出了现有技术中mvb传输示意图;

图2示出了本实施例中仿真mvb的示意图;

图3示出了本实施例中仿真mvb数据传输示意图;

图4示出了现有技术中mvb端口的示意图;

图5示出了本实施例中仿真mvb的示意图;

图6示出了本实施例中仿真mvb的方法的流程示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地说明,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

为了模拟atp(列车自动保护装置)平台设备信息传输环境,本实施例采用了socket(套接字)仿真mvb总线方式进行通信,mvb与以太网在计算机网络物理层、协议层和链路层等设置不同,mvb数据在没有新数据刷新前提下,存储在mvb总线端口的数据,接收方可以多次读取,但以太网数据发送后只能一次性收取,即接收方读取一次后,无法通过以太网接口函数再次读取该数据;因此本实施例中,采用以太网结合socket的方案来模拟mvb。

socket(套接字)是一个抽象层,完成两个应用程序之间的数据传输,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作,采用socket接口模拟mvb进行数据存储,便于设备软件程序快速调试和移植。

参照图2,选用pc机通信环境中较为常用的以太网实现两个设备之间的数据交互。在pc机中,仿真两个列控车载设备,列控车载设备包括列车牵引单元、列车刹车单元、车门控制单元、显示单元等等,根据实际测试需要,在pc中仿真出两个不同的列控车载设备软件,将仿真出来的列控车载设备称为虚拟列控车载设备,在虚拟列控车载设备应用软件底层增加一层虚拟mvb软件,虚拟mvb软件设有mvb端口,虚拟mvb的端口与列控车载设备软件的mvb端口连接从而实现数据传输,实现设备应用软件mvb相关接口函数的仿真;虚拟列控车载设备a、b及虚拟mvb工作流程如下:

设备a/b(软件程序)调用mvb相关接口函数以第一时间间隔t1写端口,该端口为虚拟mvb软件中的虚拟源端口。

设备a/b虚拟mvb软件将虚拟源端口的数据按照一定协议格式组成socket数据包;

每隔第二时间间隔t2,socket数据包经以太网发送至设备b/a;

每隔第二时间间隔t2,设备b/a虚拟mvb软件读取以太网数据,按照一定协议格式拆分socket数据包,分别存入设备b/a虚拟mvb软件的虚拟目的端口;

设备b/a调用mvb相关接口函数以第一时间间隔t1读端口,该端口为虚拟mvb软件中的虚拟目的端口,从而实现设备a和设备b之间的数据传输。

图3示出了设备a和设备b之间数据传输的总体流程,设备a将待发送的数据组包形成socket数据包,socket数据包经以太网发送至设备b,设备b将socket数据包解包得到数据。

图4示出了数据在mvb端口的传输示意图,mvb数据传输有固定的数据端口,车载设备间通过mvb通信需要先将数据打包,传输到atp设备平台,根据端口号1到n与地址存入相应mvb端口,其他设备根据需求可以随时从相应端口读取到最新数据,实现数据的传输与周期性刷新。因此本实施例中的虚拟mvb软件也设有多个端口,数据经虚拟mvb软件的虚拟端口传输。

具体地,参照图5,本实施例提出了一种仿真mvb的系统,即上述虚拟mvb软件,包括:

发送模块,发送模块设有n个源端口,源端口按1-n顺序设置端口号,发送模块用于按照第一时间间隔t1,接收第一数据,即pc机内的虚拟列控车载设备每隔第一时间间隔t1时刻将第一数据写入发送模块相应的源端口内,同时发送模块将接收的第一数据发送至组包模块;

组包模块,组包模块接收发送模块发送的第一数据,根据预设协议将第一数据组成socket数据包;

传输模块,用于按照第二时间间隔t2,将组包模块组成的socket数据包经以太网发送至另一个仿真mvb系统的解包模块;

解包模块,用于按照第二时间间隔t2,接收另一个仿真mvb系统的传输模块经以太网发送的socket数据包,并根据预设协议将socket数据包分解形成第二数据;

读取模块,读取模块设有n个目的端口,目的端口按1-n顺序设置端口号,读取模块用于接收第二数据并缓存进入相应的目的端口,按照第一时间间隔t1,发送第二数据,即pc机内的虚拟列控车载设备每隔第一时间间隔t1时刻读取目的端口内的第二数据。

本实施例中,在进行组包时,每个socket包可以包含一个或多个源端口数据子包,socket数据包包头指定长度,数据部分由一个或多个mvb端口数据组成的一个或多个子包串接,每个子包包头包含端口号,子包长度。解包模块根据协议将子包对应到不同的目的端口数据缓存,供虚拟列控车载设备读取;具体地,socket数据包形式为:包长度(short)+包头(short)+messages(string)+包尾(short),message的结构为:[子包包头1(长度+源端口号或目的端口号)+子包数据1]+[子包包头2(长度+源端口号或目的端口号)+子包数据2]……+[子包包头n(长度+源端口号或目的端口号)+子包数据n];解包模块接收socket数据包后将socket数据包分解形成多个子包,再将子包分解形成多个第二数据,根据子包包头写入的端口号,将多个第二数据缓存至对应的目的端口。

根据写入源端口数据的大小,合理地将源端口数据组包,每个源端口的数据组成一个子包,在socket数据包长度不超过允许长度前提下,组包模块将多个子包串接合成一个socket数据包一起发送。示例性地,设备a和设备b的底层分别设有mvb仿真系统,即虚拟mvb,设备a向设备b发送数据,第一时间间隔t1=100ms,第二时间间隔t2=40ms,设备a每隔100ms向发送模块的源端口1和源端口2分别写入第一数据,发送模块接收第一数据后,将第一数据发送至组包模块。

组包模块将源端口1的第一数据组成子包1,子包1的包头写入端口号1,将源端口2的第一数据组成子包2,子包2的包头写入端口号2,将子包1和子包2组成socket数据包,socket数据包格式为:包长度(short)+包头(short)+[子包1包头(长度+端口号1)+子包1数据]+[子包2包头(长度+端口号2)+子包2数据]+包尾(short)。

传输模块每个40ms将socket数据包经以太网发送至设备b底层的虚拟mvb软件的解包模块。

解包模块对socket数据包进行分解,得到子包1和子包2,并识别出子包1包头的端口号为1,子包2包头的端口号为2,解包模块再对子包1分解得到第二数据,对子包2分解得到第二数据。

读取模块基于子包1包头的端口号,将子包1解析出来的第二数据存入读取模块的目的端口1,将子包2解析出来的第二数据存入读取模块的目的端口2,设备b每隔100ms读取目的端口内的第二数据;从而实现数据自设备a向设备b传输,进而实现了socket和以太网模拟mvb传输的目的。

可见本实施例中以车载设备通信环境模拟为主,采用socket和以太网模拟mvb进行数据传输与更新,通过一台pc机即可实现设备软件程序的无差别数据传输模拟实验,通过pc机即可快速进行设备软件程序实时调试,提高了开发效率,降低了调试成本。

读取模块的n个目的端口公用一个存储空间,当读取模块同时接收到多个第二数据;

读取模块判断多个第二数据之和大小是否大于所述缓存空间;

没有大于所述缓存空间的情况下,多个第二数据同时缓存进入相应的目的端口;

大于所述缓存空间的情况下,多个第二数据分批缓存进入相应的目的端口,已存数据读出后再放入下一批数据,避免数据丢失。

例如,目的端口的存储空间为100m,此时接收到即将进入目的端口1的第二数据为50m,即将进入目的端口2的第二数据为40m,很明显,存储空间可以同时容纳下两组第二数据,因此,两组第二数据可以同时存入目的端口1和目的端口2内;

如果接收到即将进入目的端口1的第二数据为50m,即将进入目的端口2的第二数据为60m,很明显,存储空间不能容纳下两组第二数据,因此,可以先将大小为50m的第二数据存入目的端口1内,待虚拟列控车载设备读取大小为50m的第二数据后,再将大小为60m的第二数据存入目的端口2内。

socket数据包写有mvb标识,解包模块通过mvb标识识别为mvb信息包,按照规定的协议进行解析。

示例性地,组包模块和解包模块相互约定,在组包模块每个socket数据包前加一个int值,解包模块识别到这个int值,则判断出该数据包内的数据为mvb数据,解包模块进行解析。

进一步地,发送模块接收第一数据后,将第一数据缓存,根据任务调度,组织发送源端口数据。

为保证数据传输的完整性和实时性,第二时间间隔t2小于等于第一时间间隔t1;示例性的,第一时间间隔t1=100ms,第二时间间隔t2=40ms,由于每隔40ms进行一次传输,而socket数据包每隔100ms才组成一次,这样socket数据包不会因为延迟传输而导致丢包;

如果第一时间间隔t1=40ms,第二时间间隔t2=100ms,由于每隔100ms进行一次传输,而socket数据包每隔40ms就组成一次,传输速度小于组包速度,这就有可能导致丢包。

本实施例中仿真mvb系统的socket采用半相关描述,根据虚拟mvb软件的端口和本地地址以流式套接字格式进行数据传输,流式套接字提供了一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流。在tcp/ip协议簇中,使用tcp协议来实现字节流的传输,当用户想要发送大批量的数据或者对数据传输有较高的要求时,可以使用流式套接字。

参照图6,本实施例还提出了一种仿真mvb的方法,包括以下步骤:

按照第一时间间隔t1,接收第一数据;

根据预设协议将第一数据组成socket数据包;

按照第二时间间隔t2,经以太网发送socket数据包;

按照第二时间间隔t2,接收经以太网发送的socket数据包,并将socket数据包分解形成第二数据;

接收第二数据并进行缓存,按照第一时间间隔t1,发送第二数据。

本实施例中,在进行组包时,每个socket包可以包含一个或多个源端口数据子包,socket数据包包头指定长度,数据部分由一个或多个mvb端口数据组成的一个或多个子包串接,每个子包包头包含端口号,子包长度。解包模块根据协议将子包对应到不同的目的端口数据缓存,供虚拟列控车载设备读取;具体地,socket数据包形式为:包长度(short)+包头(short)+messages(string)+包尾(short),message的结构为:[子包包头1(长度+源端口号或目的端口号)+子包数据1]+[子包包头2(长度+源端口号或目的端口号)+子包数据2]……+[子包包头n(长度+源端口号或目的端口号)+子包数据n];解包模块接收socket数据包后将socket数据包分解形成多个子包,再将子包分解形成多个第二数据,根据子包包头写入的端口号,将多个第二数据缓存至对应的目的端口。

根据写入源端口数据的大小,合理地将源端口数据组包,每个源端口的数据组成一个子包,在socket数据包长度不超过允许长度前提下,组包模块将多个子包串接合成一个socket数据包一起发送。

如果同时接收到多个第二数据;

判断多个第二数据大小之和是否大于目的端口缓存空间;

没有大于目的端口缓存空间的情况下,多个第二数据同时缓存进入相应的多个目的端口;

大于目的端口缓存空间的情况下,多个第二数据分批缓存进入相应的多个目的端口。

例如,目的端口的存储空间为100m,此时接收到即将进入目的端口1的第二数据为50m,即将进入目的端口2的第二数据为40m,很明显,存储空间可以同时容纳下两组第二数据,因此,两组第二数据可以同时存入端口内;

如果接收到即将进入目的端口1的第二数据为50m,即将进入目的端口2的第二数据为60m,很明显,存储空间不能容纳下两组第二数据,因此,可以先将大小为50m的第二数据存入目的端口1内,待虚拟列控车载设备读取50m的第二数据后,再将大小为60m的第二数据存入目的端口2内。

socket数据包写有mvb标识,通过mvb标识识别为mvb信息包,按照规定的协议进行解析。

示例性地,约定在每个socket数据包前加一个int值,当识别到这个int值,则判断该数据包内的数据为mvb数据,对socket数据包进行解析。

接收第一数据后,将第一数据缓存,根据任务调度,组织发送源端口数据。

为保证数据传输的完整性和实时性,第二时间间隔t2小于等于第一时间间隔t1;示例性的,第一时间间隔t1=100ms,第二时间间隔t2=40ms,由于每隔40ms进行一次传输,而socket数据包每隔100ms才组成一次,这样socket数据包不会因为延迟传输而导致丢包;

如果第一时间间隔t1=40ms,第二时间间隔t2=100ms,由于每隔100ms进行一次传输,而socket数据包每隔40ms就组成一次,传输速度小于组包速度,这就有可能导致丢包。

本实施例中仿真mvb方法的socket采用半相关描述,根据虚拟mvb软件的端口和本地地址以流式套接字格式进行数据传输,流式套接字提供了一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流。在tcp/ip协议簇中,使用tcp协议来实现字节流的传输,当用户想要发送大批量的数据或者对数据传输有较高的要求时,可以使用流式套接字。

本实施例还提出了一种仿真mvb的装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述仿真mvb的方法的步骤。

示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述仿真mvb的装置中的执行过程。例如,所述计算机程序可以被分割成发送模块,组包模块,传输模块,解包模块,读取模块,各模块具体功能如下:

发送模块,用于按照第一时间间隔t1,接收第一数据;

组包模块,用于将第一数据组成socket数据包;

传输模块,用于按照第二时间间隔t2,经以太网发送socket数据包;

解包模块,用于按照第二时间间隔t2,用于接收经以太网发送的socket数据包,并将socket数据包分解形成第二数据;

读取模块,用于接收第二数据并进行缓存,按照第一时间间隔t1,发送第二数据。

所述仿真mvb的装置可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述仿真mvb的装置可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,图5仅仅是仿真mvb的装置的示例,并不构成对仿真mvb的装置的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述仿真mvb的装置还可以包括输入输出设备、网络接入设备、总线等。

所称处理器可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述仿真mvb的装置的控制中心,利用各种接口和线路连接整个仿真mvb的装置的各个部分。

所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述仿真mvb的装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。

所述计算机程序被处理器执行时实现所述仿真mvb的方法的步骤。

所述仿真mvb的装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。

尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1