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