COMX模块与主机交互的接口是双端口内存DPM,DPM是netX500控制器和主机之间共享的存储区,应用程序通过DPM来实现EtherCAT数据通信、netX系统配置和诊断信息的获取。在使用COMX模块进行通信时,主要完成主机对DPM操作程序的编写以及握手标记的设置等。EtherCAT网络上的数据是实时地映射到DPM的,同时应用程序通过DPM来发送和接收数据,整个DPM区域是16 KB的地址空间。
2 硬件设计
本伺服控制器主要用于机器人伺服节点通信、关节电机的控制、I/O控制,以及传感信息的采集。主要硬件由COMX和STM32来组成。其中COMX负责EtherCAT通信,STM32采用FSMC机制来读写COMX。STM32是从站的伺服控制器主控芯片,主要进行电机控制和A/D、D/A转换模块的控制,以及负责管理COMX模块的运行流程。其中,伺服通信功能是基于EtherCAT协议进行组网来达到各模块互联和数据交换的目的,这样便于伺服节点的扩展和硬件结构的设计;电机控制方面,采用RS485接口控制SR518数字舵机;STM32的I/O口用于基本的输入/输出功能;A/D通道可以连接传感设备用于机器人的感知,D/A通道用于对语音、电流等模拟量的输出;RS232是开发过程中的调试接口。其硬件结构框图如图2所示。
STM32采用FSMC机制控制COMX,将COMX映射到STM32的内存空间中,对COMX的读写方式与读写SRAM相同。嵌入式模块COMX通过一个50引脚插槽来连接主控芯片,插槽包含了与主机通信必备的控制线总线、16位数据总线和14位地址总线等。COMX与STM32的硬件电路如图3所示。CO MX内存映射到FSMC的第一个存储块的第4个分区中,起始地址为0x6C000000,并且采用8位数据宽度来读写DPM存储区。
[page]
3 软件设计
3.1 软件结构
基于COMX的伺服控制器的软件框架如图4所示。伺服系统的主控芯片是STM32,在软件上采用了ST公司开发的底层固件库来操作硬件接口。在本系统中,主要有RS485通信模块、COMX驱动模块、A/D转换模块、D/A转换模块以及I/O模块。系统中通过COMX来实现EtherCAT通信,采用RS485来控制SR518舵机,同时采用这些模块的API来构建伺服驱动的应用程序。
3.2 COMX驱动设计
COMX驱动的执行流程,在硬件电路连接好的前提下,主要任务是寄存器的配置及通信流程的控制。首先,要配置STM32的相关引脚,将与COMX相关的数据线、地址线、片选线和读写信号线全部设置成复用推挽输出模式;然后,设置FSMC的相关寄存器,配置FSMC时钟、时序逻辑、读写模式、数据宽度等;接着,就是COMX启动检测阶段,由于COMX是独立网卡,内部有独立的系统,只有在它内部系统运行就绪后才能正常通信,这就需要检测COMX提供的一些标志寄存器的相关位,以此来判断内部系统的状态;最后,等COMX一切就绪后就可以正常通信,执行读写操作。
COMX是独立的网卡设备,通过加载不同的固件程序,来实现各种实时以太网通信协议,本系统中使用的是EtherCAT从站协议。在COMX使用之前,要保证固件程序下载到Flash中,同时配置文件也要保存在Flash中。
COMX上电启动时,会自动加载运行固件,并读取配置文件。下载固件时要使用赫优讯公司配套的PCI板卡和cifX Test软件工具,配置文件的下载需要用SYCON.net工具,具体步骤可以查看参考文献。当固件程序和配置文件下载完毕后,就可以使用COMX网卡了。
3.3 COMX读写操作实现
COMX读写模式是基于缓冲的握手方式,在DPM中,主机和netX500系统通过握手标记来划分DPM的数据读写权限,这些握手标记在握手通道中。每个通道都有一对CMD和ACK标记位,当这两个标记位相同时,主机可以写相应的DPM区域;当不同时,主机可以读相应的DPM区域。COMX发送数据的过程如图5所示。
根据以上分析过程,可以设计出COMX发送数据的驱动程序,其执行流程如图6所示。
[page]
COMX接收数据的过程如图7所示。根据以上分析过程可以设计出COMX接收数据的驱动程序,其执行流程如图8所示。
3.4 伺服控制器软件流程
伺服从站控制器在启动后会初始化COMX模块,然后等待COMX就绪。在控制过程中首先会通过邮箱数据发送电机的设置参数,在参数设置完成后就会发送过程命令来启动电机控制,然后进入电机控制循环。在电机控制过程中可以使用邮箱数据发送命令来停止电机控制,在没接到停止命令时会循环接收命令,解析后用于控制电机,直到控制结束。伺服从站控制器的程序流程如图9所示。
4 实验测试
本系统主要进行的实验如下:其一,对COMX伺服控制器的协议兼容性测试;其二,对COMX伺服控制器转发延时的测试。针对以上测试需求,搭建了相应的测试平台。在PC平台上安装netANALYZER应用软件和Wireshark软件。其中netANALYZER用于数据抓取和时间分析;Wiresha rk用于数据报分析和时间抖动分析。在主站上使用德国赫优讯公司的cifX 50-RE网卡和SYCON.net软件,在从站上使用STM32和COMX开发的伺服控制器。采用netANALYZER分析卡抓取数据包,并采用Wireshark软件分析数据,这样就可以测试通信的兼容性和功能的实现。同时也可以采用netANALYZER分析卡的时间分析功能去测试控制器的转发延时。为了分析总线在不同压力下的转发延时,进行了一组数据的测量,并转换为曲线。如图10所示,从站的转发延时基本不变。由于总线从站采用了硬件FMMU的映射机制来获取数据,这一过程延时很短,而且每个从站只处理与自己相关的数据,因此在转发过程中数据的增加基本不影响转发延时。
结语
机器人伺服控制器是机器人组成的关键部件,在使用EtherCAT作为机器人控制协议时,需要关节控制器能兼容EtherCAT通信。为了解决这个问题,本文设计了基于COMX和STM32的伺服控制器,从软件和硬件两方面进行了设计,同时实现了基于FSMC接口的COMX驱动以及EtherCAT通信过程。最后,采用测试工具分析了伺服控制器在不同BusLoad下的转发延时,通过实验分析验证了基于COMX模块的伺服控制器方案的可行性。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』