PLCnext Technology 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 PLCnext Technology Toolchain product page.

Release 2024.6 

  • Several setup issues are fixed.
  • Windows default installation path changed to C:\Program Files\PHOENIX CONTACT\PLCnext_Toolchain
  • Old eCLR C# debug extension for Visual Studio® has been removed.
  • The PLCnext Technology Toolchain is now installed in the user context, and all config and intermediate files are stored in the system's user context as well.
  • .Net™ 8 can now be used standalone to build C# in Linux and Windows without using Visual Studio®.
  • Existing SharedNativeLibrary projects can now be imported into Visual Studio®
  • Quality of life improvements on help files for PLCnext Engineer libraries.
  • C++ nested namespaces (subnamespaces) are now handled and are compatible with PLCnext Engineer's .libmeta files.
  • Templates are updated to work with the upcoming changes in firmware 2025.0. If your user code wil be affected by those changes and needs to work for older and newer firmware versions (before and after the 2025.0 release), use IFDEF ARP_ABI_VERSION_MAJOR 2.
  • The feature for signing PLCnext Engineer libraries is now available. More information and documentation will be part of the upcoming PLCnext Engineer 2025.0 release.

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 and plcncli 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 and LDATE_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 the eclr device connection type.
  • C# debugger supports simulation targets.
  • Unattended PLCnext Toolchain setup is possible.
  • The AddInAnalyzer is renamed to IecAnalyzer. Old projects are converted automatically to use the IecAnalyzer.
  • 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
  • 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 checkbox Create new project configuration.

Uninstallation issues with the PLCnext Technology Toolchain

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® 2022ExtensionsManage ExtensionsInstalled.

If you have further issues, please contact our support via the PLCnext Community forum.

[SOLVED] 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 names

It is generally not recommended to have whitespace in your project path naming. A known issue is that the PLCnext Technology → Project Configuration which will throw an error in case there's whitespace in the path naming. As a workaround, the configuration can be done manually like described in context of 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.

Issue with special characters in a Windows user name

CMake is not able to work with Windows® user names containing special characters and special letters. This is an issue in CMake and cannot be fixed by Phoenix Contact. The solution is to use a user name without special characters and preferably even without whitespace (blanks).

Visual Studio SDK installation

Error windows during installation of a PLCnext SDK via Visual Studio® sometimes do not appear in foreground. This could be misleading and looks like the installation is 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.

In the Linux® toolchain, the SharedNativeLibrary interface generation is not available.

Visual Studio® Solution builds

Solutions with several PLCnext Technology C#/C++ projects in Visual Studio® cannot be built. Each project must be built separately.
 

 


• Published/reviewed: 2024-10-30   ☀  Revision 074 •