×
Siemens Industry Online Support
Siemens AG
Beitragstyp: FAQ Beitrags-ID: 24411828, Beitragsdatum: 02.06.2015
(2)
Bewerten

Wie kann die Meldung "Die max. Länge des Code-Bereich (max. 64 Kbyte) ist erreicht" behoben werden?

  • Beitrag
  • Betrifft Produkt(e)
Bei der Übersetzung des S7-Programms kann es zu der Fehlermeldung "Die max. Länge des Code-Bereich (max. 64 Kbyte) ist erreicht" kommen.
Beitrags-ID 771569 erläutert mögliche Ursachen für diese Fehlermeldung. Dieser Beitrag beschreibt den Fall, dass ein projektierter SFC-Typ die Ursache für eine Überschreitung der 64 Kbyte-Grenze ist. Es wurden also zu viele Aktionen bei der Schrittbearbeitung oder zu viele Bedingungen bei den Transitionen projektiert. 
  

Bild 01
  
  
Diese Fehlermeldung gibt jedoch keinen Aufschluss, welcher Baustein (z.B. SFC-Typ) den Fehler verursacht. Die Anleitung stellt dar, wie Sie eine Fehlerdiagnose durchführen können.
     

1. Wiederholung des Übersetzungsvorgang  mit der Option "SCL-Quelle erzeugen"

  • Öffnen Sie im CFC-Editor über den Menübefehl "Plan > Übersetzen > Pläne als Programm..." den Dialog "Programm übersetzen".
  • Stellen Sie sicher, dass die Option "SCL-Quelle erzeugen" sowie das Auswahlfeld "Gesamtes Programm" angewählt ist. Wiederholen Sie den Übersetzungsvorgang durch Betätigen der Schaltfläche "OK".
       

    Bild 02

                   

Hinweis
Bei älteren Versionen von PCS 7 ist die Option "SCL-Quelle erzeugen" nicht im Dialog zum Übersetzen vorhanden. Die SCL-Quelle wird in diesen Fällen standardmäßig angelegt.
 
2. Generierte SCL-Quelle öffnen und übersetzen
  
  • Wechseln Sie im SIMATIC Manager in die Komponentensicht. Wählen Sie im Navigationsfenster der Komponentenansicht das Verzeichnis "Quellen" des entsprechenden S7-Programms. Im Arbeitsbereich ist die SCL-Quelle "@SCLFileFromCFC_SFC_1" vorhanden.
      

    Bild 03
         
  • Öffnen Sie diese SCL-Quelle durch Doppelklick oder mit Hilfe des zugehörigen Kontextmenüs "Objekt öffnen".        
  • Führen Sie die Übersetzung dieser Quelle mit dem Menübefehl "Datei > Übersetzen" durch. Es erscheinen ggf. Fenster "Bausteine überschreiben". Quittieren Sie diese mit der Schaltfläche "Alle".     
  • Warten Sie, bis der Übersetzungsvorgang beendet ist.
       
Hinweis
Bei diesem Übersetzungsvorgangs werden detaillierte Informationen im Fehlerfensters des SCL-Editors angezeigt.

3. Detailliertes Übersetzungsprotokoll auswerten
In diesem Schritt wird der Name des SFC-Typen ermittelt, der die Überschreitung der 64 KByte-Grenze verursacht. Es wird ermittelt, ob die Ursache zu viele Aktionen während der Schrittbearbeitung oder zu viele Anweisungen in den Transitionsbedingungen sind.
   

Fehler im Übersetzungsprotokoll suchen
Wechsel Sie in das Fenster "Fehler" des SCL-Editors und scrollen Sie zum Anfang des Übersetzungsprotokolls. Suchen Sie nun das Übersetzungsprotokoll nach Fehlermeldungen von oben nach unten ab.
  
Hinweis
Fehlereinträge beginnen mit der Zeichenkette "F:" Warnungen mit der Zeichenkette "W:".
  
Wenn keine anderen Fehler im Programm enthalten sind, sollte der erste Fehlereintrag die oben beschriebene Fehlermeldung sein.
Unmittelbar über der Fehlermeldung wird der Baustein (Bausteinnummer) angezeigt, bei dessen Übersetzung der Fehler aufgetreten ist. Merken Sie sich diese Bausteinnummer. 
                     

Bild 04
  
Suchen der Definition des fehlerhaften Bausteins in der SCL-Quelle
Wechseln Sie nun in das Programmfenster des SCL-Editors, und positionieren Sie den Cursor an den Anfang der SCL-Quelle. Öffnen Sie den Dialog "Suchen/Ersetzen". Tragen Sie im Eingabefeld "Suchen nach" den Bausteinnamen ein, der im Fehlerprotokoll unmittelbar vor der Fehlermeldung ausgegeben wurde. Führen Sie den Suchvorgang mit der Schaltfläche "Suchen" aus. Der Cursor springt dann zu einem Bereich in der Quelle, in dem die Definition des entsprechenden Bausteins erfolgt. Für den Fall, dass dieser Baustein Bestandteil eines SFC-Typen ist, wird im Kommentar der symbolische Name des SFC-Typen angezeigt. Merken Sie sich diesen Namen.
Hinweis
Wenn Sie im Fenster "Fehler" des SCL-Editors einen Doppelklick auf die Bausteinnummer über der Fehlermeldung ausführen, so springt der Cursor im Programmfenster direkt zum entsprechenden Baustein. Dadurch spart man sich die Suche im Programmfenster.
                     

Bild 05
   
  
Suchen der Verwendung des fehlerhaften Bausteins in der SCL-Quelle
Wiederholen Sie die Suche mit der gleichen Bausteinnummer, bis der Cursor in den Programmabschnitt springt, in dem diese Funktion verwendet wird. Über dieser Zeile befindet sich eine Kommentarzeile, die Aufschluss darüber gibt, ob der Baustein für die Aktions- oder Transitionsbearbeitung zuständig ist.
           

Bild 06
   

Hinweis
Die Kommentare in der SCL-Quelle erscheinen unabhängig der eingestellten Sprache im SIMATIC Manager in Deutsch. "Aufruf AktionsFC ..." bedeutet Aktionsbearbeitung hingegen "Aufruf TransitionsFC ..." bedeutet Transitionsbearbeitung (Alternativ können Sie auch durch eine Analyse des Funktionsrumpfes des fehlerhaften Bausteins ermitteln, ob es sich um eine Aktions- oder Transitionsbearbeitung handelt).
        
Scrollen Sie solange in der SCL-Quelle langsam nach oben, bis Sie an den Anfang des aufrufenden Funktionsblockes kommen. Merken Sie sich die Nummer des aufrufenden Bausteins.
       

Bild 07
  

Hinweis
Um an den Anfang des Funktionsblockes zu springen, können Sie auch die Bearbeitungsfunktion "Suchen/Ersetzen" verwenden. Suchen Sie dazu nach der Zeichenkette "FUNCTION" mit der Option "Von Cursorposition aufwärts". Der Cursor springt nun an den Anfang eines Funktionsblockes.
 
4. Bausteinnummer kontrollieren
Wechseln Sie innerhalb der Komponentensicht des SIMATIC Managers in den Bausteinordner. Mit der Ansicht "Details" werden zusätzlich zur Bausteinnummer die ersten 8 Zeichen der Namen der SFC-Typen in der Spalte "Name (Header)" angezeigt. 
  

Bild 08
   
Die Bausteinnummer wurde bereits bei der Projektierung des SFC-Typs vergeben.
      

Bild 09
  
Abschätzung des Umfanges für die notwendige Code-Reduzierung
Je nachdem, wo die Ursache für die Überschreitung der 64 Byte-Grenze liegt, müssen Sie die Anzahl der Anweisungen in der Schritt- oder Transitionsbearbeitung reduzieren. Um abzuschätzen, wie stark die Anzahl der Anweisungen in der Schrittkette reduziert werden muss, können Sie den Umfang der Schrittkette halbieren und anschließend übersetzen. Löschen Sie dazu ca. die Hälfte der Schritte und Transitionen. Vorher sollten Sie unbedingt eine Sicherung des entsprechenden Bausteins oder des gesamten Projektes anlegen.
Wenn die erneute Übersetzung dann weiterhin eine Überschreitung der 64 Kbyte-Grenze meldet, wiederholen Sie den Vorgang. Wenn die Übersetzung erfolgreich beendet wird, tritt keine Überschreitung der 64 Kbyte-Grenze mehr auf. Sie können dann im Bausteinordner des SIMATIC Managers die Bausteingröße für die am SFC-Typ beteiligten Bausteine ermitteln. Informationen dazu finden Sie im Beitrag 24411054. Aus der Anzahl der Halbierungen des Code-Umfanges und der resultierenden Bausteingröße lässt sich der Umfang für die notwendige Code-Reduzierung ableiten.

Maßnahmen zur Code-Reduzierung
Ein "einfaches" Löschen von Schritten und Transitionen ist nicht die Lösung des eigentlichen Problems - mögliche Abhilfen finden Sie im Beitrag 24412494.

Hinweis
Sie sollten das S7-Programm nicht erst am Ende der Erstellung eines umfangreichen SFC-Typen übersetzen. Führen Sie zwischenzeitliche Übersetzungsläufe durch und ermitteln Sie die Bausteingröße für die am SFC-Typ beteiligten Bausteine. Damit können Sie frühzeitig eine mögliche Überschreitung der 64 Kbyte-Grenze erkennen.

Securityhinweise
Um technische Infrastruktur, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches IT Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht. Die Produkte und Lösungen von Siemens formen nur einen Bestandteil eines solchen Konzepts. Weitergehende Informationen über Cyber Security finden Sie unter
https://www.siemens.com/cybersecurity#Ouraspiration.