mirror of
https://github.com/3cky/mbusd.git
synced 2024-12-23 16:27:33 +01:00
Open-source Modbus TCP to Modbus RTU (RS-232/485) gateway.
doc | ||
m4 | ||
src | ||
.cproject | ||
.gitignore | ||
.gitlab-ci.yml | ||
.project | ||
acinclude.m4 | ||
aclocal.m4 | ||
autogen.sh | ||
CHANGELOG.md | ||
compile | ||
config.guess | ||
config.h.in | ||
config.sub | ||
configure | ||
configure.ac | ||
depcomp | ||
install-sh | ||
libtool | ||
LICENSE | ||
ltconfig | ||
ltmain.sh | ||
Makefile.am | ||
Makefile.in | ||
missing | ||
mkinstalldirs | ||
README.md | ||
stamp-h1 | ||
stamp-h.in |
About mbusd
mbusd is open-source 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:
$ git clone https://github.com/3cky/mbusd.git mbusd.git $ cd mbusd.git $ ./configure $ make # make install $ make clean
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).
-y file
Enable RS-485 direction data direction control by writing '1' to file
for transmitter enable and '0' to file for transmitter disable
-Y file
Enable RS-485 direction data direction control by writing '0' to file
for transmitter enable and '1' to file for transmitter disable
-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 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:
- Fork it and clone forked repository
- Create your feature branch (
git checkout -b my-new-feature
) - Make your changes
- Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - 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
James Jarvis (jj@aprsworld.com):
- file based RS-485 data direction control
License:
This project is distributed under the BSD license. See the LICENSE file for the full license text.