- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大型自动化软件系统中新型map 的设计与应用
马飞
信息产业部电子第六研究所,北京 (100083 )
E-mail:mafei862@163.com
摘 要: 本文设计了一种应用于大型自动化软件系统的新型map 。首先对大型自动化软件
系统中map 的应用特点做了简要介绍,然后说明了现有C++标准模板库map 、vector 的特
点及其不能很好地满足应用要求的原因。通过吸收了现有map 、vector 的优点,设计了一种
基于vector 的新型map :MACS_map 。并通过与C++标准模板库中的map 进行对比实验,
证明了这种新型的map 在性能消耗比较小的情况下完全能满足应用需求,同时相比现有C++
标准模板库的map 能极大得节省内存消耗,提高内存使用效率。
关键词:map;MACS_map;自动化软件;关联容器
中图分类号:TP311.1
1. 引言
在大型自动化软件系统中,现场设备的相关信息最终都以某种形式的采集点存在,比
如温度和压力一般都处理为模拟量输入点,开关一般都处理为开关量输入点,常见的采集
点包括有开关量输入点DI 、模拟量输入点AI 、报警点ALM 等等。自动化软件系统必须处
理的一类公共事务是设备间的联动,比如在发生火灾的情况下应自动启动相应的喷淋开关,
这种联动事务通常都通过不同采集点之间的各种相互调用关系来实现。为便于存储和管理
采集点之间的大量调用关系,就需要大量使用点标记关键字,对应点的接口指针这种一
对一的点对来存储这些调用信息。一个大型工业自动化系统中的采集点的公共类结构如图1
所示。
图1 轨道交通自动化采集点类结构图
由该图可见,每个采集点中包含多个映射表,分别用以存储子对象、事件回调、脚本
事件、输入事件处理器等关联关系。一般一个大型自动化项目需处理上万甚至高达几十万
的采集点,在这种系统中,其涉及的map 数可达百万之巨,对存储这些信息的数据结构有
其独特的应用要求和背景,具体可归纳为:1)应尽可能节约内存,提高内存使用效率,以
满足工控嵌入式设备的硬件约束;2 )应提供高效的查询效率,通过关键字可快速检索到相
- 1 -
应记录,以满足自动化系统对实时性能的要求;3 )这些信息在初始构建完成后,在整个系
统运行过程中几乎不再发生变化,很少动态增删,而以提供查询服务为主。
C++标准模板库STL 提供的map 关联容器,在处理一对一数据的时候,可以提供编程
的快速通道[1],使用STL map 来存储上述信息无疑是最方便的。但经过深入分析可发现,
直接使用STL map 来满足上述应用具有以下缺点:1)内存使用不优,对计算机的物理内存
容量有较高要求;2 )提供的高效插入和删除操作对应用而言无实际用途,存在浪费。
结合应用需求,也可考虑直接使用C++标准模板库STL 提供的vector 顺序容器,可获
得高效的内存使用效率[2],避免STL map 内存使用不优的缺点,但又存在查找效率慢及使
用不方便的问题。
通过深入分析和试验发现,各种现有标准数据结构都无法直接满足应用要求,存在各
种缺点。因此设计一种使用方便、内存占用少、查找速度快的容器就非常有必要,能更好
的利用应用的特点从而满足应用要求。本文以此为出发点,设计了一种新型的 map
(MACS_map ),这种map 综合了标准C++库中STL map 的使用方便性及STL vector 比较
节省内存空间的优点,非常适合于大型自动化软件系统应用。
为叙述方便,在下文中统一称C++标准模板库函数中的map 为STL map,称这种新型
的map 为MACS_map 。
2. MACS_map 设计
MACS_map 的设计要求可归纳为:1)保持与STL map 相同的接口,这样使用map 的
代码可方便地在STL map 和MACS_map 间替换;2 )内部使用STL vect
您可能关注的文档
最近下载
- 贵州省贵阳市白云区2025年初中毕业生学业水平模拟试卷(二)语文试题(含答案).docx VIP
- 企业文化建设与落地实践.pptx VIP
- (2025修订版)CAAC无人机理论考试题库(含答案).docx
- 光电化学课件-电化学研究方法-第一讲-电化学热力学.pdf VIP
- 《不抱怨的世界》读书分享课件PPT课件.pptx
- PEP人教版小学英语三年级下册unit3 At the zoo A Let‘s learn 教案.pdf VIP
- 《AI人工智能咖啡系统》.pdf VIP
- 《第八课 身体红绿灯》参考课件.pptx VIP
- 《安乐死与伦理》课件.ppt VIP
- 2025年部编版语文四年级下册全册教案(简案).pdf VIP
文档评论(0)