The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Device::IRU_GE - Perl Module to read and control a GE Aviation Systems IRU

SYNOPSIS

  use Device::IRU_GE;
 
  my %arg_hsh;  
  $arg_hsh{baudrate} = 19200;
  $arg_hsh{parity}   = "none";
  $arg_hsh{databits} = 8;
  $arg_hsh{stopbits} = 1;
  $arg_hsh{'port'} = '/dev/ttyr0a';

  my $Ge_obj = new IRU_GE(\%arg_hsh)
 
  $Ge_obj->set_5D(3); 
  print "Sent gyrocompass command\n";
     
  while (1) 
  {
      my $att_ref = $Ge_obj->get_62();
      print "$att_ref->{hdg_true} $att_ref->{roll} $att_ref->{pitch} \n";
  
  } 

DESCRIPTION

The module provides a software interface to the General Electric North Finding Module (NFM) or also known as Interial Reference Unit (IRU) or a component of the Land Navigation System (LNS).

This module implements several of the functions defined in the GE Aviation Systems document:

"RS-422 Interface Protocol Specification for the Operational Vehicle Program of the Inertial Reference Unit"

This document is dated 08 October 2008 and must be acquired from GE Aviation Systems directly.

 GE Aviation Systems LLC
 3290 Patterson Avenue, SE, 
 Grand Rapids, MI 49512-1991, USA

This Perl Module provides functions which are identified using the numerical Command ID's found in the reference document.

Methods

Only a few of the more useful methods or functions are described please have a look at the code for others or contact me.

new

Object Constructor which expects an argument with a hash or reference to a hash providing the communication parameters.

        $ge_obj = Device::GE_IRU(%arg_hsh); 

Available arguements: baudrate, parity, databits, stopbits, port

Defaults for these argument parameters are as follows:

  $arg_hsh{'port'}   = "/dev/ttyS0";
  $arg_hsh{baudrate} = 19200;
  $arg_hsh{parity}   = "none";
  $arg_hsh{databits} = 8;
  $arg_hsh{stopbits} = 1;

set_01

Branch to Zero or total system restart. All output stops and the IRU resets.

   $ge_obj->set_01(); 

set_5D

Set IRU Mode This command is used to set the mode of the IRU to one of the valid modes shown below

        $ge_obj->set_5D($mode)
        

Where $modes is one of the following:

 3 Gyrocompass Mode (GC) 
 6 Navigation Mode (NAV)
 8 In-Vehicle Calibration Mode (IVC)
 9 Base Motion Compensated Coarse Align Mode (BMCCOARSE)
 12 Fast Base Motion Compensated Coarse Align Mode (FASTBMCCOARSE)

Mode 3 or gyrocompass is the most common arguement here and this will send the IRU off into a gyrocompass excursion taking about 3 minutes to complete. The IRU must be motionless during this time.

set_2A

Get Latitude and Longitude, True Heading, Grid Heading, Pitch and Roll and return in a hash reference

Note: When using this function I have noticed that the checksum value gets screwed up if there is any movement during an gyrocompass and stay corrupt. The values returned by this call appear to be correct but the checksum is just wrong and requires a power cycle to fix. I recommend get_62 only attitude is required.

Contents of returned hash reference are in degrees

 $ref->{'lat'}      = Latitude 
 $ref->{'lng'}      = Longitude 
 $ref->{'hdg_grid'} = Grid Heading 
 $ref->{'hdg_true'} = True Heading  
 $ref->{'pitch'}    = Pitch 
 $ref->{'roll'}     = Roll

get_62

Get the Heading and Attitude and return in a hash reference

  my $ref = $ge_obj->get_62();
  

Contents of returned hash reference are in degrees

 $ref->{'hdg_grid'} = Grid Heading  
 $ref->{'hdg_true'} = True Heading 
 $ref->{'pitch'}    = Pitch
 $ref->{'roll'}     = Roll 

get_0F

Get residual heading and gyrocompass time remaining.

   my $ref = $ge_obj->get_0F();
  

Contents of returned hash reference

 $ref->{'gc_time'} = time remain for gyrocompass to complete 
 $ref->{'gc_mode_num'}  = Numerical gyro mode 
 $ref->{'gc_mode_str'}  = Gyro mode string 
 $ref->{'residual'}     = heading residual 
 $ref->{'move_stat'}    = Moving status 0 for static, 1 for movement in the last 10 sec

plug_test

Used to test the serial connection with a loopback plug.

PREREQUISITES

 Time::HiRes
 Math::Trig

 Device::SerialPort qw( :PARAM :STAT 0.07 ) or ( Win32::SerialPort qw(:STAT 0.19 ) ) with minor mods

SEE ALSO

PERFORMANCE SPECIFICATION FOR THE LAND NAVIGATION SYSTEM AND NORTH FINDING MODULE, Document Number YV1657, Rev. B 15 March 2001

RS-422 Interface Protocol Specification for the Operational Vehicle Program of the Inertial Reference Unit, Document Number YV2656, Rev. x 08 October 2008

AUTHOR

Steve Troxel, <troxel 'at' perlworks.com>

COPYRIGHT AND LICENSE

Copyright (C) 2010 by Troxel

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.