Modbus TCP and UDP library for PHP., originally from code.google.com/p/phpmodbus
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
toimtoimtoim 4559de3c15 fix linux having differenct error message for socket exception 8 years ago
examples make tests compatible with older php syntax (phpunit still requires 5.6), update readme, update examples to ease testing modbus 8 years ago
src Minor cleanup, removed duplicate timeout vars & replaced with float [sec], added socket Tout setter 8 years ago
tests fix linux having differenct error message for socket exception 8 years ago
.gitignore refactor/reimplement old (batch script) tests to use phpunit. 8 years ago
.travis.yml make tests compatible with older php syntax (phpunit still requires 5.6), update readme, update examples to ease testing modbus 8 years ago
LICENSE added a namespace 8 years ago
README.md make tests compatible with older php syntax (phpunit still requires 5.6), update readme, update examples to ease testing modbus 8 years ago
composer.json make tests compatible with older php syntax (phpunit still requires 5.6), update readme, update examples to ease testing modbus 8 years ago
phpunit.xml.dist make tests compatible with older php syntax (phpunit still requires 5.6), update readme, update examples to ease testing modbus 8 years ago

README.md

phpmodbus

Implementation of the basic functionality of the Modbus TCP and UDP based protocol using PHP.

NOTE: This is a fork to fix & update the library code (and code alone).

##What's new

  • This fork adds a namespace and fixes issues encountered when porting to PHP 7
  • Fixes/replaces old MS Windows specific tests

Implemented 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
  • FC23 - Read/Write multiple registers

Requirements

  • The PHP extension php_sockets.dll should be enabled (server php.ini file)
  • PHP 5.3.2 (5.6 for tests)

Example

use PHPModbus/ModbusMaster; 
use PHPModbus/PhpType; 

// 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); 

Use the setTimeout($seconds) and setSocketTimeout($read_timeout_sec, $write_timeout_sec) methods to adjust wait times.

Most of the code is (to some extent) commented and documented with PhpDoc. You should get useful tooltips in your IDE.

Tests

To run the test suite, you need install the dependencies via composer, then run PHPUnit.

NB: PHP 5.6+ is required for tests

composer install
composer test # or under Windows vendor\bin\phunit.bat

To report test coverage (created inside ./report/html):

composer test-coverage

GoogleCode legacy docs & downloads

This project was originally hosted on (now defunct) Google Code. It's still archived here: