DIY编程器网
标题:
CAN总线在波动仿生推进器中的应用
[打印本页]
作者:
liyf
时间:
2012-1-21 23:43
标题:
CAN总线在波动仿生推进器中的应用
引言
作为一种面向水下航行器的新型仿生推进装置,波动仿生推进器主要模拟依靠身体波动式推进的鱼类的游动方式,以单柔性长鳍的波动推进为基础,利用多背鳍之间的协同控制来产生推力、升力、偏航和俯仰力矩。在机构设计上,一个单柔性长鳍由若干根鳍条组成,通过对这若干根鳍条进行不同的配置,可以实现单柔性长鳍不同的波形。而波形参数(波长、波幅、波频、波传播方向等)的不同将直接影响到单柔性长鳍所产生推力的大小。在研究初期,需要对单柔性长鳍进行灵活控制,以便确定推进效率最优的波形参数。为此,我们设计了一种多电机独立控制方案,即由一个电机控制一根鳍条,通过电机之间的协调来实现对单柔性长鳍的波动控制。 CAN(Controller Area Network)总线,又称控制器局域网,是bosch公司在现代汽车技术中领先推出的一种多主机局部网,也是一种串行通讯协议。其卓越的可靠性和传输的高速性,使它能够有效地支持具有很高安全等级的分布式实时控制。CAN总线现在已广泛应用于工业现场控制、智能大厦、环境监控等众多领域,从高速的网络到通用的多路接线都可以使用。在汽车电子行业里,使用CAN总线连接发动机控制单元、传感器、防刹车系统等,其传输速度可达1Mbit/s。波动仿生推进器多电机系统内部通讯总线与汽车内部总线有很多相似的特性,如都处于强机械震荡、强电磁干扰环境等,而且CAN总线在机器人内部通讯系统中的应用已经有了许多成功的先例。因此在波动仿生推进器的内部通讯总线设计中采用CAN 协议。
1 系统总体结构
水下波动仿生推进器采用分级控制的思路,总体网络结构如图1所示。在岸上,以一台IbM-PC机作为操控平台,实现操纵命令的给定、弹载内部运行状态的监测与可视化管理以及人机界面的功能。它通过RS-232总线连接到仿生推进器内部的主控上位机PC/104上。PC/104是仿生推进器运动控制的核心模块,负责实现除底层电机控制模块以外的所有上层控制算法,包括多电机的波形控制、姿态与深度测量、安全状态监控等。其中,多电机的波形控制是通过PC/104对底层若干个电机控制节点的协调来实现的,通过采用基于CAN现场总线的串行通信协议,保证了通信的可靠性及实时性。 在本系统中,核心控制部分采用SbS公司的PC/104模块,并通过该公司集成的基于PC/104的CSD-CAN总线控制器与波动仿生推进器内部的各控制节点组成CAN通信网络。在底层各电机控制节点上,采用日本安川公司模块化SGMAH04型交流伺服电机和相应SGDM04ADA型伺服驱动器。该伺服驱动器可通过自带的RS-232串口(CN3)与数字操作器或者PC联接,通过编码器接头(CN2)联接编码器至伺服电机,同时它还提供一个实时I/O端口(CN1)可与运动模块MP910等或其它上级装置联接。向其I/O端口发送脉冲序列可以对电机进行速度和位置控制,向其串口发送命令指令可以获取电机当前的速度和位置信息。这样,我们可以跳过最底层与电机接口部分的软硬件开发,而通过单片机直接对伺服驱动器进行控制。在各个电机控制节点上,研制相应的CAN智能节点以实现与弹载上位机PC/104的通信。
波动仿生推进器中CAN网络必须具备波形控制和状态监控两大功能。对于该多电机系统,各个节点相互独立,通过在PC/104中对这若干个节点进行合理的调配来实现波动仿生推进器的波形控制功能。另外,各CAN节点实时监测本控制节点对应电机的工作状态,并将其返回给上位机;同时,各CAN节点定时监测节点本身的工作状态,利用CAN总线协议强大的错误处理功能对各种可能出现的错误进行分析处理。
2 CAN网络的硬件方案
由图1可知,各个CAN节点直接挂接于同一个CAN网络。它们的软硬件组成结构完全一致,硬件组成框图见图2。 系统中的各CAN节点采用的都是智能节点,即都由微控制器和可编程的CAN控制芯片组成。从图2可以看出,各CAN节点电路主要由微控制器AT89C51、独立CAN控制器SJA1000、CAN收发器82C250、高速光耦6N137、拨码开关地址输入电路、电源监测与看门狗电路以及面向伺服电机的部分电路组成。
由于采用了模块化的伺服电机驱动器,各控制节点只需实现简单的伺服控制功能,故采用Atmel公司的8位单片机AT89C51作为微控制器。CAN控制芯片完成CAN的通信协议,主要由实现CAN总线协议的部分与实现与微控制器接口部分的电路组成,这里采用的是PHILIPS公司的SJA1000。它是一种独立CAN控制器,具有basicCAN和PeliCAN两种工作模式,其中PeliCAN模式支持具有很多新特性的CAN2.0b协议。82C250是高性能的CAN总线收发器,是CAN协议控制器和物理总线的接口,它对总线提供差动发送能力,对CAN控制器提供差动接收能力。通过对82C250的8号管脚的不同设置,可使其工作于高速、待机、斜率等三种模式。 拨码开关地址输入电路用于对各个CAN节点的标识。上电后,单片机首先读取拨码开关的数值,并在CAN初始化中将其写入SJA1000的接收代码寄存器,作为该节点的标识码。电源监测与看门狗电路采用的是MAX813,它在系统上电时刻提供上电复位功能,在程序运行时提供看门狗监测和电源监测功能,并能够实现手动复位。
为进一步提高CAN总线的可靠性,在系统设计中采取了一系列的抗干扰措施。一方面将SJA1000与82C250通过高速光耦6N137相连,从而实现了CAN总线上各CAN节点的电气隔离。另一方面,在82C250与CAN物理总线的接口部分也采用一定的安全和抗干扰措施。比如,82C250 的CANH和CANL引脚各自通过一个5Ω的电阻与CAN总线相连,可起到一定的限流作用,保护82C250免受过流的冲击;CANH和CANL与地之间分别并联一个30P的小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力;CANH和CANL与地之间分别反接了一个保护二极管,这样,当CAN总线有较高的负电压时,通过二极管的短路可起到一定的过压保护作用。 另外,为了保护各CAN节点控制端不受电机端的影响,在单片机与电机接口处均采用了基于6N137的光电隔离方案。这样,当伺服电机端有大电压电流产生时,由于光耦的保护作用,不会对控制端产生较大影响。 在应用光电隔离方案时要注意的一个重要问题是要必须确保光耦两端的两个电源完全隔离,否则光电隔离将起不到其应有的保护作用。在本系统中,通过采用广州金升阳公司的小功率电源隔离模块b0505S-1W很好地实现了各电源之间的完全隔离。
3 CAN网络的软件设计
CAN网络的软件主要包括三部分:初始化设计、通信设计、电机协调控制设计。下面从CAN控制节点的角度对它们进行说明。 3.1 初始化设计 CAN网络的初始化包括对微控制器内部资源的初始化和CAN控制器SJA1000的初始化。微控制器的内部资源包括程序中使用的各控制变量、定时器、外部中断、串口等,需要在程序进入正常工作前对它们进行合理的设置。这里重点对SJA1000的初始化进行说明。 SJA1000的初始化只能在复位模式下进行。其主要内容包括工作方式的设置、接收滤波方式的设置、接收屏蔽寄存器和接收代码寄存器的设置、波特率参数的设置、中断允许寄存器的设置等等。在完成SJA1000的初始化设置之后,应使SJA1000回到工作模式,进行正常的通信任务。图3是SJA1000的初始化流程图。需要特别引起注意的是,在同一个CAN网络中,各个CAN节点必须设置成相同的波特率,否则无法进行CAN通信。
3.2 通信设计 CAN网络能否正常工作很大程度上取决于基于CAN总线的发送和接收程序能否正确设计。跟大多数的通信过程一样,CAN的发送和接收也分为查询和中断两种方式。在本系统中,发送采用查询方式,接收采用中断方式。发送时用户只需将待发送的数据按特定格式组合成一帧报文,送入SJA1000的发送缓存区中,然后启动SJA1000发送即可。其间需要对CAN总线的发送缓存区状态进行判断。发送流程如图4。 在PeliCAN模式中,SJA1000有8个不同的中断,接收中断是其中的一个。一旦CAN产生中断,SJA1000就将中断输出设为低电平,直到主控制器通过读SJA1000的中断寄存器对中断采取相应措施,或释放接收缓存器后产生接收中断。在主控制器完成该动作后,SJA1000将输出中断跳到高电平。处理中断请求的握手信号或两个中断之间的高电平脉冲要求主控制器的中断由电平触发。中断接收的流程如图5所示。相比发送子程序而言,它除了进行单纯的数据帧接收之外,还要对中断运行寄存器中允许引起中断的各种错误(比如总线脱落、错误报警、接收溢出等)进行判断并作相应处理。在波动仿生推进器的应用里,设置了接收中断和数据溢出中断,并在主程序里定时检测总线状态,如果发现总线脱离,则对SJA1000进行复位处理。 3.3 电机协调控制设计 波动仿生推进器单柔性长鳍的波动控制要求其多电机系统按照设定的波动参数带动多个鳍条形成相应的波形。由于采用了高性能的伺服电机及驱动器,我们可以很精确的控制电机的运行速度,故在形成了各电机之间按设定波长要求的相位差之后,只要保持各个电机之间速度的严格同步,就可以实现多个电机之间的协调运转。为此,需要在各个电机控制节点里预先设置一些相关的控制原语,如电机原点定位、相位调整、速度设定、方向设定以及停机等基本电机控制指令。主控模块PC/104通过对这些控制原语的合理调用,便可实现各种类型的波形。 另一种更合理可靠的方法是,各电机控制节点采集伺服电机上增量编码器的角度脉冲信号,经过解析将角度数字信号送往PC/104。在每个控制周期内,PC/104对这些角度信号进行综合处理,通过一定的协调机制来实时修改对电机的控制量。由于CAN总线在一定条件下其最高通信速率可达1Mbps,通过设定适当的控制周期,可以满足本系统的需要。
4 结论
本文设计的CAN总线系统在波动仿生推进器的波动控制中得到了成功应用。与基于RS-232总线的控制系统相比,本系统在通信的可靠性和快速性上体现出了较大优势。在通信速率为250Kbps以及13个底层节点的情况下,通过实际反复的静水和航行试验表明其通信效果完全可以满足系统的需要,同时该CAN总线系统也具备良好的波形控制和状态监测功能。 本文作者创新点:基于CAN总线技术设计了新型的波动仿生推进器控制系统,给出了详细的软硬件设计方案,并对多个电机的协调控制作了相应分析。
欢迎光临 DIY编程器网 (http://www.diybcq.com/)
Powered by Discuz! X3.2