DDAS License Manager Manual

About this documentation

This documentation provides essential information for working with components of the DDAS software ecosystem. It is intended for software developers and machine manufacturers who integrate, validate, and operate DDAS function blocks within CODESYS‑based applications.

Note!

Before installing or configuring any software, ensure that you have read and understood the operating instructions of all relevant hardware devices!

Tip!

Further information can be found at: https://www.ddas.digital

This manual is part of the DDAS library collection, which includes documentation for license management, date and time handling, scheduling, equipment performance, and other functional modules:

Documentation Subject
DDAS LicenseManager Library Manual Description and usage of the library license management function blocks
DDAS DateTime Library Manual Description and usage of the library date time function block.
DDAS Scheduler Library Manual Description and usage of the library scheduler function block.
DDAS EquipmentPerformance Library Manual Description and usage of the library Equipment Performance function block.

Document history

Version Description
1.0 14.04.2026 DDAS Initial version

General

Library

This library manages the library licensing mechanism.

The library includes the following user function block:

Detailed descriptions of the function blocks and their relevant dependencies are provided in the following chapters.

Licensing Concept

All libraries require a valid license. Each license is based on three mandatory keys:

License Activation Mechanism

To activate a library license, one instance of the function block Get_Lib_License must be called for each licensed library.
This function block is part of the DDAS_LicenseManager_Lib library.

Licensing Process

The following steps are required to license and use a library:

  1. The user selects the required libraries.

  2. The user integrates the selected libraries into a test project or uses the provided demo program and evaluates them using the time‑limited demo license.

  3. If the user intends to use the library function blocks in a machine application, the library is ordered and the selected SiteCode is sent to DDAS.

  4. DDAS provides the corresponding LibraryActivationKey.

  5. In the machine application, the user instantiates the function block Get_Lib_License once for each library and assigns all required license keys to activate the library license.

  6. After successful activation, all function blocks of the licensed library can be implemented and executed.

Note: Detailed information on how to use the function block Get_Lib_License is provided in this software manual.

Note: The function Get_sError is available in every library and provides access to the error description and enumeration corresponding to a function block’s error code, when required.

Scope Name Type Comment
Return Get_sError STRING
Input iErrorID INT Error and status identifier for diagnostics.
Output eErrorID eError Returns the eError enumeration based on the iErrorID.

FB Get_Lib_License

General Information

This chapter describes the function block Get_Lib_License.

Function Block Name: Get_Lib_License

Library: DDAS_LicenseManager_Lib

Dependent Codesys libraries: none

CODESYS Version Compatibility: CODESYS V3.5 and higher

License / Usage Restrictions: Requires valid full or demo library license

Purpose & Scope

The Get_Lib_License function block manages the library licensing mechanism. A separate instance of this function block is required for each DDAS library used within an application.

The function block is designed to activate the library license for all function blocks contained in a specific DDAS library. Each DDAS library inherits the DDAS_LicenseManager_Lib; however, this library must be explicitly added to the user’s machine application in order to enable license activation.

Typical Use Cases

Functional Overview

When enabled, the Get_Lib_License function block activates the full library license or manages the operation of a time‑based demo license.

It outputs:
- Full license active
- Demo license active
- Time left of demo license

A demo license is valid for a duration of 2 hours. After this time has elapsed, no active license is available, and all function blocks of the library enter an idle state.

To reactivate the demo license, the controller must be restarted. Each controller restart reactivates the demo license and starts a new demo period.

Error states are monitored continuously and reported via diagnostic outputs.

Interface Description

Function block Inputs and Outputs

Scope Name Type Comment
Input xEnabled BOOL When TRUE, license management is executed cyclically.
sSiteCode STRING Please assign the Company Site Code.
sLibraryGuid STRING Please assign the Library Guid Code.
sLibraryActivationKey STRING Please assign the Library Activation Code .
Output xFullLicensed BOOL TRUE valid full License
xDemoActive BOOL TRUE when demo License
tTimeLeft TIME Display left time in demo mode
xLicensed BOOL TRUE when a valid full or demo library license is active.
xError BOOL TRUE if an error or warning is detected. Detailed error information is provided in iErrorID.
iErrorID INT Error and status identifier for diagnostics.

Enumerations

eError

Library Possible Error Codes and Descriptions.

Name Initial Comment
no_error 0 No Error detetced
empty_Key 10 Activation Key string is empty
empty_SiteCode 11 Site code string is empty
empty_cLibraryGuid 12 Library guide code string is empty, no demo license available
invalid_Key_size 20 Invalid Activation Key string size, 8 char required
invalid_Key 21 Invalid Activation Key string
demo_License_expired 30 Demo license has been expired, system restart required

Execution & Timing Behaviour

The function block is intended to be executed cyclically in a task context.

Timing precision depends on the configured task cycle time and target platform

Error Handling & Diagnostics

If an internal error, a library issue, or a licensing problem occurs, xError is set to TRUE and iErrorID provides the corresponding error code. Detailed descriptions of the error codes are defined in the enumeration eError.

Assumptions & Limitations

This library serves as an extension to all DDAS libraries and is applicable only within the DDAS library ecosystem.

Example Implementation

Declaration and Call of the Function Block Get_Lib_License:

VAR

fb_GetLibLicense: DDAS_LM.Get_Lib_License;

END_VAR

FB call in structure text:

fb_GetLibLicense(

xEnabled := TRUE,

sSiteCode:= 'DDAS-Site-License',

sLibrayGuid := '{LIB-DDAS-D5BA612E}'

sLibraryActivationKey := ‘EDB86DA0’

);

FB call in continuous function chart diagram:

Demo Visualisation

MergeLibFBErrors

General Information

This chapter describes the function block MergeLibFBErrors.

Function Block Name: MergeLibFBErrors

Library: DDAS_LicenseManager_Lib

Dependent Codesys libraries: none

CODESYS Version Compatibility: CODESYS V3.5 and higher

License / Usage Restrictions: Requires valid full or demo library license

Purpose & Scope

This function block merge six function block error outputs into one single error output based on input error priority order.

Helps to summarize function block error output into one error based on error and FB priority.

Typical Use Case

Advantages

Functional Overview

The FB MergeLibFBErrors consolidates error outputs from up to six different function blocks into a single unified error output. It prioritizes errors based on a defined priority order (Priority 1 = highest, Priority 6 = lowest).

Key Functionality

Inputs

Each error source includes:

Where:

Outputs

Behaviour

Interface Description

Function block Inputs and Outputs

Scope Name Type Comment
Input iErrorID1 INT Error and status identifier Prio 1
sError1 STRING sError string
sErrorFB1 STRING sError Function block
iErrorID2 INT Error and status identifier Prio 2
sError2 STRING sError string
sErrorFB2 STRING sError Function block
iErrorID3 INT Error and status identifier Prio 3
sError3 STRING sError string
sErrorFB3 STRING sError Function block
iErrorID4 INT Error and status identifier Prio 4
sError4 STRING sError string
sErrorFB4 STRING sError Function block
iErrorID5 INT Error and status identifier Prio 5
sError5 STRING sError string
sErrorFB5 STRING sError Function block
iErrorID6 INT Error and status identifier Prio 6
sError6 STRING sError string
sErrorFB6 STRING sError Function block
Output xError BOOL TRUE if an error or warning is detected. Detailed error information is provided in iErrorID
iErrorID INT Error and status identifier for diagnostics
sError STRING Error string
sErrorFB STRING sError Function block

Execution & Timing Behaviour

The function block is intended to be executed cyclically in a task context.

Timing precision depends on the configured task cycle time and target platform

Error Handling & Diagnostics

If an internal error, a library issue, or a licensing problem occurs, xError is set to TRUE and iErrorID provides the corresponding error code. Detailed descriptions of the error codes are defined in the enumeration eError.

Assumptions & Limitations

This library serves as an extension to all DDAS libraries and is applicable only within the DDAS library ecosystem.

Example Implementation

Declaration and Call of the Function Block MergeLibFBErrors:

VAR

fb_MergeLibFBErrors: DDAS_LM.MergeLibFBErrors;

END_VAR

FB call in structure text:

fb_MergeLibFBErrors(

iErrorID1 := fb_lic_SL.iErrorID,

sError1:= DDAS_SL.Get_sError(fb_lic_SL.iErrorID),

sErrorFB1 := 'fb_lic_SL',

iErrorID2 := fb_GetBuildTime.iErrorID,

sError2:= DDAS_SL.Get_sError(fb_GetBuildTime.iErrorID),

sErrorFB2 := 'fb_GetBuildTime',

iErrorID3 := fb_GetBatchEndTime.iErrorID,

sError3:= DDAS_SL.Get_sError(fb_GetBatchEndTime.iErrorID),

sErrorFB3 := 'fb_GetBatchEndTime',

iErrorID4 := fb_UpdateInterval.iErrorID,

sError4:= DDAS_SL.Get_sError(fb_UpdateInterval.iErrorID),

sErrorFB4 := 'fb_UpdateInterval',

iErrorID5 := fb_GetSchedule.iErrorID,

sError5:= DDAS_SL.Get_sError(fb_GetSchedule.iErrorID),

sErrorFB5 := 'fb_GetSchedule',

iErrorID6 := 0,

sError6:= ‘’,

sErrorFB6 := ‘’

);

FB call in continuous function chart diagram:

Your Feedback Matters

These instructions have been prepared to the best of our knowledge and belief to provide you with the highest possible level of support when working with our product.

Despite our best efforts, we may not always fully achieve this objective. If you identify any issues or have suggestions for improvement, we would greatly appreciate your feedback.

Please send your comments or criticism in a short e‑mail to:

support@ddas.digital

Thank you for your support.

Your DDAS Application Software Team