Welcome to the TwinCAT HMI version 1.14 sample repository! If you're still using version 1.12, you can find the relevant samples in the 1.12 branch. Make sure to check it out if you haven't upgraded yet. Your feedback and contributions are highly appreciated. Happy coding!
This repository contains server extensions that showcase many features of the server extension API, as well as various aspects of the interaction between extensions and the server.
Here is a list of all sample extensions:
- NetworkTime
- RandomValue
- Diagnostics
- InterExtensionCommunication
- MinimalAuthentication
- CustomUserManagement
- EditPermissions
- EventSystem
- EventListening
- ConfigListening
- ComplexConfig
- CustomConfig
- StaticSymbols
- DynamicSymbols
- StartProcessFromService
- ErrorHandling
- LetsEncrypt
- ProtectedSymbol
For more TwinCAT HMI samples check out the related repositories:
The documentation for the API can be found in the Beckhoff Information System.
Our suggestion is to start with the NetworkTime or the RandomValue sample. Both are relatively short but contain many of the most commonly used features: Registering listeners, handling symbol requests, and storing settings in the extension configuration.
Every extension can define its own set of error codes. The ErrorHandling showcases how this should be implemented.
The HMI server generates a configuration page for every server extension. If you want to display additional status information on your extension's configuration page, have a look at the Diagnostics sample.
- MinimalAuthentication: If you want to extend the authentication system of the HMI server, this sample extension is the best starting point.
- CustomUserManagement: A more realistic implementation of a user management extension that supports adding, removing, renaming, as well as enabling and disabling users.
- EditPermissions: An extension that edits symbol permissions and user groups at runtime.
- EventSystem: Use this sample as a starting point if you want to write an extension that sends messages or raises alarms.
- EventListening: If your server extension is going to listen for messages and alarms from other extensions or the HMI server, take a look at this sample.
- InterExtensionCommunication: This sample will give you an understanding of how multiple extensions can interact with each other, and with the HMI server.
- ConfigListening: If your server extension wants to listen for changes to its configuration, take a look at this sample.
- ComplexConfig: A server extension with a complex configuration schema that showcases how an extension can read and edit its own extension configuration.
- CustomConfig: The HMI server generates a configuration page for every extension. This sample showcases how this default page can be replaced with a custom HTML page.
- StaticSymbols: This sample demonstrates how to automatically generate symbols based on .NET types at compile time.
- DynamicSymbols: All other samples provide a fixed list of symbols that clients can use to interact with the extension. This sample demonstrates how an extension can provide a dynamic list of symbols that changes at runtime.
- StartProcessFromService: Starts a process from a server extension running as a service.
- LetsEncrypt: This server extension generates an ssl certificate with Let's Encrypt.
- ProtectedSymbol: Protect and encrypt symbols with the windows DPAPI.
Descriptions of small blocks of reusable code that showcase concepts or facilitate the development of a server extensions.
The following components must be installed to build the samples:
-
.NET 6 or higher
-
Please also make sure that the required workloads for .NET development are installed.
-
TE1000 TwinCAT 3 Engineering version 3.1.4024.0 or higher
-
TE2000 TwinCAT 3 HMI Engineering version 1.14 or higher
-
TF2200 TwinCAT 3 HMI Extension SDK (standard or trial license)