The library type is defined by one of the following Properties:
"Placeholder" => Common Library,
"IsContainerLibrary" => Container Library
"IsInterfaceLibrary" => Interface Library
The name of the library file is appended depending on the library type:
Common Library: <name>.library
Container Library: <name>_Cnt.library
Interface Library: <name>_Itfs.library
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.
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)
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)