
Protocol::Modbus - Implements Modbus protocol message generation and parsing

This documentation relates to Protocol::Modbus version 0.01. API is surely going to change! Warning! Beta-version ahead!

use Protocol::Modbus;
# Initialize protocol object
my $proto = Protocol::Modbus->new( driver=>'TCP', transport=>'TCP' );
# Get a request object
my $request = $proto->request(
function => Protocol::Modbus::FUNC_READ_COILS, # or 0x01
address => 0x1234,
quantity => 1,
#unit => 0x07, # Not required for Modbus/TCP
);
# ... or another way
my $request = $proto->readInputsRequest(
address => 0,
quantity => 64,
#unit => 0x07, # Not required for Modbus/TCP
);
# Dump request as binary packets
print unpack('H*', $request->pdu()), "\n";
# Pretty-print request on stdout
print $request . "\n"; # Modbus Request PDU(......)
print $request->stringify() . "\n";
# Parse responses...
#
# TODO...

Object-oriented class to abstract generation and parsing of Modbus protocol messages. This class only handles protocol messages generation and parsing. It does not directly interface with your PLC devices. For that task, see the Device::PLC CPAN module (when that will be released).
Be sure to check out the examples folder to see some scripts that should work out of the box with a Modbus TCP server.

Main methods are used to build Modbus requests.

The set of classes is quite far from covering the whole Modbus protocol. In particular, aspects related to mantaining the state of the modbus server are completely skipped at this stage.
For now, there is only the main design and few more classes. I only implemented the necessary things to make the examples work, that is only simple requests with response parsing and coils status for example.
Further development will see the light when there's need and time... I wouldn't be surprised if it doesn't work for you out-of-the-box.


Cosimo Streppone, <cosimo@cpan.org>

Copyright (C) 2007 by Cosimo Streppone
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.