Warum habe ich beim Start von TwinCAT einen ClassID Konflikt?

Die Class ID stellt eine unique Beziehung zwischen der tmc-Datei und dem zugehörigen Echtzeittreiber her.

Wenn Sie ein TcCOM Modul aus Simulink® heraus mit dem TE1400 erzeugt und in einem TwinCAT Projekt instanziiert haben, ist in der Instanz der TcCOM die Class ID verankert und die Instanz erwartet einen entsprechenden Treiber mit ebenfalls dieser Class ID. Gehen Sie nun zurück zu Simulink® und erstellen erneut ein TcCOM mit gleichem Namen wie beim bereits instanziierten Modul wird eine neue tmc-Datei und auch neue Treiber im Publish-Verzeichnis abgelegt, welche eine neue Class ID tragen. Aktivieren Sie nun die TwinCAT-Konfiguration, ohne TwinCAT mitzuteilen, dass sich die Class ID verändert hat, erhalten Sie folgendes Verhalten:

Verhalten für TwinCAT Version < 4018:

Sie bekommen eine entsprechende Fehlermeldung mit dem Hinweis, dass die Class ID nicht zueinander passen.

Verhalten für TwinCAT Version ≥ 4018

Es wird der zur bestehenden Instanz im TwinCAT Projekt passende Treiber aus dem Projektordner _ModuIInstall genutzt. Das Verhalten der Modul-Instanz bleibt also für das TwinCAT Projekt unverändert.

Wichtig: Es muss auch entsprechend unter Tc Build das lowest compatible TwinCAT build ≥ 4018 eingetragen sein, damit letzteres Verhalten eintritt. Siehe auch Modulgenerierung (Tc Build).

Lösung:

Um das Verhalten des neu generierten TcCOM Modules in Ihrem TwinCAT Projekt nutzen zu können, können Sie auf der entsprechenden Instanz des TcCOM einen rechts-klick machen und wählen TMI/TMC-File -> Reload TMI/TMC File. Wählen Sie nun die tmc Datei in Ihrem Publish-Verzeichnis aus und bestätigen mit OK. Wenn Sie das Modul aus der SPS heraus aufrufen und die PLCopen.xml dafür importiert haben, müssen Sie diese ebenfalls neu importieren und im Dialog replace the existing object anwählen.