PHP implementation of the modbus protocol. Fixed by @Manawyrm to properly read answers from SMA inverters.
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 3 commits ahead of adduc:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Phpmodbus
examples
tests
tutorials/Phpmodbus
.hgignore
.hgtags
README.md
composer.json
license.txt

README.md

phpmodbus

This project deals with an implementation of the basic functionality of the Modbus TCP and UDP based protocol using PHP. It's a copy of the releases from the project page over at Google Code with composer support added.

Changes by @Manawyrm

The upstream library had trouble reading data from SMA solar inverters via modbus. This was fixed by explicitly reading the length-field of the transmitted data and then waiting for the specified amount of data.

Warning! This library was NOT tested with a UDP modbus server and could behave wrong!

Features

  • Modbus master
    • FC1 - Read coils
    • FC2 - Read input discretes
    • FC3 - Read holding registers
    • FC4 - Read holding input registers
    • FC5 - Write single coil
    • FC6 - Write single register
    • FC15 - Write multiple coils
    • FC16 - Write multiple registers
    • FC22 - Mask Write register
    • FC23 - Read/Write multiple registers

Example

 // Modbus master UDP
 $modbus = new ModbusMaster("192.168.1.1", "UDP");
 // Read multiple registers
 try {
     $recData = $modbus->readMultipleRegisters(0, 12288, 5);
 }
 catch (Exception $e) {
     // Print error information if any
     echo $modbus;
     echo $e;
     exit;
 }
 // Print data in string format
 echo PhpType::bytes2string($recData);

For more see documentation or FAQ.