掌桥专利:专业的专利平台
掌桥专利
首页

一种调时方法、装置、电子设备和计算机存储介质

文献发布时间:2023-06-19 10:02:03


一种调时方法、装置、电子设备和计算机存储介质

技术领域

本发明涉及通信技术领域,具体涉及一种调时方法、装置、电子设备和计算机存储介质。

背景技术

目前,进程通信机制通常分为TCP方式和IPC方式,其中,TCP方式可以基于TCP/IP协议对多进程进行通信控制,IPC方式可以基于诸如消息队列或/和信号量或/和共享内存等对多进程进行通信控制。

但是,现有进程通信机制的同步性偏差,难以满足一些控制系统的实时控制需求,致使控制系统具有高延迟性,例如,在机器人控制系统内,通过非实时进程、实时进程和共享内存形成进程通信机制,非实时进程的定时精度与实时进程的定时精度不同,影响了进程通信机制的同步精度。

发明内容

针对现有进程通信机制具有同步性偏差的不足,本发明提供一种调时方法、装置、电子设备和计算机存储介质。

本发明第一方面提供一种调时方法,包括:

通过非实时进程将通信数据写入共享内存中,通过实时进程同步读取所述共享内存中的所述通信数据,其中,所述非实时进程适于按照第一实际周期循环执行,所述实时进程适于按照第二实际周期循环执行;

通过所述实时进程,根据读取到的所述通信数据对所述第一实际周期进行检测,且根据所述第一实际周期和所述第二实际周期确定延时误差补偿量,以及,将所述延时误差补偿量写入所述共享内存中;

通过所述非实时进程,读取所述共享内存中的所述延时误差补偿量,且根据读取到的所述延时误差补偿量和所述第二实际周期调节所述第一实际周期,使所述第一实际周期趋近于或等于所述第二实际周期。

上述技术方案的有益效果是:通过非实时进程、实时进程和共享内存形成进程周期性同步通信机制,通过实时进程将第一实际周期和第二实际周期作为测算延时误差补偿量的组合参数,借助进程周期性同步通信机制,将延时误差补偿量从实时进程反馈给非实时进程,以防非实时进程自身测算延时误差补偿量,由于实时进程的定时精度比非实时进程的定时精度高,也就是说通过实时进程测算延时误差补偿量的精度更高,通过非实时进程将延时误差补偿量和第二实际周期作为调节第一实际周期的组合参数,既有助于简化调时方式和降低调时成本,也有助于提升调时精度,从而,有助于改善进程周期性同步通信机制的同步精度,克服了现有进程通信机制具有同步性偏差的缺陷。

可选地,所述根据读取到的所述通信数据对所述第一实际周期进行检测包括:对与分别在连续多个所述第二实际周期读取到的所述通信数据一一对应的多个时刻信息进行差值计算,得到所述第一实际周期,其中,各个所述时刻信息适于对在对应的所述第二实际周期读取到所述通信数据的时刻进行唯一标识。

上述技术方案的有益效果是:既有助于简化第一实际周期的测算方式,也有助于保障第一实际周期的精准性和可靠性。

可选地,所述根据所述第一实际周期和所述第二实际周期确定延时误差补偿量包括:对所述第二实际周期与所述第一实际周期进行差值计算,得到周期误差,对所述周期误差进行比例调节,得到所述延时误差补偿量。

上述技术方案的有益效果是:既有助于简化延时误差补偿量的测算方式,也有助于保障延时误差补偿量的精准性、可靠性和稳定性。

可选地,所述根据读取到的所述延时误差补偿量和所述第二实际周期调节所述第一实际周期包括:对所述第二实际周期与所述延时误差补偿量进行差值计算,得到期望周期,根据所述期望周期调节所述第一实际周期。

上述技术方案的有益效果是:由于非实时进程自身具有周期误差,也就是说第一实际周期跟随期望周期受调,在依据期望周期循环执行实时进程过程中,间接地调节第一实际周期,有助于降低第一实际周期的调节难度,有助于简单、快速地调节第一实际周期。

可选地,所述共享内存包括循环队列,所述循环队列包括头指针指向的存储区和尾指针指向的存储区;

所述通过实时进程同步读取所述共享内存中的所述通信数据包括:在所述第二实际周期内,按照比所述第二实际周期小的第三实际周期,循环判断所述头指针指向的所述存储区是否为空,若是,则等待对所述头指针指向的所述存储区进行数据写入,若否,则从所述头指针指向的所述存储区读取所述通信数据,当读完所述通信数据时,对所述头指针进行加一处理,其中,所述头指针在加一处理后移至所述尾指针指向的所述存储区。

上述技术方案的有益效果是:相比于第二实际周期,第三实际周期的时间粒度更小,周期性对头指针指向的存储区进行检验的精密性更高,既有助于防止实时进程过度对共享内存执行读操作,也有助于防止实时进程漏读共享内存中的通信数据。

可选地,所述共享内存还包括分别独立于所述循环队列外的存储单元和状态机;

所述调时方法还包括:在所述第二实际周期内,当写完所述延时误差补偿量时,将所述状态机从适于停用边界限定操作的第一状态切换至适于启用所述边界限定操作的第二状态,依据所述第二状态对在所述存储单元中且呈字节流形式的所述延时误差补偿量执行所述边界限定操作后,将所述第二状态切换回所述第一状态。

上述技术方案的有益效果是:有助于保障对存储单元中的字节流数据进行边界限定的可靠性,有助于促进进程周期性同步通信机制完成字节流实时通信。

可选地,所述调时方法还包括:在所述第一实际周期内,当写完所述通信数据时,对所述尾指针进行加一处理且将所述第一状态切换至所述第二状态,依据所述第二状态对在所述头指针指向的所述存储区中且呈所述字节流形式的所述通信数据执行所述边界限定操作后,将所述第二状态切换回所述第一状态,其中,所述尾指针在加一处理后指向的所述存储区与所述头指针指向的所述存储区相邻。

上述技术方案的有益效果是:有助于保障对循环队列中的字节流数据进行边界限定的可靠性,有助于促进字节流实时通信。

本发明第二方面提供一种调时装置,包括:

通信数据传输模块,适于通过非实时进程将通信数据写入共享内存中,通过实时进程同步读取所述共享内存中的所述通信数据,其中,所述非实时进程适于按照第一实际周期循环执行,所述实时进程适于按照第二实际周期循环执行;

延时误差控制模块,适于通过所述实时进程,根据读取到的所述通信数据对所述第一实际周期进行检测,且根据所述第一实际周期和所述第二实际周期确定延时误差补偿量,以及,将所述延时误差补偿量写入所述共享内存中;

实际周期调节模块,适于通过所述非实时进程,读取所述共享内存中的所述延时误差补偿量,且根据读取到的所述延时误差补偿量和所述第二实际周期调节所述第一实际周期,使所述第一实际周期趋近于或等于所述第二实际周期。

本发明第三方面提供一种电子设备,包括:存储有计算机程序且可与处理器耦合的非易失性存储器,所述计算机程序被所述处理器加载并执行以实现第一方面所述的调时方法。

本发明第四方面提供一种计算机存储介质,所述计算机可读存储介质被配置与电子设备通信且存储有至少一条指令或至少一段程序或代码集或指令集,所述指令或所述程序或所述代码集或所述指令集被所述电子设备加载并执行以实现第一方面所述的调时方法。

本发明提供的调时装置、电子设备和计算机存储介质分别与调时方法具有相同的有益效果,此处不做赘述。

附图说明

图1为本发明实施例提供的一种调时方法的流程示意图;

图2为本发明实施例提供的一种进程周期性同步通信机制的示意图;

图3为本发明实施例提供的三个第一实际周期与三个第二实际周期一一对应的时序示意图;

图4为本发明实施例提供的一个期望周期与一个第二实际周期对应的时间组成示意图;

图5为本发明实施例提供的一种调时装置的通信原理示意图;

图6为本发明实施例提供的一种电子设备的通信原理示意图。

具体实施方式

为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。

在一些控制系统内,由非实时操作系统提供的进程为非实时进程,由实时操作系统提供的进程为实时进程,在非实时进程和实时进程分别周期性运行过程中,由于非实时进程的定时精度与实时进程的定时精度不同,致使非实时进程的第一实际周期与实时进程的第二实际周期不等,从而,降低了非实时进程利用共享内存与实时进程同步通信的精度,面对该技术缺陷,本发明实施例提供一种调时方法。

参见图1,示出了一种调时方法,包括:通过非实时进程将通信数据写入共享内存中,通过实时进程同步读取共享内存中的通信数据,其中,非实时进程适于按照第一实际周期循环执行,实时进程适于按照第二实际周期循环执行;通过实时进程,根据读取到的通信数据对第一实际周期进行检测,且根据第一实际周期和第二实际周期确定延时误差补偿量,以及,将延时误差补偿量写入共享内存中;通过非实时进程,读取共享内存中的延时误差补偿量,且根据读取到的延时误差补偿量和第二实际周期调节第一实际周期,使第一实际周期趋近于或等于第二实际周期。

示例性地,在机器人控制系统内,非实时操作系统为Linux系统,实时操作系统为Xenomai系统,非实时进程的计算机程序为python语言程序,实时进程的计算机程序为C语言程序,例如,非实时进程包括适于控制机械臂示教器的非实时线程、适于控制客户端的非实时线程以及适于控制轨迹规划器的非实时线程,实时进程包括适于控制ROS控制器的实时线程,通过ROS控制器可以对机械臂进行轨迹运动控制,参见图3。

示例性地,在非实时进程和实时进程中均预设有期望周期,预期非实时进程和实时进程均按照100ms的期望周期循环执行,实际上,非实时进程循环执行一个第一实际周期可能为99ms或102ms,实时进程循环执行一个第二实际周期为100ms,因此,非实时进程的期望周期与第一实际周期之间存在周期误差,实时进程的期望周期与第二实际周期相等,从而,第一实际周期与第二实际周期之间存在周期误差,需要对周期误差进行补偿,以使第一实际周期趋近于或等于第二实际周期。

示例性地,参见图3,非实时进程循环执行多个第一实际周期,多个第一实际周期包括第一个第一实际周期和第二个第一实际周期;在第一个第一实际周期内,将与第一个第一实际周期对应的通信数据写入共享内存中,使与第一个第一实际周期对应的通信数据为第一通信数据;在第二个第一实际周期内,将与第二个第一实际周期对应的通信数据写入共享内存中,使与第二个第一实际周期对应的通信数据为第二通信数据,例如,通信数据为机器人运行轨迹数据。

示例性地,参见图3,实时进程循环执行多个第二实际周期,多个第二实际周期包括第一个第二实际周期和第二个第二实际周期;在第一个第二实际周期内,从共享内存中读取第一通信数据,当读完第一通信数据时,采用时钟函数time()生成第一时间戳;在第二个第二实际周期内,从共享内存中读取第二通信数据,当读完第二通信数据时,采用时钟函数time()生成第二时间戳,基于第一时间戳和第二时间戳测算出第一实际周期;其中,第一时间戳为适于对读完第一通信数据的时刻进行唯一标识的时刻信息,第二时间戳为适于对读完第二通信数据的时刻进行唯一标识的时刻信息。

通过非实时进程、实时进程和共享内存形成进程周期性同步通信机制,通过实时进程将第一实际周期和第二实际周期作为测算延时误差补偿量的组合参数,借助进程周期性同步通信机制,将延时误差补偿量从实时进程反馈给非实时进程,以防非实时进程自身测算延时误差补偿量,由于实时进程的定时精度比非实时进程的定时精度高,也就是说通过实时进程测算延时误差补偿量的精度更高,通过非实时进程将延时误差补偿量和第二实际周期作为调节第一实际周期的组合参数,有助于简化调时方式、降低调时成本以及提升调时精度,从而,有助于改善进程周期性同步通信机制的同步精度,克服了现有进程通信机制具有同步性偏差的缺陷。

可选地,根据读取到的通信数据对第一实际周期进行检测包括:对与分别在连续多个第二实际周期读取到的通信数据一一对应的多个时刻信息进行差值计算,得到第一实际周期,其中,各个时刻信息适于对在对应的第二实际周期读取到通信数据的时刻进行唯一标识,既有助于简化第一实际周期的测算方式,也有助于保障第一实际周期的精准性和可靠性。

示例性地,第一实际周期与两个时刻信息之间的关系表示为:T

以N=2且i=1为例,实时进程循环一次后,T

可选地,根据第一实际周期和第二实际周期确定延时误差补偿量包括:对第二实际周期与第一实际周期进行差值计算,得到周期误差,且对周期误差进行比例调节,得到延时误差补偿量,既有助于简化延时误差补偿量的测算方式,也有助于保障延时误差补偿量的精准性、可靠性和稳定性。

示例性地,周期误差、第二实际周期和第一实际周期之间的关系表示为:T

可选地,根据读取到的延时误差补偿量和第二实际周期调节第一实际周期包括:对第二实际周期与延时误差补偿量进行差值计算,得到期望周期,且根据期望周期调节第一实际周期。

示例性地,期望周期、第二实际周期和延时误差补偿量之间的关系表示为:T

示例性地,程序运行耗时T

由于非实时进程自身具有周期误差,也就是说第一实际周期跟随期望周期受调,在依据期望周期循环执行实时进程过程中,间接地调节第一实际周期,有助于降低第一实际周期的调节难度,有助于简单、快速地调节第一实际周期。

可选地,参见图2,共享内存包括循环队列以及分别独立于循环队列外的存储单元和状态机,循环队列包括头指针指向的存储区和尾指针指向的存储区,状态机包括至少一个标志,例如,循环队列为环形队列,两个标志分别为第一数据重置标志和第二数据重置标志。

可选地,通过实时进程同步读取共享内存中的通信数据包括:在第二实际周期内,按照比第二实际周期小的第三实际周期,循环判断头指针指向的存储区是否为空,若是,则等待对头指针指向的存储区进行数据写入,若否,则从头指针指向的存储区读取所述通信数据,当读完通信数据时,对头指针进行加一处理,头指针在加一处理后移至尾指针指向的存储区。

示例性地,在实时进程中,将第二实际周期设置为100ms,且将第三实际周期设置为1ms,以及,将第三实际周期的循环次数设置为50次;在每个第三实际周期内,当头指针指向的存储区为空时,说明还未通过非实时进程将通信数据头指针指向的存储区,将实时进程设置为阻塞状态,在阻塞状态下,等待非实时进程对头指针指向的存储区进行数据写入;在每个第三实际周期内,当头指针指向的存储区非空时,说明已经通过非实时进程将通信数据头指针指向的存储区,头指针指向的存储区在非空时与尾指针指向的存储区相邻,从头指针指向的存储区读完通信数据,立即将头指针移动至尾指针指向的存储区,以使头指针指向的存储区在为空时与尾指针指向的存储区相同,有助于改善进程周期性同步通信的同步性,例如,将头指针从0改写为1。

相比于第二实际周期,第三实际周期的时间粒度更小,周期性对头指针指向的存储区进行检验的精密性更高,既有助于防止实时进程过度对共享内存执行读操作,也有助于防止实时进程漏读共享内存中的通信数据。

可选地,调时方法还包括:在第二实际周期内,当写完延时误差补偿量时,将状态机从适于停用边界限定操作的第一状态切换至适于启用边界限定操作的第二状态,依据第二状态对在存储单元中且呈字节流形式的延时误差补偿量执行边界限定操作后,将第二状态切换回第一状态,有助于保障对存储单元中的字节流数据进行边界限定的可靠性,有助于促进字节流实时通信。

示例性地,参见图3,通过实时线程,在第二个第二实际周期内,采用字节流形式将延时误差补偿量写入存储单元中,当写完延时误差补偿量时,将第二数据重置标志改写为1,即:状态机为01,在状态机为01的条件下,对延时误差补偿量执行边界限定操作,以限定延时误差补偿量的字节流边界,当完成边界限定操作时,将第二数据重置标志重置为0,即:状态机为00,其中,t

可选地,调时方法还包括:在第一实际周期内,当写完通信数据时,对尾指针进行加一处理且将第一状态切换至第二状态,依据第二状态对在头指针指向的存储区中且呈字节流形式的通信数据执行边界限定操作后,将第二状态切换回第一状态,其中,尾指针在加一处理后指向的存储区与头指针指向的存储区相邻,有助于保障对循环队列中的字节流数据进行边界限定的可靠性,有助于促进字节流实时通信。

示例性地,参见图3,通过非实时线程,在第二个第一实际周期内,当头指针指向的存储区与尾指针指向的存储区相同时,采用字节流形式将通信数据写入尾指针指向的存储区,当写完通信数据时,对尾指针进行加一处理,在加一处理完尾指针后,将第一数据重置标志改写为1,即:状态机为10,在状态机为10的条件下,对在头指针指向的存储区中的通信数据执行边界限定操作,以限定通信数据的字节流边界,当完成边界限定操作时,将第二数据重置标志重置为0,即:状态机为00,例如,将尾指针从1改写为2,以防通过多进程因分别对状态机进行状态切换而产生干扰。

需要说明的是,第一状态是指状态机为0的状态,第二状态是指状态机非0的状态,为了简要描述,此处不再赘述。

参见图5,本发明还提供一种调时装置,包括:通信数据传输模块、延时误差控制模块和实际周期调节模块。

通信数据传输模块,适于通过非实时进程将通信数据写入共享内存中,通过实时进程同步读取共享内存中的通信数据。

其中,非实时进程适于按照第一实际周期循环执行,实时进程适于按照第二实际周期循环执行。

延时误差控制模块,适于通过实时进程,根据读取到的通信数据对第一实际周期进行检测,且根据第一实际周期和第二实际周期确定延时误差补偿量,以及,将延时误差补偿量写入共享内存中。

实际周期调节模块,适于通过非实时进程,读取共享内存中的延时误差补偿量,且根据读取到的延时误差补偿量和第二实际周期调节第一实际周期,使第一实际周期趋近于或等于第二实际周期。

可选地,通信数据传输模块包括第一控制子模块和第二控制子模块。

第一控制子模块,适于在循环执行N个第一实际周期的过程中,通过非实时进程,在各个第一实际周期内,当头指针指向的存储区与尾指针指向的存储区相同时,采用字节流形式将通信数据写入尾指针指向的存储区,当写完通信数据时,对尾指针进行加一处理且将状态机从第一状态切换至第二状态,以及,依据第二状态对在头指针指向的存储区中的通信数据执行边界限定操作后,将第二状态切换回第一状态,其中,N为大于1的正整数,尾指针在加一处理后指向的存储区与头指针指向的存储区相邻。

第二控制子模块,适于在循环执行N个第二实际周期的过程中,通过实时进程,在各个第二实际周期内,按照比对应的第二实际周期小的第三实际周期,循环判断头指针指向的存储区是否非空,若是,则等待对头指针指向的存储区进行数据写入,若否,则从头指针指向的存储区读取通信数据,当读完通信数据时,对头指针进行加一处理且生成适于对读完通信数据的时刻进行唯一标识的时刻信息,其中,头指针在加一处理后指向的存储区与尾指针指向的存储区相同。

可选地,延时误差控制模块,具体适于:通过实时进程,在第N个第二实际周期内,根据与分别在N个第二实际周期读取到的通信数据一一对应的N个时刻信息检测第一实际周期,且根据第一实际周期和第二实际周期确定延时误差补偿量,以及,采用字节流形式将延时误差补偿量写入存储单元中,当写完延时误差补偿量时,将状态机从第一状态切换至第二状态,依据第二状态对在存储单元中的延时误差补偿量执行边界限定操作后,将第二状态切换回第一状态。

可选地,实际周期调节模块,具体适于:通过非实时进程,在第N+1个第一实际周期内,从存储单元读取延时误差补偿量,根据延时误差补偿量和第二实际周期调节第一实际周期。

本发明还提供一种电子设备,包括:存储有计算机程序且可与处理器耦合的非易失性存储器,前述计算机程序被前述处理器加载并执行以实现上述的调时方法。

示例性地,参见图6,在电子设备中,非易失性存储器通过通用串行总线与处理器耦合,例如,电子设备为机器人控制系统中的工控机。

本发明还提供一种计算机存储介质,该计算机可读存储介质被配置与电子设备通信且存储有至少一条指令或至少一段程序或代码集或指令集,所述指令或所述程序或所述代码集或所述指令集被所述电子设备加载并执行以实现上述的调时方法,计算机存储介质诸如优盘或移动硬盘或闪存等。

本说明书描述的“第一”、“第二”和“第三”等术语,仅用于区分装置/组件/子组件/部件等,不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量,由此,限定有如“第一”、“第二”和“第三”等的特征可以明示或者隐含地表示包括至少一个该特征,除非另有明确具体的限定,“多个”的含义是至少两个,例如两个,三个等,对于本领域技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

本说明书描述的“方面”、“可选地”和“示例性地”等术语,意指结合该实施例或实施方式描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示实施方式中,对上述术语的示意性表述不一定指的是相同的实施例或实施方式,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或实施方式以合适的方式结合。

虽然本公开披露如上,但本公开的保护范围并非仅限于此。本领域技术人员,在不脱离本公开的精神和范围的前提下,可进行各种变更与修改,这些变更与修改均将落入本发明的保护范围。

相关技术
  • 一种调时方法、装置、电子设备和计算机存储介质
  • 一种监控调看投屏方法、装置、计算机设备、可读存储介质及监控调看投屏交互系统
技术分类

06120112390389