Library Development Checklist

  • The library type is defined by one of the following Properties:

  • The name of the library file is appended depending on the library type:

  • Error handling

    • An Enum data type "ERROR" is ALWAYS in the library.

    • ALL outputs from functions, function blocks, and properties that are named "eErrorID" or "eError" also use the local Enum data type "ERROR".

    • ALL possible error values are documented with the local Enum data type "ERROR".

    • Any error values of subordinate functionalities are NEVER passed on. Before they are returned, they are ALWAYS set to their own error values.

  • The latest releases of CODESYS, the compiler, the VISU profiles, and the runtime version are used for development.

  • The time stamp of the *.library file is more recent than the time stamp of the *.compiled-library file.

  • Project structure

    • The "Libname" folder has been replaced by up-to-date library names.

    • In Project User Management, all permissions of all elements have been revoked for the "Everyone" user

      with the exception of the following:

      • "Project Information" (View)

      • "Library Manager" (View)

  • Namespace

    • The Property "LanguageModelAttribute" has been set to the value "qualified-access-only".

    • A default namespace (prefix) has been entered in the "Project Information" dialog box.

    • The prefix has been entered in the LibRegistry.

  • Documentation

    • The Property "DocFormat" has been set to the value "reStructuredText".

    • All comments comply with the "reStructuredText Markup Specification".

      -> The script libdoc transform does not issue any warning or errors, or any errors have been assessed.

  • LibRegistry

    • "Owner", "Prefix", "Placeholder", "Description" and "Filename" have been entered in the LibRegistry.

  • Static Code Analysis

    • The current Rule Set has been applied (Standard.csa).

    • Any errors have been assessed with an explanation.

  • Compatibility

    • The current library is compatible with the previous library.

      -> The script libdoc check Vn+1 Vn does not issue any errors, or any errors have been assessed.

    • New projects and new libraries should function properly on new firmware versions.

    • Old projects and new libraries should function properly on old firmware versions.

    • Old projects and old libraries should function properly on new firmware versions.

    "new" => current CODESYS, compiler, and runtime version

    "old" => the latest release of CODESYS, compiler, and runtime version

  • Platform-dependent

    • When possible, the library can be used on different platforms (Little/Big Endian, 32/64 Bit, Alignment).

  • Test/Quality

    • A test (autotest) has been developed for the library.

    • Blocks, methods, and functions are described in detail whether they can be used "synchronously" or "asynchronously".

    • A library publishes as few elements as possible (keywords "FINAL", "INTERNAL", "PROTECTED", and "PRIVATE").

    • IEC keywords have priority over attributes ("conditional_show" <-> "INTERNAL").

    • Rule #5 "Design smart Interfaces" has been followed.

    • Whenever possible, memory is requested at the beginning of an application only.

      Additional memory is required only by the application at specific times (jitter).

    • The library has been tested on the following systems:

      • ControlWin 32 Bit (Microsoft Windows, Little Endian)

      • ControlRTE 64 Bit (Little Endian)

      • ControlWinCE (Alignment)

      • PPC (VxWorks, Big Endian)

      • ARM (Linux, Alignment)

      • ControlX86 Embedded (small systems)