PLCnext toolchain changelog
This topic lists changes made to the PLCnext Technology Toolchain in updates, starting with PLCnext Technology Toolchain release 2022.0 LTS. In addition, issues with the tools and interconnections are reported below in this topic and in the general Known issues topic in this Info Center.
Tip: Find the changes note as a .pdf file in the Download section on the product page.
Release 2024.0
- A version check for our tooling is now active. Due to missing features, projects created with a newer toolchain can be incompatible if loaded with an older toolchain. This is checked with help of an internal versioning. The version numbering is increased if the project format changes or becomes incompatible.
- The toolchain generates meta files (e.g., *.libmeta, *.compmeta). Since all targets types have the same meta information, the metadata is now located in bin/config/*.*meta.
- The
CMake
version is updated. plcncli get setting
andplcncli set setting
now shows the available keys and description with the-d
or--description
option.plcnext.proj
is now pretty-printed and optimized for automatic Git merge.- The toolchain default
Msbuild
*.targets files are now importing user *.targets and *.props files from a subfolder named ./PLCnextUserImports/. This can be used to customize the default PLCnext Technology Toolchain Visual Studio® build tasks. //#typeinformation
works for enumerations.Typeinformation
is generated for dynamic ports in the .dt worksheet.- Additional return types for C# written functions are available for picking:
WSTRING
,LDATE
,LTIME_OF_DAY
andLDATE_AND_TIME
. - Generic
ANY
return types for C# written functions are not available for picking anymore. - The old C# debugger is removed, namely the
PLCnext Technology Debug Engine v1
including theeclr device
connection type. - C# Debugger supports simulation targets.
- Unattended PLCnext Toolchain setup is possible.
- The
AddInAnalyzer
is renamed toIecAnalyzer
. Old projects are converted automatically to use theIecAnalyzer
. - Fixed issues:
-
MSBuild
path in Visual Studio® is fixed. - Some minor parser issues are fixed.
- Improvements to the template system.
-
Release 2023.6
- A manual change of AssemblyInfos.cs needs to be done to avoid issues with existing Shared Native Library projects. Please change the
NativeDllFlags
to use only one attribute as following:[assembly: NativeDllFlags(NativeDllFlagsAttribute.LibraryModes.DomainAffinityExplicit)]
- The .so file can be excluded from PLCnext Engineer libraries in Shared Native Library projects.
- IEC 61131‑3 namespaces are used by default in new projects. It can be deactivated via project settings and also be activated for older projects.
Read more at Advanced programming features. - Added new eCLR3.4 libraries with the following added features. For more information look into the eCLR Programming Reference (download) .
- new method:
Eclr.Environment.GetMicroTickCount64()
- new method:
Eclr.Environment.GetInitialCulture()
- new enum:
Eclr.CultureID
- new class:
Eclr.Helper
- new method:
- For Visual Studio® 2022, the .Net™ framework 4.x installs with the setup.
- Changing IEC
bool
types is now supported.
Release 2023.0
- The extension now supports Visual Studio® 2022.
- C# code analyzer added new rules and enhanced existing rules.
- Hash values are automatically generated for PLCnext Engineer libraries. Find more information in the PLCnext Security Info Center.
- New attribute for IEC datatype port mapping is available and added to the Port Wizard.
- Clean and Rebuild in Visual Studio® now works.
- The following deprecated commands are finally removed (use
get project-information
to get a .json file with all the information at once):generate library
get components
get include-paths
get programs
get project-targets
- Added support for C++ features in metadata generation.
- PLCnext Engineer Library Configuration is added.
- The Visual Studio® extension now supports authentication and secure debugging via TLS. Read more about it in C# remote debugging.
- Shared Native Library templates for PLCnext CLI. Read how to use it in Shared Native Library.
- Shared Native Library project template in Visual Studio®. Read how to use it in the Shared Native Library.
Release 2022.6
- Include external libraries inside the .pcwlx library.
- The port parameter
#name
is checked for max. length (<128) and non-ASCII characters as well as for duplicate names. - A datatypes worksheet with all port structs, arrays and enums is created and added to the .pcwlx file. If not needed, it has to be disabled manually.
- Added C++ features for metadata generation:
- added support using parts of an enum as value
- added support using binary and mathematically operations
- template structs can be used as port types
- JSON schemas of CLI responses are added to the toolchain installation folder under
schemata
for reference. - Relocate build assemblies for Visual Studio® C++ and C# extension; the user is asked upon opening an old project for the necessary automatic conversion.
- Target and version specific generation is now added to the project templates.
- CMake autobuild will be done in the background for convenience.
- Rework of the Windows installer:
- separate Visual Studio® C++ and C# extension installation
- checking for Visual Studio® C# and C++ workload requirements
- moved C# dependencies to the toolchain installation folder
- remove unnecessary files procedure
- New rules added to the Visual Studio® C# AddInAnalyzer.
- HTML5 help file support for C# libraries.
- Rework of C# attributes in examples on GitHub.
Release 2022.0
PLCnext CLI and C++
- New progress bar for e.g. installing SDKs.
- Fixed issues with collaboration on one project when switching development environment and operating systems.
- Use of multiple namespaces is possible, especially interesting for the use of external libraries.
- Added C++ features for metadata generation:
- added support for constants in StaticStrings and arrays
- allow inheritance of port structures
- PLCnext Engineer user library tooltip (version and description) can now be edited (PLCnextSettings.xml file needed).
- Target PLCnext Engineer version of a user library can be defined (PLCnextSettings.xml file needed).
- The Visual Studio® extension has now jumpable errors messages.
- New attribute
Redundant
is now available in the Port Wizard with Eclipse® and Visual Studio®. - Added SDK installation progress bar for Visual Studio® extension.
- Added a option for multiple source folders.
- Improved CMake project name handling.
- User templates are now persistent while installing a new PLCnext toolchain version.
- StaticStrings and arrays can now be declared with a size given as a constant.
- Added target name and version to the SDK management page.
- Toolchain installer is now capable to modify installation options afterwards.
C#
- Toolchain project configuration for C# projects.
- Rebuilt C# Visual Studio® extension for future improvements.
- New C# debug options to load connection information from the PLCnext Engineer.
- Add support for HTML5 help files (template will be available with the PLCnext Toolchain 2022.6).
- New AddInAnalyzer checks code for PLCnext-specific code pattern and output warnings/errors for possible runtime issues running the code.
Known issues
Visual Studio® error "Value does not fall within the expected range."
This issue appears with Visual Studio 2022 version 17.9.2 and newer. A bugfix needs to be found. Meanwhile, use this workaroundthis workaround.
- Start a project without a target and add a solution configuration manually named
Project-specific
. After that, it should be possible to add targets to the project and work as usual. - Open the configuration manager.
- Add a new configuration.
- Name the new configuration
Project-specific
and uncheck the checkboxCreate new project configuration
.
Uninstallation issues with PLCnext Technology Toolchain 2023.0
In some cases removing of the PLCnext Technology C++ Templates in Visual Studio® 2022 fails. After uninstalling the toolchain (or if installing a newer version fails), check if the 2023.0 template is still available in Visual Studio®. In case, uninstall the 2023.0 template manually in Visual Studio® 2022 → Extensions → Manage Extensions → Installed.
If you have further issues, please contact our support via the PLCnext Community forum.
OpenSSL 3 on Linux
The PLCnext CLI does not work with OpenSSL 3 on Linux. The .Net™ version 6 used in the toolchain requires OpenSSL 1.1, this will be changed as far as Microsoft updates their .Net™ version. As a workaround on e.g. Ubuntu 22.04 LTS you need to install the OpenSSL 1.1 manually:
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1l-1ubuntu1.3_amd64.deb
sudo apt-get install ./libssl1.1_1.1.1l-1ubuntu1.3_amd64.deb
Building C# and Shared Native Libraries is not yet fully available in the Linux toolchain.
Whitespace in Visual Studio project path
It is generally not recommended to have white space in your project path naming. Known issue is the "PLCnext Technology" → "Project Configuration" which will throw an error. As a workaround the configuration can be done manually like described with the manual configuration.
Issue with installing SDK installer in Linux
In rare cases using the install sdk
command throws the error Did not find the expected usage information.. Please contact our support if this happens.
Visual Studio SDK installation
Error windows while installing PLCnext SDKs via Visual Studio® sometimes do not appear in foreground. This could be misleading and look like running endlessly.
Shared Native Libraries
Mixed mode (implementation code in C# and C++) is not fully implemented and will not be supported for now. Further information and documentation will follow.