Skip to content

Releases: stephane/libmodbus

v3.0.0

15 Aug 17:53
Compare
Choose a tag to compare

OK, the new stable release of libmodbus is finally out!
Two years after libmodbus v2.0.3 and 400 commits, I'm happy to release this new version
which contains many changes to improve the API and enhance the Modbus protocol conformity.

The major features of this release are:

  • more coherent and extended API
  • POSIX error return codes
  • full documentation of the API
  • IPv6 support
  • new backend design
  • support for Windows, MacOS X and FreeBSD
  • rewriting of the message reading to avoid timeout
  • native serial communication on Windows

Thanks to the many contributors

Tobias Doerffel, Florian octo Forster, Hannu Vuolasaho, Patsy Kaye, Ivo
De Decker, Allan Cornet, Manfred Gruber, Jason Oster, Petr Parýzek,
Antti Manninen, Barry Grumbine, Kirill Smelkov, Anibal Limón, David
Olivari, Sisyph, aladdinwu, Jeff Laughlin, Yishin Li , Henrik Munktell,
Paul Fertser, Norbert Koch and Stéphane Raimbault (@stephane)

v2.9.4: Bump version to 2.9.4

15 Aug 17:57
Compare
Choose a tag to compare

This minor release contains many new features with IPv6 support, documentation
(man and HTML), error recovery modes and small API changes. I'm intend to
release the version 3.0 so I need feeback from this release even more if you use
libmodbus on Windows or MacOS X (check nanosleep support for example).

It's easy to test the library, just compile and run the unit tests! Don't forget
to notify your success or failure (by mail, wiki or bug report), see the
Call for Testers page or the mailing list for details.

There are already Debian and Fedora packages but I need help to submit them to the distributions,
so all experience in this field is appreciated.

  • IPv6 support Make the TCP implementation "protocol independent" by Florian Forster
    and Stéphane Raimbault.

  • Fix compilation on Windows 7 (x64) with MinGW/MSYS and GCC 4.
    Reported by Patsy Kaye.

  • Documentation of libmodbus functions with AsciiDoc (man and HTML) by Stéphane Raimbault

  • Avoid an iteration in flush function

  • New functions to send and receive raw requests
    (modbus_send_raw_request, modbus_receive_confirmation)

  • Fix flush function of TCP backend on Windows

  • API changes for server/slave:

    • modbus_receive doesn't take socket/fd argument anymore
    • new function modbus_set_socket to set socket/fd
  • API changes for timeout functions:

    • modbus_get_timeout_begin -> modbus_get_response_timeout
    • modbus_set_timeout_begin -> modbus_set_response_timeout
    • modbus_get_timeout_end -> modbus_get_byte_timeout
    • modbus_set_timeout_end -> modbus_set_byte_timeout
  • Fix longstanding limitation of server to wait forever

  • New functions modbus_set/get_serial_mode by Manfred Gruber and Stéphane
    Raimbault for RS485 communications

  • Improved recovery mode (see modbus_set_error_recovery
    documentation) for data link and protocol errors.

  • Fix compilation issue with Microsoft Visual Studio 2008. Reported by Allan Cornet.

v2.9.3

15 Aug 18:01
Compare
Choose a tag to compare

During this development cycle, I've received more feedback than for any
other releases. That's really cool, thank you! With this new release,
you can consider to migrate from the previous 2.0.x series for your
applications.

  • Major rewriting of the message reading (no more timeouts on exception)
  • New function to reply to an indication with an exception message
    modbus_reply_exception()
  • New function modbus_get_header_length(modbus_t *ctx)
  • New functions to manipulate data:
    • MODBUS_GET_INT32_FROM_INT16
    • MODBUS_GET_INT16_FROM_INT8
    • MODBUS_SET_INT16_TO_INT8
  • Fix #2 . Read/write were swapped in _FC_READ_AND_WRITE_REGISTERS
  • Install an ignore handler for SIGPIPE on *BSD. Original patch by Jason Oster.
  • Fix closing of Win32 socket. Reported by Petr Parýzek.
  • Fix unit identifier not copied by the TCP server. Reported by Antti Manninen
  • Fix missing modbus_flush() in unit tests.
  • Fixes for OpenBSD by Barry Grumbine and Jason Oster

This time, the release is not only available as tarball but also as
Fedora and Ubuntu packages on the download
page
.

For the next release, I've already merged my ipv6 branch (based on the work of
Florian Forster), the rtai
branch of Chris Cole is waiting for review (ah, RTAI, like in the good old days
:) and I hope to take care of the gtk-doc work done by Luis Matos.

v2.9.2: Add -Wall and -Werror for GCC

15 Aug 18:06
Compare
Choose a tag to compare

OK, I don't care about Windows but I'm happy libmodbus offers a
bit of Open Source to this platform so thank you to Tobias Doerffel for
this contribution. The other major change is the use of an internal
backend to isolate the transport layers (only serial RTU and TCP/IPv4
for now).

  • Fix segfault in bandwidth-server-many-up on inet_ntoa() call
  • Fix unit test of report slave ID in RTU
  • Fix GH-3. Remove inclusion of config.h in modbus.h
  • Correctly detect if we are cross
  • compiling for win32 by Kirill Smelkov.
  • Rename modbus_[listen|accept] to modbus_tcp_[listen|accept]
  • Fix setting of the broadcast address
  • Remove slave argument from modbus_new_rtu()
  • Win32 support by Tobias Doerffel
  • Split source code around RTU and TCP (backends)
  • Check received function code

So let's run your MinGW!

v1.2.2

15 Aug 18:11
Compare
Choose a tag to compare

libmodbus is an old project but I never wrote a post about it.

I recently released 2 new versions to include some bug fixes:

  • Fix #161989
    (Konstantinos Togias) Serial device paths more than 10 chars long
    (eg. /dev/ttyUSB0) don't fit to modbus_param_t -> device char[11]
    var.
  • Structure is also bit better 'packed' to conserve memory (see the
    trunk for a real enhancement). libmodbus 1.2.1 (2007-11-02)
  • Fix #159443
    (Stefan Bisanz) Index of incoming data in force multiple coils
    function
  • Deleted useless code in check_crc16()
  • Untabify source code
  • Changed author's email (Stéphane Raimbault)

The development continues (slowly) in trunk to include the slave component of the protocol.