陈家辉 吴雄峰 贺 顺 刘汉忠
科学评价
基于物联网的机器人伺服系统监控
陈家辉 吴雄峰 贺 顺 刘汉忠
本文针对机器人伺服系统的远程监控提出的解决方案,在机器人系统集成及测控领域内起到重要的作用。
如付诸现实,相对于传统的现场总线将能够节省现场的布线成本。
提出了一种基于物联网的机器人伺服系统监控的方案。采用Zigbee技术组建无线传感器网络,实现了机器人伺服数据的采集和无线传输;使用C#语言编写的服务器软件可以对数据进行存储和管理;实验测试表明,该系统实现数据的采集和显示,完成数据的存储和管理使用,还能使用客户端查看实时数据和历史数据,甚至是控制,有较高的应用价值。
近年来,机器人技术迅猛发展,但就目前的科技水平而言,完全自主控制、不需要人参与的机器人无法实际使用。所以,远程控制加机器人局部自主控制相结合的半自主控制方式才更具有实用性。其中,机器人的远程监控就是重要的一部分。
物联网对于机器人的远程监控就是一个很好的解决方案。物联网是指将各种信息传感设备及系统,如传感器网络、射频标签阅读装置等基于物-物通信的短距离自组织网络,通过接入互联网而形成的巨大智能网络。机器人上安装了各种用于监测运行状态或控制机器人的传感器,这些传感器能通过某种通信协议组成传感器网络。
Zigbee工作频段在2.4GHz的情况下,最高通信速率为250kbps,满足对伺服系统监控的需求,扩展性好,是一种低成本,低功耗,近距离的无线通信组网技术。
因此,本文设计了一种基于物联网的机器人伺服监控系统,通过采集节点完成对数据的分布式采集,利用Zigbee技术进行数据的无线传输,然后网关进行数据的收集并将数据通过以太网发送至服务器,能够实现数据的采集、存储、管理和显示。
基于物联网的机器人伺服系统的监控系统是由机器人伺服,采集节点,网关,以太网,服务器以及客户端组成,其总体结构如图1所示。
本文中Zigbee通信的网络拓扑结构为星型结构,结构较简单。网络中包含一个SUN节点,多个PLANET节点,SUN节点搭建网络,PLANET节点加入网络。本文中SUN节点即为Zigbee网络网关,PLANET节点为Zigbee网络采集节点。
系统开始工作后,首先网关会搭建一个Zigbee无线传感器网络,然后采集节点加入该网络后,开始不断的采集数据并通过无线网络将数据传送到网关上,网关不断地解析从各采集节点发来的数据包,再将数据转换成固定格式通过以太网传送到局域网内的服务器上。服务器对收到的信息进行解析,得到其中有效数据,根据得到的有效数据内容,最后将数据在服务器上分类保存并以合适的方式显示。
操作者在现场可使用现场客户端通过以太网连接到服务器,查看保存在服务器上的数据,以及通过服务器控制连接在无线传感器网络中各个采集上的设备。若操作者不在现场,也可以使用远程客户端通过互联网连接到服务器,实现上述功能。
图1 系统总体结构框图
硬件结构设计如图2所示。网关与采集节点的CPU都采用STM32W108,这是一个集成的片上系统,将一个2.4GHz的IEEE 802.15.4标准的收发器,32位的ARM Cortex-M3微处理器、Flash和RAM存储器融合,添加相应的外设,设计成基于802.15.4的系统。
图2 硬件结构框图
Zigbee网络采集节点设计
Zigbee网络采集节点功能结构图如图2中对应部分所示。采集节点通过CAN总线对机器人进行监控,既能接收机器人的各种状态信息,又能控制机器人做出相应的动作。由于STM32W108芯片内部不含CAN总线控制模块,因此需要采用独立的CAN控制器来实现CAN总线通信的功能。
本系统采用MCP2515芯片来扩展STM32W108 的CAN总线功能。MCP2515是一款独立的CAN总线控制器,它符合CAN 2.0B技术规范,带有符合工业标准的SPI串行外设接口,是目前市场上最佳的实现独立CAN总线通信的方案之一。
Zigbee网络网关设计
Zigbee网络网关功能结构图如图2中对应部分所示。网关是数据的中转站,它与服务器进行数据的收发,实现监控的功能。一般的以太网通信由芯片硬件实现物理层和数据链路层,软件实现其他几层,但是大部分MCU的RAM空间有限,在移植TCP/IP协议时会有很大的限制,而且移植工作比较复杂,所以需要一种方便且占用资源较少的方案,来将MCU接入以太网。
W5500是一款全硬件TCP/IP协议栈,支持大部分以太网通信协议。其自身提供了串行外设接口(SPI),可以方便的与各类MCU连接。采用了高效的SPI协议,支持80MHz的速率,能够实现高速的网络通信。W5500的使用方法十分简便,只需要一些简单的Socket编程就能实现以太网应用。这种方案比其他嵌入式以太网方案更加快捷、简便,已在众多的领域中得到了广泛应用。
本系统软件设计主要包含ZigBee无线网络软件设计,以及服务器和客户端的软件设计。
Zigbee无线网络软件设计
Zigbee无线网络软件用C语言编写,包括了网关和采集节点的软件设计。在ZigBee无线通信协议中,各无线模块以数据包的形式传输数据,将数据以约定好的格式打包成数据包,然后再发送。收到数据包的节点通过解析数据包,得到需要的数据或者指令。本系统中所用的数据包格式如表1所示。
表1 数据包格式
包头中包含了数据包长度,数据帧类型,地址类型等信息,ID和地址中包含了16位的目标ID,16位的目标地址以及16位的本机地址,这些地址都是以先低后高的形式存储在数据包中。数据本体则包含了1Byte的负载类型数据以及2Bytes的发送数据。
下面分别对Zigbee无线网络中的采集节点和网关的软件设计进行说明。
Zigbee网络采集节点
采集节点实现采集数据和无线传输的功能。上电时先对硬件及相应的变量进行初始化工作,然后申请加入网关组建的ZigBee网络,加网成功后,采集节点开始周期性地向网关发送数据包。若采集节点收到数据包,则该数据包为网关发来的指令,然后对数据包进行解析并执行相应的指令。
Zigbee网络网关
网关实现数据收集和转换后通过以太网上传至服务器的功能,其程序流程图如图4所示。上电时首先进行硬件及相应变量的初始化,然后创建网络,循环监测是否有数据包。如果接收到数据包,对其进行解析,根据不同类型的数据包进行数据格式的转换并通过W5500发送至服务器,然后检查是否有输入指令。如果收到了输入指令,则根据不同的指令完成对应的操作。
网关通过W5500实现以太网通信,本文中使用TCP协议,因此需要初始化设置W5500的本机MAC地址寄存器、网关地址寄存器、子网掩码寄存器和本机IP地址寄存器,设置目标主机的IP地址和端口号以及各Socket分配的缓存。完成了初始化配置之后,进行Socket的新建和设置,对数据的收发采取条件发送,中断接收的方式,完成一次收/发后,重新进行Socket设置,如此循环。
本文中网关会对采集节点发来的数据进行格式转换,使用一个固定的格式来建立字符串,然后将字符串发送给服务器,或者接收从服务器发来的以同一格式建立的字符串。字符串具体格式如下:
{method:****, number:****,
type:****, value:****,
type:****,value****……}
其中method的值为data/action,data表示该字符串用于向服务器传输实时数据,action表示该字符串用于服务器在下达指令。
number的值表示为Zigbee网络中采集节点的编号,method为data时表示该字符串所包含的数据是由number指向的节点采集到的,method为action时表示服务器下达的指令由number指向的节点来执行。
图3 服务器界面
type的值表示数据的类型,本系统中设置为action/ speed/angle,其中action仅在method为action即服务器下达指令时使用,表示数据的类型为操作指令,speed和angle在上传数据时使用,分别表示数据类型为速度和角度。type的值可根据不同的需求自行设置。
value的值表示上传的具体数据,如type为action时表示具体的指令代号,type为speed或angle时则是指具体的速度和角度的值。
可以在一个字符串中使用多个type和value,用来一次传输多个数据,提高传输的效率。
“{method:data,number:1,type:speed,value:10,type:angle,value:30}”字符串表示SUN节点向服务器传输1号PLANET节点采集的一个速度数据和一个角度数据。
服务器和客户端的软件设计
服务器与客户端程序都是使用C#语言,在Visual Stdio 2010编程环境中建立的,以TCP通信为核心实现数据实时监测,节点控制等功能。
服务器
服务器启动后先开启一个监听线程,监听客户端和Zigbee网络网关的连接,一旦出现连接就建立一个独立的线程与其进行通信。Zigbee网络网关与服务器建立了连接,服务器每接收一帧数据,就返回一个确认的信息和对采集节点的控制指令,然后读取数据并存储。客户端与服务器建立了连接,服务器接收客户端的传来的指令然后执行,接着等待下一条指令。
客户端
当客户端连接到服务器后,服务器立刻建立一个独立线程进行与客户端的通信。客户端向服务器发送一个指令后,开始接收从服务器传来的数据并显示出来。
服务器和客户端之间的通信也是以字符串形式来实现的。字符串的格式与上文中介绍的W5500与服务器通信所用的字符串格式相同。例如,客户端给服务器发送指令,请求服务器发送数据,服务器接收到指令后,客户端会接收到服务器发来的数据。客户端给服务器的指令的method值即为action,服务器发给客户端的数据的method值即为data。
服务器的界面如图3所示,按下“开始监听”按钮后,服务器开始监听192.168.1.104:50000这个端口,等待无线网络网关的连接。网关与服务器连接之后,服务器开始接收网关传来的数据,通过解析,将数据以折线图形式显示出来,并存入数据库。如图所示,在采集节点模拟了一组电机运行的理想数据传输到服务器,电机先做加速运动,然后匀速运动,最后减速运动直至停止,曲线1展示了电机速度的变化,曲线2展示了电机转角的变化。界面中还可以通过右上角的“历史数据”按钮查看采集到的历史数据,通过左下角的三个控制指令按钮可以对网关发出指令。
本文研制了一种基于物联网的机器人监控系统。其优点在于:采用无线传感器网络进行机器人状态的监控,组网规模大,稳定性好,无需进行布线,降低了成本,节约了资源,同时也降低了布置机器人时的局限性,提高了机器人的灵活性。通过基于C#的服务器系统,对数据进行管理和存储,以及数据的显示,节省了设计成本。该系统能够对机器人的工作状态实时监测,及时发现会出现的问题,预防危险的发生,降低了机器人的出错率,为正常的工作和生活提供了保障,具有很好的应用价值。
陈家辉 吴雄峰 贺 顺 刘汉忠
南京工程学院自动化学院
陈家辉,男,本科,南京工程学院自动化学院,主要研究方向为电子信息。
10.3969/j.issn.1001-8972.2016.11.027
江苏省大学生实践创新训练计划项目(201511276002Z,201511276057X)