CTI, A DIVISION OF THE POLING GROUP


Building & Platform Compatibility
PLCIO 4.6.0 Changes

  • The mod/inc/*.c files are named identically to the mod/*.c files in some cases. Change the names of the mod/inc/*.c files so that the standard UNIX 'make' programs do not attempt to compile the mod/inc/*.c files directly.
  • Fix displaying the correct tag array index in the "Alias For" column when listing tags with the 'showcip' example program.
  • Minor fixes for compiling with 32-bit and older versions of GCC.
  • Change the top-level Makefile to stop processing directories on an error.
  • Add new PLC_IS_COMM_ERROR() macro for deciding when to close/reopen the PLC during a communications error.
  • Reformat some C code lines to be under 80 characters long.
  • In the 'cip' module, when the "LoadTags" option is used, fix writing to tags that are a user-defined type (UDT).
  • Make the 'opcua' module increment the request handle with each OPC request.
  • Add support for communicating to Bosch Motion and Logic Controllers (MLCs) via OPC-UA over Ethernet/TCP using the new module 'opcua'.
  • Change the Makefile to use "cp -f" instead of "cp -fp" when installing files.
  • In module 'cipio', add a new Config=# option to plc_open() that can be used to change the Configuration Instance to connect to. The default is 1.
  • In the 'modeth' module, remove references to "Modbus+" and make it obvious that the protocol used is "Modbus TCP" instead.
  • In UNIX, add code to disable generating SIGPIPE on all network communication to the PLC
  • Fix missing close() calls for when Windows fails to initialize a serial COM device.
  • Fix a small memory leak in plc_close_serial() (the device name was not being freed properly).
  • Rewrite serial baud rate tables in lib/transport.c so it can compile on any UNIX system based on what baud rates are #defined in the OS.
  • enipd daemon: Add support for receiving Execute-PCCC messages over unconnected messaging, as used by CompactLogix 1769-L33ER.
  • enipd daemon: Fix some off-by-one errors in packet handling.
  • In examples/showcip.c, properly call free() and plc_close() to aid in memory-leak testing with the CIP module.
  • Use an unlimited timeout for plc_open() in examples/showcip.c, to handle the case where a PLC might have over 5000 tags defined.
  • Reformat C code to add whitespace around += and -= operations.
  • Support listing tags on a Micro800-series PLC.
  • Make examples/showcip.c append the "Micro800" option to the plc_open() string if it gets a 0x0311 error while connecting.
  • Add "-p path" option to the examples/showcip.c program.
  • Add support for reading/writing to the "Short String" datatype (0xda) via the 'cip' module.
  • Add "Micro800" convienence option in the 'cip' module plc_open() string.
  • Add support for specifying Path=None for all CIP-related modules (cip, cipab,fins).
  • Switch to using Winsock2 for the header file (winsock2.h & ws2tcpip.h) and library (-lws2_32). This provides the correct definitions needed for multicast networking.
  • Define our own custom error code and message for EPROTO (Protocol error), which does not exist in Winsock.
  • Change the #define for min() and max() so it correctly takes the type of both variables into account.
  • Rename RANGE() to clamp().
  • On Windows systems, use the more precise GetSystemTimeAsFileTime() function instead of _ftime().
  • Add support for compiling under GCC 10.
  • Bring manual pages up-to-date. Add new pages for plc_cfgfname(), plc_get_softplc_list(), and plc_log_callback().
  • Minor fixes to lib/log.c to support plc_log_callback().
  • Add new function plc_log_callback(PLC_LOG_CB *pf_callback), which sets a callback function for all plc_log() routines.
  • Add new PLC_LOG_CB typedef.
  • Mark plc_log(), plc_set_error(), and plc_clear_errors() as private (internal) library functions.
  • Add some missing error codes found when testing the 'slmp' module.
  • Also in 'slmp', allow receiving back more data than requested from labels.
  • Export global variable as_plc_modlist[] for use by the application.
  • Add new global 'ps_softplc_list', which allows the application to iterate through the list of Soft PLCs found in the "plcio.cfg" PLCIO Configuration file.
  • Export function plc_cfgfname() for use by the application.
  • Add new function plc_get_softplc_list(), which reads "plcio.cfg" and regenerates the 'ps_softplc_list' global on demand.
  • Fix running 'make' with multiple jobs.
  • Only make library functions marked PLCIO_API visible in the GNU/Linux .so shared object. Further, strip the file if debugging is not enabled.
  • Add support for Mitsubishi PLCs using the SLMP protocol via TCP.
  • Add support for compiling the PLCIO library natively under Microsoft Visual Studio C++.
  • Provide CMakeLists.txt for generating a project .sln (solution) file in MSVC.
  • Add the capability for PLCIO to run statically linked in an executable:
  • Use "int" instead of "long" when copying 4-byte IP Addresses.
  • Add support for reading/writing Analog Inputs (AI), Analog Outputs (AQ), Timers (T), and Counters (C) on S7-200 PLCs.
  • Add new PLC type "S7-200-Smart".
  • Properly check for available GCC -W warning options in "configure".
  • Add support for compiling with GCC 8.
  • Add support for compiling under Cygwin.

CTI, A DIVISION OF THE POLING GROUP
Founded in 1978, CTI has been a valuable resource for large industries. Since 2001, we've expanded the capabilities of Poling Group tire equipment, including uniformity and geometry testing machines.

©2024 The CTI Division of the Poling Group