• 从实时应用角度谈通信总线仲裁机制和网络流控


    各种总线的仲裁机制

    关于各种总线仲裁机制的原理分析,中文互联网上已经有非常多的原理介绍,这里引出几篇相对全面的博客IIC总线仲裁CAN 总线的全面介绍SPI总线介绍,其中SPI作为主从设备通信,协议没有规定总线仲裁方式。

    简而言之,CAN 总线的仲裁是非破坏性仲裁,和以太网类似,属于 CSMA/CA (载波检测,多主掌控,冲突避免,Carrier Sense Multiple Access with Collision Avoidance)的通信方式。原理是优先级更高的数据帧,标识符位置具有更多的0位,即显性位,多个数据帧发出数据进行线‘与’操作,保留高优先级的数据帧。这些数据帧之间的时序比较是依靠起始的同步位和仲裁域进行比较的。

    实时系统的通信需求

    实时系统部分参考 Kopetz, H. (1997) "Real-Time Systems: Design Principles for Distributed Embedded Applications", Springer International Series in Engineering and Computer Science. ISBN 978-0792398943 下载链接:Real-time system principle

    • 协议传输延迟,包括延迟本身的抖动可预测性和多播下的同时性,到达节点之间的延迟应该是可以预测的
    • 系统的可组合性,在这本书中 Kopetz 强调了可组合性作为分布式实时系统的重要属性;子系统的可测试性和实时性在系统属性上应该得到保证;原文定义请看下面引文:

    Composability: An architecture is said to be composable with respect to a specified property if the system integration will not invalidate this property once the property has been established at the subsystem level. Examples of such properties are timeliness or testability. In a composable architecture, the system properties follow from the subsystem properties.

    • 灵活性,表征系统定制化的需求
    • 错误检测,包括通信信息的错误,通信节点的错误和端到端的认证(End-to-End Acknowledgment),一个经典的认证事故是三里岛核电站事故的 PORV 未关闭,而指示灯显示已关闭的事件,设计设备可靠性是非常重要的原则。三里岛事故设备原因
    • 物理层架构设计,总线型设计/环形设计,最小可替换单元物理隔离(以免一部分的损坏导致整体失效)

    网络流控

    主要有两种方式的流控制:设置超时重传机制的显式流控和不设置超时重传,根据优先级发送信息的隐式流控
    image

    隐式流控方式可能导致 “event shower” 现象,即同时出现大量event,导致数据来不及被处理,系统反应较慢等现象。

    Event Trigger & Time Trigger System

    总体来看,在实时通信系统中有相当多的权衡因素和设计思考,书中介绍了上个世纪比较流行的网络结构和几种总线之间的比较,见下图:
    image
    其中,CAN 作为 Event Triggered Protocol ,完全具有事件触发式协议的特性。总线之间的trade-off 更多体现在时间触发和事件触发的区别上,即下图所示:
    image
    在通信信道容量较低并且通信需求量高的情况下,Time Triggered System 可以更好地满足通信需求。

    总结

    为了保证系统实时性,需要对软硬件通信协议进行设计使得有用信息快速被传达到需要的节点。如协议中的仲裁方式和流控机制,使得系统达到较高的通信效率。在分布式的通信架构中,应当在设计之初考虑系统延时、可靠性与容错机制、信息处理效率等因素,保证系统安全可靠。

  • 相关阅读:
    如何理解attention中的Q、K、V
    Python基础语法(三)—— 函数的定义和使用
    Python爬虫selenium安装谷歌驱动解决办法
    Ubuntu 在任意位置运行python文件
    iperf 工具使用总结
    2022夏暑假每日一题(七)
    用户的生命周期
    分组后成员的再分组
    【学习总结】Python transformers AutoTokenizer encode 出现的 101 和 102
    RabbitMQ------发布确认(单个确认、批量确认、未确认)(四)
  • 原文地址:https://www.cnblogs.com/Sanhao99/p/16442990.html