(南京理工大学 机械工程学院,江苏 南京 210094)
导弹水下发射异于水平陆基发射,具有储弹量更大、反应时间更短、发射率更高、全方位发射率更广、对目标饱和攻击力更强的优点[1]。基于TwinCAT ADS通信的原理,利用VC++进行上位机软件设计开发,上位机能够将指令传递给下位机,使下位机受指令控制运行。同时,上位机接收下位机传输来的反馈信号以便实时观测运动状态。这样能够更好、更简洁地进行数据采集和数据交换。上位机和下位机之间采取ADS通信。ADS通信响应时间极短,能够快速控制电机进行相应的轨迹运动,达到技术指标要求。
本文控制对象是一个能够放置在水下15 m的水下发射装置,其机械结构如图1所示,主要包含发射管、摇架、旋转轴、减速机、伺服电机和底座等组件。其中减速箱和伺服电机安装在旁侧的密封箱内,发射管通过伺服电机以及减速箱的驱动产生一定角度的摆动,实现用户所要求的正弦运动、等速运动以及点动运动。当发射管运动到预期的点火角度,燃气发生器会产生点火信号,并产生压力燃气,使其完成模拟弹发射。
为满足控制要求,将水下发射测控系统的设计分为下位机硬件控制设计和上位机软件管理设计两方面。下位机控制设计基于TwinCAT,主要作用是实时控制电机,并将读取的电机运动状态传递给上位机;上位机控制软件基于VC++,主要作用是将控制信号传给下位机,同时接收下位机实时反馈的电机运动信息。
图1 水下发射装置机械结构图
所研究的水下发射系统主要满足以下技术指标:
① 运行环境在水下15 m。
② 可以满足各种曲线运动模式。例如,等速运动时,运动精度控制在1%;正弦运动时,摆动频率为0.5 Hz,精度优于0.5°。
③ 上位机能够实时显示发射前、发射过程中和发射结束后的状态的一些联动信号,整个实验过程中的检测数据能够保存并回放。
工控机采用了Beckhoff公司的C6920柜式工业PC,采用EtherCAT总线与总线端子各模块以及伺服驱动器进行通信。EtherCAT可以在30 μs之内处理1000个分布式的I/O口,具有拓扑性良好、性能优良以及组成简单等优点。由于其庞大的网络规模,适用于纵向集成[2]。
总线耦合器选用Beckhoff公司的EK1100,将以太网传递的信号转化成为E-bus信号,再通过EtherCAT总线传输给各个端子模块(包括EL系列的模拟输入输出模块和数字输入输出模块以及位置测量模块等)。总线耦合器以及总线的各个端子模块和若干个EtherCAT端子组成一个从站,如图2所示。
驱动器选用Beckhoff公司的AM8000系列伺服电机,该系列伺服驱动器包括单通道和双通道两种不同的通道,支持多种不同总线接口模式,使用更加方便快捷。
图2 水下发射系统总体设计图
为满足上位机设计流程中的功能,上位机管理软件采用VC++中的MFC模块进行编写。MFC模块(Microsoft Foundation Class)即微软基础类库,为用户提供了一个面向对象的编程接口,该层次内包括了Windows API用户界面的部分,可以使用户更加方便简洁地以面向对象的方式来开发应用程序[3]。利用该模块可以便捷地建立人机交互界面,包括实现数据采集的功能和对计算机端口实时监控的功能等。
上位机管理系统的流程图如图3所示。首先登录系统,在系统主菜单中选择需要执行的步骤。主菜单包括系统自检、点动、联动、数据查询等选项,其中,点动需要设置俯仰机构的正反转,而联动需要首先设置采样频率和运行方式,之后再启动电机进入发射状态。下面详细阐述上位机管理系统的设计。
TwinCAT的PLC是基于PC开发的,与传统PLC相比,其数据处理能力以及通信能力都有很大的提升,且其遵循IEC61131-3标准,可以更加便捷地采取ST、FBD、IL、SFC、LD 5种不同的语言进行编程。本文数据采集利用软PLC完成,首先将采集到的数据存储在PLC的临时存储区域内,通过ADS上传给上位机。数据采集的周期有两种,分别是:8 ms,来源于CANopen数据接口传感器的CANopen数据和CAN数据信号;100 ms,来源于电机变频器以及总线耦合器的Profibus-DP数据信号。
上位机软件采用C++进行开发,临时存储的数据以链表形式存储,上位机存储的数据和采集的数据分别独立在不同的线程中,防止了彼此干扰,做到了数据的相对独立。
图3 上位机管理系统总体流程图
Beckhoff公司为了使各种高级计算机语言适用于ADS通信方式,为TwinCAT提供了一组不同的接口组件。这些接口组件均拥有一组接口函数,如为使TcAdsDll适用于VC++,只需要配置完成就可以方便地调用这些接口函数。TwinCAT ADS可以通过两种方式来调用接口函数:① 采用变量名的方式,ADS会给每一个变量分配一个与其相对应的句柄,当用户需要访问的时候,直接获取该变量所对应的句柄即可对该变量进行访问;② 采用地址直接访问的方式,首先使用索引组获得变量的基地址,再通过索引偏移来获取该变量的偏移地址,从而获取需要访问的变量[4]。
TwinCAT的通信方式有很多,采用VC++来实现通信,需要引用的接口函数为TcAdsDll,其引用步骤主要包括:添加接口函数给VC++工程;添加头文件与库函数的路径以及库函数TcAdsDll.lib到VC++工程中。其中添加接口函数给VC++工程中需要将#include“C:TwinCATADS ApiTcAdsDllIncludeTcAdsDef.h”和#include”C:TwinCATADS ApiTeAdsDllIncludeTcAdsAPI.h”两个头文件均放到VC++工程头文件中[5]。操作完成后,界面如图4所示。
图4 添加头文件及库文件到VC++中
通过上述操作即可以调用TcAdsDll中的接口函数,然后需要进行上位机与TwinCAT PLC的数据读写,关键步骤如下。
① 对ADS端口进行初始化[6],主要使用的函数有AdsPortOpen()和AdsGetLocalAddress(pAddr)。
② 通过CreateHandles()函数创建并初始化句柄函数[7],因为TwinCAT与MFC是通过ADS进行通信的,此处通过nPort=AdsPortOpen()打开ADS,之后使用nErr=AdsGetLocalAddress得到ADS的适配器地址,从而完成通信。
③ 读写PLC中的数据,主要使用到AdsSyncReadWriteReq()、AdsSyncWriteReq()、AdsSyncReadReq()三个函数[8]。AdsSyncReadWriteReq()包含了AdsSyncReadWriteReq(pAddr,0xF020,0x0,sizeof(Status Word),&Status Word)和AdsSyncReadWriteReq(pAddr,0xF020,0x2,22,&Input22bByte[0])。前者用于从ADS中读取状态信息,pAddr为ADS的地址位,0xF020为段地址,0xO为偏移地址,sizeof(StatusWord)用于定义StatusWord的数据长度,&StatusWord为接收数据的缓存地址。而后者用于从ADS读取端口信息,前部变量相同,&Input22Byte[0]用于接收数据的缓存地址[5]。
④ 关闭ADS端口。
根据水下发射测控系统的总体设计方案,搭建水下发射实验平台,如图5所示。考虑到水下15 m无波浪力影响的发射不会对发射过程造成过大影响,故本次实验在陆基表面进行。
图5 水下发射平台实体图
在TwinCAT的运动模式下,对发射筒转动角度时间进行曲线拟合,并采用最小二乘法来计算不同控制情况的下的角速度。为确保精确度,进一步通过拟合误差计算公式
(1)
来计算其实际角速度ω0与拟合角速度ω之间的误差。
选择等速运动选项,并设置需要的等速运动速度参数,单击“运行”按钮即可开始等速运动实验,选取角速度为30°/s,收集实验数据得到理论角速度和实际角速度的对比图(见图6)和其中一个循环周内的速度对比图(见图7)。
图6 30°/s角速度下理论与实际角速度曲线
图7 30°/s角速度下一个循环周期内理论与实际角速度曲线
由图7可见,加速段的角位移为10°,匀速段的角位移为40°,而减速段的角位移为10°,符合匀速段的角位移大于40°的要求。为进一步验证其误差是否在精度要求之内,从实验数据中选取9组数据,计算拟合误差,其结果如表1所示。由表1可知,拟合误差均低于0.01%,而角速度误差均小于1%,可以忽略不计,等速运动满足技术要求。
表1 9组30°/s角速度下误差分析表
在TwinCAT的运动模式下,选择正弦运动模式,收集数据拟合曲线,拟合曲线与理论曲线基本重叠,如图8所示。运动角度范围在设定的85°~95°之间,运动频率为0.5 Hz,为保证结果准确性,再从实验数据中选取9组数据进行误差分析,结果如表2所示。平均角度误差均控制在0.05°以内,最大角度误差均控制在0.5°内,正弦运动满足技术要求。
图8 正弦运动实际角速度曲线
实验序号平均角度误差最大角度误差实验序号平均角度误差最大角度误差10.050.2460.050.1720.020.2970.050.2730.010.2480.040.2140.040.1990.050.2650.030.19
设计了基于VC++和TwinCAT的水下发射系统,上位机与下位机之间使用ADS进行通信,根据设计方案搭建实验平台,使其运动轨迹能够满足技术指标要求。在上位机设计过程中,着重分析了TwinCAT PLC与上位机之间信息读写功能的实现以及TwinCAT与VC++接口的实现。实验平台在水下搭建完毕之后,进行了两种运动的实验检测,结果证实基于TwinCAT的水下发射平台能够满足技术指标要求,对水下平台的控制研究具有很大的参考价值。