English
🠦 Deutsch
This article is about a Page Fault Exception in the PLC application, usually with Port_851 in PlcProject Instance and PlcTask:
If it occurs in the OpconBase library a message occurs that no source code is available for this object because it is in the compiled library 'OpconBase' by Robert Bosch GmbH:
Possible causes
Incorrect memory operations in the application, e.g. with OpconMemCpy (MEMCPY) or OpconMemSet (MEMSET). With OpconMemCpy, the size of the copy destination (Dest), not the source (Src), should always be used as the memory length.
PLC Change Guide not taken into account. The call stack then often shows a Page Fault Exception in one of these library methods:
Addon._stdExecFsm
Addon.InfoStorage.xxx / Addon.WarningStorage.xxx / Addon.ErrorStorage.xxx
Extension._panelSwitch
Rectify OpconBase Page Fault Exception
Especially if the PLC Change Guide has not been taken into account, rectifying the OpconBase Page Fault Exception is sometimes very time-consuming, as TwinCAT must apparently be forced to completely readdress the memory layout. The following steps are recommended, which can usually be undone afterwards, i.e. the originally apparently faulty software version will no longer cause an OpconBase Page Fault Exception without any changes.
Temporarily change the library version of OpconBase directly in TwinCAT or alternatively by updating the NxBase object in the Std.
Temporarily change the TwinCAT compiler version.
Perform Activate Configuration with an old project status.
Temporarily update the TwinCAT version of the project within a build version (4022, 4024), e.g. from TwinCAT 3.1.4022.30 to 3.1.4022.32 or from 3.1.4024.32 to 3.1.4024.47.
Delete the contents of C:\TwinCAT\3.1\Boot\ on the target system. If persistent data is to be backed up, back up the file C:\TwinCAT\3.1\Boot\Plc\Port_851.bootdata. In addition, delete the contents of \Plc\_Boot\ and \Plc\PlcProject\_CompileInfo\ in the station folder on the development computer. Then execute Clean, Build and Activate Configuration.
Temporarily delete the OPC UA attributes exported by Control plus Studio. Then execute Clean, Build and Activate Configuration.
Temporarily delete or rename add-ons or change the instance sequence. However, the error often only moves on to the next add-on instance.
Make major code changes in the declaration area of function blocks or in structures (temporarily).
Deutsch
🠦 English
Dieser Artikel handelt von einem Ausnahmefehler (Page Fault Exception) in der SPS Applikation, üblicherweise mit Port_851 in PlcProject Instance und PlcTask:
Wenn es in der OpconBase Bibliothek auftritt, erscheint eine Meldung, dass der Quellcode nicht verfügbar ist für dieses Objekt, weil es in einer kompilierten Bibliothek 'OpconBase' von Robert Bosch GmbH ist:
Mögliche Ursachen
Fehlerhafte Speicheroperationen in der Applikation, z. B. mit OpconMemCpy (MEMCPY) oder OpconMemSet (MEMSET). Bei OpconMemCpy sollte als Speicherlänge immer die Größe des Kopierziels (Dest), nicht der Quelle (Src) verwendet werden.
SPS-Änderungs-Leitfaden nicht berücksichtigt. Häufig zeigt der Call Stack dann eine Page Fault Exception in einer dieser Bibliotheksmethoden:
Addon._stdExecFsm
Addon.InfoStorage.xxx / Addon.WarningStorage.xxx / Addon.ErrorStorage.xxx
Extension._panelSwitch
OpconBase Page Fault Exception beheben
Insbesondere wenn der SPS-Änderungs-Leitfaden nicht berücksichtigt wurde, ist die Behebung der OpconBase Page Fault Exception teilweise sehr aufwendig, da TwinCAT anscheinend zu einer kompletten Neuadressierung des Speicherlayouts gezwungen werden muss. Folgende Schritte werden empfohlen, die in der Regel anschließend wieder rückgängig gemacht werden können, das heißt, die ursprünglich scheinbar fehlerhafte Software-Version verursacht anschließend ohne Änderung keine Opcon Base Page Fault Exception mehr.
Die Bibliotheksversion von OpconBase direkt in TwinCAT temporär ändern oder alternativ durch Aktualisierung des NxBase Objekts im Std.
Die TwinCAT-Compiler-Version temporär ändern.
Activate Configuration mit einem alten Projekt-Stand durchführen.
Temporär die TwinCAT-Version des Projekts innerhalb einer Build-Version (4022, 4024) aktualisieren, z. B. von TwinCAT 3.1.4022.30 auf 3.1.4022.32 oder von 3.1.4024.32 auf 3.1.4024.47.
Auf dem Zielsystem den Inhalt von C:\TwinCAT\3.1\Boot\ löschen. Falls persistente Daten gesichert werden sollen, die Datei C:\TwinCAT\3.1\Boot\Plc\Port_851.bootdata sichern. Zusätzlich auf dem Entwicklungsrechner im Stationsordner den Inhalt von \Plc\_Boot\ und \Plc\PlcProject\_CompileInfo\ löschen. Anschließend Clean (Bereinigen), Build (Übersetzen) und Activate Configuration (Konfiguration aktivieren) ausführen.
Die von Control plus Studio exportierten OPC-UA-Attribute temporär löschen. Anschließend Clean (Bereinigen), Build (Übersetzen) und Activate Configuration ausführen.
Add-ons temporär löschen oder umbenennen oder die Instanz-Reihenfolge ändern. Häufig wandert der Fehler dann jedoch nur zur nächsten Add-on-Instanz weiter.
Größere Code-Änderungen im Deklarationsbereich von Funktionsbausteinen oder in Strukturen (temporär) vornehmen.
... View more