This content has moved to a new space on the Internet.

Go to new location


Configuration files

With PLCnext Technology, you can load programs and program instances onto the controller even without using thePLCnext Engineer software. You can, for example, create a program in Eclipse® with C++ and transfer it directly to the controller. All of the important and necessary settings can be configured directly in the configuration files on the controller. The file system of the controller is accessed via the SFTP protocol. Use a suitable SFTP client software for this, e.g., WinSCP. The configuration files are XML files. You can edit them using an editor of your choice. The configuration files are imported after the boot procedure of the PLCnext Technology firmware. If there are no configuration errors in the configuration files, the components and program instances are subsequently executed by the ESM.

When PLCnext Engineer is used, all configuration files are created by PLCnext Engineer and downloaded to the controller.


The acf.config and plm.config configuration files contain information on instances of libraries (shared objects), components and programs, as well as on processes of shared objects (C++ programs). Both files have the same format.

The information is required by the firmware to load shared objects and to execute component instances or programs.

There are two ways to instantiate components:

  • Included in Default.acf.config (projects/Default/Default.acf.config).
    The component is instantiated when starting the firmware.
  • Included in Plm.config (projects/Default/Plc/Plm/Plm.config).
    The component is instantiated during cold or warm restart of the project.


The esm.config configuration file contains the task configuration, the instantiation of programs, and assignment to a processor core (one ESM per processor core). For additional information, please refer to Task configuration via configuration files.


The gds.config configuration file contains the port definition as well as the assignment of IN and OUT ports. For additional information, please refer to GDS configuration using configuration files.

.tic file

Note: PLCnext Engineer recommends creating the .tic files using the PLCnext Engineer software.

The .tic configuration file contains information on the bus configuration with the associated I/O process data of the IN and OUT ports.


Metadata describes classes and types of components and programs that were created in a PLCnext Technology application. They are required for using the program in PLCnext Engineer.

The metafile for the library (*.libmeta) contains links to the metafiles for the incorporated components (*.compmeta). These, in turn, link to the metafiles of the connected programs ( *.progmeta). The configuration of the GDS data ports (IN or OUT ports) is defined in the *.progmeta file.

When the PLCnext CLI (see PLCnext CLI) creates the C++ project, the *.compmeta, *.libmeta and *.progmeta metafiles are created automatically. The files are interlinked, as shown in below.




The LibraryBuilder combines the metadata and the code (*.so) into a library. It can be imported into PLCnext Engineer and is used in the same way as an IEC 61131-3 program. Tasks and flow of data are configured directly in PLCnext Engineer. The PLCnext CLI  generates the metafiles (see detailed PLCnext CLI description).


Example of a component list and a shared object (*.so) in the *.libmeta metafile:

<?xml version="1.0" encoding="utf-8"?>
<MetaConfigurationDocument xmlns="" 
xmlns:xsi="" schemaVersion="2.0">
   <Library name="CPP_Counter" applicationDomain="CPLUSPLUS"  >
      <File path="" />
      <!-- Included components in this library -->
         <Include path="CPP_Counter_C/CPP_Counter_C.compmeta" />


Example of a program list in the *.compmeta metafile:

<?xml version="1.0" encoding="utf-8"?>
<MetaConfigurationDocument xmlns="" 
xmlns:xsi="" schemaVersion="2.0">
   <Component type="CPP_Counter_C" >
      <!-- List of programs referenced in this component -->
         <Include path="CPP_Counter_P/CPP_Counter_P.progmeta" />
      <!-- List of component ports -->
         <Port name="IP_CppEnable_bit" type="boolean" dimensions="1" attributes="Input|OpcUa"/>
         <Port name="IP_CppSwitches_uint8" type="uint8" dimensions="1" attributes="Input"/>
         <Port name="OP_CppCounter_uint8" type="uint8" dimensions="1" attributes="Output"/>


Example of the definition of IN and OUT ports in the *.progmeta metafile:

<?xml version="1.0" encoding="utf-8"?>
<MetaConfigurationDocument xmlns="" 
xmlns:xsi="" schemaVersion="2.0">
   <Program type="CPP_Counter_P" >
         <Port name="IP_CppEnable_bit" type="boolean" dimensions="1" attributes="Input|OpcUa"/>
         <Port name="IP_CppSwitches_uint8" type="uint8" dimensions="1" attributes="Input"/>
         <Port name="OP_CppCounter_uint8" type="uint8" dimensions="1” attributes="Output"/>

Generating configuration files using PLCnext Engineer

The following description applies to all four *.config types (acf.config, plm.config, esm.config, gds.config). The configuration files are automatically created when the PLCnext Engineer software is used. During the download, they are saved to the controller in the respective folder (e.g., /opt/plcnext/projects/PCWE/Plc/Esm for the PCWE.esm.config file) in the controller file system. This folder is intended for the download from PLCnext Engineer. The /PCWE folder is automatically created and managed by PLCnext Engineer. Note:  Do not store any other files here because PLCnext Engineer completely deletes this folder prior to the download. When the configuration in PLCnext Engineer changes and the project is once again downloaded to the controller, the previous configuration files are overwritten. Manual changes are also lost.

Manual configuration

To make manual changes to the configuration files or to create new configuration files, you can copy the files generated by PLCnext Engineer and rename them. Usually you're using the Linux® command scp with the -p option when copying configuration files from a Linux® PC to the directory /opt/plcnext/projects on the controller.

Note: If you're using the Linux® command scp without the option -p for this, the file permissions are partly set incorrectly. You can remedy this by doing the following:

After copying the configuration files, use the Linux® command chmod to set the file permissions in such a way that the firmware can delete the configuration files in case of Download Changes (group: plcnext, owner: plcnext_firmware). 

You can then manually configure these files.

When editing configuration files, observe the information in the topics ESM task configuration via configuration files and GDS configuration using configuration files.

To prevent overwriting your own configuration files in the /PCWE folder when downloading the project again from PLCnext Engineer, proceed as follows:

  • Under /opt/plcnext/projects/ in the file system of the controller, create a new folder and name it accordingly. E.g., /opt/plcnext/projects/Example/
  • Save the files to this folder.
  • Include the configuration files via the Include path command (see example below).

The folder can be used for saving additional configuration files and for the manual, configurative extension of the components.

The Include mechanism is used to state which configuration files are to be used for the configuration. If files are to be included that are not in the folder used for inclusion, the respective path has to be specified. In the following example, all files are included that are in the same directory as the Default.gds.config file, i.e., /opt/plcnext/projects/Default/Plc/GDS (<Include path="*.gds.config" />). If you want to include all config files that are in the respective folder, replace the specific file name with an * (e.g. *.gds.config). This results in all files with the same file extension being included.

Example Include path:

   <Include path="*.gds.config" />
   <Include path="$ARP_PROJECTS_DIR$/PCWE/Plc/Gds/*.gds.config" />
   <Include path="$ARP_PROJECTS_DIR$/Example/*.gds.config" />

In the example, all GDS configuration files from the following directories are included in the configuration. $ARP_PROJECTS_DIR$ is a PLCnext Technology environment variable with the value /opt/plcnext:





 • Published/reviewed: 2020-08-07 • Revision 35 •