文献标识码: A
文章编号: 0258-7998(2013)08-0123-04
为遵循STCW公约马尼拉修正案第A-1/12节关于使用模拟器的标准,执行中国海事局“关于做好STCW公约马尼拉修正案履约准备工作有关事项的通知(海船员[2011]923号)”的规定,各个航海院校必须配备大型船舶操纵模拟器做为驾驶台资源管理训练评估的实验设备[1]。而目前国外能够生产大型船舶操纵模拟器的厂家大都价格昂贵,可移植性不高,维护不便,无法满足船员培训中灵活多变的教学和训练模式。针对上述问题,本文提出并实现了一种高性价比且可扩展性强的大型船舶操纵模拟器。该模拟器不同于国内外其他厂家的设备,其特点是模拟器操作台上的硬件设备全部自主研发,避免了因设备采购于不同厂家,导致通信协议灵活性差、可扩展性低,无法根据不同用户的特点设计与其设备配套的问题。采用自主研发的硬件设备,增强了灵活性及扩展性,较大地促进了大型船舶操纵模拟器的发展。
1 船舶操纵模拟器系统硬件构架
大型船舶操纵模拟器控制台不仅有拖轮面板、缆绳和锚面板、侧推器面板、舵机控制面板、报警面板、号灯面板、雷达面板、望远镜面板,还有车钟、舵轮、罗经三大部件,以及悬挂于驾驶台上面的7个仪表盘,其硬件架构如图1所示。
所有的硬件设备采用标准的485通信接口,共用一条485总线[2],每个设备初始化时都处于接收状态,通过制定的通信协议,上位机按照一定的时间间隔以地址从低到高的顺序轮询每一个硬件设备。由于上位机采用的是232的通信接口,因此需要一个485转232的转换器进行通信。
2 船舶操纵模拟器各硬件模块设计
2.1 硬件面板
硬件面板主要由8块面板组成:拖轮面板、缆绳和锚控制面板、侧推器面板、舵机控制面板、号灯面板、报警面板、雷达面板以及望远镜面板。由于篇幅有限,本文仅以望远镜面板的电路进行分析。
望远镜面板可以模拟航海驾驶室内的望远镜,通过操纵相对应的摇杆,控制望远镜视景的放大或缩小,同时结合面板上相应的按键,控制望远镜视景的切换。望远镜面板外观效果如图2所示。其电路原理图主要由五部分组成,分别是模/数转换接口、485通信接口、主控制器、矩阵键盘扫描模块及LED控制模块。
模/数转换接口主要用来采集摇杆内部的电位器电压值。当船员操纵摇杆的时候,会造成摇杆内部电位器电压数值的变化,主控制器据此来识别摇杆的方向和摇动的幅度。其接口分别用来识别左右、上下,以及旋转的方向,共3个自由度,提高了摇杆信号采集的灵活度,增强了船员驾驶室操纵的真实感。
485通信模块是各个硬件设备与PC通信的桥梁。由于模拟器所有硬件设备都共用一条485总线,且由于现场情况十分复杂,各个硬件设备之间存在较高的共模电压。虽然RS-485接口采用的是差分传输方式,具有一定的抗共模干扰能力,但当共模电压超过RS-485接收器的极限接收电压,即>+12 V或<-7 V时,会导致设备无法正常通信,甚至会烧毁芯片和各个硬件设备。因此,本文采用DC-DC将系统电源和RS-485收发器的电源隔离,利用1块TLP521芯片以及2块6N137芯片构成光电隔离电路,用以隔离信号,彻底消除共模电压的影响,保证485网络通信的稳定性。
矩阵键盘扫描模块是用来识别用户对面板按键的操作,本文主要采用反转法扫描方式,执行效率比传统的扫描方式有较大的提高。
LED控制模块主要用来控制面板按键内部各个LED的颜色以及亮度变化,使用户在操作的过程中可以很直观地观察面板按键颜色的变化,验证操作的准确性。该模块采用1块MAX7219芯片进行控制。MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它不仅可以控制8位数码管显示,也可以同时控制64个独立的LED。不仅如此,它还可以用 n 片MAX7219进行级连,以驱动8×n位数码管显示。该模块还有一个外部寄存器用来设置各个LED的段电流,可以直接控制LED的亮度,并采用一个方便的四线串行接口(SCLK、DATA、LOAD、DOUT)与主控制器芯片相连。当主控制器芯片把数据送到MAX7219后,它就可以独立地进行动态扫描显示,无需主控制器芯片进行干预。
主控制器主要是由1块STC单片机构成,不仅具备双串口,还带有8路10位的A/D转换器,2路PWM等,功能强大。该控制器不仅要采集摇杆电位器的电压值,进行模/数转换,还通过矩阵键盘进行扫描,识别用户操作按键的键值,并对面板一系列的LED进行逻辑判断和控制。最后,把用户操作的所有数据通过485总线传递到PC,PC结合相应的软件对主控制器发送过来的数值进行处理,并通过视景或相配套的软件显示出来。
2.2 车钟、罗经、舵轮
车钟、罗经、舵轮是船舶操纵模拟器中不可缺少的三大部件,以往模拟器都采用实船的真车钟、真罗经、真舵轮,但成本很高,而且要依赖于厂家定义的通信协议和接口,扩展性不高。因此,本文采用全模拟方案实现车钟、罗经、舵轮三大部件的主要功能,外观采用1:1的实物仿真,结构、主要功能、操作方式、显示面板和数据与真实设备基本相同。本文主要介绍三大部件中罗经的电路部分。
罗经在船舶操纵模拟器中用来指示船舶的航向。考虑到罗经内部机械加工的工艺以及航海对罗经精度的要求,本文主要设计为单圈罗经。
罗经的电路主要由五部分组成:步进电机驱动模块、485通信接口、主控制器、找零接口及LED亮度控制模块。这里主要介绍步进电机驱动模块以及找零接口。
步进电机驱动模块由1块ULN2803的芯片进行控制。ULN2803是高压大电流达林顿晶体管阵列系列产品,具有电流增益高、工作电压高、温度范围宽及带负载能力强等特点,很适合用来驱动步进电机。步进电机采用的是42BYG系列四相八拍高转矩混合式的步进电机,步距角为0.9°,经过二分频之后精度变为0.45°,完全满足航海模拟器中罗经的精度要求。另外,考虑到将罗经扩展为双圈罗经的需要,预留了4路接口,由此可以再驱动一个步进电机,从而为双圈罗经的扩展提供了可能。
模拟罗经要解决的关键的问题是找零问题。本设计采用了一个槽式光电耦合器,槽口分上下两端,一端是红外发射器,另一端是红外接收器。当对刻度盘进行加工时,在边缘处涂抹一定宽度的黑边,并在零刻度线上去掉一个缺口,通过一定的机械加工,使刻度盘在步进电机的驱动下旋转,并保持在旋转过程中刻度盘的黑边始终能挡住红外发射器。此时,当刻度盘的零点转动到红外发射器时,由于零刻度线处开口,因此,槽口另一端红外接收器能够接收到红外线,并产生一个下降沿输出,通过相应的电路把该输出接到主控制器芯片外部中断的管脚,从而触发主控制器芯片产生一个外部中断,实现了罗经的找零。
2.3 仪表盘
仪表盘在船舶操纵模拟器中用于显示各类航行数据。主要由风向风速仪表盘、水深仪表盘、船速仪表盘、主机转速仪表盘、舵角仪表盘及转头率仪表盘构成。
仪表盘除了风向风速是数码管显示之外,其余仪表盘都是指针式,并且通过直流电压来驱动,驱动电压范围有两种,一种是0~5 V,另一种是-5 V~+5 V。但是,在船舶操纵模拟器中,仪表盘的数据来源于上位机,而上位机传过来的数据是数字信号。因此,必须通过数/模转换器将上位机传送过来的数字信号转化为驱动仪表盘的电压信号,同时,考虑到仪表盘有两种驱动电压,因此需要2块D/A转换芯片, 本文采用型号为TLC7226的D/A转换芯片。TLC7226[3]是TI 公司生产的、包含4路8位电压输出的高性能D/A转换器, 在单个芯片上带有输出缓冲放大器和接口逻辑电路。数据通过公共的8位TTL/CMOS兼容(5 V)输入口送入数据寄存器,每一路DAC都能提供高达5 mA的输出电流,支持单极性和双极性输出,单极性输出范围为0~5 V,双极性输出电压范围为-5 V~+5 V,足以满足仪表盘驱动的要求。仪表盘驱动电路原理图如图3所示。
3 船舶操纵模拟器硬件系统软件设计
系统的软件设计包括系统软件协议以及各硬件模块的软件设计两部分。
3.1 系统软件协议
由于船舶操纵模拟器大部分的硬件设备(包括所有硬件面板、车钟、罗经、舵轮、仪表盘等)都挂载到一条485总线,上位机依次访问每个硬件设备。由于485总线属于半双工,因此,上位机在访问某块硬件设备时,其余设备都应处于接收状态,否则会出现通信乱码。因此,本文设计了以下通信协议:
(1)每个硬件设备都有自己的地址,初始化时都处于接收状态,上位机根据每个设备的地址从小到大依次进行查询。若查询到该设备有数据需要发送,则该设备会转变为发送状态,发送信息协议格式定义如下:
$(1)(2)*hh<CR><LF>
其中,$是串头; (1)是该设备的地址;(2)是按键值,值的范围根据面板的按键数量来决定;*是串尾;hh为校验;<CR>是回车控制符;<LF>是换行控制符。
(2)有些硬件面板上面会有一些数码管显示,而数码管显示的数值都来源于上位机。因此,为了避免多块面板数码管上显示的数据冲突,协议规定如下:
@(1)(2)(3)(4)*hh<CR><LF>
其中, @是串头; (1)是该设备的地址;(2)是按键序列号(考虑到有些面板多个按键共用1块数码管,因此需要对此进行区分),数值的范围根据面板的按键数量来决定;(3)是数码管的序列号(考虑到1块面板有多个数码管,因此为了避免显示冲突,特此定义);(4)是参数值,有4个字节,数值范围从0~9999;*是串尾; hh为校验; <CR>是回车控制符;<LF>是换行控制符。
(3)有些面板可以通过按键改变某些数码管显示的
数值,而为了与上位机软件界面同步,需要及时把改变后的数据传送到上位机,因此,协议规定如下:
&(1)(2)(3)*hh<CR><LF>
其中,&是串头; (1)是该设备的地址;(2)是按键序列号;(3)是参数值,有4个字节,数值范围从0~9999;*是串尾; hh为校验;<CR>是回车控制符;<LF>是换行控制符。
另外,还有复位协议、初始化协议等,在此不一一进行阐述。
3.2 各硬件模块的软件设计
针对操纵模拟器中的硬件面板进行软件设计:车钟、罗经、舵轮三大部件的软件设计以及仪表盘的驱动,整个系统均采用C语言进行编程。由于每个硬件设备的逻辑关系较为复杂,在此仅以望远镜面板的软件设计进行分析。
首先对望远镜电路板进行初始化[4],主要包括工作方式的设置、A/D转换方式、通道选择的设置、MAX7219芯片的初始化设置、波特率参数设置和中断允许寄存器的设置等。
其次进行矩阵键盘扫描,这里主要采用反转法扫描方式。如果扫描到有按键触发,则通过消抖确认为真实触发之后,立即记录该按键键值。再通过面板按键灯逻辑判断,根据望远镜面板制定的协议,对面板按键灯进行控制,利用该按键灯颜色的改变或熄灭等方式来告知用户已实际操作了该按键。
按键扫描完之后,开始进入摇杆扫描,即对摇杆内部电位器的电压值进行模/数转换,由于摇杆有3个自由度,因此需要用到3个模/数转换接口。通过对3个接口进行模/数转换之后,判断采集到的这3个数值与上一次扫描周期相比是否发生了变化,若是,则记录下来;否则,进入下一次扫描周期。
由于上位机是通过轮询方式及485总线扫描每一个硬件设备,因此,当上位机未扫描到该望远镜面板时,该设备应处于接收状态,即使有动作触发,也不能立即发送,直到上位机轮询到该望远镜面板时,才能将数据封装成协议规定的格式,再通过调用串口通信模块,把数据通过485总线传递到上位机。发送完毕,再立即进入接收状态,开始下一个周期的扫描。望远镜面板程序流程如图4所示。
本文讨论了大型船舶操纵模拟器硬件的设计方案,并对该硬件的总体设计和部分硬件设备的软硬件设计进行了详细阐述。该系统已投入到国内多家航海院校和培训机构的教学使用当中,经过连续的运行和测试以及用户反映的情况,该模拟器硬件设备工作状态稳定,逼真度较高,可媲美于国内外一些大型船舶操纵模拟器。同时,由于硬件设备都属于自主研发,有利于今后的性能扩展,降低了维护成本,也为第二代大型船舶操纵模拟器的开发打下了坚实的基础,加快了大型船舶操纵模拟器的发展进程。
参考文献
[1] 金一丞,尹勇,任鸿祥,等.多本船航海模拟系统的研制[J].交通运输工程学报, 2001,1(3):108-111.
[2] 郑敏杰,杨神化.基于RS-485总线的红外报警器设计[J].信息化纵横,2009(8):27-30.
[3] 盛惠兴,黄礼军. 基于DSP 的电力电量参数测量系统的设计[J].现代电子技术,2004(2):102-106.
[4] 余枫,李志华,刘秀文,等.船舶操纵模拟器中通信模块的设计和应用[J].信息技术与信息化, 2008(4):22-24.