当前位置:首页 期刊杂志

基于5G 与阿里云的六轴运动实验平台监控系统设计①

时间:2024-05-22

徐建明 张宇轩 朱俊威 俞 立

(浙江工业大学信息工程学院 杭州310023)

0 引言

工业生产不断向信息化发展过程中,监控系统起到了不可或缺的作用。4G 无线监控系统可以用于一些特定环境,但是在要求大规模数据传输和设备远程操控作业环境下比较无力。随着5G 的到来这些问题将迎刃而解。

5G 相比于4G 网络具有更低的延时和更高的速率及容量[1]。低延时与大容量可以使5G[2-3]应用于实时高精度的操作环境下,如王浩等人[4]基于5G网络对城市轨道交通全自动无人驾驶列车控制系统研究。5G 网络的高速率、低延时同样适用于监控系统,使监控系统更加高效、稳定和可靠,柳曦等人[5]和Rehmani 等人[6]提出了5G 通信技术在火电厂的应用。应巨林等人[7]进行了基于5G 技术的农作物视频监控平台的研究与应用。

传统的工业监控系统大多采用硬可编程逻辑控制器(programmable logic controller,PLC),如邓鑫[8]使用S7-300 设计煤矿带式输送机运行监控系统。郭恒瑞等人[9]提出了基于PLC 设计的矿用装煤平车线监控系统。但是硬PLC 通常用于一些逻辑控制系统,难以胜任多轴运动控制。随着计算机技术的迅速发展及PLCopen[10-11]标准的提出,嵌入式软PLC 技术的出现打破了传统PLC 的局限性。嵌入式软PLC 具有开放的硬件体系结构,丰富的指令集,更高的性价比,适用于计算机网络和开发方便等特性。软PLC 在监控系统中越来越流行,如徐建明等人[12]使用Soft PLC Running System[13]实现基于WEB 的工业机器人3D 虚拟动态监控系统。目前的监控系统大多采用C/S(客户端/服务器)模式搭建,如张爱民等人[14]基于TCP/IP 协议设计的工业机器人远程监控与诊断系统,此模式下,用户需要安装客户端。然而采用B/S(浏览器/服务器)框架搭建的监控系统简洁方便,如吴丽梅[15]设计基于B/S构架的EPICS(experimental physics and industrial control system)实时监测系统,董玉德等人[16]设计基于物联网的路灯可视化监控系统。

针对上述问题,本文在基于B/S 架构搭建云端监控平台前提下,前端使用原生代码实现,后端使用简洁的Spring Boot 框架搭建。本地控制平台由运动控制器和5G 模组组成,运动控制器通过USB 驱动程序识别5G 模组,使用消息队列遥测传输(message queuing telemetry transport,MQTT)协议通过5G网络与阿里云服务器进行数据交互,并且使用Codesys IDE 创建了一个Pou 六轴运动实验平台工程和WEB 前端界面验证基于5G 与阿里云的六轴运动实验平台监控系统。

1 系统整体框架

1.1 系统硬件框架

监控系统硬件框架如图1 所示。六轴运动实验平台由6 个电机与6 个伺服驱动器组成,由运动控制器通过EtherCAT 总线传输信号到伺服驱动器控制电机的运动。运动控制器选取Cortex-A8 为核心的工业控制MCU[17]AM335X 芯片,运动控制器安装了Linux 操作系统并在Linux 系统中搭载Codesys Runtime 系统组成了嵌入式软PLC。联网部分采用MH5000-31 5G 模组,模组接入天线并且插入具有5G业务SIM 卡处于5G 网络覆盖范围内拨号连入5G 网络,用于本地控制平台与云服务器数据互传。监控平台部署在云服务器上,用户通过浏览器访问特定IP 地址的服务器监视和控制六轴运动实验平台。

图1 监控系统硬件框架图

1.2 系统软件框架

六轴运动实验平台监控系统软件架构主要由两大部分组成,本地控制平台和云端监控平台。监控系统软件框架图如图2 所示。

图2 监控系统软件框架图

云端监控平台用于处理本地控制平台发送的实验平台数据且显示到前端界面或者发送实验平台控制指令到本地控制平台,平台由WEB 前端界面、Spring Boot 框架后端、MQTT 客户端和服务端组成。为了避免同源的问题存在,WEB 前端使用Nginx[18]部署在云服务器上,Spring Boot 后端主要负责处理前端的AJAX(asynchronous JavaScript and XML)请求。

本地控制平台分为5G 模组和运动控制器。运动控制器使用的是搭载了MQTT 客户端、Codesys Runtime 等服务的Linux 系统,由于Codesys Runtime和MQTT 客户端属于不同的进程,所以运动控制器还需要搭载进程通讯服务,通过共享内存实现。Codesys Runtime 向共享内存写入实验平台的运行数据或者从共享内存读出实验平台的控制指令,MQTT 客户端从共享内存中读出设备数据并且上传到云服务器或者接受服务器发送的指令写入共享内存中。Codesys Runtime Pou 工程通过EtherCAT 总线发送指令给各轴伺服驱动器实现六轴实验平台运动控制功能。

2 本地控制平台设计

本地控制平台主要包括5G 模组和运动控制器两大部分,编写USB 驱动程序建立5G 模组与运动控制器的通讯,移植MQTT 协议在运动控制器中建立MQTT 客户端。

2.1 内核USB 驱动编写

本地控制平台与云端服务器进行数据交互的前提是本地控制平台接入互联网。由于5G 模组与运动控制器通过USB 线连接,所以使用模组需要编写Linux 内核USB 驱动。本文使用的是Linux-3.2.0内核,对5G 模组没有很好的兼容,需要对内核中的CDC 驱动和ECM 驱动进行修改,主要过程如下。

(1)在linux_src/include/linux/usb.h 中添加设备的宏。

(2)在linux_src/drivers/usb/serial/option.c 文件中usb_device_id option_ids[]的ID 列表添加用于匹配设备数据的ID。

(3) 在 linux_src/drivers/usb/serial/usb_wwan.c 中增加对bcdUSB 值和华为VID 值的定义。

(4)linux_src/drivers/usb/serial/usb_wwan.c文件中usb_wwan_write 函数添加对零包的判断。

USB 驱动修改后更新至文件系统,在系统设备中出现ttyUSB0、ttyUSB1、ttyUSB2 和ttyUSB3 4 个端口表示5G 模组已被识别,如图3 所示。

图3 5G 模组设备端口信息图

模组正确识别后使用脚本向ttyUSB1 接口发送信息使本地控制平台实现上网功能,具体脚本及解释如下:

首先注册到相应的运营商网络,其次拨号上网,最后通过dhcpcd 获得动态IP 地址用于上网所用,本地控制平台正确获得动态IP 地址,如图4 所示,IP 为169.254.129.250。

图4 dhcpcd 获得动态IP 信息图

2.2 MQTT 客户端设计

MQTT 是一种基于发布/订阅范式的消息协议,具有开放、简单、轻量的特性,是为了物联网场景而设计的轻量级传输协议[19-20]。MQTT 通讯结构图如图5 所示。

图5 MQTT 通讯结构图

MQTT 的服务器部署在云服务器上,客户端可以向服务端发布和订阅消息,主要过程如下。

(1)运动控制器移植MQTT 库用于消息的发布与订阅程序的设计,使用“arm-linux-gnueabihf-gcc”编译器编译MQTT 源码包获得动态链接库,将动态链接库放入运动控制器的Linux 系统下。

(2)消息发布程序用于向云服务器发布消息,在发布程序中编写Publish()函数,该函数主要用于发布数据,待数据发生变化时使用open()函数打开文件获得文件描述符fd,Write()函数通过fd 寻找到文件并且写入数据。配置MQTT 发布的地址、主题、用户、发布质量及密码,通过mosquitto_pub 将数据发布到服务器,消息发布流程图如图6 所示。

图6 消息发布流程图

(3)消息订阅用于接收从服务器发布的消息,在订阅程序中使用mosquitto_lib_init 初始化MQTT 为数据接收做准备,打开共享内存用于把接收的数据放入内存中。使用mosquitto_subscribe 订阅数据,数据订阅成功后放入共享内存方便Codesys Runtime 获得数据。消息订阅流程图如图7 所示。

图7 消息订阅流程图

2.3 进程通讯共享内存

Linux 进程间的通信主要有3 种,即管道通信、消息缓冲通信和共享内存通信。管道通信局限于单向通信,消息缓冲不再局限于父子进程,但是信息的复制需要额外的CPU 的时间。共享内存利用缓冲区直接交换信息,无需复制,快捷、信息量大。本系统采用共享内存的方法实现MQTT 客户端和Codesys Runtime 传递数据。共享内存的创建首先使用Shm_open 创建共享内存,然后Ftruncate 重新定义共享内存的大小,最后Mmap 获得共享内存的地址,方便数据的读取和写入。操作结束后使用Close、munmap 和shm_ulink 关闭和释放共享内存。共享内存创建流程图如图8 所示。

图8 共享内存创建流程图

2.4 建立六轴运动实验平台Pou 工程

在Codesys 开发环境下基于PLCopen 规范采用ST 语言以及Codesys SoftMotion 提供的功能块设计六轴实验平台控制程序。在Codesys IDE 环境下建立一个Standard Project,在项目中添加运动控制器设备以及EtherCAT Master 设备,EtherCAT Master 下添加6 个LiWei_SMD002_X 电机设备用于传递信息给伺服驱动器,之后添加Pou 单元并使用ST 语言进行编程设计及控制程序。

Pou 单元由回零和位置跟随两个功能组成,回零部分Home 采用了MC_MoveAbsoulte 模块实现,通过设定加减速度、速度和执行位使电机运行到指定的位置。位置跟随部分采用了SMC_FollowPosition 模块来实现,模块会根据fSetPostion 的值使电机运行到相应的位置,所以只需要使fSetPostion 的值按照正弦变化即可使电机按照正弦运动,fSetPostion的值变化如式(1)所示。其中y1、y2、y3、y4、y5、y6分别表示一至六轴的fSetPostion 值,其中t为时间,ω表示频率,A表示幅值。x1、x2、x3、x4、x5、x6表示初始相位角,SMC_FollowPosition 模块图如图9 所示。

图9 SMC_FollowPosition 模块图

3 云端WEB 监控设计

云端WEB监控采用B/S架构的方式实现,使用阿里云服务器作为云端监控平台载体。本文WEB监控平台主要由前端和后端组成,前端采用原生的HTML 文本标记语言、CSS 样式和JavaScript 脚本编写而成。由于传统WEB 框架过于复杂,并不能满足快速开发的要求,Spring Boot 框架则具有快速和高效的特性[21],所以后端采用Spring Boot 框架搭建而成。

3.1 WEB 前端设计

WEB 前端提供了交互界面,用户通过浏览器访问指定的IP 地址的服务器即可访问到交互界面。WEB 前端界面主要包括两部分,六轴实验平台运行状态监视和远程控制部分。六轴实验平台监视部分用于显示六轴运行时实际位置,其由Multi Axis Detection System 和六轴曲线图两部分组成。数值显示部分显示各个轴的实际位置数值,曲线图部分显示6个轴实际位置随时间的动态变化。六轴曲线图部分使用Echarts 实现,使用Echarts.init 初始化DIV 标签获得Echarts 图的标识,通过标识符配置横轴、竖轴和Serial 等参数,纵轴表示实验平台中电机运行时的位置,横轴为时间轴(时间单位为秒),Series 存放了实验平台运行时的各个轴的位置值。通过set-Postion 生成曲线图,数据的更新功能采用定时更换Series 选项下各个轴的数据实现,由setInterval 实现定时更新数据的功能,WEB 交互界面如图10所示。

图10 WEB 交互界面图

3.2 WEB 后端设计

WEB 后端使用JAVA 语言基于Spring Boot 框架建立,Spring Boot 是一个基于Spring 的全新框架,可简化Spring 项目的初始搭建和开发过程[22]。后端用于处理接收前端发出的AJAX 请求,并兼顾向MQTT 服务器发布和订阅数据。后端程序设计流程图如图11 所示。后端作为前端与本地控制平台交互的桥梁,根据前端发送AJAX 请求内容判断是向文件中写入实验平台控制指令还是从文件中读取实验平台的位置数据。

图11 后端程序设计流程图

4 实验数据及分析

以六轴运动控制实验平台为基础,对部署在阿里云的监控系统进行实验测试。

(1)5G 网络相比于4G 网络具有更大的容量和速率及更低的延时,使用SpeedManager 软件测试4G网络和NSA 模式下的5G 网络,结果见图12。5G 网络比4G 网络具有更高的下行速度和上行速度,并且5G 网络延时及抖动相当于4G 网络的一半。由于当前5G 网络采用的组网模式为非独立组网(nonstand alone,NSA)在4G 网络的基础设施上部署5G网络,并不能完全体现出5G 网络的优势,但是独立组网模式(stand alone,SA)需要新建5G 网络,包括基站、回程链路及核心网,所以SA 没有普及。

图12 4G 与5G 网络对比图

(2)电机的运动控制由Codesys Pou 项目实现,控制Codesys Pou 中的fSetPostion 值规划电机运动。fSetPostion 值由式(1)得到,这里选取幅值A为50 cm,频率ω选择1 rad/s,各个轴的初始相位角由xi=2×π×(i ÷24) 决定,i取值0~5 分别表示1~6轴,设备运行时6 个电机之间同步组成正弦运动,每个电机都是沿着正弦函数运行,但是初始相位角的不同导致各个轴之间存在相位差,六轴运动实验平台运行轨迹如图13 所示,各个电机按正弦运动并且相互之间存在相位差。对比图13 的4 G和5 G网络下的运动轨迹图,得到4G 网络下轨迹图数据传输的延时较大,时常轨迹图出现失真的情况,只能大致看出实验平台按正弦运动,而5G 网络下的轨迹图则比较明显,并且传输相对稳定。

图13 六轴运动实验平台运行轨迹图

在WEB 监控界面中开启电源并且对六轴运动实验平台进行初始化,运行时轨迹图如图13 所示。实验平台各个轴的当前位置数值如图14 所示,显示当前6 个轴的位置值分别为49.99388 cm、48.08789 cm、42.90479 cm、34.79780 cm、24.31940 cm和12.18367 cm。图15 为当前六轴运动控制实验平台水晶球的位置,从左往右分别是轴1 至轴6,6 个水晶球所处位置与WEB 界面显示位置一致。

图14 实验平台运行位置数值显示图

图15 六轴运动实验平台电机位置图

5 结论

本文采用5G 通信、MQTT 协议、Codesys IDE、进程通讯技术和前后端分离技术搭建一种基于阿里云的六轴运动实验平台远程监控系统。本地控制平台使用开源的Linux 系统降低了开发成本,提高了系统移植性,并且采用模块化的设计方式缩短了开发周期,可以在需要额外扩展的时候快速开发。WEB云端监控采用前后端分离技术进行设计,挂载在阿里云服务器上。系统针对六轴运动控制实验平台进行了实时数据采集,将数据上传到云服务器,经云服务器后端程序处理后将六轴运动位置数据在前端界面显示,并且前端操作界面可以对六轴运动实验平台进行远程控制。所设计系统满足工业监控系统的基本要求,对开发基于5G 网络的工业监控系统具有一定的参考价值。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!