谢 磊
(浙江大学 机械工程学院,浙江 杭州 310027)
目前水下机器人可以分为两大类[1]:一类是有线遥控潜水器(remotely operated vehicle, ROV),其通过电缆将水上操作平台与水下机器人相连接[2],并进行能量传输和信号交换,但是往往需要多根线缆来控制机器人执行任务,布线复杂;另一类是自主水下机器人(autonomous underwater vehicle , AUV),其通过自身携带的能源对水下环境进行探索[3],按照规定的指令完成一系列动作,探测范围广,但由于水下环境复杂,通过无线来传输水下机器人视频信号的方式技术实现上难度较大。
工业上常用的控制技术有现场总线和工业以太网技术。目前现场总线有CAN,PROFIBUS 和CC-Link等10 余种标准,但由于其没有统一的国际标准,使得不同总线的产品之间很难互联,阻碍了现场总线技术的进一步推广[4];而工业以太网技术将现场总线技术和以太网技术相结合,具有实时性高、传输数据量大和传输速率快等优点,打破了不同总线之间难以互连的局面,具有很好的应用前景。常见的工业以太网有PROFINET,EtherCAT 和PowerLink 等。杨书青基于CAN 总线设计实现了AUV 分布式控制系统,实现了多节点协同的网络通信模式[5]。戴腾清基于PROFIBUS提出了一种冲压生产线自动化控制方案,提高了生产效率[6]。耿英博和杜向阳等人基于EtherCAT 技术设计了可控通信涂胶机器人的控制系统,该系统大幅度提高了设备生产的良品率[7]。上述3 类常见的总线中,CAN 总线传输速率最慢(仅为1 Mb/s)、通信距离短(最远仅为10 m);PROFIBUS 单次传输字节数少(仅为4 Bytes),挂载节点数最多127 个,通信距离为200 m;而EtherCAT 能达到100 Mb/s 的通信速度以及100 m通信距离,单次传输字节数为1 498 Bytes,挂载节点数最多可达65 535 个,具有明显的优势[8]。
EtherCAT 是一种新型的工业以太网技术和协议,属于开放架构,其报文帧由主站创建,以逐个寻找的方式通过所有的从站,直到最后一个从站将数据帧原路返回,延迟达到了纳秒级,具有传输数据量大、实时性高及传输速率快等特点[9]。为了减少线缆的数量同时能够实时获得水下环境的视频信号,本文基于EtherCAT 工业以太网技术设计了一套ROV 控制系统,通过模块化设计和分布式控制等技术实现机器人所需的功能。
ROV 控制系统的设计目标是简易、具有良好的可扩充性并且能灵活配置各种设备。本文基于EtherCAT 总线设计了一套模块化的ROV 控制系统,并将视频信号和控制信号进行集成,仅通过一根线缆进行传输。
ROV 的输出设备主要是电机、灯以及电磁阀。电机控制的机械执行机构有车轮、叶片推动器以及机械臂等,其中车轮的作用是完成机器人在水底的前进、后退以及转向等动作;叶片推进器的作用是帮助水下机器人在水里前进、横移以及保持平衡等;机械臂的作用是完成水中的作业任务,这些功能的实现需要调节电机的转速并进行模拟量传输。灯和电磁阀的数字量则只需要微控制器的I/O 端输出1 或0 信号即可。
ROV的输入设备主要是各种传感器设备和摄像头。传感器主要有深度传感器、温湿度传感器和位移传感器以及编码器等,其中深度传感器可以实时报告ROV 所处的深度;温湿度传感器可以监测机器人内部设备的运行情况,防止电机温度过高或者漏水的情况出现;编码器用于实时反馈电机的转速和加速度等信息;位移传感器可以测量液压缸的运动距离。摄像头的作用是实时监测水下环境,方便工作人员进行远程操控。
针对ROV 实时性要求高的特点,基于EtherCAT技术设计了ROV 的控制系统(图1),其主要由水面系统和水下系统两个部分组成。
图1 水下机器人控制系统Fig. 1 Underwater robot control system
(1)水面系统
水面系统由监视器、主控机及交换机组成。交换机引出3 个端口,其中一个端口连接监视器,用来实时接收摄像头传输的数据并将其转化成视频;另一个端口用来接EtherCAT 主站,实现运动控制,在主站上设计人机交互界面;还有一个端口与水下系统交换机相连接。
(2)水下系统
水下系统由摄像头模块、交换机和EtherCAT 从站组成。摄像头采用以太网接口。EtherCAT 网段设有多个从站,采用分布式的控制系统架构,根据不同的功能可以分为示踪模块、驱动模块、传感器模块以及I/O 模块。EtherCAT 从站采用线型拓扑的方式,每个从站只需要引出两个接口即可。由于EtherCAT 技术支持不同协议的以太网数据帧在总线中传输,因此只需要用以太网交换机将摄像头模块和EtherCAT 从站模块连接在一起。以太网交换机用以传输以太网数据帧,使设备共享局域网。交换机的每个端口都相互连通,可以在全双工的模式下运行,设备可以通过MAC 地址找到对应的通信设备,交换机可以实现多个端口的相互通信,通过一种机制使数据进行无冲突地传输。在交换机上引出一根网线连接到水面系统的交换机上,从而实现通信。
为了能够看到水下的作业环境,通过视频方式可以直观地获取到机器人周边环境信息,而视频传输需要占用很多的带宽资源。传统的控制方式,如CAN 总线无法传输如此大的数据量,带宽过大会使总线负载过大,可能会引起系统的崩溃,因此在使用EtherCAT 总线时有必要对带宽承载能力进行计算。一路1 080P 的摄像头其像素为2 025 kbits,帧率设置为25 fps,视频传输的内容一般是增量变化数据,其变化量在20%~60%之间,在增量为40%的情况下,每秒需要传输的比特数为(2025×0.4×24+2025)/1024=21 Mbits;经过H.264压缩后,所需的带宽可以控制在4 Mb/s,而百兆网线能传输100 Mbits 的数据量,因此最多可以传输4 路视频信号。
本设计主站选用基于64 位Windows 7 系统的普通个人计算机(PC),其安装有实时控制软件TwinCAT3.1。该软件改造了Windows 7 系统的内核,周期时间最短可达50 μs,从而保证了主从站通信的实时性。
EtherCAT 从站由两部分组成:从站控制器(EtherCAT slave controller, ESC)和微控制器(micro controller unit, MCU)。图2 示出EtherCAT 从站结构。ESC 用以完成数据链路层以太网数据帧的解析,为从站控制器提供接口;MCU 用以实现应用层的功能。ESC选用LAN9252 型芯片[10],具备3 个现场存储管理单元以及4 个SyncMananger,且扩展了两个以太网端口物理层接口,性价比较高。MCU 选用意法半导体公司的 STM32F407ZG 型芯片,其工作频率高并集成了定时器等多种功能。
图2 EtherCAT 从站结构Fig. 2 EtherCAT slave structure
主站与从站通过标准网线进行通信,ESC 与MCU之间采用主机总线接口 (host bus interface, HBI)并行通信,采用STM32F4 系列特有的可变静态存储控制器 (flexible static memory controller,FSMC)与ESC 进行16 位并行数据交换,如图2 所示。
从站的程序主要分为驱动层、通信层和应用层。驱动层用来访问ESC 的寄存器以读取数据;通信层根据EtherCAT 协议解析数据并且完成状态机的转换;应用层涉及具体的控制程序。从站程序流程如图3 所示,其完成了基本的数据通信。
在应用层,为了对数据对象的收发进行管理,对对象字典进行了设计,通过将0x1C12 作为接收映射关系,0x1601 和0x1608 作为布尔量和整型量的映射关系,直接控制16 个数据量,从而实现一个主从站之间32 个数据量的相互交换。
最后,通过主站发送数据给对应从站,从站接收到数据并将数据返回的方式验证了通信的可行性。图4 示出在主站反复发送0/1 数据后主站收到的数据图像。可以看出,返回的信号呈高低电平交替变换,准确地进行双向数据传输,验证了该设计的可行性。
图3 从站程序流程Fig. 3 Slave flow chart
图4 通信可行性验证Fig. 4 Communication feasibility verification
为了对ROV 进行更加直观的控制,需要设计一个人机交换界面(图5)。TwinCAT 控制软件不仅自带简易的人机交互接口(human machine interface,HMI)设计界面,而且还定义了先进设计系统通信规范,并为设计HMI 提供了方案。在TwinCAT 软件中,先进设计系统(advanced design system,ADS)通信为模块之间的数据交换提供了路由。
图5 基于VB 的人机交互界面Fig. 5 Human-machine interaction interface based on Visual Basic
本文基于Visual Basic(VB)语言设计机器人人机交互界面,通过在VB 中添加ADS-OCX 控件,实现VB 与TwinCAT 之间的通信。调用ADS-OCX 控件时,需要对控件的属性进行设置,根据TwinCAT 中相应的PLC 程序设置控件的端口号,使Server NetID 和Client NetID 与AMS 地址一致。先对界面进行设计,调用VB 中固有的控件,然后对控件进行编写程序,VB 与TwinCAT 之间采用同步读写的方式进行数据通信,即首先创建一个通知,然后接收返回处理。通过Timer 控件设置时间,周期性地读取PLC 程序中的变量。
为了展示ROV 控制系统的可行性,本文设计了一个可以实现的简易模拟平台来替代,其包括传感器模块、轮式模块、示踪模块、推进器模块和吸盘模块,具体如图6 所示。水下系统使用一个摄像头替代摄像头模块,用5 个从站分别代表水下机器人的5 个模块。水面系统有一个监视器,是一台具有以太网接口PC 机,用来接收视频信号,PC 机上装有与摄像头相匹配的监控软件,通过搜索IP 地址,可以找到对应的摄像头并实时显示视频;系统EtherCAT 主站以基于PC 的TwinCAT 软件作为软主站。水面系统和水下系统通过两个交换机传输以太网数据帧。
图6 模拟平台Fig. 6 Simulation platform
水下系统EtherCAT 网段有5 个从站,模拟水下系统的控制系统,每个从站通过设备不同的特点形成模块化设计,既模拟了数字量的输入输出,也可以实现模拟量的输入输出以及PWM 控制电机运动。从站之间采用线型的拓扑方式。
该模拟平台用驱动模块模拟驱动轮,其由4 个电机和2 个驱动器组成,通过控制可以实现各种移动动作;用推动器模块模拟推动器,其由4 个舵机马达组成,通过IO 端口向推进器输入50 Hz 的PWM 方波,调节高电平的占空比(5%~10%)就可以调节舵机的转速以及转向;用传感器模块模拟多个传感器系统,系统使用的是位移传感器,该传感器可以将长度转化成电压值,长度与电压值成正比,通过微控制器的AD 模块将其转化成数字量,再经过一定的计算将其转化成对应的长度关系;用示踪模块模拟水下示踪系统,其由探照灯和电磁阀组成,属于两个数字输出量,模拟系统中使用5V LED 和继电器等替代,可以实现开关等功能;吸盘模块使用一个直流电机和推进模块进行模拟操作。
ROV 控制系统对实时性的要求较高,延时过长或者传输频率不稳定会导致机器人不能按照操作人员的意图进行运动,因此,需要对搭建的实验平台进行实时性能分析。利用以太网分析仪对所搭建的实验平台的数据帧进行采集并将数据转化为Winpcap 格式。该以太网分析仪采用端口镜像的方式来采集数据,其不影响设备正常通信,且端口上的所有数据都会被采集。测试硬件连接方式如图7 所示[11]。
图7 测试硬件连接Fig. 7 Test hardware connection diagram
通过PC 上的Wireshark 软件对以太网分析仪抓取的数据进行详细分析。本实验抓取了41.067 586 s 的数据帧,其中MAC 地址00:00:00:00:00:00 为主站地址,MAC 地址02:00:00:00:00:00 为从站网段地址。在TwinCAT 主站上将运行周期设置为10 ms,对收集的报文进行过滤筛选,选择主站发送的数据帧,将其以csv 格式文件导出并在excel 中进行分析:主站两个发送数据帧最大间隔时间为11.218 ms,最小间隔时间为8.594 ms,平均间隔时间为9.92 ms,平均误差在0.8%。当运行周期被设置为5 ms 时,最大间隔时间为5.341 ms,最小间隔时间为4.329 ms,平均间隔时间为5.02 ms,平均误差在0.4%。当运行周期被设置为1 ms 时,最大间隔时间为1.312 ms,最小间隔时间为0.708 ms,平均间隔时间为1.052 ms,平均误差在5.2%。可见,TwinCAT 主站发送数据的抖动误差在几十微妙范围内,因此发送周期不能被设置为0.01 ms 级别。图8 示出主站分别在5 ms 和10 ms 的循环周期下发送数据帧结果。实验结果表明,数据帧发送具有周期性规律,说明主站运行稳定,可靠性较高。通过计算可知,从站传输报文延时基本上都是在1~3 μs 范围内,延时较短;当通信频率为kHz 级时,延时可忽略不计,说明EtherCAT 总线通信的性能较好。
图8 Wireshark 抓包结果Fig. 8 Wireshark packet capture results
本文以ROV 控制系统作为研究对象,设计了基于EtherCAT 总线的ROV 控制系统,并将ROV 各个功能模块化;同时搭建了模拟ROV 功能的实验平台,用上位机来控制各个模块实现相应功能,且保证了视频信号和控制信号在一条总线上传输;最后对基于EtherCAT总线的控制系统进行了实时性能分析,结果表明该系统通信延时短、通信性能稳定,符合水下ROV 控制需求。使用嵌入式主站能进一步提高系统的实时性能,如何开发嵌入式主站将是未来研究的方向。