当前位置:首页 > 模拟 > 模拟
[导读]针对当前复杂信息系统仿真中,关于接口协议编解码方法的缺陷,从接口协议的存储、程序设计的数据结构和编解码流程几个方面,给出了复杂信息系统仿真中接口协议编解码方法的详细设计过程。针对接口协议的复杂性和灵活性,提出了一种新颖的编解码方法,有效的解决了接口协议种类多、编解码方式灵活等问题;而且,与传统的方法进行了比较,从而可以看出其编解码的优点。仿真结果证明,编解码方法思路新颖、编解码速度快、可移植性好。

引言

复杂信息系统有一个共同的特点:组成成员众多。因此,其仿真涉及到的实体众多,实体间接口协议也很复杂,而且,不同仿真系统定义的接口协议往往是相差甚远。以上因素使得复杂信息系统仿真中接口协议的编解码处理工作难于统一,往往是每个复杂信息系统仿真都要花大量的时间来编写接口协议的编码和解码程序。如何将接口协议的工作集成化,做到仿真平台与接口协议的编码和解码在一定程度上相互独立,即软件接口协议的改动不影响仿真平台其它程序代码的改动,做到程序和数据分离;另一方面,希望不同系统仿真可以共用接口协议的编码和解码的代码。本文将解决这两个方面的难题,提出一种复杂信息系统仿真中接口协议的智能编解码方法。

1 智能编解码方法的基本思路

要使得接口协议的编解码工作集成化、具有通用性,首先要对接口协议进行存储。考虑到通用性的要求,对接口协议的存储应该也具有通用性,因此,必须设计一种能够动态响应不同协议的存取方法。对于协议的存储可以采用数据库或者其它的手段。但是,数据库技术很难直接反映每个记录(接口协议的具体单元)所属的前后层次关系,这给后续的编解码工作带来一定的困难。为了克服数据库技术的这种不足,采用另外一种方式:XML 技术。XML 的树形结构能够很好的反映数据的层次关系;另外,其数据传输速度快,编程操作方便。将用户输入的协议存储在XML 文件中,然后根据XML 文件进行编码和解码。此时,关键的问题就是如何设计灵活、通用的数据结构来处理XML 文件中的协议信息。图1 描述了智能编解码方法的基本思路。

2 几个关键技术问题的处理

由上述基本思路可知,方法的实现有几个关键的技术问题需要解决:

􀁺 XML 文档的结构如何设计才能存储不同结构形式的接口协议?

􀁺 什么样的数据结构才能存放XML 文档中的接口协议数据?

􀁺 针对数据结构如何确定编解码流程?

以上三个问题具有紧密的逻辑关系,由于问题1)的复杂性使得问题2)解决存在一定的难度,进而使得问题3)的解决更加困难。

2.1 XML文档结构的设计

利用XML 文档存储编解码规则时,关键是XML 文档结构的设计,因为XML 文档结构在一定程度上会影响编解码的效率甚至是整个仿真软件的效率。我们按照逐级分类原则对编解码规则进行分类存储。比如飞机A 的位置这样一条信息的接口协议存取为XML 文档后,其结构如下所示:

<?xml version="1.0" encoding="utf-8"?>

<飞机A>

<位置>

<经度><起始位置></起始位置><长度></长度><数据类型> </数据类型></经度>

<纬度> </纬度>

<高程> </高程>

</位置>

</飞机A>

省略号代表对应的编解码接口协议。当我们把所有的编解码规则都存储到XML 文档后,我们就可以利用已有的XML 文档进行报文编码与解码。当编解码信息长度或者是编解码信息单元内的信息位置需要改变时我们只需要修改XML 的相应内容。

2.2 编解码方法的数据结构

为了对接口协议进行有效的编解码,其编码的数据结构的设计至关重要。在设计接口协议编解码的数据结构时,既要考虑复杂信息系统接口协议的特点,又要方便程序的开发。

一方面,在报文编解码时我们应该首先对整条报文编解码加以控制,比如应答控制、重发控制、纠错控制、目的地控制、发送通道控制等。我们将这种控制信息叫做报头编解码(帧头编

解码),其数据结构可设计如下:

typedef struct FrameHead

{

char* frame_number; //报文编号

bool type; //报文类型(发送还是反馈)

char* start; //发送方

char* destination; //接收方

byte number; //编解码信息单元数量

short length; //编解码信息单元长度

bool responsion; //应答控制

char* resposion_number; //所应答报文的编号

byte chunnel; //发送通道

Unit* info; //第一个编解码信息单元

} FrameHead

另一方面,每条完整的接口信息都是由若干编解码信息单元组成,编解码信息单元的数据结构的设计直接关系到编解码的效率和可扩展性,其数据结构可设计如下:

typedet struct Unit

{

char* unit_number; //信息单元编号

bool send_element[MAX_ELE]; //有效信息标识

Unit* next; // 下一信息单元

}Unit;

其中,MAX_ELE 为编解码信息单元内最大的信息元素数量(比如,经度即可视为一个信息元素)。当信息元素是本接口信息的最后一个时,next=NULL

2.3编解码流程

程序设计时,我们主要关心两种流程:数据流和程序流程。前者是我们从整体上把握编解码设计的体系;后者是详细的功能实现。

整个数据流程是这样的:首先,将编解码规则整理、存储为XML 文档,然后,利用XML 文档对协议报文进行编码,最后,再利用XML 文档对协议密文进行解码。

在进行程序编解码时,从帧头入手,先对控制信息进行编解码,然后对每个信息单元编码。对信息单元编码时,以信息元素为最小信息体,依照编解码规则对每个信息元素进行编解码。

编码设计的程序流程如图3 所示。解码即为编码的逆过程。

依据编解码规则的XML 文档和报文编解码的数据结构里的信息我就们就可以对报文进行编码和解码了。编码的实质就是将信息依据编码规则转化成二进制的代码;解码是它的逆过程。编码的实现其实就是对计算机内存的位操作。如果某项信息(信息元素)在编码信息单元内占用了i n i+k 1 n K 位,那么我们编码的任务就是依据实际信息将这K 位填充。在对位进行操作时,一般的方法是先定位所操作的位所属的字节,然后取出这一字节的信息,再接下来用“|”操作对其进行写操作。比如,要将一个128 位数据中的第100 位置1,我们先取出第100/8 + 1=13个字节的信息,然后再将这个字节的信息“|”上“1000”。这样,循环K 次便可完成这个信息元素的编码。有一种情况就是连续的K 位信息在一个字节内,这时,我们只需要进行一次操作便可完成此信息元素K 位的编码。这种编码方法的优点是辅助编码的空间占用少;速度也比较高,尤其是信息元素编码都在一个字节内时。

在编码时,我们还可以采取另外一种函数实现上更加快捷的方法。这种编码方法的思想是先将编码信息的每一位放在一个字节空间中,然后按由低到高的顺序将每八个字节空间的信息转换到信息编码单元中的一个字节。这样的好处是便于处理跨字节的信息元素编码,思路新颖。

显然,可以根据以上思路设计出两种解码函数,它们分别是上述编码函数的逆过程。经过测试,发现在信息单元长度不超过512 位时,上述两种方法的效率基本一样;在信息单元长度很大时,第二种方法会稍快些。

3 编解码方法举例

按照以上思路,飞机A 报告自身位置的报文编解码的设计如下。

飞机自身的位置信息属于态势信息,包括经度(LONG)和纬度(lat)、高程(H)。编解码的任务就是处理这三种信息。

首先,将编解码规则整理成XML 文档。这一步是编解码的前提和基础。一般,一个XML 文档对应一种规则,整理一次以后,以后的编解码即可反复利用此XML 文档。

然后,填充编解码的帧头信息(帧头编解码)。编码时关键代码如下:

FrameHead PosHead; Unit *p=NULL; //帧头,信息单元申明

//信息单元处理

p-> unit_number=State_SelfPos;

memset(p->send_elemet,0,MAX_ELE);

p->send_elemet[1]= p->send_elemet[2]= p->send_elemet[3]=1; //假定高度、纬度和经

//是规则中的前三个信息元素

p->next=NULL;

//帧头处理

PosHead.frame_number= PosHead_06-2-5_1; // 填写报文编号

PosHead .type = 1 ; //报文类型(发送)

PosHead .start = plane_A ; //发送方

PosHead .destination= alert; //接收方

PosHead .number=1; //编码信息单元数量

PosHead .length=128; //编解码信息单元长度

PosHead.responsion=1; //应答控制(确认收到)

PosHead .resposion_number=NULL; //所应答报文的编号

PosHead .chunnel=1; //发送通道

PosHead.info=p; //第一个编解码信息单元

接下来,调用编码函数进行编码,这样就将信息转化成为了二进制代码。最后,接收方解码此信息,调用解码函数。

4 结论

本文中提出的报文编解码方法,在复杂信息系统仿真中已经得到广泛应用。实践证明,有如下特点:

􀁺 编解码速度快,完全能够满足复杂信息系统仿真通信的要求;

􀁺 协议的改变不影响仿真系统软件,接口协议的数据处理和仿真程序分离;

􀁺 不同的复杂信息系统仿真都可以使用这种方法,接口协议的编解码程序代码具有可移植性。

本文作者创新点:针对接口协议的复杂性和灵活性,提出了一种新颖的编解码方法,有效的解决了接口协议种类多、编解码方式灵活等问题;而且方法已经应用于863 计划项目,取得了良好的效果。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

上海2023年9月21日 /美通社/ -- 云顶新耀(HKEX 1952.HK)是一家专注于创新药和疫苗研发、制造、商业化的生物制药公司,今日宣布与Kezar Life Sciences(以下简称"K...

关键字: SCIENCE IP BSP AD

苏州2023年9月18日 /美通社/ -- 神秘莫测的幻境、光与影的魅力、绚丽多彩的灯光……9月15日,中亿丰光电新产品发布会在苏州举行。一系列美轮美奂的亮化照明"黑科技"产品,以沉浸式的方式,展现出...

关键字: 光电 AD 欧司朗 灯光

进入神经发育和神经退行性研究领域 德国海德堡2023年9月6日 /美通社/ -- 欧健生物医疗集团(European Wellness Biomedical Group,以...

关键字: 新唐 AN AD OS

(全球TMT2023年8月29日讯)亚马逊云科技助力国际化智能营销服务商易点天下,面向全球用户推出了AIGC(人工智能生成内容)数字营销平台KreadoAI,提供包括AI数字人视频、AI模特商品图在内的多种解决方案,加...

关键字: AI 亚马逊 AD 模型

为客户提供营销新路径 提供AI数字人视频、AI模特商品图等解决方案,加速营销行业降本增效 北京2023年8月29日 /美通社/ -- 亚马逊云科技凭借其覆盖全球的云基础设施和在生成式AI和机器学习等前沿领域的创新服务...

关键字: 亚马逊 AI AD 生成式AI

(全球TMT2023年7月25日讯)oladance推出智能穿戴科技产品——OWS Pro全开放式耳机。OWS Pro全开放式耳机是首款使用“定点音筛”技术的开放式耳机,全天候过滤日常生活中的低中频噪音,可在检测到高频...

关键字: 耳机 CE AN AD

全球第一所通过一个平台提供内容、社区、个性化学习和证书的商学院。 在当今快速变化的工作环境中,领导者和管理人员面临诸多挑战,该应用力求满足他们不断变化的终身学习需求...

关键字: 移动应用 SE AD LEARNING

该平台提供动态和个性化的客户体验,无须依赖体验提供商 西班牙巴塞罗那2023年3月1日 /美通社/ -- 客户体验和数据盈利解决方案领域的全球领先企业 Comviva&nb...

关键字: COM VI AD 5G

伦敦, Feb. 23, 2023 (GLOBE NEWSWIRE) -- 英国一家领先的超级跑车租赁公司刚刚推出一种加密货币支付系统,服务全球最出众的超级跑车租赁业务。 目前,客户可以选择以比特币、以太坊加密货币或英镑...

关键字: CLASSIC 加密 AD WIRE

Flexport 飞协博联手 Shopify,无缝整合商家平台与供应链服务,打造全球物流一站式解决方案 上海2023年2月10日 /美通社/ -- 全球供应链技术领军者 Flexport 飞协博宣布 Flexport...

关键字: FLEX 应用程序 PI AD
关闭
关闭