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 |
# phpmodbus |
||||||
========= |
|
||||||
This project deals with an implementation of the basic functionality of the Modbus TCP and UDP based protocol using PHP. |
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. |
This is a fork of the original project at https://code.google.com/p/phpmodbus/ |
||||||
|
|
||||||
Features |
> **What's new** |
||||||
-------- |
> |
||||||
|
> This fork adds a namespace and fixes issues encountered when porting to PHP 7 |
||||||
* Modbus master |
|
||||||
* FC1 - Read coils |
Implemented features: |
||||||
* FC2 - Read input discretes |
* Modbus master |
||||||
* FC3 - Read holding registers |
* FC1 - Read coils |
||||||
* FC4 - Read holding input registers |
* FC2 - Read input discretes |
||||||
* FC5 - Write single coil |
* FC3 - Read holding registers |
||||||
* FC6 - Write single register |
* FC4 - Read holding input registers |
||||||
* FC15 - Write multiple coils |
* FC5 - Write single coil |
||||||
* FC16 - Write multiple registers |
* FC6 - Write single register |
||||||
* FC22 - Mask Write register |
* FC15 - Write multiple coils |
||||||
* FC23 - Read/Write multiple registers |
* FC16 - Write multiple registers |
||||||
|
* FC23 - Read/Write multiple registers |
||||||
Example |
|
||||||
------- |
Example: |
||||||
|
|
||||||
```php |
```php |
||||||
// Modbus master UDP |
require_once dirname(__FILE__) . '/Phpmodbus/ModbusMaster.php'; |
||||||
$modbus = new ModbusMaster("192.168.1.1", "UDP"); |
|
||||||
// Read multiple registers |
// Modbus master UDP |
||||||
try { |
$modbus = new ModbusMaster("192.168.1.1", "UDP"); |
||||||
$recData = $modbus->readMultipleRegisters(0, 12288, 5); |
// Read multiple registers |
||||||
} |
try { |
||||||
catch (Exception $e) { |
$recData = $modbus->readMultipleRegisters(0, 12288, 5); |
||||||
// Print error information if any |
} |
||||||
echo $modbus; |
catch (Exception $e) { |
||||||
echo $e; |
// Print error information if any |
||||||
exit; |
echo $modbus; |
||||||
} |
echo $e; |
||||||
// Print data in string format |
exit; |
||||||
echo PhpType::bytes2string($recData); |
} |
||||||
|
// 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 |
Note: |
||||||
[FAQ]: https://code.google.com/p/phpmodbus/wiki/FAQ |
* The PHP extension php_sockets.dll should be enabled (server php.ini file) |
||||||
|
@ -1,17 +1,21 @@ |
|||||||
{ |
{ |
||||||
"name": "adduc/phpmodbus", |
"name": "MightyPork/phpmodbus", |
||||||
"description": "Composer version of PhpModBus", |
"keywords": ["phpmodbus","modbus"], |
||||||
"license": "LGPL", |
"description": "PhpModbus with namespaces and updated to PHP 7", |
||||||
"authors": [ |
"license": "LGPL", |
||||||
{ |
"require": { |
||||||
"name": "Honza Krakora", |
"php": "^5.3.2 || ^7.0", |
||||||
"email": "krakora.jan@googlemail.com" |
"ext-sockets": "*" |
||||||
} |
}, |
||||||
], |
"authors": [ |
||||||
"autoload": { |
{ |
||||||
"classmap": [ "Phpmodbus" ] |
"name": "Honza Krakora", |
||||||
}, |
"email": "krakora.jan@googlemail.com" |
||||||
"require": { |
|
||||||
"ext-sockets": "*" |
|
||||||
} |
} |
||||||
|
], |
||||||
|
"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 |
<?php |
||||||
|
|
||||||
|
namespace PHPModbus; |
||||||
|
|
||||||
/** |
/** |
||||||
* Phpmodbus Copyright (c) 2004, 2013 Jan Krakora |
* Phpmodbus Copyright (c) 2004, 2013 Jan Krakora |
||||||
* |
* |
@ -1,4 +1,7 @@ |
|||||||
<?php |
<?php |
||||||
|
|
||||||
|
namespace PHPModbus; |
||||||
|
|
||||||
/** |
/** |
||||||
* Phpmodbus Copyright (c) 2004, 2012 Jan Krakora |
* 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