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

NAME

Device::Opto22 - Perl Object to communicate with Opto22 Brains via Memory-mapped protocol

SYNOPSIS

        use Device::Opto22;
        
        my $brain_ip = '192.168.1.7';
                
        my $sock  = new Device::Opto22( PeerAddr => "$brain_ip",PeerPort => '2001' );
        
        my $rtn = $sock->send_PUC();
        
        # Read Opto22 scratch pad tables
        my $int_table_sz = 15;     # number of entries to read in integer scratch pad table
        my $flt_table_sz = 18;     # number of entries to read in float scratch pad table
        
        my @int_lst = $sock->get_scratchpadint($int_table_sz);
        
        my @flt_lst = $sock->get_scratchpadfloat($flt_table_sz);

DESCRIPTION

This Module communicates with an Opto22 Brain/Controller via OptoMMP a memory-mapped protocol based on the IEEE 1394 standard. This module can be used to create custom software applications for remote monitoring, industrial control, and data acquisition using Opto22 modular components.

There is an underlying Firewire.pm module that is used.

Methods

Methods include:

  • send_PUC()

    Send Power Up Control

            my $rtn = $sock->send_PUC();

    Returns 1 on success and nothing on failure

  • get_scratchpadint()

  • get_scratchpadfloat()

    Get Integer/Float Scratchpads

            my @lst = $sock->get_scractchpading($number_of_items_get);

    Returns a list of items requested or nothing on failure

  • get_eu_lst()

    Get Analog Bank Data in Engineering Units

            my @eu_lst  = $sock->get_eu_lst() 

    Returns list of measured engineering unit values in memory map and nothing on failure

  • get_digital_lst()

    Get Digital Bank Data

            my @dig_lst = $sock->get_digital_lst()

    Returns all list of all 64 digital points. Nothing of failure.

  • wr_digital_pnt

    Write digital point

            $sock->wr_digital_pnt($opto_chnl,$turn_on) 

    Inputs are channel to effect and a true value for $turn_on to activate channel or nothing to turn channel off.

  • serial_chat(@data)

  • serial_send($data)

  • serial_rcv()

        Send and/or Receive data from serial module 
    
            $sock->serial_send("*0100DB\r\n");     # ask for data in the pressure sensor buffer
            my $engr_value = $sock->serial_rcv();  # rcv buffer data
            

    Communicate to the serial device. Note you will have to send \r\n characters if needed.

  • error_msg

    Get error message on failure

        unless ( $rtn ) { die $sock->error_msg; } 

Note: The Opto22 Brains are in Big-endian format. The module translates this into common Little-endian format. If you are trying this module out on a Big-endian machine you will need to edit the source code as required.

SEE ALSO

For more detailed information on Opto22 components and OptoMMP see...

http://www.opto22.com/documents/1465_OptoMMP_Protocol_Guide.pdf http://www.opto22.com

http://perlworks.com

AUTHOR

Written and maintained by: Steve Troxel and Duane Nightingale (email troxel "at" perlworks.com)

COPYRIGHT AND LICENSE

Copyright (C) 2010

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.