mirror of
https://github.com/3cky/mbusd.git
synced 2024-12-24 16:37:37 +01:00
Updated project documentation files
This commit is contained in:
parent
c3b18ab039
commit
af7a5fbf8f
2
AUTHORS
2
AUTHORS
@ -1,2 +0,0 @@
|
||||
Victor Antonovich (v.antonovich@gmail.com)
|
||||
Andrew Denysenko <nitr0@seti.kr.ua>
|
35
CHANGELOG.md
Normal file
35
CHANGELOG.md
Normal file
@ -0,0 +1,35 @@
|
||||
# Change Log
|
||||
|
||||
## [0.2.2] - 2015-12-18
|
||||
### Fixed
|
||||
- Function code 6 response reading error #3.
|
||||
|
||||
## [0.2.1] - 2015-06-08
|
||||
### Added
|
||||
- Serial port mode configuration option (-m).
|
||||
|
||||
## [0.2.0] - 2015-02-24
|
||||
### Added
|
||||
- RTS RS-485 transmit/receive control (thanks to Andrew Denysenko <nitr0@seti.kr.ua>).
|
||||
- RTU response receiving by length (thanks to Andrew Denysenko <nitr0@seti.kr.ua>).
|
||||
|
||||
### Changed
|
||||
- Standard error codes for receive error (04) and timeout (0x0B).
|
||||
|
||||
## [0.1.3] - 2013-11-18
|
||||
### Fixed
|
||||
- Serial interface initialization under Linux.
|
||||
- x86_64 build.
|
||||
|
||||
### Changed
|
||||
- Default RTU client response wait timeout increased to 50 ms.
|
||||
|
||||
### Added
|
||||
- Eclipse CDT project files.
|
||||
|
||||
## [0.1.2] - 2003-09-26
|
||||
### Fixed
|
||||
- Compilation under CYGWIN.
|
||||
|
||||
## [0.1.1] - 2003-09-13
|
||||
### Initial release
|
27
COPYING
27
COPYING
@ -1,27 +0,0 @@
|
||||
* OpenMODBUS/TCP to RS-232/485 MODBUS gateway license *
|
||||
|
||||
Copyright (c) 2002-2003, 2013, 2015 Victor Antonovich (avmlink@vlink.ru)
|
||||
Copyright (c) 2011 Andrew Denysenko <nitr0@seti.kr.ua>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
- Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
- Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
|
||||
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
38
ChangeLog
38
ChangeLog
@ -1,38 +0,0 @@
|
||||
0.1.1
|
||||
-----------
|
||||
13-sep-2003 Initial release.
|
||||
|
||||
0.1.2
|
||||
-----------
|
||||
26-sep-2003 Some changes and fixups:
|
||||
|
||||
* Compilation under CYGWIN now is possible.
|
||||
|
||||
0.1.3
|
||||
-----------
|
||||
18-nov-2013 Project fixes and updates:
|
||||
|
||||
* Updated build infrastructure (x86_64 build fixed);
|
||||
* Fixed serial interface initialization under Linux;
|
||||
* Default RTU client response wait timeout increased to 50 ms;
|
||||
+ Added Eclipse CDT project files.
|
||||
|
||||
0.2.0
|
||||
-----------
|
||||
24-feb-2015 Merged changes by Andrew Denysenko <nitr0@seti.kr.ua>:
|
||||
|
||||
+ RTS RS-485 transmit/receive control
|
||||
* RTU response receiving by length
|
||||
* Standard error codes for receive error (04) and timeout (0x0B)
|
||||
|
||||
0.2.1
|
||||
-----------
|
||||
08-jun-2015:
|
||||
|
||||
+ Added serial port mode configuration option (-m).
|
||||
|
||||
0.2.2
|
||||
-----------
|
||||
18-dec-2015:
|
||||
|
||||
* Fixed function 6 response reading error (#3).
|
182
INSTALL
182
INSTALL
@ -1,182 +0,0 @@
|
||||
Basic Installation
|
||||
==================
|
||||
|
||||
These are generic installation instructions.
|
||||
|
||||
The `configure' shell script attempts to guess correct values for
|
||||
various system-dependent variables used during compilation. It uses
|
||||
those values to create a `Makefile' in each directory of the package.
|
||||
It may also create one or more `.h' files containing system-dependent
|
||||
definitions. Finally, it creates a shell script `config.status' that
|
||||
you can run in the future to recreate the current configuration, a file
|
||||
`config.cache' that saves the results of its tests to speed up
|
||||
reconfiguring, and a file `config.log' containing compiler output
|
||||
(useful mainly for debugging `configure').
|
||||
|
||||
If you need to do unusual things to compile the package, please try
|
||||
to figure out how `configure' could check whether to do them, and mail
|
||||
diffs or instructions to the address given in the `README' so they can
|
||||
be considered for the next release. If at some point `config.cache'
|
||||
contains results you don't want to keep, you may remove or edit it.
|
||||
|
||||
The file `configure.in' is used to create `configure' by a program
|
||||
called `autoconf'. You only need `configure.in' if you want to change
|
||||
it or regenerate `configure' using a newer version of `autoconf'.
|
||||
|
||||
The simplest way to compile this package is:
|
||||
|
||||
1. `cd' to the directory containing the package's source code and type
|
||||
`./configure' to configure the package for your system. If you're
|
||||
using `csh' on an old version of System V, you might need to type
|
||||
`sh ./configure' instead to prevent `csh' from trying to execute
|
||||
`configure' itself.
|
||||
|
||||
Running `configure' takes awhile. While running, it prints some
|
||||
messages telling which features it is checking for.
|
||||
|
||||
2. Type `make' to compile the package.
|
||||
|
||||
3. Optionally, type `make check' to run any self-tests that come with
|
||||
the package.
|
||||
|
||||
4. Type `make install' to install the programs and any data files and
|
||||
documentation.
|
||||
|
||||
5. You can remove the program binaries and object files from the
|
||||
source code directory by typing `make clean'. To also remove the
|
||||
files that `configure' created (so you can compile the package for
|
||||
a different kind of computer), type `make distclean'. There is
|
||||
also a `make maintainer-clean' target, but that is intended mainly
|
||||
for the package's developers. If you use it, you may have to get
|
||||
all sorts of other programs in order to regenerate files that came
|
||||
with the distribution.
|
||||
|
||||
Compilers and Options
|
||||
=====================
|
||||
|
||||
Some systems require unusual options for compilation or linking that
|
||||
the `configure' script does not know about. You can give `configure'
|
||||
initial values for variables by setting them in the environment. Using
|
||||
a Bourne-compatible shell, you can do that on the command line like
|
||||
this:
|
||||
CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
||||
|
||||
Or on systems that have the `env' program, you can do it like this:
|
||||
env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
||||
|
||||
Compiling For Multiple Architectures
|
||||
====================================
|
||||
|
||||
You can compile the package for more than one kind of computer at the
|
||||
same time, by placing the object files for each architecture in their
|
||||
own directory. To do this, you must use a version of `make' that
|
||||
supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
||||
directory where you want the object files and executables to go and run
|
||||
the `configure' script. `configure' automatically checks for the
|
||||
source code in the directory that `configure' is in and in `..'.
|
||||
|
||||
If you have to use a `make' that does not supports the `VPATH'
|
||||
variable, you have to compile the package for one architecture at a time
|
||||
in the source code directory. After you have installed the package for
|
||||
one architecture, use `make distclean' before reconfiguring for another
|
||||
architecture.
|
||||
|
||||
Installation Names
|
||||
==================
|
||||
|
||||
By default, `make install' will install the package's files in
|
||||
`/usr/local/bin', `/usr/local/man', etc. You can specify an
|
||||
installation prefix other than `/usr/local' by giving `configure' the
|
||||
option `--prefix=PATH'.
|
||||
|
||||
You can specify separate installation prefixes for
|
||||
architecture-specific files and architecture-independent files. If you
|
||||
give `configure' the option `--exec-prefix=PATH', the package will use
|
||||
PATH as the prefix for installing programs and libraries.
|
||||
Documentation and other data files will still use the regular prefix.
|
||||
|
||||
In addition, if you use an unusual directory layout you can give
|
||||
options like `--bindir=PATH' to specify different values for particular
|
||||
kinds of files. Run `configure --help' for a list of the directories
|
||||
you can set and what kinds of files go in them.
|
||||
|
||||
If the package supports it, you can cause programs to be installed
|
||||
with an extra prefix or suffix on their names by giving `configure' the
|
||||
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
||||
|
||||
Optional Features
|
||||
=================
|
||||
|
||||
Some packages pay attention to `--enable-FEATURE' options to
|
||||
`configure', where FEATURE indicates an optional part of the package.
|
||||
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
||||
is something like `gnu-as' or `x' (for the X Window System). The
|
||||
`README' should mention any `--enable-' and `--with-' options that the
|
||||
package recognizes.
|
||||
|
||||
For packages that use the X Window System, `configure' can usually
|
||||
find the X include and library files automatically, but if it doesn't,
|
||||
you can use the `configure' options `--x-includes=DIR' and
|
||||
`--x-libraries=DIR' to specify their locations.
|
||||
|
||||
Specifying the System Type
|
||||
==========================
|
||||
|
||||
There may be some features `configure' can not figure out
|
||||
automatically, but needs to determine by the type of host the package
|
||||
will run on. Usually `configure' can figure that out, but if it prints
|
||||
a message saying it can not guess the host type, give it the
|
||||
`--host=TYPE' option. TYPE can either be a short name for the system
|
||||
type, such as `sun4', or a canonical name with three fields:
|
||||
CPU-COMPANY-SYSTEM
|
||||
|
||||
See the file `config.sub' for the possible values of each field. If
|
||||
`config.sub' isn't included in this package, then this package doesn't
|
||||
need to know the host type.
|
||||
|
||||
If you are building compiler tools for cross-compiling, you can also
|
||||
use the `--target=TYPE' option to select the type of system they will
|
||||
produce code for and the `--build=TYPE' option to select the type of
|
||||
system on which you are compiling the package.
|
||||
|
||||
Sharing Defaults
|
||||
================
|
||||
|
||||
If you want to set default values for `configure' scripts to share,
|
||||
you can create a site shell script called `config.site' that gives
|
||||
default values for variables like `CC', `cache_file', and `prefix'.
|
||||
`configure' looks for `PREFIX/share/config.site' if it exists, then
|
||||
`PREFIX/etc/config.site' if it exists. Or, you can set the
|
||||
`CONFIG_SITE' environment variable to the location of the site script.
|
||||
A warning: not all `configure' scripts look for a site script.
|
||||
|
||||
Operation Controls
|
||||
==================
|
||||
|
||||
`configure' recognizes the following options to control how it
|
||||
operates.
|
||||
|
||||
`--cache-file=FILE'
|
||||
Use and save the results of the tests in FILE instead of
|
||||
`./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
||||
debugging `configure'.
|
||||
|
||||
`--help'
|
||||
Print a summary of the options to `configure', and exit.
|
||||
|
||||
`--quiet'
|
||||
`--silent'
|
||||
`-q'
|
||||
Do not print messages saying which checks are being made. To
|
||||
suppress all normal output, redirect it to `/dev/null' (any error
|
||||
messages will still be shown).
|
||||
|
||||
`--srcdir=DIR'
|
||||
Look for the package's source code in directory DIR. Usually
|
||||
`configure' can determine that directory automatically.
|
||||
|
||||
`--version'
|
||||
Print the version of Autoconf used to generate the `configure'
|
||||
script, and exit.
|
||||
|
||||
`configure' also accepts some other, not widely useful, options.
|
28
LICENSE
Normal file
28
LICENSE
Normal file
@ -0,0 +1,28 @@
|
||||
Copyright (c) 2002-2003, 2013-2016 Victor Antonovich (v.antonovich@gmail.com)
|
||||
Copyright (c) 2011 Andrew Denysenko <nitr0@seti.kr.ua>
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation and/or
|
||||
other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
113
README.md
Normal file
113
README.md
Normal file
@ -0,0 +1,113 @@
|
||||
About mbusd
|
||||
===========
|
||||
|
||||
**mbusd** is open-source [Modbus](https://en.wikipedia.org/wiki/Modbus) TCP to Modbus RTU (RS-232/485) gateway.
|
||||
|
||||
Features:
|
||||
---------
|
||||
|
||||
* Small footprint - suitable to run on embedded devices and SBCs like Raspberry Pi
|
||||
* Multi-master - multiple TCP masters can access slave devices in RTU network using same gateway
|
||||
* Robustness - can retry requests with mismatched response CRC
|
||||
* Flexible RTU modes - speed/parity/stop-bits/timeouts can be configured for RTU network
|
||||
* Support for both of automatic and manual (using RTS bit) direction control types for RS-485 transceivers
|
||||
|
||||
Supported function codes:
|
||||
-------------------------
|
||||
|
||||
* 01: Read coil status
|
||||
* 02: Read input status
|
||||
* 03: Read holding registers
|
||||
* 04: Read input registers
|
||||
* 05: Force single coil
|
||||
* 06: Preset single register
|
||||
* 07: Read exception status
|
||||
* 15: Force multiple coils
|
||||
* 16: Preset multiple registers
|
||||
|
||||
Please note all other function codes (including vendor-specific extensions) are supported on a "best-effort" basis and most likely will fail.
|
||||
|
||||
Configuring and compilation:
|
||||
----------------------------
|
||||
|
||||
<pre>
|
||||
$ git clone https://github.com/3cky/mbusd.git mbusd.git
|
||||
$ cd mbusd.git
|
||||
$ ./configure
|
||||
$ make
|
||||
# make install
|
||||
$ make clean
|
||||
</pre>
|
||||
|
||||
Usage:
|
||||
------
|
||||
|
||||
mbusd [-h] [-d] [-t] [-v level] [-L logfile] [-p device] [-s speed] [-m mode] \
|
||||
[-P port] [-C maxconn] [-N retries] [-R pause] [-W wait] [-T timeout]
|
||||
|
||||
-h Usage help.
|
||||
-d Instruct mbusd not to fork itself (non-daemonize).
|
||||
-t Enable RTS RS-485 data direction control (if not disabled while compile).
|
||||
-v level
|
||||
Specifies log verbosity level (0 for errors only, 1 for warnings
|
||||
and 2 for also information messages.) If mbusd was compiled in debug mode,
|
||||
valid log levels are up to 9, where log levels above 2 forces
|
||||
logging of information about additional internal events.
|
||||
-L logfile
|
||||
Specifies log file name ('-' for logging to STDOUT only, default is /var/log/mbusd.log).
|
||||
-p device
|
||||
Specifies serial port device name.
|
||||
-s speed
|
||||
Specifies serial port speed.
|
||||
-m mode
|
||||
Specifies serial port mode (like 8N1).
|
||||
-P port
|
||||
Specifies TCP port number (default 502).
|
||||
-C maxconn
|
||||
Specifies maximum number of simultaneous TCP connections.
|
||||
-N retries
|
||||
Specifies maximum number of request retries (0 disables retries).
|
||||
-R pause
|
||||
Specifies pause between requests in milliseconds.
|
||||
-W wait
|
||||
Specifies response wait time in milliseconds.
|
||||
-T timeout
|
||||
Specifies connection timeout value in seconds (0 disables timeout).
|
||||
|
||||
Please note running **mbusd** on default Modbus TCP port (502) requires root privileges!
|
||||
|
||||
Reporting bugs:
|
||||
---------------
|
||||
|
||||
Please file [issue](https://github.com/3cky/mbusd/issues) with attached debug log in verbose (`-v9`) mode, i.e.:
|
||||
|
||||
# mbusd -L/tmp/mbusd.log -p /dev/ttyUSB0 -s 9600 -P 502 -d -v9
|
||||
|
||||
Unless you were prompted so or there is another pertinent reason (e.g. GitHub fails to accept the bug report), please do not send bug reports via personal email.
|
||||
|
||||
Contributing:
|
||||
-------------
|
||||
|
||||
1. Fork it and clone forked repository
|
||||
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||
3. Make your changes
|
||||
4. Commit your changes (`git commit -am 'Add some feature'`)
|
||||
5. Push to the branch (`git push origin my-new-feature`)
|
||||
6. Create new Pull Request
|
||||
|
||||
Author:
|
||||
-------
|
||||
|
||||
Victor Antonovich (v.antonovich@gmail.com)
|
||||
|
||||
Credits:
|
||||
--------
|
||||
|
||||
Andrew Denysenko <nitr0@seti.kr.ua>:
|
||||
- RTS RS-485 data direction control
|
||||
- RTU response receiving by length
|
||||
|
||||
License:
|
||||
--------
|
||||
|
||||
This project is distributed under the BSD license. See the [LICENSE](https://github.com/3cky/mbusd/blob/master/LICENSE) file for the full license text.
|
7
TODO
7
TODO
@ -1,7 +0,0 @@
|
||||
To do:
|
||||
------
|
||||
* Configuration file loading
|
||||
* Signals processing (HUP, USR1, etc).
|
||||
* Client addresses restriction
|
||||
* Broadcast MODBUS messaging implementation
|
||||
* SSL secure connection implementation
|
@ -29,7 +29,7 @@ mbusd \- MODBUS/TCP to MODBUS/RTU gateway.
|
||||
.RB [ -T
|
||||
.IR timeout ]
|
||||
.SH DESCRIPTION
|
||||
\fImbusd\fR is MODBUS/TCP to MODBUS/RTU gateway. Currently only master mode is implemented.
|
||||
\fImbusd\fR is MODBUS/TCP to MODBUS/RTU gateway.
|
||||
.SH OPTIONS
|
||||
.IP \fB-h\fR
|
||||
Usage help.
|
||||
@ -40,11 +40,11 @@ Enable RTS RS-485 data direction control (if not disabled while compile).
|
||||
.IP "\fB-v \fIlevel\fR"
|
||||
Specifies log verbosity level. 0 enables logging of errors only,
|
||||
1 also enables warnings and 2 enables information messages.
|
||||
If \fImbusd\fR was compiled in debug mode, valid log levels is up to 9,
|
||||
If \fImbusd\fR was compiled in debug mode, valid log levels are up to 9,
|
||||
where log levels above 2 forces logging of information about additional
|
||||
internal events.
|
||||
.IP "\fB-L \fIlogfile\fR"
|
||||
Specifies log file name ('-' for logging to STDOUT only, default /var/log/mbusd.log).
|
||||
Specifies log file name ('-' for logging to STDOUT only, default is /var/log/mbusd.log).
|
||||
.IP "\fB-p \fIdevice\fR"
|
||||
Specifies serial port device name.
|
||||
.IP "\fB-s \fIspeed\fR"
|
||||
@ -77,5 +77,4 @@ Victor Antonovich <v.antonovich@gmail.com>
|
||||
|
||||
Andrew Denysenko <nitr0@seti.kr.ua>
|
||||
.SH LICENSE
|
||||
This program is distributed under the BSD-like license, included in
|
||||
each source file. See also COPYING file in the installation directory.
|
||||
This program is distributed under BSD license. See LICENSE file in the installation directory for the full license text.
|
||||
|
Loading…
Reference in New Issue
Block a user