通信的本质
分布式系统通信模型
客户端-服务器模型(Client-Server)
(1)服务器把算法和数据封装成标准接口,客户端通过请求-相应机制来调用接口RPC
(2)适用于数据集中且数据流向明确的系统,比如文件服务器系统,右键系统

发布-订阅模型(Publish-SubScribe)
(1)节点订阅他们感兴趣的数据,发布他们生产的数据
(2)需支持动态发现机制
(3)适用于大量的实时数据分发

DDS概念

Global Data Space(GDS)

Domain & Domain Participant


通信形式




服务质量QoS


QoS分类
DURABILITY
VOLATILE:数据仅提供给现有的订阅者,后加入的Subscribe无法获得数据,这是DDS的默认行为
TRANSIENT_LOCAL: Publisher在本地保存数据,后加入的Subscribe能够获得数据
TRANSIENT: GDS保存数据,后加入的Subscribe能够获得数据
PERSISTENT:GDS永久保存数据,后加入的Subscribe能够获得数据,即使整个系统发送了重启
LIFESPAN:Data sample的有效时间,默认为永久
HISTORY:保存data sample历史记录的个数,可以选择仅保存最新的sample,或最近的N个sample或者全部sample
PRESENTATION
Coherent Access
在一组DDS data sample的更新都到达接收端后,应用程序才能访问这一组data sample,使用于不同数据实例之间存在关联关系的场景,eg:坐标数据
Ordered Access
保留Data sample之间的顺序
RELIABILITY可靠性
RELIABLE:可靠送达
BEST_EFFORT:尽力送达
PARTITION:允许在同一个Domain下创建逻辑分区,处于同一分区内的DataWriter和DataReader才可以建立通信
DESTINATION_ORDER
当系统中存在针对同一个数据实例的多个DataRead才可以建立通信
DESTINATION_ORDER
当系统中存在针对同一个数据实例的多分DataReaders时,接收端如何访问数据
BY_RECEPTIONS_TIMESTAMP:以接收端最后收到的数据为准
BY_SOURCE_TIMESTAMP:以发送端最后发送的数据为准
OWNERSHIP
当系统中存在针对同一个数据实例的多个DataWriter时,可以通过设置每个DataWriter的强度来控制DataWriter的写入权限
强度最高的DataWriter拥有写入权限
DEADLINE
用于约束数据的发送周期
对发送端来说,设置DEADLINE意味着应用程序必须在给定的时间周期内写入数据,对接收端来说,设置DEADLINE是对数据的时效性的最小要求
LATENCY_BUDGET
可设定该参数来约束数据的传输时间(从数据写入到数据送达接收端的缓存内的时间)
DDS传给传输层
TRANSPORT_PRIORITY
控制传输数据的优先级,由一个整数表示,值越大优先级越高
DDS传给传输层
TIME_BASED_FILTER
设置该参数意味着在指定时间周期内,只期望收到一个date sample,过多的date sample将被DataReader丢弃
该参数有助于优化网络负载以及节点的计算资源
RESOURCE_LIMITS
用于限制DDS可以分配的系统内存
USER_DATA
允许应用程序将一个字节序列于DomainParticipant、DataReader或者DataWriter进行关联,该字节序通过内建的Topic进行分发
常用于分发安全凭证,应用程序可通过此凭证验证数据的有效性
TOPIC_DATA
允许应用程序将一个字节序列于Topic相关联,该字节序列通过内建Topic进行分发
常用于为Topic添加附加信息
GROUP_DATA
允许应用程序将一个字节序列于Publisher或者Subscriber相互关联,该字节序列通过内建Topic进行分发
DDS于SOME/IP区别

DDS over TSN

协议栈实现
应用实现

通信矩阵一致性测试
容错性及鲁棒性测试
DDS应用功能测试
小结
测试环境
测试开发环境
Vectro vTESTstudio + CANoe CAPL
第三方编程语言
测试执行环境
Vector CANoe option Ethernet
被测设备运行环境仿真
Vector VN56xx 以太网通信接口硬件
Vector VT系统的各个IO办卡
电源

CANoe于DDS应用的交互:
方案1

方案2
FDX是VECTOR基于TCP,UDP实现的,目前可以用于控制一个DDS node

方案3
