s7nodave for EPICS is a device support based on Asyn and libnodave that communicates with S7 (or compatible) PLCs. Unlike other EPICS device supports for the S7 PLCs, this device support does not require any special programming on the PLC side. Instead, the EPICS records just specify the memory address in the PLC and the device support uses the ISO-TCP protocol supported by most S7 PLCs in order to read or write the channel data.
An extensive manual, explaining how to install, configure and use the s7nodave device support is available online.
This program and the accompanying materials are made available under the terms of the GNU General Public License version 3. By downloading the software you agree to be bound the the terms of this license. In particular, you have to agree to sections 15 (“Disclaimer of Warranty”) and 16 (“Limitation of Liability”) before downloading the software.
The minimal version of Snap7 distributed with s7nodave since version 3.0.0 is licensed under the terms if the GNU Lesser General Public License version 3. Please refer to the files included in the source distribution for more copyright and licensing information.
The modified version of libnodave distributed with s7nodave until version 2.1.4 is licensed under the terms if the GNU Lesser General Public License version 2.1. Please refer to the files included in the source distribution for more copyright and licensing information.
Release 3.0.2 (April 12th, 2021):
Changes:
This release fixes a critical bug that was introduced with the 3.0.0
release. Unit tests have now been added that test for the regressions
introduced in the 3.0.0 release (and also test other components), so that
similar regressions should be avoided in future releases.
Release 3.0.1 (April 1st, 2021):
Changes:
This release fixes two bugs, one of them critical, that were introduced
with the 3.0.0 release. In addition to that, there is a minor improvement
in the connection handling when using the device support on macOS.
Release 3.0.0 (March 30th, 2021):
Changes:
This release makes major changes in the backend. Usually, an EPICS IOC
using this device support should not be affected by these changes and
simply recompiling it should be sufficient.
However, as it is possible that someone directly used the API of the
backend, it has been decided to increment the major version number for
this release.
In the backend, libnodave has been replaced by
Snap7.
This was mainly done to avoid a bug in libnodave that would sometimes
cause communication problems in combination with some newer CPUs (the bug
was first seen with a S7-1500 series CPU). Due to the rather bad code
quality of libnodave, this bug could not be easily fixed there and thanks
to the much better quality of Snap7, it is likely that this migration also
helped to fix a few more bugs that simply had not been discovered yet.
The dependency on the Boost library has been removed and the respective
components have been replaced with components from the C++ 11 standard
library. This means that starting with this release, you will need a C++
compiler supporting C++ 11 in order to compile s7nodave.
Release 2.1.4 (October 31st, 2019):
Changes:
This release fixes two bugs and brings one minor improvement.
The first bug that is fixed was triggered when the port number was
explicitly specified when connecting to a PLC. This was rare, because
usually the default port is used.
The second bug caused an input record operating in I/O Intr mode (and thus
being part of a poll group) to not be correctly put into an alarm state and
instead provide random data when the overall read operation for the poll
group succeded, but there was a problem with the specific address specified
by the record.
The improvement concerns output records: Their alarm severity is now
automatically cleared when their current value could be read from the PLC
during IOC startup. This means that such records do not have to be
processed to clear the initial alarm state any longer.
Release 2.1.3 (December 11th, 2017):
Changes:
This release fixes a bug in the S7nodavePortDriver class.
This bug sometimes caused the reading of multiple items in a single request
(like used in poll groups) to fail because too many items were put into a
single request. This problem would only appear, when an item's data would
still fit into a PDU, but the item’s data plus header would not.
Release 2.1.2 (November 15th, 2017):
Changes:
This release fixes a bug in the S7nodavePortDriver class.
This bug caused the reading of multiple items in a single request (like
used in poll groups) to fail because too many items were put into a single
request. This bug would only appear under very specific, rare
circumstances.
Release 2.1.1 (November 24th, 2016):
Changes:
This release fixes three bugs in the S7nodavePortDriver class.
The first bug would cause a crash when a log message was generated while
writing a single bit.
This would happen when there was a write error or when debugging was
enabled.
The two other bugs concerned the logic for reading multiple items in a
single request (used for poll groups).
The first of these two bugs could cause an infinite loop, causing the I/O
thread spin indefinitely without making any progress.
The second one could cause too many items being requested in a single
request, resulting in a read error.
Release 2.1.0 (June 23rd, 2016):
Changes:
This release makes the s7nodave device support compatible with EPICS Base
3.15.4. As a side effect, the behavior when the value of the NOBT field of
mbbi, mbbo, mbbiDirect, and mbboDirect records is equal to the number of
bits of the PLC data type has been changed. In previous versions, the MASK
and NOBT fields would be reset to zero, resulting in an explicitly set MASK
being lost. With this release, the MASK is preserved and only reset to zero
if NOBT is greater than the number of bits of the PLC data type. This
change does not have any effects when using EPICS Base 3.14 because the
record support always overwrites the MASK field in EPICS Base 3.14, even if
the MASK is non-zero.
Release 2.0.1 (August 7th, 2015):
Changes:
This release fixes two bugs. The first bug caused the IOC to crash during
startup under certain conditions and was caused by an invalid iterator
dereference. This bug was present in all prior version of s7nodave.
The second bug concerned the validation of parameters to the
s7nodaveConfigureIsoTcpPort IOC shell command. This bug only had an effect
when too few arguments were passed to this command and was only present in
the 2.0.0 release.
In addition to the two bug fixes, this release implements a small change
that allows you to change settings in the configure/CONFIG_SITE or
configure/RELEASE files without actually modifying the files by creating
a configure/CONFIG_SITE.local or configure/RELEASE.local.
Release 2.0.0 (February 8th, 2015):
Changes:
This release adds options to configure the rack and slot number for the PLC
connection, thus enabling communication with a wider range of S7 PLCs.
It also changes the way that individual bits in DB areas are addressed, so
that the address format now matches the format used by most S7 tools.
Caution: These changes make this release incompatible with older
releases of s7nodave. You will have to update your project configuration in
order to use this release. The changes are simply and should only take a
few minutes. Please refer to the
News section of the manual
for detailed instructions.
Release 1.0.3 (April 24th, 2014):
Changes:
This release fixes various bugs affecting the ai, stringin and stringout
records. Other fixes address problems with timer and counter addresses and
a dead-lock that could appear if record initialization failed. For more
details and a full list of the fixed bugs, have a look at the NEWS file in
the source distribution.
Release 1.0.2 (January 1st, 2013):
Changes:
This release fixes a bug that caused a wrong boolean value to be read for
the first bit in a byte that had other bits set.
Release 1.0.1 (December 17th, 2012):
Changes:
This release fixes two bugs. The first bug was in the ai and ao record
support and occurred when these record types were used with a
floating-point number in the PLC. The other bug affected the support for
the mbboRecord and (under special conditions) could cause a crash due
to a read beyond array limits.
Release 1.0.0 (January 28th, 2012):
Changes:
First public release of s7nodave.
You can contact the author of this software, Sebastian Marsching, at s7nodave-maintainer
<at> oss <dot> aquenos <dot> com.Visit other projects on oss.aquenos.com.
© 2012-2013 aquenos GmbH