Router-Speicher

Bilderverarbeitungsapplikationen benötigen im Vergleich zu herkömmlichen Steuerungen viel Speicher, da schon ein einzelnes Bild mehrere Mega-Byte Daten enthalten kann. In TwinCAT Vision werden sämtliche dynamischen Daten (siehe Interface Pointer) im Router-Speicher allokiert. Aus diesem Grund ist es besonders wichtig, die Größe des Router-Speichers entsprechend auszulegen. Die Einstellung kann in der TwinCAT Systemkonfiguration unter dem Real-Time Knoten im Reiter Einstellungen vorgenommen werden:

Router-Speicher 1:

Configured Size

Einstellung des für das aktuelle Projekt benötigten Router-Speichers.

Allocated

Aktuell auf dem System allokierter Router-Speicher.

Available

Teil des aktuell auf dem System allokierten Router-Speichers, der noch frei verfügbar ist. (Der Rest ist innerhalb von TwinCAT schon benutzt.)

Wenn der verfügbare Speicher sich nach einem TwinCAT-Neustart nicht vollständig wiederherstellt, deutet dies auf ein Speicher-Leck hin. Starten Sie dann ihr System neu und überprüfen Sie Ihr Programm hinsichtlich Speicher-Lecks.

Die maximal einstellbare Größe des Router-Speichers in TwinCAT 3.1 4024 beträgt 1024 MB. Ab TwinCAT 3.1 4026 hängt die verwendbare Größe im Wesentlichen vom verfügbaren Arbeitsspeicher ab und ist auf 65535 MB begrenzt. Die tatsächlich benötigte Speichergröße hängt unter anderem von der Nutzung von dynamischem Speicher (z. B. bei Bildern und Containern) im SPS-Programm ab.

Hinweis

Größe des Router-Speichers

Bei der Konfiguration des Router-Speichers ist zu beachten, dass der Router-Speicher aus dem Arbeitsspeicher bezogen wird und somit dem Betriebssystem nicht mehr zur Verfügung steht. Daher wird empfohlen, die eine Größe von 1024MB erst ab einer Arbeitsspeicher-Größe von 4GB zu konfigurieren. Bei fremden Projekten überprüfen Sie vor dem Aktivieren der Konfiguration immer die Router-Speicher-Einstellung und reduzieren Sie sie gegebenenfalls.

Abschätzung der benötigten Speicher-Größe

Die benötigte Größe des Router-Speichers ist von vielen Faktoren abhängig. Eine ungefähre Abschätzung für den Vision-Teil des TwinCAT-Projekts kann mittels Berechnung des (durch Interface Pointer) dynamisch allokierten Speichers getroffen werden.

Die Berechnung des Speicherplatzes M (in Byte) eines Bildes kann dabei durch die Einbeziehung von Bildgröße (Breite w und Höhe h), Anzahl C der Kanäle und der Byte-Anzahl des Element-Typs erfolgen: M = w * h * C * sizeof(ElementType).

Für einen Container vom Typ String oder Vektor kann die Berechnung des Speicherplatzes M (in Byte) durch die Anzahl an allokierten Elementen N und der Byte-Anzahl des Element-Typs erfolgen: M = N * sizeof(ElementType).

Es muss darauf geachtet werden, wie die Daten kopiert und freigegeben werden. Wenn ein Bild kopiert oder ein neues erzeugt wird, muss natürlich der Speicherplatz beider Instanzen einberechnet werden. Darüber hinaus muss der Speicherbedarf des Routers selbst und anderer Projektteile einberechnet werden. Beim Abrufen der Bilder oder anderer Daten per ADS werden diese kopiert, daher muss dafür ebenfalls zusätzlicher Speicherplatz berücksichtigt werden.

Hinweis

Speicherwert mit Sicherheitsfaktor

Erweitern Sie den berechneten Speicherwert immer mit einem Sicherheitsfaktor. Berücksichtigen Sie dabei ebenfalls den Speicherbedarf der anderen Module des Projekts.

Um nicht unnötig viel Platz im Router-Speicher zu verbrauchen, sollten Sie darauf achten, keine unnötigen, tiefe Kopien zu machen und nicht mehr benötigte Objekte wieder freizugeben (siehe dazu Interface Pointer). Um herausfinden, wie viel Speicher tatsächlich verbraucht wird, kann der Router-Speicher live wie folgt überwacht werden.

Überwachung des Router-Speichers

Auch wenn die Einstellung des Router-Speichers im Projekt erfolgt, handelt es sich dabei um eine system-weite Einstellung. Daher können der im Projekt eingestellte und der auf dem System aktuell verwendete Router-Speicher auf dem Zielsystem eingesehen werden. Tätigen Sie dazu einen Rechtsklick auf das TwinCAT-Symbol in der Windows Taskleiste und wählen Sie Router > Info.

Router-Speicher 2:
Router-Speicher 3:

Hinweis

Verringerung des verfügbaren Router Speichers

Durch Exceptions oder nicht freigegebene Interface Pointer kann es dazu kommen, dass der verfügbare Router Speicher verringert wird. Daher sollte der Speicher während der Entwicklung, insbesondere im Fehlerfall, überprüft werden. Falls nicht mehr genug Speicher zur Verfügung steht, starten Sie das komplette System neu und überprüfen Sie im Anschluss Ihr Programm.