APP下载

基于异构多核的焊接集控器人机交互设计

2022-01-07曾敏袁松石永华胡子鑫王卓然

焊接 2021年11期
关键词:实时性寄存器内核

曾敏, 袁松, 石永华, 胡子鑫, 王卓然

(华南理工大学,广州 510641)

0 前言

在智能爬行式焊接机器人应用中,现场环境复杂,焊接集控器往往需要同时协调控制多台从机设备,包括爬行式焊接机器人运动控制装置、工业相机、焊接电源、送丝机等从机[1-3],因此焊接集控器往往采用多控制器组合来处理这些任务,提升了系统的硬件复杂性,且多控制器间的通信速率慢,通信管理复杂[4-6]。其中需要人机交互终端对焊接过程的参数设定、电源控制、焊接启停、故障监控进行控制[7],加重了集控器处理器的运算负担,影响焊接过程的实时性。

基于以上原因,该焊接集控器使用异构多核的STM32MP157处理器作为集控器核心,包含了双核A7以及单核M4内核,可以在A7内核和M4内核运行Linux操作系统[8]和FreeRTOS实时系统,触摸屏选用威纶通MT6071iE模块。人机交互模块通信任务运行在集控器的M4内核中,主体焊接控制任务运行在Linux系统,实现软件分层设计,实现对主体焊接控制任务的解耦,利用核间通信任务的高速率特性[9-10],提高了整体焊接系统的实时性,且只需要单控制器芯片即可满足集控器对各从机及人机交互模块通信的需求,降低了硬件的复杂性,并利用组态软件EasyBuilder Pro对人机界面进行设计,提升了人机界面软件设计和界面设计的效率。

1 系统硬件设计

焊接集控器以异构多核控制器STM32MP157为核心,该芯片由ST公司于2019年推出,内部具有双核Coretex-A7内核及Cortex-M4内核,通过OpenAMP开源框架进行核间数据高速通信。焊接集控器电路集成了双路RS485接口,分别与送丝机、焊接电源通信,通过USB2.0接口与工业相机连接。此外,利用STM32MP157的MII接口与PHY芯片RTL8211F实现千兆RJ45网口通信,与爬行机器人运动驱动器通信,而人机交互模块则通过RS232接口与焊接集控器实现点对点通信,确保了焊接集控器的抗扰性与实时性。焊接集控器的硬件框图如图1所示。

图1 焊接集控器硬件框图

2 系统软件设计

焊接集控器需要控制爬行式焊接机器人运动控制装置、工业相机、焊接电源、送丝机设备的运行及与人机交互模块的通信,将这些任务都运行在单一内核中很难保证焊接过程的实时性,也不利于程序编写,因此需要将人机交互任务与主焊接任务解耦,这里使用静态划分的方法,将人机交互通信任务在Cortex-M4内核中运行,而主焊接任务在双核Cortex-A7中运行,降低对焊接任务的影响,进而提高整体焊接控制的实时性,如图2所示,为焊接集控器软件框图。

图2 焊接集控器软件框图

2.1 异构多核加载与启动

一般嵌入式系统的启动流程为链式启动,每个环节中前者为后者提供了运行环境及加载下一环节启动代码。焊接集控器的处理器启动流程如图3所示。TF-A为首先加载的可信赖固件,与传统无安全校验的嵌入式Linux启动不同,其保证了启动过程中各个镜像的完整性,最后负责加载bootloader,即U-Boot,该程序会初始化片上外设,最后加载Linux内核到内存中运行,从而完成对Cortex-A7内核的初始化。Remoteproc是基于Linux下的远程处理器控制框架,可以通过本地处理器Cortex-A7,加载固件到远程处理器Cortex-M4以及启动或停止远程处理器,因此Cortex-M4内核最终由Linux系统通过Remoteproc框架启动。最后达到Linux系统与FreeRTOS系统同时运行在不同的内核中,实现焊接集控器内部任务的并行处理。

图3 焊接集控器处理器启动流程

2.2 核间通信任务

在焊接集控器中,由图2所示,核间通信由OpenAMP开源框架实现,OpenAMP框架包括了IPCC核间通信控制器和RPMsg远程处理器信息处理协议。其中IPCC是提供门铃信号给不同内核,用于通知新消息可用,仅起到通知唤起中断作用;RPMsg是基于共享内存的消息总线协议,规定了消息帧报文格式以及管理共享缓冲区。

在Cortex-M4内核侧,利用FreeRTOS的多任务机制,划分核间通信任务。在核间通信任务中,首先完成IPCC初始化及OpenAMP初始化,注册RPMsg通道,搭建内核间通信M4与A7双向通道;其次,注册核间通信接收中断函数;然后该任务查询工作状态位,0代表无新消息接收或新消息等待发送,则该任务进入阻塞态,等待有新消息接收产生中断时,中断回调函数会唤醒核间通信任务,同时设置工作标志位和方向标志位为1,表示有新消息,方向为接收;然后获取共享资源锁,避免对共享资源并发访问;若为接收方向,则从环形共享内存的队列消息结构中出列,获取数据帧,然后执行数据帧处理函数;最后复位标志位并释放共享资源锁,任务返回至查询工作状态位,开始新的工作周期,同理发送方向类似。核间通信任务流程如图4所示。与基于分立元件的多控制器方案不同,异构多核是将多个不同架构的内核集成在一块芯片上,不同的内核通过系统内部高速总线连接通信,因此核间通信具有高带宽及低延迟特性,且基于操作系统管理核间通信,保证了通信的有序性。

图4 核间通信任务流程图

2.3 人机交互任务

焊接集控器在焊接过程中采集到各种状态数据可由主焊接任务获取,其中焊接状态信息如电弧电压、焊接电流、各从机状态等信息需要显示在人机交互界面上,因此需由核间通信任务将显示信息从Cortex-A7内核传递至Cortex-M4内核中,再由人机交互任务完成显示任务。此过程的通信地址图如图5所示,图中地址从0开始,在整个可寻址地址空间中,包含了Cortex-M4的程序代码和数据区、用于核间通信的共享内存区及Cortex-A7的DDR内存区,实现了相同地址总线可访问不同内核区域。

图5 人机交互核间通信地址图

图5中a是Cortex-A7与共享内存区的通信任务,该任务由Linux系统完成,对外提供文件访问接口,只需调用该接口即可完成在Linux系统中的核间通信过程。人机交互任务需要在Cortex-M4数据区分配若干寄存器,用于与人机交互模块进行Modbus-RTU通信,部分寄存器分配见表1。

表1 人机交互寄存器分配表

表中寄存器地址分为2类,0x对应位状态,存储开关量,而4x对应双字数据寄存器,存储有效数据。人机交互任务根据已分配寄存器与人机交互模块通信,任务流程图如图6所示,不同任务之间的调度由FreeRTOS负责,在人机交互任务中,检测到接收到的数据报文时,中断程序会将数据报文拷贝至接收缓冲数组,执行Modbus接收处理函数,验证设备站号、CRC校验,然后根据功能码类型赋值给任务变量,根据功能码的不同读取或写入人机交互寄存器,当功能码为写入时,不仅需要将对应人机交互寄存器赋新值,还需要将更新后的寄存器值通过核间通信任务实时反馈到Cortex-A7内核中,如手动按下启动按钮、急停按钮、设置焊接参数时,每个内核都需要实时获得该参数并进行处理。基于FreeRTOS的任务管理机制,人机交互任务在更新寄存器后通过唤醒处于阻塞态的核间通信任务通知Cortex-A7内核,使得在Linux系统下的主焊接任务可根据改变寄存器值控制焊接过程,电源启停、焊接工艺参数实时调整等操作。

图6 人机交互任务流程图

2.4 人机交互界面设计

为满足焊接集控器协同控制爬行式焊接机器人运动控制装置、焊接电源、送丝机等从机及显示状态信息需求,设计了状态信息显示界面、运动控制界面、焊接参数设置界面、故障信息显示界面,其结构层次如图7所示。

图7 人机交互树状关联

在组态软件EasyBuilder Pro中,设置初始界面为开机自检阶段界面,由于焊接集控器需要与多从机通信,而多从机的系统启动需要等待全部启动完毕后方可开始焊接,因此设置初始界面等待所有从机在线后方可点击进入二级界面进行操作。在二级界面中显示各个从机的在线状态,焊接参数设置,故障信息显示,因此利用组态软件EasyBuilder Pro提供的GUI界面,如图8所示,将需要的按钮元件、设置窗口、切换界面元件等拖拽至指定位置,设置各个元件的对应寄存器地址,即可对应Cortex-M4数据区中的人机交互寄存器地址,使不同界面的开发工作量降低。

图8 人机交互界面设计软件

3 试验验证

基于多核异构的焊接集控器平台中,测试多核系统链式启动,对核间通信任务进行测试,最后验证焊接集控器人机交互界面设计。

当焊接集控器平台引导进入Linux系统后,由Remoteproc框架加载Cortex-M4内核程序,进而启动该内核,包括了加载Cortex-M4内核固件、启动该固件、分配共享内存节点、RPMsg通信建立及通信通道建立,Linux系统建立文件访问接口/dev/ttyRPMSG0,以供核间通信访问。

在测试核间通信任务中,按照50字节为单位进行数据量递增,在基准时间50 ms内,得到有效的发送次数见表2,可得随着单次传输数据量的增加,核间通信传输速率呈线性增加趋势,在200字节单次传输时,传输速率能够达到6 675.78 kB/s,而一般分立控制器通信速率只有十几kB/s,验证了核间通信具有较强的数据传输能力,满足焊接集控器的人机显示任务和主焊接任务的通信速率要求。

表2 核间通信任务测试

将焊接集控器与各从机设备通过总线连接,焊接集控器的人机交互画面如图9所示,该人机交互画面实时显示了当前设置的焊接电流、电弧电压等参数及各从机设备的在线情况,在人机交互画面的操作通过核间通信任务实时反馈到主焊接任务中,完成多核间的焊接任务控制。

图9 焊接集控器人机交互画面

4 结论

基于多核异构的焊接集控器人机交互设计中,通过将主焊接任务与人机交互任务静态划分到不同的内核运行,各个内核中运行不同的系统,完成了任务解耦,简化了硬件设计,同时降低了焊接过程中的主处理器占用。基于核间通信的高速特性,使得主焊接任务与人机交互任务的实时性得以保证。

猜你喜欢

实时性寄存器内核
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
Lite寄存器模型的设计与实现
微软发布新Edge浏览器预览版下载换装Chrome内核
二进制翻译中动静结合的寄存器分配优化方法
移位寄存器及算术运算应用
航空电子AFDX与AVB传输实时性抗干扰对比
计算机控制系统实时性的提高策略
可编程控制器的实时处理器的研究