大口径火炮链式自动化弹仓控制系统设计
2020-06-17袁斌斌
焦 旸,袁斌斌,王 喆,郭 婧
(西北机电工程研究所,陕西 咸阳 712099)
链式自动化弹仓是火炮自动供输弹系统中十分重要的一环。它的结构是各弹筒相互串成筒链,各弹筒中存储弹丸,在控制系统的作用下,由链轮驱动弹筒,将指定的弹丸输送至弹仓取弹口[1]。由于链式自动化弹仓所处的自动供输弹系统采用全电驱动,电机驱动器数量较多,电磁环境复杂,因而其控制方式和通信方式的选择就尤为重要。
针对自动化弹仓的应用环境及定位需求,选择伺服驱动器独立完成位置环精确控制,无需外加控制电路,提高了系统的抗干扰能力。通信方式上选择CAN现场总线,采用CANopen协议与可编程控制器(PLC)实现数据交换,由于其高可靠性和强实时性,能够满足系统高性能的要求。
1 弹仓控制系统组成
链式自动化弹仓控制系统以伺服驱动器为控制核心,通过CAN总线与PLC连接,应用SSI通信协议采集编码器信号,I/O参数化配置后采集外部开关量信号及控制电机刹车系统。弹仓驱动电机选用国产永磁同步电机,体积小,效率高,动态响应性好,易于实现高速高精度控制。
该系统采用全闭环控制,伺服电机尾部旋转变压器提供电机速度反馈闭环和电机相位反馈。安装在机械终端的多圈绝对值编码器提供位置环反馈信号,编码器与链轮同轴安装可消除多级机械传动误差,提高了弹筒定位精度。
2 系统工作原理
链式自动化弹仓每个弹筒与弹链首尾相连形成一个循环链结构,弹丸存储在弹筒中,每个弹筒上下各铰接有两个滚轮,下部铰接有一个支撑轮,驱动轴固联有上下两个链轮,弹仓另一端设置有结构相同的从动轴与从动链轮[2]。链式自动化弹仓动作时,由伺服电机通过减速机带动驱动轴转动主动链轮,主动链轮拨动配合弹筒的滚轮与支撑轮,带动整个循环链结构沿着架体的导轨转动,将需要的弹筒转到取弹口。
链式自动化弹仓工作流程如图2所示。
可编程控制器PLC在收到上位机指令后,根据射击要求确定弹丸的种类和数量,控制弹转运机构转至相应的弹仓;伺服驱动器通过I/O口采集安装在取弹口的直返式光电开关信号,经CAN总线上传至PLC,判断取弹口弹筒内是否有弹;若有弹,控制弹转运机构取走弹丸,若无弹,转动弹仓使下一弹筒到达取弹口,继续检测是否有弹。弹转运机构取弹完成后,PLC判断取弹数量是否达到要求,若达到,停止取弹,未达到,继续执行取弹流程。
3 控制方式及通信方式设计
链式自动化弹仓所在的自动供输弹系统采用全电驱动,可编程控制器(PLC)通过CAN总线与各个伺服驱动器相连。由于伺服驱动器超过20个,导致CAN总线节点非常复杂,如果PLC与单个驱动器节点通信量大,很容易造成CAN总线堵塞丢帧,影响整个控制系统的稳定性。
为了避免上述情况发生,笔者采用了两种方法:
1)控制方式采用PLC+ Auto-Run控制,即PLC只负责发送控制指令,接收驱动器运行状态,伺服驱动器接收到指令后,控制完成所有的运动控制。
2)通信方式采用CANopen事件驱动异步传输,即当驱动器状态或某个变量数据发生变化时,数据立刻被发送出去。
3.1 控制方式设计
PLC+ Auto-Run控制方式中,伺服驱动器支持电流环、速度环、位置环控制模式,用于驱动交流永磁同步电机,具有灵活的正弦波梯形波换相及矢量控制功能,同时具备可灵活配置的反馈输入端口和输出端口,可以很好地满足系统精确控制要求。
在上电初始化后立即执行自运行程序,配置自动化弹仓定位模式需要用到的参数,如加速度,减速度,速度,急停减速度,位置等。配置完成后,通过mo=1命令使弹仓驱动电机加使能,随后进入“while”循环程序中等待。PLC收到上位机发送的射击指令后,通过CAN总线发送约定的一帧数据,接收到数据后伺服驱动器中的用户变量数据发生变化,“while”循环程序中“if”条件满足,执行相应代码,控制弹仓驱动电机动作。
弹仓驱动电机运动过程中,驱动器对应状态字(statusword)发生改变,经CAN总线上传至PLC,PLC对上传的数据进行解析处理,判断电机是否完成动作,若在规定时间内电机完成动作则发送位置查询指令,比较设定位置与实际位置误差,误差满足设计要求则本次运动成功完成,误差过大则上传定位超差信号;规定时间内驱动器未上传运动完成,则需断掉电机使能,连接驱动器控制软件查找原因。
伺服驱动器工作过程中,通过portB采集旋变信号,内置PI算法控制速度环,通过portA采集多圈绝对值编码器信号,内置P控制器控制位置环,I/O输出口参数化配置后自动应用刹车功能,输入口配置后循环采集直返式光电开关信号,检测取弹口是否有弹。其调试软件EASⅡ自带Record功能,能够智能化采集设定电流、实际电流、设定速度、实际速度、设定位置、实际位置及位置误差等信号,很好地解决了PID调试过程中的曲线观测问题。
PLC+ Auto-Run控制方式中,PLC控制开始运动只需发送一帧指令,整个运动过程中,仅需判断接收的驱动器状态字(statusword),待运动完成,再发一帧查询位置指令,比较定位误差即可。如此大大减轻了PLC的工作量,为其完成自动化装填系统复杂时序控制奠定了基础。
3.2 通信方式设计
PLC与伺服驱动器通过CAN总线连接,应用CANopen协议进行数据通信。CANopen协议是基于CAN总线的应用协议,由于其精炼透明,便于理解,具有较高的实时性和可靠性,近年来广泛应用于分布式控制及嵌入式系统为基础的工业控制系统[3]。CANopen协议的核心描述子协议是DS301,在不同的应用行业都会起草一份设备子协议,子协议编号一般是DSP4xx,数字控制运动产品的设备子协议为DSP402,本文应用的伺服驱动器完全符合DSP402子协议。
3.2.1 PDO事件驱动异步传输设计
CANopen应用层详细描述了各种不同类型的通信对象(COB),这些通信对象都是由一个或多个CAN报文来实现的。通信对象分为以下4种模型:过程数据对象(PDO消息),用来传输实时数据;数据服务对象(SDO),用来读/写其他CANopen设备的对象字典;预定义对象(同步、时间和紧急报文);网络管理对象,用来控制NMT状态机(NMT消息)和监测设备(心跳、启动报文)[4-6]。上述CANopen对象中,SDO和PDO均可用于控制过程中的数据传输,但由于SDO只能采用应答式通信,且实时性不高,故采用SDO配置PDO映射,PDO传输实时数据的通信方式[7]。
CANopen协议中定义了3种触发PDO传输方式[8]:
1)事件驱动,即当输入值发生变化时,数据立刻被发送出去,触发事件可以是设备内部事件,也可以是周期性运行的定时器行为[9]。
2)远程请求或轮询,即CANopen设备收到远程帧后触发发送PDO.
3)同步传输,即CANopen节点收到由管理节点发出的同步报文(同步对象Sync)之后,根据触发报文条件向总线发出PDO报文。同步传输又可分为周期性和非周期性,周期性是指收到一定数量的同步报文之后开始发送,非周期性指PDO触发条件成立之后,收到一个同步对象后马上发送PDO[10].
事件驱动不需要连续地发送过程数据,只需要发送已经被改变的数据,这样总线带宽的占用率被大大降低;另一方面,由于被改变的输入数据无需等到下一次主机轮询才发送,因此响应时间也大大缩短。链式自动化弹仓所在的自动化装填控制系统对响应时间和总线带宽要求比较高,利用事件驱动的异步PDO传输成为其最佳选择。
伺服驱动器预定义了两路PDO映射(PDO1和PDO2)。其中PDO1用于处理驱动器的控制字(0x6040)和状态字(0x6041),控制字映射于RPDO1,状态字映射于TPDO1,传输方式均为异步事件传输,当电机运动状态改变时,驱动器自动上传表征当前电机状态的状态字。由于系统采用自运行程序执行运动指令,因此PLC没有配置控制字映射。PDO2专用于处理二进制命令,属于伺服驱动器特色功能,应用其查询编码器位置反馈,可以很方便地知道定位误差是否满足要求。
PDO3、PDO4属于用户可配置过程对象,为了减少数据通信量,系统在满足功能的情况下配置了PDO3.RPDO3配置接收驱动器用户变量Ui[1],TPDO3配置发送驱动器用户变量Ui[2],均配置为异步事件触发,当数据改变时,立即触发发送数据。弹仓驱动器节点ID为7,配置TPDO3报文如表1所示,配置RPDO3报文与TPDO3类似,在此不做赘述。
表1 TPDO3事件驱动触发配置报文
3.2.2 系统通信流程设计
系统工作时,伺服驱动器加电后上传Boot-up消息至CAN总线,PLC检测到后发送相应ID的NMT信息,使驱动器进入预操作状态。在预操作状态下,PLC发送SDO配置驱动器相应PDO映射。配置成功,PLC启动节点,伺服驱动器节点回复启动完成状态字。随后,PLC查询位置判断机构状态,状态正常则给电机加使能等待。收到上位机射击指令,PLC改变Ui[1]的值,通过TPDO3自动发送至弹仓驱动器,经判断处理,控制弹仓驱动电机转动相应弹筒至取弹口。
运动结束,驱动器发送状态字(0x1637)表征运动完成,PLC经TPDO2发送查询位置二进制指令,驱动器回复当前编码器位置,PLC判断编码器位置是否在设定位置误差范围内。若在,则运动完成;不在,上报定位超差故障至上位机。安装在取弹口的光电接近开关信号经I/O采集后,赋值到Ui[2]的bit0,有弹则bit0为1,无弹bit0为0,数据改变则由驱动器TPDO3发送,实现了有弹无弹的实时检测。此种方式无需PLC不断轮询,减少了数据通讯量,且实时性得到很大提高。
4 试验测试
系统的监控界面由CANTest及伺服驱动器监控软件EASⅡ两部分组成,CANTest监视PLC发送运动控制指令及驱动器状态回复,EASⅡ则采集电机运动曲线。系统通信速率500 Kbit/s,弹仓驱动器节点ID为7,完成PDO配置后,PLC通过发送Ui[1]控制电机运动,具体报文内容如表2所示。
表2 PLC控制报文及驱动器回复报文
驱动器在收到PLC发送的开始运动命令后,进入循环程序,配置好相应的速度、加速度、位移等运动参数,启动电机完成相应的动作。开始运动后,驱动器上传状态字0x1237;运动完成后,上传状态字0x1637.PLC收到运动完成状态后,查询反馈位置,判断位置误差。
驱动器监控软件EASⅡ以Begin motion为触发信号,采集运动过程中的位置及位置误差曲线,如图4、5所示。系统采用16位多圈编码器,链式自动化弹仓转动一个弹筒编码器运动87.3°(对应15 888个脉冲),根据射击时序,1 s完成运动。由图可知,电机到位位置31 700个脉冲,与报文反馈位置0x7BD4一致;定位误差为0.41°,满足设计指标。
5 结束语
该链式自动化弹仓控制系统已装配完毕,并进行了多次试验。经过验证,系统的整体性能均满足设计要求,能够可靠地完成弹筒定位及有弹检测功能。