FAQ – Häufig gestellte Fragen und Antworten
In diesem Abschnitt werden häufig gestellte Fragen beantwortet, um Ihnen die Arbeit mit der TwinCAT Usermode Runtime zu erleichtern. Falls Sie weitere Fragen haben, wenden Sie sich bitte an unser Support-Team support@beckhoff.com.
- Wie starte ich die TwinCAT Usermode Runtime?
- Was bedeutet die Fehlermeldung „Zu wenig Speicher bei Nutzung der PLC“?
- Wie kann ich remote auf die Usermode Runtime zugreifen?
- Wie wird eine Kollision der AmsNetId verhindert?
- Ist TwinCAT C++ und CriticalSections im Windows Context verfügbar?
Wie starte ich die TwinCAT Usermode Runtime (ohne TwinCAT SysTray)?
Alle im ProgramData hinterlegten Instanzen werden im TwinCAT SysTray Icon automatisch angezeigt und sind hierrüber per Click startbar.
Sie können die Usermode Runtime außerdem über die „start.bat“ in ihrem jeweiligen ProgramData Ordner starten. Danach ist sie über das Automation Interface als Zielsystem auswählbar und kann, wie andere Systeme auch, verwendet werden in Bezug auf: Activate Configuration, Ändern des Zustandes usw.
Die Usermode Runtime kennt unterschiedliche Modes mit der sie die Anwendung ausführen kann. Dieser kann beim Aufstarten über den Parameter „-f“ gesetzt werden.
Bis zur Version 1.18.3 war per Default der Mode 0x8 genutzt worden – dieser bietet keine Unterstützung für External Control (TC1701) oder Fast As Possible (TC1702), sodass bis zu dieser Version der Parameter „-f 0x4“ im jeweiligen Start.bat ergänzt werden musste.
Ab Version 1.19 ist dieser Mode der Default, sodass dieser Arbeitschritt entfallen kann.
Was bedeutet die Fehlermeldung „Zu wenig Speicher bei Nutzung der PLC“?
![]() | Diese Anpassung ist im Normalfall ab der Version 1.19.1 nicht mehr nötig. Hier wird dynamisch vom Betriebssystem neuer Speicher allokiert. |

Wenn Sie beim Einloggen (oder durch den Autostart) den oben gezeigten Fehler bekommen, benötigt Ihre Anwendung mehr Speicher, als die Usermode Runtime standardmäßig vorsieht.
Im ProgramData Verzeichnis der Usermode Runtime steht eine Datei 3.1/TcRegistry.xml bereit, über die Sie diese Konfiguration ändern können. Fügen Sie einen Value „HeapMemSizeMB“ ein, der einen Wert in Megabyte angibt. Hier sind es 512 MB:

Wie kann ich remote auf die Usermode Runtime zugreifen?
Die Usermode Runtime besitzt eine eigene Router-Komponente und hat eine eigene AmsNetId. Die Usermode Runtime meldet sich bei der System Router-Komponente an, sodass sie lokal über ihre eigene AmsNetId erreichbar ist.
Soll die Usermode Runtime von einem anderen System aus erreichbar sein, kann hierfür im ihrem ProgramData Verzeichnis die Datei 3.1\StaticRoutes.xml erweitert werden, wie es in der Dokumentation TwinCAT 3 ADS-over-MQTT beschreiben ist.
Wie wird eine Kollision der AmsNetId verhindert?
Eine Usermode Runtime benötigt auf dem System eine eindeutige AmsNetId. Diese wird in der Konfiguration in ihrem ProgramData Verzeichnis 3.1\TcRegistry.xml gespeichert.
Sollte nun eine Usermode Runtime beim Start diese AmsNetId bereits belegt haben, wird das 2. Byte erhöht: aus 199.4.42.250.1.1 wird somit 199.5.42.250.1.1.
Ist TwinCAT C++ und CriticalSections im Windows Context verfügbar?
Der Synchronisationsmechanismus CriticalSections steht im Windows Context bei TwinCAT C++ nicht zur Verfügung, er wird bei korrekter Verwendung der Statemachine nicht benötigt. Der Call EnterCriticalSection wird deswegen in diesen Transitionen ignoriert. In der Usermode Runtime führt der Aufruf jedoch zum Beenden des Prozesses mittels einer Exception um das Verständnis zu erhöhen. Folgender Code fragt dieses explizit ab: if ( !InWindows() )
m_cs.EnterCriticalSection();
m_counter = 0x00u;
if (!InWindows() )
m_cs.LeaveCriticalSection();
Wichtig ist jedoch sich mit der Statemachine der C++ Module zu beschäftigen und diese sinnvoll einzusetzen. In diesen Schritten kann auf CriticalSections verzichtet werden.
