目录


一、前言

现代控制系统软件变得越来越复杂,这不仅体现在其控制算法上,也体现在其结构和规模上,另外随着应用需求的不断变化,要求数控系统软件也要随着更新,这都对系统的组织结构提出了新的要求。另一方面数控系统的实时性要求也越来越高,要求响应速度越来也快,如何实现系统各个模块间的通信成为关键因素。


二、RCS库简介

RCS (Real-time control systems) 库是由美国国家标准与技术研究院(NIST)研究开发的软件库, 可以用来辅助构建多模块的控制系统软件。它以 C++面向对象的方法, 将程序抽象化, 以类封装代码, 易于理解和使用。更重要的是, 它代码开放, 可以自由使用、裁减和拓展, 从而可以跟应用程序很好的融合起来。顶层的模块负责接收人员操作指令, 经过分析、分解, 把它转化为具有内部形式的控制任务信息, 传递给中间层中的相关的模块。中间层模块会将任务细分成更小的任务, 分配给下层模块执行, 并且协调它们的动作。下层模块通过与硬件交互, 执行任务。下层的模块还要不断更新自身的状态,并且往上反馈, 最终由上层模块以某种方式反映出来。
RCS 库自动实现、维护多个模块间的命令和状态信息的传递。RCS 库把代码封装到通道类中,程序员无需关心其内部实现细节就能简便的实现模块间的通信与同步。通常,程序员需要为相关联的两个控制模块建立两个通道,分别用于传输指令消息和状态消息。RCS 库称之为命令通道和状态
通道


三、两种通信方式

1.NML通信

对于两个对通讯速率要求不高的模块,可以利用 RCS 库提供的 NML (Neutral Message
Language,中性消息语言)通信机制来实现。

内核状态下不能使用NML通信

  1. 控制命令信息 cmd(命令通道)
  2. 所有状态信息 status(状态通道)
  3. 错误信息 error(错误通道)
  4. 三个 NML通道:命令通道、状态通道和错误通道。

2.共享内存通信

RCS 库是借助内存映射文件和信号量机制来实现控制模块间的通信与同步的。

1)内存映射文件

它为相关联的模块开辟一个或者多个内存映射文件,通过让一个模块往内存映射文件写数据,另一
个模块从内存映射文件读数据,从而实现了模块间通讯。

2)信号量机制

对于多个模块访问内存映射文件而引起的同步问题,RCS 库利用信号量给予解决。

  1. 一个模块在访问内存映射文件之前,需要获取信号量;
  2. 只有成功获取了信号量才能访问内存映射文件,否则就要等待;
  3. 访问结束后就释放信号量,让其它模块可以访问内存映射文件。

3)通信原理

内存映射文件提供一种完全不同的读写文件的方法。它是将文件内容映射到内存中的某个区域,读写文件直接操作内存即可。

对于标准的文件系统,文件是以数据流形式被读取和写入的,读写文件时,先将文件指针指向要读写的开始位置,然后调用 ReadFile 或 WriteFile 进行读写文件

当我们将文件映射到内存后,向此块内存写入数据时,系统负责处理数据的缓存、缓冲、写入和调入以及内存的分配和释放。

数据共享方法是通过让两个或多个进程映射同一文件映射对象的视图来实现的, 这意味着它们将共享磁盘上同一文件或者物理存储器的同一页面。因此, 当一个进程将数据写入一个共享文件映射对象的视图时, 其它进程可以立即看到它们视图中的数据变更情况。

4)使用情况

用于对速度要求比较高的场合

RCS(Real-time control systems) 库相关推荐

  1. HoneyPLC:A Next-Generation Honeypot for Industrial Control Systems

    (CCS是计算机安全方向顶会,此篇文章为本人阅读的第一篇顶会文章,为了方便自己和这个研究方向的同学,将此次文献阅读记录下来,与君共勉!) 目录 摘要 1 介绍 2 背景和相关工作 2.1 可编程逻辑控 ...

  2. 控制工程基础Chapter1 Introduction to Control Systems

    1.1 definition of automatic control system Definition of Control System An interconnection of compon ...

  3. A Taxonomy for Contrasting Industrial Control Systems Asset Discovery Tools(对工业控制系统资产扫描工具的分类比较)

    论文原文:A Taxonomy for Contrasting Industrial Control Systems Asset Discovery Tools 原文作者:E Samanis,J Ga ...

  4. Attacking the IEC-61131 Logic Engine in Programmable Logic Controllers in Industrial Control Systems

    攻击ICS中PLC的IEC-61131逻辑引擎 一.摘要 二.介绍 (一)PLC攻击类型 (二)MITRE ATT&CK攻击 三.威胁建模 四.实验评估 (一)SEL-3505 RTAC (二 ...

  5. 现代控制理论(机器人或人工智能方向)补充资料:Python Control Systems Library + Modern Robotics

    现代控制理论广泛应用于智能驾驶和机器人领域,可自行检索资料学习. 在进行研究探索学习时,推荐如下一些资料. 除了掌握Matlab/C++/Java之外,学习一下Python也是不错的选择. Pytho ...

  6. signature=60e238a971088f65081a607ed25e04b3,Healthcare Claims Loss Control Systems And Methods

    摘要: A method for controlling healthcare claim payment losses including accessing information about a ...

  7. 【RCS】基于RCS库实现跨平台远程通信

    基于RCS库实现跨平台远程通信 摘要:数控系统的信息采集存在处理速度较慢.区域限制等问题,不能满足快速多变的需求,因此文章提出一种利用RCS库实现安卓终端与数控系统间远程连接和通信的方法,安卓终端成为 ...

  8. android打包规范包含第三方库aar,Android Studio 打包AAR和第三方静态库(示例代码)

    需求 现在有一个第三方库libstatic_add.a和对应的头文件static.h,要求封装一个Module,该Module依赖这个静态库,要求打包的Module包含该静态库. 方案 创建Andro ...

  9. 机器视觉的9大快速开发库简单介绍

    目录 一.开源的OpenCV 二.VisionPro®7.0系统,快速开发强大的应用系统 快速建立原型和易于集成 先进的机器视觉软件 硬件灵活性 技术优势 VisionPro 的软件结构 关于康耐视( ...

最新文章

  1. webpack配置vue组件加载器
  2. Scala---For语句段
  3. 云服务器 ECS Linux 系统下使用 dig 命令查询域名解析
  4. 编程方法学12:枚举
  5. Spring框架中有哪些不同类型的事件
  6. Office 365系列之十二:ActiveDirectory同步
  7. 跟我一起写一个chrome扩展程序
  8. Win32 的dll导入问题总结-------------
  9. [c++]常对象的特点
  10. mysql 大表更新数据类型_MySQL优化之表结构优化的5大建议(数据类型选择讲的很好)...
  11. 创建Maven web工程不能解析EL表达式的解决办法
  12. asp人脸识别,asp刷脸识别接口代码,微信公众号人脸识别代码
  13. SQL中计算字符串的长度函数
  14. windows中家庭网络、工作网络、公用网络的作用及区别
  15. 计算签到记录的次数统计
  16. 谈谈优惠券系统的设计
  17. Thread out-of-synch 错误
  18. 软考高级-系统架构师-案例分析-数据库真题考点汇总
  19. android 6.0 Launcher3 去掉抽屉式,显示所有 app
  20. 财富宣言_必须阅读:休闲游戏宣言

热门文章

  1. 下载微信小程序中的视频
  2. MSP430异步通信(发送)不阻塞CPU,含注释
  3. Java 9 模块化开发:核心原则与实践
  4. PBX、FXO、FXS等通信相关知识
  5. 2019年中国金融信息化软件开发企业排名
  6. http://southpeak.github.io/blog/2014/08/02/reactiv
  7. 在IntelliJ IDEA中使用Spring Initializr创建项目以及Maven集成与配置
  8. QCustomplot之安装篇(一)
  9. torbrowser浏览器的配置
  10. 图像基本特征-颜色 纹理 形状