Page 251 - 《软件学报》2021年第6期
P. 251
芦倩 等:面向数据流的 ROS2 数据分发服务形式建模与分析 1825
的发布者将发布的数据传输到订阅者.当没有数据订阅时,订阅者的初始状态是空闲状态.一旦有新的数据块到
达时,初始化 m 表示当前所要接收的数据块是整个数据流中第 m 个数据块,并初始化 count 为最大重传次数.此
时,订阅者由空闲状态转移到 Sub_datablock 状态.在 Sub_datablock 状态时,订阅者等待接收数据块.每个数据块
订阅成功后,订阅者将标记位 flag 取反,以返回确认信息至发布者.若在时间 timeout 之内,订阅者成功接收到数
据块,则从 Waitack 状态转移到 Data_state 数据流传输情况状态.在 Data_state 状态时,需要判断当前所接收的数
据块是否是所订阅数据流的终止数据块:若当前数据块为终止数据块,则代表整个数据流订阅成功,返回 Idle 状
态;否则,将回到 Sub_dataBlock 等待接收下一个数据块.若在 timeout 时间内订阅者没有接收到数据块,则从
Waitack 状态转移至 Retrans_wait 等待重传状态,等待发布者重传当前没有收到的数据块.当重传次数不为 0 时,
则等待订阅之前丢失的数据块;当发布者重传次数用尽时,订阅者仍有未接收的数据块,则订阅失败,状态转移
到 WaitSync 状态.在 WaitSync 状态时,等待同步信号.当接收到同步信号 sync_signal 时,订阅者状态返回至 Idle
状态.
2.2.2 全局数据空间概率时间自动机模型
发布订阅的节点调度匹配过程的具体实现在全局数据空间模块中,该模块主要由发布主题表 P_table、订
阅主题表 S_table、订阅失败表 S_fail_table、发布数据缓冲区 data_pool 和匹配标志 pair 变量组成.在全局数据
空间模块中:处理发布数据信息的最小时间为 TPL,最大时间为 TPH;处理订阅数据信息的最小时间为 TSL,最大
时间为 TSH.图 6 表示全局数据空间的概率时间自动机模型,全局数据空间模型的状态空间包含 5 个状态:
S={Idle,PUB,P_match,S_match,SUB}.
Fig.6 Probabilistic time automata module of global data space
图 6 全局数据空间概率时间自动机模型
当全局数据空间中发布节点的缓冲区非空时,取出缓冲区第 1 条数据信息并判断其类型.如果是发布信息,
则判断发布节点的发布主题表 P_table 有没有满:若不满,则将要发布数据的主题信息和所对应的 QoS 参数信息
添加到该节点的发布表中.发布者变更发布主题表,并将该发布信息同步计入同一 DDS 域中每一个节点的发布
主题表中,以保持发布主题表的全局一致性.此时,全局数据空间状态转移至 PUB 状态.在 PUB 状态时,需要判断
发布主题信息及所对应的 durability 属性的值:若 durablity=1,则将要发布的数据保存在 data_pool 中,以便之后
新加入的节点订阅;若 durabilty 值为 0,则不需要将发布数据保存.在全局数据空间中,当状态转移至 P_match 状
态时,将要发布数据的节点与订阅表中的订阅节点进行匹配:若要发布数据节点的主题信息及对应的 QoS 参数
信息与订阅表中的订阅节点一致,则匹配成功,发布者将要发布的数据发送给对应的订阅者;若匹配失败,则返
回空闲状态.其中,match 是一个布尔函数,它的参数分别为发布数据信息和订阅表内的一条订阅数据信息.若两
者匹配,系统根据函数返回值以及匹配节点的 QoS 策略,选择需要发布或者订阅的节点进行通信,当匹配成功
时,会赋值 pair 变量为 true.
如果是订阅信息,则判断订阅者的订阅表有没有满:如果订阅表已满,根据溢出处理策略,丢弃该条订阅消
息;若不满,则将要订阅数据的主题和所对应的 QoS 参数信息添加至该订阅节点所对应的订阅表中.此时,全局
数据空间状态转移至 SUB 状态.在 SUB 状态时,需要将要订阅者与发布主题表中的发布者进行匹配.在发布主题