- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
通信网络-利用RCS库实现数控系统模块间的通信
利用 RCS 库实现数控系统模块间的通信
1,2 2 2 1,2
田军锋 马跃 吴文江 王锐
(1.中国科学院研究生院,北京 100049 ;2. 中国科学院沈阳计算技术研究所,沈阳 110171 )
摘要:采用层次化的设计思想,对数控系统进行模块划分,数控系统对实时性要求很高,
尤其是运动控制模块,因此如何实现各个模块间的通信就显得十分重要。介绍了 RCS 库的
原理,以及利用 RCS 库中的共享内存和 NML 来实现各个模块间的通信。
关键词:数控系统;共享内存;模块;通信
中图分类号:TP27 文献标识符:B
Using RCS Library to Realize Communication of CNC System’s modules
Abstract:Based on hierarchical the design concept, this paper carries on the module division to
the numerical control system,which has a high request of real-time performance,
particularly the motion controller module,It is more important how to realize communication
between modules. This paper also provides a method to establish a control system software using
RCS library, and introduces implementation principle of RCS library and using share memory and
NML realizes communication between modules.
Key words: numerical control system ,Share memory,module ,communication
1 问题的提出
现代控制系统软件变得越来越复杂,这不仅体现在其控制算法上,也体现在其结构和
规模上[1],另外随着应用需求的不断变化,要求数控系统软件也要随着更新,这都对系统
的组织结构提出了新的要求。另一方面数控系统的实时性要求也越来越高,要求响应速度
越来也快,如何实现系统各个模块间的通信成为关键因素。
2 RCS 库简介
RCS(Real-time control systems) 库是由美国国家标准与技术研究院(NIST)研究开发
的软件库, 可以用来辅助构建多模块的控制系统软件。它以C++面向对象的方法, 将程序抽
象化, 以类封装代码, 易于理解和使用。更重要的是, 它代码开放, 可以自由使用、裁减和
拓展, 从而可以跟应用程序很好的融合起来。顶层的模块负责接收人员操作指令, 经过分
析、分解, 把它转化为具有内部形式的控制任务信息, 传递给中间层中的相关的模块。中间
层模块会将任务细分成更小的任务, 分配给下层模块执行, 并且协调它们的动作。下层模块
通过与硬件交互, 执行任务。下层的模块还要不断更新自身的状态,并且往上反馈, 最终由
上层模块以某种方式反映出来。
RCS 库自动实现、维护多个模块间的命令和状态信息的传递。实际上,在 WinCE 系统
中,RCS 库是借助内存映射文件和信号量机制来实现这一功能的[2]。我们知道,内存映射
文件技术允许进程间共享它们虚地址空间中的部分区域,而信号量技术允许进程间同步的
执行。RCS 库正是利用这两项技术来实现控制模块间的通信与同步。它为相关联的模块开
辟一个或者多个内存映射文件,通过让一个模块往内存映射文件写数据,另一个模块从内
存映射文件读数据,从而实现了模块间通讯,对于多个模块访问内存映射文件而引起的同
步问题,RCS 库利用信号量给予解决。一个模块在访问内存映射文件之前,需要获取信号
量;只有成功获取了信号量才能访问内存映射文件,否则就要等待;访问结束后就释放信
号量,让其它模块可以访问内存映射文件。RCS 库把以上代码封装到通道类中,程序员无
需关心其内部实现细节就能简便的实现模块间的通信与同步。通常,程序员需要为相关联
的两个控制模块建立两个通道,
文档评论(0)