基于RCM5700的分布式仪表设计
2011-06-05贺鹏程
贺鹏程
(海军装备部驻重庆地区军事代表局,重庆 400042)
仪表显示是模拟器中重要的一部分,常见的模拟仪表可分为力矩自整角机式仪表、伺服系统式仪表、步进电机式仪表、电子式仪表等。其中由于步进电动机工作时的步数或转速不受电压波动和负载变化的影响(在允许负载范围内),也不受环境条件(温度,压力、冲击和振动等)变化的影响,只与控制脉冲同步;同时,它又能按照仪表控制的要求,快速起动、停止、反转及可在较广的范围内通过改变脉冲频率来调节转速。因此,步进电动机[1]在飞行模拟器中得到了广泛的应用。
以RCM5700[2]为控制核心且具有以太网[3]传输功能的仪表是一种新颖的自动化仪表。与传统的微控制器相比较,RCM5700在功耗、处理速度以及性价比方面都具有更大优势,大大提高了仪器的性能;同时具备快速以太网开发模块,可以利用以太网开放性好、通信速率高等特点来克服以往数据传输接口繁琐、统一性差的缺点,十分适合模拟器的环境。
1 系统组成及工作原理
系统工作原理及组成如图1所示。首先系统打开电源后,仪表上电后根据MCU的A/D采样数据自动清零,即指示到表盘刻度的零点,然后尝试网络连接,在网络通信正常以后上位机通过网络向仪表发送显示数据,仪表进行指示。
图1 系统结构图Fig.1 Overall block diagram of instrument system
2 硬件电路设计
2.1 MCU控制系统
RCM5700是由Digi公司推出的一种针对以太网应用的高性能微处理器模块,其特点有尺寸小;核心处理器为工作频率可达50.0 MHz Rabbit5000;多达35条通用输入/输出线,每条最多可被配置为4种其他功能;具有128 kB的静态随机内存和1 MB的内存;外部输入/输出总线可作为8条数据线,8条地址线(与并行输入/输出线共享)及输入/输出读/写进行配置;具有备用电池实时时钟和看门狗监控程序。
RCM5700已配有闪存、双时钟(主振荡器和实时时钟)以及一个复位和管理Rabbit5000所必需的电路,因此只需要对RCM5700的I/O端口进行分配即可。
2.2 电机驱动电路设计
仪表中的步进电机选用北京斯达微步控制技术有限公司的20H23H-0204B型两相混合式步进电机。考虑到步进电机低速转动时存在振动和噪声大的固有缺点,系统采用了带有细分功能的驱动器A3979作为步进电机驱动芯片。
A3979[4]可用于两相电机整步、半步、1/4步和1/16步模式驱动,输出驱动电压可达35 V、电流达2.5 A,内置的电流调节器能够细分和平滑电流变化,可以有效降低电机噪声,增强电机步进的准确性;同时具有宽滞回供电模式和欠压锁定(UVLO)、交叉电流保护和过热保护等功能。A3979最大的特点是具有衰减模式(decay mode):能够按照片内DAC输出的不同,自动进行衰减模式的选择,通过延缓电机的驱动电动势变化来减少电流波形的失真,以此提高步进电机转动的精度。
为了有效减弱步进电机的低频振动,同时提高电机运转精度,A3979的驱动模式采用1/16步模式,故将A3979的引脚MS1和MS2接为高电平。其电路原理如图2所示。
图2 电机驱动电路原理图Fig.2 Schematic of motor drive
考虑到A3979对输入信号的电压和电流均有要求,因此需要设计MCU与驱动器的接口电路。该接口电路采用ADUM1200作为核心芯片。
ADUM1200是一种基于磁隔离技术的双通道数字隔离器,不需要外接限流电阻;同时磁耦合的输入输出引脚内部含有施密特整形滤波电路,能够与ARM、DSP等高速设备直接相连,且不需要驱动元件。在电路中,ADUM1200将MCU的输出信号(电机方向信号和脉冲信号)从3.3 V高电平转换为驱动器要求的5 V,同时增强其驱动能力。
2.3 仪表清零方案选择
在步进电机仪表中,实现仪表数据指示的基础是参考零点,即表盘刻度为0的位置。由于所有转角都是相对于该零点的,因此步进电机在转动之前必须进行零点标定。零点标定的方法主要有专用芯片法和传感器法两种。
1)专用芯片法
这种归零方法需要专用的电机驱动芯片支持,驱动芯片具有步进电机停转检测器SSD(stepper stall detector),如飞思卡尔的MC33991、MC9S12HZ等。通过在零点位置安装停挡板,步进电机在归零的过程中与停挡板发生碰撞,SSD可以立即检测到电机的停转,从而实现了归零的目的[5]。
这种方法稳定可靠,但需要专用芯片支持,对电机的整体驱动时序也有一定的要求,通用性较差。
2)传感器法
传感器法是在零点处安装位置检测传感器,如霍尔开关、零位光栅等,当步进电机回到零点位置的时候,传感器给出检测信号,经过MCU判断,使电机停转,到达零点位置。
这种归零方法较为可靠,但电路设计较为复杂,安装的工艺也有相应的要求,即传感器的安装和指针零点的位置需要较为固定。
考虑到专用芯片法比较昂贵的价格,并且不利于电机的控制,系统使用了传感器法,设计采用传感器法,通过在零点处安装零位光栅作为检测传感器,当步进电机回到零位时,传感器给出检测信号,经过放大器后,通过MCU的A/D采样判断转盘是否旋转到缺口位置,再根据表盘零点位置与缺口位置的固定角度,令电机指针停在零点位置。通过仪表实际检测,该方法归零可靠,精确度较高。
光电耦合器OPTOISO1由发光二极管和光敏三极管组成。仪表电机的转轴安装了带有缺口铜转盘,可以对发光二极管发射的光进行反射,当缺口对准OPTOISO1时,由于缺口反射光线很少,所以光敏器件的电气特性会有很大变化。通过MCU的A/D采样通道得到三极管集电极电压,判断转盘缺口位置是否到达正对OPTOISO1的位置。如果到达了这个位置,再根据刻度盘零点与OPTOISO1之间固定的角度差,调整指针回到刻度零点。
清零电路原理如图3所示。
图3 清零电路原理图Fig.3 Schematic of return-zero
3 嵌入式软件设计
仪表系统需要完成的功能如图4所示。
图4 软件功能框图Fig.4 Block diagram of software
初始化的对象包括MCU、看门狗和TCP/IP协议栈和电机控制电路等。MCU需要设置中断类型、中断优先级。看门狗需要设置看门狗定时溢出时间和数据保护。电机驱动电路需要设置电机驱动方向和电机起始速度。在完成初始化后,MCU进入工作状态,等待接收来自数据采集计算机的控制指令,以调整电机转动,进行仪表指示。
3.1 看门狗的设定
为了保持系统运行的稳定性,设置了看门狗监视程序。Dynamic C[6]提供了方便的软件看门狗函数,说明如下:
wd=VdGetFreeWd(count)//对一个空闲的虚拟看门狗进行初始化
VdHitWd(wd)//对看门狗计数器复位
VdReleaseWd(wd)//释放一个虚拟看门狗
其中count的取值范围为0~255,相对应的时间为0~16 s。设计将看门狗的定时器溢出时间设定为2 s。因此,程序必须在此期间内触发看门狗,将其清零,否则系统将复位。
3.2 步进电机控制
根据所选步进电机的参数,首先需要设定转动角度与转动步数的关系。设计所用的电机为二相步进电机,步距角0.9°/1.8°。为提高电机定位精度,采用1/16步运行模式,即电机采用二相64拍工作方式,步距角为1.8°/16。可得出电机转动一圈,需要360×16/1.8=3 200个脉冲。但是,仪表指针的定位还需要根据表盘刻度分布,进行步进值与刻度值的转换。
失步和过冲现象分别出现在步进电机启动和停止的时候。一般情况下,电机的极限启动频率比较低,而仪表要求的运行速度比较高。如果电机以要求的运行速度直接启动,因而该速度超过极限启动频率而不能正常启动,轻则可能失步,重则根本不能启动,产生堵转。电机运行起来以后,如果达到终点时立即停止发送脉冲串以令其立即停止,则由于系统惯性作用,会使电机转子转到接近终点平衡位置的下一个平衡位置,并在该位置停下,产生过冲现象。因此在步进电机启动或停止时就需要进行加、减速控制从而精确控制电机运转。设计时采用恒加速度算法,其原理如图5所示。
图5 步进电机加减速时脉冲频率变化图Fig.5 Frequency chart of stepper motor acceleration and deceleration
程序采用定时器中断方式控制电机变速即通过不断改变定时器装载值的大小来改变脉冲频率。定时器的溢出频率应为2倍的控制脉冲频率。
3.4 仪表清零流程
根据仪表清零电路的设计,仪表系统选用MCU中的A/D转换模块,进行转盘位置的判断,从而实现仪表清零。
仪表清零的处理流程如图6所示。
图6 仪表清零流程图Fig.6 Flow chart of instrument clear
由于A/D采样存在一定的误差,设计采用平均值法进行采样,即每次电机位置采样时,循环A/D采样10次取平均值。
3.5 仪表任务设计
仪表分系统采用μC/OS-Ⅱ多任务实时内核,在程序实现上同样采取模块化的思想,每个仪表的程序流程、模块划分和任务划分都是一样的,不同之处在于控制步进电机的个数有多有少,但控制方法是一样的。仪表分系统的程序模块划分如图7所示。
每个任务的主要功能及流程说明如下:
1)主任务线程Main_Task
图7 系统程序模块Fig.7 System software modules
主任务线程为μC/OS-Ⅱ运行的主任务,负责建立UDP通信任务线程和电机控制任务线程,主要完成仪表的清零、创建子任务、初始化硬件层、ARP初始化和UDP初始化。其中仪表的清零采用AD采样来判断电机是否转动到OPTOISO1的位置,然后再转动固定的步进值使得指针指向刻度盘的零位置。
2)UDP通信任务UDP_Task
该子任务负责完成UDP数据包的接收、处理、提取网络数据,并进行数据格式的判断和转换。首先该模块根据RecUdpQFlag判断消息队列,如果接收到UDP数据,对数据进行提取和转换。
3)电机控制任务Steel_Task
该任务主要完成步进电机的驱动控制。根据所选步进电机的参数和表盘刻度分布,设定转动角度与转动步数的关系。根据接收到的网络数据以及当前的指示值,计算出步进电机需要转动的步数,然后由电机驱动模块控制电机转动到指示值。该任务的控制流程如图8所示。
图8 Steel_Task任务流程图Fig.8 Flow chart of Steel_Task
对于真实仪表存在指针扰动、抖动的现象,在仪表控制时,设计采用上位机发送抖动数据来实现。
4 结束语
以RCM5700作为仪表控制核心构建的仪表平台,简化了硬件开发和开发环境,优化了软件编程。采取广泛应用的以太网作为数据传输网络,简化了数据传输接口。通过上位机发送UDP数据测试,仪表运行良好,指示精确。
同时,设计存在一定的不足。考虑到仪表中电机负载较轻,虽然步进电机为开环控制,但指示仍然较为准确;对于某些负载较重并且对电机转动准确度要求高的系统,可以引入光电编码器等组成电机的闭环控制系统,以保证电机步进的精确度。
[1]花同.步进电机控制系统设计[J].电子设计工程,2011(15):13-15.HUA Tong.Design of stepping motor control system[J].Electronic Design Engineering,2011(15):13-15.
[2]Digi International Inc.MiniCore RCM5700用户手册[EB/OL].(2008-12-01)[2010-04-01].http://www.rabbit.com/documentation/docs/manuals/RCM5700/RCM5700UM-SCH.pdf.
[3]申晓燕,胡炳樑.基于FPGA的以太网光谱数据传输系统[J].电子设计工程,2011(15):163-166.SHEN Xiao-yan,HU Bing-liang.The spectral data transmission system Ethernet based on FPGA [J].Electronic Design Engineering,2011(15):163-166.
[4]Allegro Microsystems Inc.A3979 Microsoft DMOS Driver with Translator[EB/OL].(2009-11-15)[2010-10-12].http://pdf.qooic.com/A39/A3979.pdf.
[5]朱维杰.仪表用小型步进电机零点标定方法 [J].电机技术,2009(4):33-40.ZHUWei-jie.Zeropositionidentificationmethodsforinstrument stepper motor[J].Electrical Machinery Technology,2009(4):38-40.
[6]Digi International Inc.Dynamic C User Manual[EB/OL].(2005-11-18)[2010-09-10].http://www.physics.utoronto.ca/~astummer/pub/mirror/Docs/Engineering/Rabbit/Dynamic%20C%20Users%20Manual.pdf.