【装备理论与装备技术】
制退机是火炮反后坐装置的主要部件,对反后坐装置及火炮整体的性能有非常重要的影响。现有的节制杆式制退机通过机械调节改变节制环上流液孔面积的大小从而调节液压阻力[1],仍然存在不能在相同射角和不同装药量的情况下调节后坐长度等缺陷。文中的研究对象是一种新型阀控式制退机,其优势在于可根据不同发射工况实现流液孔隙的改变,对液压阻力变化规律进行预先调节。为了获得理想的液压阻力曲线,在制退机上应用电机控制技术以使反后坐装置能够按照预设的目的对火炮的后坐阻力进行控制[2]。
火炮后坐过程十分短暂,为保证液压阻力的变化平稳,流液孔面积的变化必须拥有极高的控制精度、响应性和实时性。直流伺服电机利用脉冲精确定位,响应时间短,速度、位置控制具有很高的精确度。CAN现场总线技术相较传统的伺服控制技术而言实时性和可靠性更强,CANopen协议是基于CAN总线的应用层协议,因此本文提出了一种基于CANopen协议的伺服电机控制方案。
电机控制活塞调节液压阻力的原理如图1所示,将电机安装在制退杆的内腔,减速器固定在杆内并与机械传动轴相连,传动轴外侧连接动活塞,动活塞与定活塞上按相同格局布有大小相等的漏口,即流液孔。定活塞上有机械限位保证两者错开角度在一定范围内。电机另一侧经套筒向外引线与驱动器、电源和嵌入式微控制器相连接,嵌入式微控制器与上位机通过串口连接用于接收实时数据。
工作时制退杆固定不动,外侧制退筒受力运动挤压工作腔的液体,同时微控制器接收到触发信号,驱动电机带动传动轴控制动活塞上流液孔按照预设规律运动与定活塞小孔错开一定角度,工作腔中的制退液经两孔错开的缝隙进入非工作腔,非工作腔因制退杆抽出而产生真空,形成液压阻力。
1.动活塞;2.定活塞;3.减速器;4.伺服电机;5.活塞筒套;6.活塞定位端盖;7.传动轴;8.机械限位;9.流液孔
图1 制退机结构示意图
CAN现场总线是用于解决工业现场智能仪器、控制器和执行机构之间数字通信和与控制系统之间传递信息问题的一种工业数据总线。在基于CAN总线的工业自动化应用中,CANopen协议为CAN网络提供了标准、统一的通讯模式,在应用层面为驱动设备、控制器、可编程控制器或编码器等标准设备定义了相应的功能[3]。DS301是CANopen协议的基础协议,其中描述的设备模型为CANopen程序设计提供了整体框架,其模型如图2所示。
通信对象指具体服务中可能要用到的参数,包括了传送数据用的不同类型的CAN报文[4]。CANopen中定义了4种通信对象:网络管理对象(NMT)负责主从站间的状态管理、服务数据对象(SDO)负责配置节点参数、过程数据对象(PDO)负责实时传输数据、特殊功能对象(同步对象SYNC、应急对象EMCY等)用于同步通信对象和处理错误报警等。
通信对象的集合就是对象字典。对象字典是CANopen协议的核心概念,它预定义了一个设备所有的功能参数和通信参数,就像一个设备接口,可以让别的设备从中读懂该设备的内容[5]。对象字典中的每个对象都有一个16进制的地址(索引)可供寻址,其中索引0x1000到0x1FFFF的通信协议对象在DS301协议中有详细描述,索引0x6000到0x9FFFF对应的标准设备协议区在伺服驱动子协议DSP402中有详细描述。
图2 CANopen设备模型示意图
运动控制方案的设计基于对火炮后坐运动规律的分析。制退机内部的流体运动十分复杂,为了获得理想后坐长度,液压阻力在后坐过程中需不断变化。相较于机械调节的稳定快速,电控方案对响应和执行速度提出精确要求,即要在后坐过程的200 ms左右时间内完成对流液孔面积的非线性变化控制。
传统的电机转速控制技术在连续调速时存在过渡时间,无法满足制退机的极短工作时间要求。从制退机工作原理的角度出发分析,流液孔面积的改变对应两个活塞的错开角度,编码器输出端脉冲数可经减速器转化为转动轴转角,因此若要在规定时间内让活塞转到指定角度,就要让电机转到指定位置,即编码器在对应时刻输出对应的脉冲。
DSP402是用于描述伺服驱动与运动控制的CANopen子协议。对基于DSP402协议的电机控制模式进行比较分析,其中的位置插值模式(Interpolated Position Mode)是一种基于标准位置模式的算法,其原理如图3所示:主机在同步周期内向驱动器轴发送插值运动数据,驱动器轴根据接收数据计算从一个位置点到下一个位置点所需的速度、加速度,有足够多的插值点电机就能按规定轨迹运行。
位置插值从理论上符合本文所研究的基于预设目标驱动电机按步运动的控制方案。通过前期流场仿真得到一定 后坐速度和流液孔面积下工作腔的压力值解出液压阻力系数K,再由式(1)和式(2)采用迭代方法计算出后坐速度和后坐阻力随时间的变化关系,从而得到流液孔面积关于动活塞转速的变化规律[6]。
(1)
FR=FΦh+Ff+FT+F
(2)
(3)
图3 位置插值算法原理示意图
活塞转角与编码器输出脉冲的关系如下
(4)
式中; P为编码器脉冲数;θ为活塞转角;i为减速器减速比;N为编码器分辨率,电机采用的行星齿轮减速器减速比为81,增量式编码器的分辨率为2000PPR。计算得到一次后坐运动中要求的电机运动参数如表1所示。
表1 后坐运动时间与电机运动参数
时间/ms活塞转角/(°)编码器脉冲数(qc)时间/ms活塞转角/(°)编码器脉冲数(qc)00.00 01406.733 04250.10451607.783 517200.803621808.904 023401.9085920010.054 543602.951 33422011.155 040803.901 76323511.735 3031004.822 17924011.805 3341205.752 599
为了准确监测试验结果,需要以插值数据点为基础计算出电机的运动轨迹,即编码器的输出脉冲数曲线。3次样条插值是一种通过已知点来模拟未知函数的算法,在Matlab软件中利用spline插值函数可以将表1中的数据点拟合成完整的编码器输出曲线,如图4所示。
图4 编码器输出曲线
控制系统的核心是基于Cortex-M4内核的STM32F407ZGT6嵌入式微控制器,运行速度最高达到168 MHz,拥有1 MB程序存储器和192 KB的RAM,该控制板具有强大的外设功能,通过板载的CAN接口就可以实现与驱动器的CAN通信,无需额外的硬件电路设计。ST公司开发了专用于STM32F4系列控制器的固件库代码并将其集成到了Keil MDK编程开发环境中[7]。STM32配置包括时钟使能、GPIO引脚分配、中断优先级管理等,下载固件库源码到MDK工程中编译即完成了系统的硬件配置。
板级支持包BSP(Board Support Package)介于主板硬件和软件驱动程序之间,用于实现对操作系统的支持,为控制板的硬件功能提供统一的接口。BSP的设计以不同的嵌入式操作系统为基础,遵循简洁原则,保证系统的正常启动[8]。BSP程序的主要设计流程如图5所示。
图5 BSP设计流程框图
完成STM32硬件配置和中间层设计的基础上进行CANopen协议软件设计。软件层设计主要包括操作系统和CANopen通信协议两部分。
RTOS(Real Time Operating System)实时多任务操作系统是嵌入式应用软件的基础开发平台。RTOS是嵌入在代码中的一段程序,为在单片机上运行的嵌入式控制系统调度任务,优化CPU分配,加快系统响应时间。常用的嵌入式操作系统包括Linux、uC/OS-Ⅱ、FreeRTOS等,其中FreeRTOS实时操作系统具有源码公开、多平台支持、调度策略灵活等特点,非常适合在单片机上运行[9]。FreeRTOS提供了五种内存分配方案用于不同的应用场合,其中内存管理策略heap_4采用最佳匹配算法灵活申请调用和释放内存,同时用合并算法将剩余内存合并成新的大块,适用于在应用代码中直接使用移植层内存分配方案的应用程序且可以重复分配和删除具有相同堆栈空间的任务,便于后期实验调整电机运动参数,因此选择此内存分配策略。
CANopen协议栈设计以官方提供的CanFestival开源协议栈源码为基础移植到所使用的STM32F4开发板中。协议栈中定义了3.1节中描述的通信对象的功能。主控程序设计首先进行PDO和SDO的配置。PDO配置包括RPDO和TPDO,根据DS301协议中的索引1 400~1 403 h、1 600~1 601 h、1 800~1 803 h和1A00进行设置。所有控制报文均由SDO写入,包括电机的操作模式、目标位移、运行速度、加速度等参数。配置完成后处理设备状态机,状态机用于描述设备状态和驱动器控制顺序,只有当驱动器使能时控制程序才能启动,用控制字6 040 h可以更改状态并用6 041 h读取设备状态。最后进入工作状态,通过索引6 060 h将工作模式转换到插值模式[10],将表1中的参数按顺序写入插值程序中,完成程序设置。控制程序设计流程如图6所示。
图6 插值位置程序设计流程框图
将所有配置完成的硬件进行连接即可进行运行测试,如图7所示。
图7 电机运行测试
结果监测根据位置插值模式所用的索引6 064 h从编码器中读取电机的实际位置(Position_Actual_Value),将传输数据对象TPDO的位置数据采样周期设置为10 ms。根据上位机实际获取的编码器端输出脉冲数据计算出程序控制下的实际运动曲线如图8所示,与2.2节理论计算结果对比,电机运行过程中活塞转角误差在±0.009°以内保持平稳,在启动时由于响应原因产生滞后误差,最大为+0.046°,根据式(3)可知启动时流液孔面积为最大,其变化率对结果值影响可以忽略。制动时产生超调误差,最大为-0.049°,在后续研究中可以考虑采用机械限位等方法予以弥补。
图8 上位机监测结果
针对传统控制方法的不足之处提出了基于CANopen和STM32微控制器的电机控制制退机液压阻力方案,根据仿真计算的某工况下活塞流液孔面积变化规律推得活塞转角即编码器输出脉冲数随时间的变化关系,通过基于位置插值算法的控制模式完成了所要求的电机控制程序,并通过上位机的反馈数据将实际运行结果与理论值进行了比较。
运行测试结果表明程序具有一定控制精度,采用位置插值模式的控制系统方案能够驱动电机按照预设目标运行到设定好的目标点。在此基础上可以进行后续的坠落模拟试验探究液压阻力控制效果,并且考证电机体积、震动在实际工况下的可行性问题。
[1]纪志明,张华第,郭朝勇.火炮液压式驻退机后坐动态过程分析[J].兵工自动化,2000(1):33-36.
[2]肖本勇.一种变阻力火炮制退技术研究[D].南京:南京理工大学,2016.
[3]易灵芝,陈海燕,陆启湘,等.基于CANopen协议的伺服控制模式的实现[J].控制工程,2013,20(3):533-536.
[4]徐德慧.现场总线嵌入式技术和应用研究[D].上海:上海交通大学,2009.
[5]YU Guangcan,ZHOU Chunjie,HUANG Shuang.A protocol for Automatic Node-ID Binding in CANopen Networks[J].Journal of Communications,2012:710-712.
[6]万云瑞.可调节式反后坐装置设计与分析[D].南京:南京理工大学,2018.
[7]赵飞.基于STM32的CANopen运动控制主从站开发[D].武汉:华中科技大学,2011.
[8]刘乃生,苑中军.嵌入式系统中BSP的设计与实现[J].潍坊学院学报,2007,7(4):45-47.
[9]张龙彪,张果,王剑平,等.嵌入式操作系统FreeRTOS的原理与移植实现[J].信息技术:2012(11):31-34.
[10]施磊.基于CANopen的伺服控制系统研究与设计[D].杭州:浙江工业大学,2016.
Citation format:YANG Jingyu, LIN Zhichen, ZHAO De, et al.Design of Hydraulic Resistance Control Scheme for Recoil Mechanism Based on CANopen [J].Journal of Ordnance Equipment Engineering,2020,41(06):37-41.