parent
c676c06e2e
commit
5300b2a867
@ -0,0 +1,4 @@ |
||||
/vendor |
||||
composer.lock |
||||
|
||||
*~ |
@ -1,7 +0,0 @@ |
||||
a88b5a87fb4cd49f16ce72062cce19d55f1fbf98 0.2 |
||||
a7f90c18859d31922bdd8c61299e2790f5e2eb1a 0.3 |
||||
bdf8b3f414c4d08fc0edf9fd1953f55db26e4bac 0.4 |
||||
1e09b0da7d8c62a9a292ee51540feac9de4c1222 0.4.1 |
||||
e1262f028e180c2719564f840ffa1a9f8672b6be 0.5 |
||||
079f8ac1f49faf4e6bbb84d62c39eee1507805f2 0.6 |
||||
5885b1a0d0dc89577eeb871ee2c3fba8e70dd4fb 0.7 |
@ -1,45 +1,47 @@ |
||||
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](https://code.google.com/p/phpmodbus/) with |
||||
composer support added. |
||||
|
||||
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 |
||||
------- |
||||
# phpmodbus |
||||
|
||||
Implementation of the basic functionality of the Modbus TCP and UDP based protocol using PHP. |
||||
|
||||
This is a fork of the original project at https://code.google.com/p/phpmodbus/ |
||||
|
||||
> **What's new** |
||||
> |
||||
> This fork adds a namespace and fixes issues encountered when porting to PHP 7 |
||||
|
||||
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 |
||||
|
||||
Example: |
||||
|
||||
```php |
||||
// 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); |
||||
require_once dirname(__FILE__) . '/Phpmodbus/ModbusMaster.php'; |
||||
|
||||
// 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][]. |
||||
For more see [http://code.google.com/p/phpmodbus/downloads/list documentation] or [http://code.google.com/p/phpmodbus/wiki/FAQ FAQ]. |
||||
|
||||
[documentation]: https://code.google.com/p/phpmodbus/downloads/list |
||||
[FAQ]: https://code.google.com/p/phpmodbus/wiki/FAQ |
||||
Note: |
||||
* The PHP extension php_sockets.dll should be enabled (server php.ini file) |
||||
|
@ -1,17 +1,21 @@ |
||||
{ |
||||
"name": "adduc/phpmodbus", |
||||
"description": "Composer version of PhpModBus", |
||||
"license": "LGPL", |
||||
"authors": [ |
||||
{ |
||||
"name": "Honza Krakora", |
||||
"email": "krakora.jan@googlemail.com" |
||||
} |
||||
], |
||||
"autoload": { |
||||
"classmap": [ "Phpmodbus" ] |
||||
}, |
||||
"require": { |
||||
"ext-sockets": "*" |
||||
"name": "MightyPork/phpmodbus", |
||||
"keywords": ["phpmodbus","modbus"], |
||||
"description": "PhpModbus with namespaces and updated to PHP 7", |
||||
"license": "LGPL", |
||||
"require": { |
||||
"php": "^5.3.2 || ^7.0", |
||||
"ext-sockets": "*" |
||||
}, |
||||
"authors": [ |
||||
{ |
||||
"name": "Honza Krakora", |
||||
"email": "krakora.jan@googlemail.com" |
||||
} |
||||
], |
||||
"autoload": { |
||||
"psr-4": { |
||||
"PHPModbus\\": "src/" |
||||
} |
||||
} |
||||
} |
||||
|
@ -0,0 +1,3 @@ |
||||
Those examples have not been updated to use namespaces. |
||||
|
||||
They may not work. Just for reference. |
@ -1,4 +1,7 @@ |
||||
<?php |
||||
|
||||
namespace PHPModbus; |
||||
|
||||
/** |
||||
* Phpmodbus Copyright (c) 2004, 2013 Jan Krakora |
||||
* |
@ -1,4 +1,7 @@ |
||||
<?php |
||||
|
||||
namespace PHPModbus; |
||||
|
||||
/** |
||||
* Phpmodbus Copyright (c) 2004, 2012 Jan Krakora |
||||
* |
@ -0,0 +1,3 @@ |
||||
Probably broken and dubious. |
||||
|
||||
Left from the original repo. |
@ -1,210 +0,0 @@ |
||||
<refentry id="{@id}"> |
||||
<refnamediv> |
||||
<refname>Phpmodbus user's guide</refname> |
||||
<refpurpose>Phpmodbus How-to</refpurpose> |
||||
</refnamediv> |
||||
<refsynopsisdiv> |
||||
<author> |
||||
Jan Krakora |
||||
<authorblurb> |
||||
{@link mailto:krakora.jan@googlemail.com email} |
||||
</authorblurb> |
||||
</author> |
||||
</refsynopsisdiv> |
||||
{@toc} |
||||
<refsect1 id="{@id intro}"> |
||||
<title>Introduction</title> |
||||
<para> |
||||
Phpmodbus is a PHP library for the Modbus protocol. The library implements |
||||
Modbus TCP/UDP master class with subset of the most used Modbus commands. |
||||
</para> |
||||
<para> |
||||
The library implements: |
||||
<itemizedlist> |
||||
<listitem><para>FC 1: read multiple coils</para></listitem> |
||||
<listitem><para>FC 2: read input discretes</para></listitem> |
||||
<listitem><para>FC 3: read multiple registers</para></listitem> |
||||
<listitem><para>FC 4: read multiple input registers</para></listitem> |
||||
<listitem><para>FC 5: write single coil</para></listitem> |
||||
<listitem><para>FC 6: write single register</para></listitem> |
||||
<listitem><para>FC 15: write multiple coils</para></listitem> |
||||
<listitem><para>FC 16: write multiple registers</para></listitem> |
||||
<listitem><para>FC 23: read write registers</para></listitem> |
||||
</itemizedlist> |
||||
</para> |
||||
<para> |
||||
For more about Modbus protocol see [{@link http://www.modbus.org}] or |
||||
[{@link http://en.wikipedia.org/wiki/Modbus Wiki}] |
||||
</para> |
||||
</refsect1> |
||||
<refsect1 id="{@id install}"> |
||||
<title>Install</title> |
||||
<para> |
||||
At the first, it is supposed an PHP solution has been already installed on |
||||
your server (LAMP, WAMP, MSS+CGI etc.). |
||||
</para> |
||||
<para> |
||||
Copy the Phpmodbus library to your PHP project folder. |
||||
</para> |
||||
<para> |
||||
Create a PHP script and assign the library using require_once() command |
||||
<programlisting role="c"> |
||||
<![CDATA[require_once dirname(__FILE__) . '/Phpmodbus/ModbusMaster.php'; ]]> |
||||
</programlisting> |
||||
</para> |
||||
<para> |
||||
To create UDP Modbus master object communicating to an modbus slave |
||||
e.g. at IP address 192.168.1.1 write |
||||
<programlisting role="c" linenumbering="numbered" startinglinenumber="2"> |
||||
<![CDATA[ $modbus = new ModbusMaster("192.168.1.1", "UDP"); ]]> |
||||
</programlisting> |
||||
</para> |
||||
<para> |
||||
To create TCP Modbus master use |
||||
<programlisting role="c" linenumbering="numbered" startinglinenumber="2"> |
||||
<![CDATA[ $modbus = new ModbusMaster("192.168.1.1", "TCP"); ]]> |
||||
</programlisting> |
||||
</para> |
||||
<para> |
||||
To read 5 words (10 bytes) from the device ID=0 and its memory address 12288 |
||||
use try-catch method call |
||||
<programlisting role="c" linenumbering="numbered" startinglinenumber="3"> |
||||
<![CDATA[try { |
||||
// Function processing |
||||
$recData = $modbus->readMultipleRegisters(0, 12288, 5); |
||||
} |
||||
catch (Exception $e) { |
||||
// Exception processing, e.g. print error information |
||||
echo $modbus; |
||||
echo $e; |
||||
exit; |
||||
}]]> |
||||
</programlisting> |
||||
</para> |
||||
<para> |
||||
To process the function byte stream, use conversion to PHP types in |
||||
</para> |
||||
<programlisting role="c" linenumbering="numbered" startinglinenumber="15"> |
||||
<![CDATA[echo PhpType::bytes2string($recData); ]]> |
||||
</programlisting> |
||||
<para> |
||||
For other examples see sections bellow. |
||||
</para> |
||||
</refsect1> |
||||
<refsect1 id="{@id examples}"> |
||||
<title>Examples</title> |
||||
<para> |
||||
This section presents library features and examples |
||||
</para> |
||||
<refsect2 id="{@id example_fc1}"> |
||||
<title>FC1 - read mutliple coils</title> |
||||
<para> |
||||
FC1 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc1.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc2}"> |
||||
<title>FC2 - read input discretes</title> |
||||
<para> |
||||
FC2 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc2.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc3}"> |
||||
<title>FC3 - read mutliple registers</title> |
||||
<para> |
||||
FC3 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc3.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc4}"> |
||||
<title>FC4 - read multiple input registers </title> |
||||
<para> |
||||
FC4 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc4.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc5}"> |
||||
<title>FC5 - write single coil</title> |
||||
<para> |
||||
FC5 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc5.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc6}"> |
||||
<title>FC6 - write single register</title> |
||||
<para> |
||||
FC6 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc6.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc15}"> |
||||
<title>FC15 - write mutliple coils</title> |
||||
<para> |
||||
FC15 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc15.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc16}"> |
||||
<title>FC16 - write mutliple registers</title> |
||||
<para> |
||||
FC16 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc16.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id example_fc23}"> |
||||
<title>FC23 - read write registers</title> |
||||
<para> |
||||
FC23 functionality example |
||||
</para> |
||||
<para> |
||||
{@example example_fc23.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id wago_example}"> |
||||
<title>Dump of M-memory from WAGO 750-84x series coupler.</title> |
||||
<para> |
||||
Dump of M-memory from WAGO 750-84x series coupler. |
||||
</para> |
||||
<para> |
||||
{@example example_750841_Mmemory.php} |
||||
</para> |
||||
</refsect2> |
||||
<refsect2 id="{@id datatype}"> |
||||
<title>Data conversion to PHP types.</title> |
||||
<para> |
||||
Conversion of the data bytes, received from Modbus, to a PHP type. |
||||
</para> |
||||
<para> |
||||
{@example example_datatype.php} |
||||
</para> |
||||
</refsect2> |
||||
</refsect1> |
||||
<refsect1 id="{@id back_comp}"> |
||||
<title>Back compatibility</title> |
||||
<para> |
||||
This version is back compatible to the last versions. Just use |
||||
<programlisting role="c"> |
||||
<![CDATA[require_once dirname(__FILE__) . '/Phpmodbus/ModbusMasterUdp.php'; |
||||
$modbus = new ModbusMasterUdp("192.168.1.1"); |
||||
// ... ]]> |
||||
</programlisting> |
||||
</para> |
||||
</refsect1> |
||||
</refentry> |
Before Width: | Height: | Size: 1.2 KiB |
Loading…
Reference in new issue