Beitragsliste anzeigen

STEP 7 -- Informationen zu Vorgängerversionen -- S7-Programm erstellen 
Bitmuster einer negativen Zahl   
$-Zeichen in Stringvariablen eingeben 
Auswerten ob ein Integer-/ Doppelintegerwert gerade oder ungerade ist  
Anwenderdefinierte Diagnosemeldungen in neues Projekt übertragen  
Funktion Suchen und Ersetzen in der Variabelentabelle bei Step7  
Kopieren von Zeichenketten 
Bei geschützten Bausteinen kann der Bausteinkommentar nicht gescrollt werden mit Versionen < STEP 7 V5.2 
Wie kann die Schriftgröße in Windows geändert werden, wenn der Cursor in der Symboltabelle nicht sichtbar ist? 
Warum sind die Meldenummern am aufrufenden Baustein ungleich den Nummern in der Meldeprojektierung? 
Druckauftrag wird frühzeitig abgebrochen 
Allgemeine Bausteininformationen über Programme nicht auslesbar  
DB? in den Referenzdaten anzeigen 
Reihenfolge der Parameterübergaben bei Bausteinaufrufen in konvertierten S5-Programmen 
Mehrzeilige Variablen-Kommentare im Deklarationsteil von AWL-Quellen in STEP 7 V5.2 
Bausteine einer Quelle werden nach Übersetzen der Quelle nicht erzeugt 
Geschachtelter FB/FC-Aufruf in FUP-Ansicht 
Programmierung von verschachtelten Bausteinen 
Freigabeeingang "EN" und Freigabeausgang "ENO" bei Funktionsbausteinen in AWL 
Neue Zeichen im Symboleditor von STEP 7 V5.2 
Bausteinvergleich unterschiedlich obwohl die Bausteine identisch sind  
STEP 7 V 5.2 Ändern der Speziellen Objekteigenschafen im Symbol Editor  
STEP7 V5.2 - Config in Run, Referenz auf verfügbare Dokumentation  
STEP 7 V5.1 Hinweis zum Anlegen von Organisationsbausteinen  
Welche Arten der Meldungsprojektierung gibt es ab STEP7 V5.2 ? 
ToolTips werden im KOP/AWL/FUP Editor nicht angezeigt  
Berechnung von Zeiten 
Meldung beim Übersetzen der Quelle: "Vertauschungen in Parameterreihenfolge..."  
STEP 7 Verwendungstabelle 
Wirksinn des Reglers "CONT_C" (SFB41/FB41) umdrehen  
DB-Zugriffe tauchen nicht in Querverweisliste auf  
Textstrings bearbeiten und ein- bzw. ausgeben in STEP 7 und WinCC 
Umverdrahten in einem Baustein nicht möglich in STEP 7 V5.0 / V5.0 + SP1 / V5.0 + SP2 
Ladebefehle auf Instanz-Datenbausteine funktionieren nicht in STEP 7 V5.1 
Eingabe einer S5-Adresse für die IM463-2 und für den S5-Adapter nicht möglich 
Programmbeispiel: Regeln von zwei Stellgliedern 
Programmbeispiel: Baustein zur Nachbildung eines Stromstoßrelais 
CALL SFC mit Übergabe ganzer ARRAYs via UDT als statische Variable nicht möglich! (STEP 7 V5 < SP3) 
Maskieren vom niederwertigsten oder höchstwertigen gesetzten Bit in WORD und DWORD Variablen.  
Trotz ausgeschalteter Typoperandenprüfung erscheint rote Anzeige 
FB-Aufruf mit symbolischem IDB wird in STEP7 V5 rot, kursiv dargestellt  
Parametrierung des SFC5 
Programmbeispiel Demultiplexer 
Uhrzeit-Alarme werden nicht mehr ausgeführt 
Gelöschten Zeilenumbruch wieder herstellen im KOP/FUP/AWL-Editor 
Arbeiten mit Datenbausteinregister 
Betriebsstundenzähler programmieren (APPnote# 214) 
Strukturen als Eingansvariablen verwenden (APPnote# 208) 
Datenformat ASCII-Text für Import von Symboltabellen. 
Unterschiede bei Operationen zur Bearbeitung von Datenbausteinen zwischen STEP 7 und STEP 5 
Vorbesetzung der Variablen nach "CREAT_DB- (SFC 22) 
Beispiel zum Datentyp CHAR 
Konvertierung S5 nach S7 - Besonderheit mit SFC20 "BLKMOV" 
Bedeutung des Feldes "OB40_POINT_ADDR" bei OB4x Bausteinen 
Drum Timer (APPnote# 226) 
Programmbeispiel: Vergleich zweier beliebiger Datenbausteine 
Programmbeispiel Sortieren eines Datenbausteins 
STEP 7 V5.2 Symbolauswahl im KOP/FUP ein- und ausblenden  
Wie kann der vom System vorgegebene Aufbau der temporären Variablen im OB verändert werden? 
Wie können mehrere absolute Adressen in einem S7-Programm komfortabel mit Symbolen versehen werden? 

Bitmuster einer negativen Zahl  zum Beginn
Bestellnummer:

FRAGE:
Wie erhalte ich das Bitmuster einer negativen Zahl?

 

ANTWORT:
Eine negative Zahl wird als Zweierkomplement der positiven Ganzzahl dargestellt.
Das Zweierkomplement wird durch die Invertierung des Bitmusters und anschließender Addition von 1 gebildet.

 


Bild: 2er_complement_D

 

Beim Auswerten des Bitmusters einer negativen Zahl werden die Nullstellen bewertet, zum Ergebnis 1 hinzuaddiert und ein Minuszeichen davor gesetzt. Dabei ergibt sich, dass das sechzehnte Bit (bei Integer) immer zu einer 1 wird. Das sechzehnte Bit wird deshalb auch als Vorzeichenbit bezeichnet. Der Wertebereich von 16-Bit Dezimalzahlen (Integer) ist von -32768 bis 32767. 

 

Hinweis für die vorzeichenrichtige Umwandlung einer Doppelintegerzahl in eine Integerzahl:

Aus dem oben beschriebenen ergibt sich, dass DI-Zahlen vorzeichenrichtig als Integerzahlen ausgewertet werden können, solange sie im Bereich -32768 bis 32767 liegen.

Um das 32. Bit der DI-Zahl („Vorzeichenbit“) muss man sich nicht kümmern.

$-Zeichen in Stringvariablen eingebenzum Beginn
Bestellnummer:

FRAGE:
Wie kann man in STEP 7 ein  Dollerzeichen in einer Stringvariablen eingeben ?

ANTWORT:
Die "$"-Zeichen sind nach internationaler Vereinbarung als Beginn einer Formatanweisung zu verstehen. Wenn Sie nun ein Dollerzeichen eingeben wollen, dann müssen Sie zwei mal das "$"-Zeichen hintereinander schreiben.

Wenn Sie Sonderzeichen z.B. für die Steuerung des Ausdruckes mit einfügen wollen, dann muss immer ein Dollerzeichen vorangestellt werden.

Verwendbare Sonderzeichen sind:

  • $$  einfaches Dollerzeichen

  • $L, $l  Zeichenvorschub

  • $P, $p  Seitenvorschub

  • $R, $r  Wagenrücklauf

  • $T, $t  Tabulator

Hinweis:
Bei der Umsetzung von STEP 5 nach STEP 7 wird die Zeichenfolge automatisch realisiert.

Suchbegriffe:
Initialisierung, Sonderfunktionen

Auswerten ob ein Integer-/ Doppelintegerwert gerade oder ungerade ist zum Beginn
Bestellnummer:

FRAGE: 
Wie kann ich auswerten, ob ein  Integer-/ Doppelintegerwert gerade oder ungerade ist?

ANTWORT:  
Bei ungeraden Integer- bzw. Doppelintegerwerten steht im niederwertigsten Bit immer eine Eins.

Um auf einen ungeraden Wert zu prüfen, muss also

  • bei einem Integerwert, der z.B. in MW0 liegt, auf M1.0  und
  • bei einem Doppelintegerwert, der z.B. in MD0 liegt, auf M3.0

geprüft werden.

Suchbegriffe: 
INT, DINT

Anwenderdefinierte Diagnosemeldungen in neues Projekt übertragen zum Beginn
Bestellnummer:

FRAGE:
Wie können anwenderdefinierte Diagnosemeldungen in ein neues Projekt übertragen werden?

ANTWORT:
Die anwenderdefinierten Diagnosemeldungen werden beim Kopieren des S7-Programm-Ordners mitkopiert.
Kopieren Sie den S7-Programmordner aus dem Basisprojekt in das neue Projekt. Die Bausteine und Quellen können im Zielprojekt ohne Auswirkungen auf die anwenderdefinierten Diagnosemeldungen gelöscht werden.

Suchbegriffe: 
Diagnoseereignisse

Funktion Suchen und Ersetzen in der Variabelentabelle bei Step7 zum Beginn
Bestellnummer:

FRAGE:
Ist es möglich, die Funktion "Suche" bzw. "Suchen und Ersetzen" in einer Variablentabelle (VAT) bei Step7 einzusetzen?

ANTWORT:  
Nein, das ist nicht möglich. Sie können aber mit der Funktion "Kopieren (Ctrl+C)" und "Einfügen (Ctrl+V)" den Inhalt Ihrer Variablentabelle in eine Windows Applikation - wie z.B. Microsoft Excel - übertragen. Dort können Sie die gewünschten Funktionen anwenden und anschließend die geänderte Tabelle mit "Kopieren" und "Einfügen" wieder zurück in die Variablentabelle übertragen.

Kopieren von Zeichenkettenzum Beginn
Bestellnummer:

FRAGE:
Wie kann ich auf einfache Weise Strings kopieren?

ANTWORT:
Da die Systemfunktion SFC 20 ("BLKMOV") keine Zeichenketten zulässt, können Sie wie folgt vorgehen:

Mit Hilfe der Funktion FC 2  ("CONCAT") aus den IEC-Funktionen der Standard Bibliothek fügen Sie eigentlich zwei Strings zusammen. Lässt man den zweiten String leer, dann wird nur der erste String an die gewünschte Stelle kopiert (siehe Bild1).



Bild1: Kopieren von Zeichenketten mit der IEC-Funktion "CONCAT"

Bei geschützten Bausteinen kann der Bausteinkommentar nicht gescrollt werden mit Versionen < STEP 7 V5.2zum Beginn
Bestellnummer:

FRAGE:
Warum kann ich bei einem geschützten Baustein den Bausteinkommentar nicht scrollen?

ANTWORT:
Sie sehen nur die ersten 20 Zeilen des Bausteinkommentars im KOP/FUP/AWL-Editor und können aber nicht weiter scrollen. Dieses Verhalten betrifft STEP 7 Versionen bis einschließlich Version V5.1.
Ab STEP 7 V5.2 wird der Bausteinkommentar im KOP/FUP/AWL - Editor auch bei geschützten Bausteinen vollständig angezeigt.
Verwenden Sie eine der unter Abhilfe beschriebenen Möglichkeiten, um den vollständigen Bausteinkommentar bei Versionen < STEP 7 V5.2 einzusehen.

Abhilfe:
Um den gesamten Bausteinkommentar einsehen zu können, gibt es folgende Möglichkeiten:

  • Über die Bausteineigenschaften.
    Öffnen Sie die Bausteineigenschaften über das Menü "Datei > Eigenschaften" Register "Allgemein - Teil1 > Kommentar". Hier haben Sie nun die Möglichkeit, innerhalb des Kommentars zu scrollen.
  • Über die Druckvorschau.
    Öffnen Sie die Druckvorschau über "Datei > Druckvorschau". Hier wird der Kommentar seitenweise angezeigt.
Wie kann die Schriftgröße in Windows geändert werden, wenn der Cursor in der Symboltabelle nicht sichtbar ist?zum Beginn
Bestellnummer:

Anleitung:  
Unter bestimmten Voraussetzungen kann es vorkommen, dass der Cursor bei Eingaben in der Symboltabelle nicht dargestellt wird. Die Eingabe ist in den Feldern der Symboltabelle zwar weiterhin möglich, der blinkende Cursor ist in der angewählten Zelle jedoch nicht sichtbar. Dieses Verhalten kann bei einer der früheren STEP 7 Versionen auftreten, wenn der Schriftgrad des Betriebssystems von der Standardeinstellung ausgehend vergrößert wurde (z.B. auf die Einstellung "Groß (120 DPI)"). Wir empfehlen in diesem Fall die Standardeinstellung "Small Fonts" (Normalgröße 96 DPI).

Im Gegensatz zum Bausteineditor, der eine eigene Einstellung der Schriftgröße besitzt, nutzt der SIMATIC Manager die Schriftarten des Betriebssystems. Diese Schriften lassen sich verändern. Eine bessere Lesbarkeit können Sie auch erreichen, indem Sie die Bildschirmauflösung reduzieren. Beide Einstellungen gelten für alle Applikationen. Folgende Schritte zeigen Ihnen, wie Sie die Schriften des Betriebssystems verändern können:
 
Nr. Vorgehensweise:
1 Bewegen Sie die Maus auf eine freie Stelle auf dem Desktop und öffnen Sie die Anzeigeeigenschaften über "rechte Maustaste > Eigenschaften".
2 Wechseln Sie in das Register "Einstellungen". Bild 01 zeigt den Dialog "Eigenschaften von Anzeige" unter Microsoft Windows 2000.


Bild 01

3 Wechseln Sie hier in die erweiterten Einstellungen (Schaltfläche Erweitert...) und wählen Sie wie im Bild 02 den Schriftgrad "Small Fonts".


Bild 02

Nach anschließendem Neustart des Rechners wird der Cursor in der Symboltabelle wieder wie gewohnt dargestellt.

Hinweis:
Die Lesbarkeit erhöht sich in der Regel durch größere Schriften - nicht durch kleinere. Wenn Sie die Schrift/Schriftgröße zu klein wählen, ist u. U. in der Symboltabelle der Cursor nicht mehr sichtbar oder Schaltflächen sind in STEP 7 nicht mehr korrekt lesbar.

Warum sind die Meldenummern am aufrufenden Baustein ungleich den Nummern in der Meldeprojektierung?zum Beginn
Bestellnummer:

 

Beschreibung:
In einem Baustein, in dem die Systemfunktionen SFC107 und SFC108 aufgerufen werden, stimmen alle Hex-Nummern nicht mit den Meldenummern überein. Mit dem Menübefehl "Datei > Zugriffe prüfen und aktualisieren" im KOP/AWL/FUP Editor werden die Nummern angepasst, aber nach dem Speichern des Bausteins werden die Hex-Zahlen wieder durch die alten Nummern ausgetauscht.

Das Meldenummernband wird im Projekt geändert und im aufrufenden Baustein sind die Aufrufe für die Alarm8-Meldungen vorhanden. Diese Meldenummern passen jetzt nicht mehr zu dem Nummernband. Nach dem Prüfen und Aktualisieren der Aufrufe sind die Meldenummern zwar richtig, aber nach dem Speichern des Bausteins werden die alten Nummern wieder in den Aufruf eingetragen.

Abhilfe:
Im Baustein, in dem die Alarme aufgerufen werden (SFC107 und SFC108) muss eine Schnittstellenänderung durchgeführt werden. Fügen Sie eine beliebige Variable in die Variablendeklaration des Bausteins ein und speichern Sie diesen ab. Bei den anderen aufrufenden Bausteinen, in denen der Baustein mit der erweiterten Variablendeklaration (Aufruf SFC107 und SFC108) aufgerufen wird, müssen die Zugriffe aktualisiert werden. Führen Sie im KOP/FUP/AWL-Editor den Menübefehl "Datei > Zugriffe prüfen und aktualisieren" aus und speichern Sie anschließend die Bausteine.

Druckauftrag wird frühzeitig abgebrochenzum Beginn
Bestellnummer:

FRAGE:  
Woran kann es liegen, dass der Ausdruck frühzeitig abgebrochen wird?

ANTWORT:  
Wenn innerhalb des STEP 7 Projektes ein Sprachenwechsel durchgeführt wird (über Projekte mehrsprachig verwalten), wird in den Bausteineigenschaften der Bausteine (FBs, FCs, DBs) das Attribut S7_language angelegt (Bild 1).

Bild 1: Bausteineigenschaft einer Funktion mit dem Attribut S7_lanquage:= '7(1) Deutsch (Deutschland) 13.08.2004 14:48:49'

In der AWL-Quelle wird aber das Attribut mit den Sonderzeichen "...$R$L..." dargestellt (Bild 2).

Bild 2: AWL-Quelle der Funktion - Darstellung des Attributes S7_lanquage mit Sonderzeichen

Einige Drucker - wie z. B. der Kyocera FS-1700 - können diese Sonderzeichen "$R$L" nicht darstellen und somit wird der Ausdruck abgebrochen.

Abhilfe:
Löschen Sie die Sonderzeichen und fügen Sie an deren Stelle ein Leerzeichen ein, z.B.:

  • S7_language := '7(1) Deutsch (Deutschland)<zwei Leerzeichen>13.08.2004 13:48:49'

Allgemeine Bausteininformationen über Programme nicht auslesbar zum Beginn
Bestellnummer:


FRAGE:
Kann ich allgemeine Bausteininformationen über ein Programm auslesen?

ANTWORT:
Allgemeine Bausteininformationen, wie:

  • Versionsnummer der Bausteine
  • Bausteinlänge
  • Zeitstempel des Bausteins
  • Daten aus dem Bausteinkopf

können Sie nicht auslesen. 

Suchbegriffe:
Bausteineigenschaften


DB? in den Referenzdaten anzeigenzum Beginn
Bestellnummer:
>
FRAGE:
Wie kommt es zur Anzeige von  "DB?"  in den Referenzdaten?

  ANTWORT:

  1. Ab STEP 7 V5.x werden (Any)Pointer-Zugriffe (Einlesen einer Adresse aus einem Datenbaustein in das Adressregister) in den Referenzdaten dargestellt. Da die Referenzdatenanzeige bei Pointerzugriffen die Adressen der Operanden nicht zuordnen kann, werden Fragezeichen angezeigt. Diese Anzeige kann ignoriert werden.

Bild 1.gif  ( 4 KB )

Bild 1: Querverweisliste mit Fragezeichen

Das Fragezeichen wird durch folgende Anweisungen ausgelöst:

LAR1    P#DBX   3.0    bzw.

LAR1    P#DIX    3.0

 

  1. Ein Fragezeichen hinter DB wird auch angezeigt, wenn im Code auf den Datenbaustein zugegriffen wird, der gerade über ein Datenbausteinregister geöffnet ist. Da die Referenzdaten an der Stelle des Zugriffes nicht erkennen können, auf welchen speziellen DB zugegriffen wird, steht anstatt der DB-Nummer ein Fragezeichen.

Beispiel:

Durch die Codeeingabe in OB1, 

kommt es zur folgenden Querverweisliste (Bild 2).

Bild 2.gif  ( 5 KB )  

Bild 2: Querverweisliste bei Zugriff auf DB, der im Datenbausteinregister geöffnet ist

Reihenfolge der Parameterübergaben bei Bausteinaufrufen in konvertierten S5-Programmenzum Beginn
Bestellnummer:

FRAGE:
Was ist bei der Konvertierung von S5-Programmen mit Bausteinaufrufen zu beachten?

ANTWORT:
Nach dem Konvertieren eines S5 Programms mit einem Bausteinaufruf kommt beim Übersetzen der erzeugten AWL-Quelle eine Fehlermeldung bezüglich der Reihenfolge der verschalteten Parameter:

Fehlermeldung: "Vertauschungen in Parameterreihenfolge bei "Symbol" kann zu Vertauschungen/Verschiebungen ..."

In S5 werden die Parameter in der Reihenfolge angeordnet, in der sie im Programm verwendet werden. In S7 werden die Parameter nach Typ in der Reihenfolge IN, OUT, IN_OUT angeordnet. Der Konverter übernimmt die Aktualparameter an Bausteinaufrufen aus der S5 ohne Änderung. Damit stimmt die Reihenfolge der Parameter in der AWL-Quelle nicht.

Abhilfe:
Wenn aus dem S5 Programm konvertierte Dateien Bausteinaufrufe enthalten, bei denen die Reihenfolge der Aktualversorgungen nicht mit der Reihenfolge in der Deklaration übereinstimmt, ist das durch einfaches Umsortieren (Cut/Paste) zu korrigieren. Es ist darauf zu achten, dass die Parameter in den Aktualversorgungen wie die Deklarationen der aufgerufenen Bausteine sortiert werden. Anschließend lässt sich die AWL-Quelle ohne Fehler übersetzen.


Mehrzeilige Variablen-Kommentare im Deklarationsteil von AWL-Quellen in STEP 7 V5.2zum Beginn
Bestellnummer:

FRAGE:
Was ist beim Export von mehrzeiligen Variablen-Kommentaren zu beachten?

ANTWORT:
Bei der Programmierung von AWL-Quellen ist es im Gegensatz zum KOP/FUP/AWL-Editor möglich, für Variablen im Deklarationsteil mehrzeilige Kommentare einzugeben. Dabei kann jedoch die maximal erlaubte Anzahl von 79 Zeichen für den Kommentar nicht überschritten werden. Überschreitet man die zulässige Länge des Variablenkommentars in einer AWL-Quelle, wird beim Übersetzen eine Warnung ausgegeben und die Kommentarzeile abgeschnitten:

"Kommentar kann nicht gespeichert werden"

Hat man in einer AWL-Quelle einen mehrzeiligen Kommentar programmiert, wird das Return Zeichen nach dem Übersetzen der Quelle auch in die Kommentarzeile übernommen und als Sonderzeichen dargestellt.
Werden die Texte über "Extras > Texte mehrsprachig verwalten > Exportieren" zum Übersetzen exportiert, kann das Return-Zeichen (abhängig vom externen Editor) als Zeilenumbruch interpretiert werden. Dies kann beim Importieren der übersetzten Texte zu Verschiebungen bei den Kommentaren führen.

Abhilfe:
Es ist empfehlenswert den Variablenkommentar im Deklarationsteil von AWL-Quellen nur einzeilig zu programmieren, auch wenn der Editor einen mehrzeiligen Kommentar erlaubt. Die maximal erlaubte Anzahl von Kommentarzeichen wird auch durch das Aufteilen des Kommentars über mehrere Zeilen nicht erhöht.


Bausteine einer Quelle werden nach Übersetzen der Quelle nicht erzeugtzum Beginn
Bestellnummer:

FRAGE:
Warum werden manchmal Bausteine nach dem Übersetzen der Quellen nicht erzeugt ?

ANTWORT:
Sie übersetzen eine Quelle, die Bausteine werden aber nicht erzeugt. Sie erhalten möglicherweise Fehlermeldungen bezogen auf bestimmte Bausteine. Es werden aber auch die fehlerfreien Bausteine nicht angelegt. Dieses Verhalten ist so gewünscht, um die Datenkonsistenz und die gegenseitige Abhängigkeit der Bausteine zueinander (z.B: Bausteinaufrufe, Multiinstanzen, usw.) sicherzustellen.

Abhilfe:
Sie können die Option "Bausteine nur bei fehlerfreier Übersetzung erzeugen" unter Extras/Einstellungen/Registerkarte-"Quellen" abwählen (Default-Einstellung ist angewählt). Dann werden zumindest die Bausteine erzeugt, bei denen bei der Übersetzung keine Fehler gefunden wurden.

Hinweis:
Um die Datenkonsistenz auch in diesem Fall sicherzustellen, sollten Sie die gemeldeten Fehler umgehend beheben und einen erneuten Übersetzungslauf starten. Eine häufige Ursache kann sein, daß in der Quelle die Aufrufreihenfolge der Bausteine nicht berücksichtigt wurde. Ab V4.02 kann jedoch die Quelle in Abhängigkeit von der Programmstruktur erzeugt werden.

Geschachtelter FB/FC-Aufruf in FUP-Ansichtzum Beginn
Bestellnummer:

FRAGE:
Was ist bei der Programmierung von verschachtelten FB/FC-Aufrufen mit binären Eingängen in FUP zu beachten?

ANTWORT:
Aufgrund einer Compiler-Regel in AWL müssen binäre Eingänge von FB/FC-Aufrufen bestimmt werden, bevor der Aufruf ausgeführt wird. Da diese mit beliebigen Netzwerken verschaltet sein  können, werden zuerst diese Netzwerke berechnet und auf eine Lokalvariable zugewiesen. Erst dann wird der Aufruf mit den versorgten Parametern übersetzt, wobei anstelle der binären Netzwerke die Lokalvariablen treten.

Im folgenden Beispiel wird die Reihenfolge bei der Umsetzung in AWL verdeutlicht.



Bild1: Geschachtelter FC-Aufruf mit binären Eingängen

Bei ineinander geschachtelten Aufrufen werden wegen der genannten Compiler-Regel, zuerst die binären Netzwerke des äußeren Aufrufes (1), dann die binären Netzwerke des inneren Aufrufes (2) übersetzt. Dann folgt der innere FB/FC-Aufruf (3), gefolgt vom äußeren Aufruf (4). Diese Regel darf auch dann nicht verletzt werden, wenn  nur eine Variable auf den binären Eingang gelegt wird (wie in diesem Beispiel).

Hinweis:
In dem Programmbeispiel in Bild 1 verwendet der rechte FB/FC-Aufruf von "TEST" somit nicht das Ergebnis des ersten FB/FC-Aufrufes als Eingang. Wenn aber genau dieses Verhalten gewünscht ist, sollten die FB/FC-Aufrufe auf zwei verschiedene Netzwerke verteilt werden.

Programmierung von verschachtelten Bausteinenzum Beginn
Bestellnummer:
>

FRAGE:
Was ist bei Programmierung von verschachtelten Bausteinen zu beachten?

ANTWORT:
Die Bausteine werden von oben nach unten erstellt, d.h. man beginnt mit der obersten Bausteinreihe.

Bild 1: Schematische Darstellung

  • Jeder aufgerufene Baustein muss bereits existieren.

  • Bei der Erstellung von FB´s wird erst der FB geschrieben und danach der zugehörige Instanzdatenbaustein erstellt.

  • OB1 wird zuletzt erstellt.

Erstellreihenfolge:

        FC 1 > FB 1 + Instanz-DB 1 > DB 1 > SFC 1 > FB 2 + Instanz-DB 2 > OB 1

  • Bei nachträglichen Änderungen muss eine Konsistenzprüfung durchgeführt werden. Ab V5.1 müssen die Aufrufe des betroffenen Bausteins nicht mehr von Hand aktualisiert werden.

  • Bei zu großer Schachtelungstiefe kann der Lokaldaten-Stack überlaufen - die Größe des Lokaldaten-Stacks ist CPU-abhängig.

  • Die temporären Variablen werden während der Bausteinbearbeitung im Lokaldaten-Stack abgelegt und jeder OB benutzt 20 Lokaldaten-Byte für seine Startinformationen.

Hinweis:
Vorhandenen Out-Parametern muss bei jedem Bausteinaufruf ein Aktualwert zugeordnet werden, diese dürfen keine Konstanten sein.
In der Programmstruktur der Referenzdaten wird die max. Anzahl der benötigten Lokaldaten-Bytes in spitzen Klammern angezeigt.



Bild 2: Anzeige der benötigten Lokaldaten in den Referenzdaten

Freigabeeingang "EN" und Freigabeausgang "ENO" bei Funktionsbausteinen in AWLzum Beginn
Bestellnummer:

FRAGE:
Warum wird eine Ausgangsvariable mit einem Altwert beschrieben, obwohl mein Funktionsbaustein "abgeblockt" wird?

ANTWORT:
Wenn Sie mit AWL einen Funktionsbaustein erstellen, werden der Freigabeeingang "EN" und Freigabeausgang "ENO" nicht angelegt. Bei FUP/KOP passiert das automatisch. Um dies zu umgehen, legen Sie eine Eingangsvariable "Freigabe" vom Typ BOOL an, die diese Funktion aus FUP/KOP nachbilden soll. Im ersten Netzwerk des Bausteins steht dann beispielsweise folgender Programmteil:

UN #Freigabe
BEB

Der Nachteil dieser Programmierung:
Damit ist zwar die Bearbeitung der nachfolgenden Netzwerke des Funktionsbausteines (FB) abgeblockt, die Bearbeitung der Ein- und Ausgangsvariablen ist aber nach wie vor aktiv. Das bedeutet, dass ein Ausgang auch ohne Programmbefehl beschrieben wird: Es wird in diesem Fall der Altwert aus dem Instanz-Datenbaustein als Ausgabewert gesetzt. Dieses Verhalten führt unter Umständen zu ungewollten Zuständen. So können Sie die am Ausgang des Funktionsbausteins (FB) parametrierte Variable nicht anders besetzen, wenn die Freigabe für den FB nicht gegeben ist. Jede Werteänderung an anderer Stelle im Programm wird bei erneutem Aufruf des "abgeblockten" FB (im nächsten Zyklus) mit dem Altwert überschrieben.

Der Freigabeeingang "EN" und der Freigabeausgang "ENO" in der FUP/KOP-Darstellung sind nur eine standardisierte Aufrufumgebung für den Baustein. Sie sind nicht Bestandteil des Funktionsbausteins (FB) selbst.

Lösung:
Um eine funktionsgleiche Konstellation aus FUP/KOP in der AWL-Darstellung zu erzeugen, müssen Sie den Funktionsbaustein (FB) bedingt aufrufen.
Nur durch Nachbildung des Freigabeeingangs aus der FUP/KOP-Darstellung nach folgendem Muster können Sie das oben beschriebene Verhalten umgehen:

UN M10.0 //Freigabe
SPB m001
CALL FB1,DB1
M001: NOP 0

Die Funktion und Wirkungsweise des hier nicht weiter beschriebenen Freigabeausgangs "ENO" kann in der Online-Hilfe zu STEP 7 genauer nachgelesen werden.

Suchbegriffe:
Funktionsbausteinaufruf

Neue Zeichen im Symboleditor von STEP 7 V5.2zum Beginn
Bestellnummer:

FRAGE:
Was bedeuten die Zeichen und in der Statusspalte des Symboleditors?

ANTWORT:  
Ab der Version 5.2 von STEP 7 erscheint im Symboleditor eine Spalte "Status". In dieser werden mögliche Fehler angezeigt.

Bild 1: Symbol Editor von STEP 7

Folgende Fälle werden in der Version 5.2 unterstützt:

Markiert ein Symbol, zu dem es ein Duplikat (absolut/symbolisch) gibt. Die entsprechenden Zeilen werden  gekennzeichnet.

Markiert ein fehlerhaftes Symbol (falscher Datentyp, Adresse und unvollständige Symboleinträge).

Weiter Informationen finden sie auch in der Online-Hilfe unter  "Das Hauptfenster der Symboltabelle" , oder im Handbuch FAQ Nr. 1123338 "SIMATIC Programmieren mit STEP7 V5.2" im Kapitel 8.5.3 "Unvollständige und mehrdeutige Symbole in der Symboltabelle"

Bausteinvergleich unterschiedlich obwohl die Bausteine identisch sind zum Beginn
Bestellnummer:

FRAGE:
Warum zeigt die Funktion "Bausteine vergleichen ..." in STEP 7 Unterschiede an, obwohl die Programmierung der Netzwerke in KOP oder FUP identisch ist?

ANTWORT:  
Sie haben zwei gleiche Bausteine mit jeweils den gleichen Netzwerken programmiert, trotzdem werden beim Bausteinvergleich Unterschiede angezeigt. Für diese Systemeigenschaft von STEP 7 müssen die folgenden Voraussetzungen gegeben sein:

  1. Die Anweisungen in den beiden Bausteinen wurden in FUP (Funktionsplan) oder in KOP (Kontaktplan) und mit Verzweigungen erstellt.

  2. Die Deklaration der temporären Variablen in jedem Baustein ist unterschiedlich.

STEP 7 merkt sich jeweils das Ergebnis eines Zweiges und speichert dieses Zwischenergebnis in eine temporäre Lokalvariable ab (z.B. L0.0). Die bausteintemporären Variablen werden im Lokaldatenstack abgelegt. Beim Umschalten in die AWL Ansicht werden die internen Unterschiede der Programmierung deutlich.


Bild 1: Darstellung des Programm-Codes in AWL und in FUP für Baustein 1

Für Baustein 1 wurde vom Anwender keine temporäre Variable deklariert, somit ist die Adresse der temporären Lokalvariable für das Zwischenergebnis "0.0".  Wird nun ein Bereich der temporären Variablen durch den Anwender belegt, so verwendet STEP 7 für die Zwischenspeicherung des Verzweigungsergebnis die nächste freie Adresse für die Temporärvariable.

Bild 2: Deklaration einer temporären Lokalvariable durch den Anwender im Baustein 2

Im Baustein 2 wurde z.B. eine temporäre Lokalvariable (Name: "TempVar" vom Typ: "DWORD") deklariert. Die nächste freie Adresse der temporären Variablen zur Zwischenspeicherung eines Zweiges ist dann "4.0".


Bild 3: Darstellung des Programm-Codes in AWL und in FUP für Baustein 2

Die beiden Bausteine haben zwar identische Netzwerke (Darstellung in FUP), aber unterschiedliche Adressen der Lokalvariablen zur Speicherung der Zwischenergebnisse (Verzweigungsergebnis). Die Länge der Lokaldaten im Baustein 2 ist um 4 Bytes größer.

Suchbegriffe:
Code-Abweichung

STEP 7 V 5.2 Ändern der Speziellen Objekteigenschafen im Symbol Editor zum Beginn
Bestellnummer:

FRAGE:
Warum wird beim Ändern der "speziellen Objekteigenschaften" im Symbol Editor die gewünschte Einstellung nicht übernommen?

Beschreibung:
Sie haben in der Symboltabelle mehrere Symbole markiert und versuchen über "spezielle Objekteigenschaften" die Symboleigenschaften zu ändern. Im Menü > Datei > Spezielle Objekteigenschafen > können Sie verschiedene Optionen anwählen es geschieht aber nichts.

ANTWORT:  
Sie haben die letzte Zeile der Symboltabelle mit markiert. Da in dieser Zeile die Objekteigenschaften nicht geändert werden können, darf die Zeile nicht markiert sei. Nehmen Sie deshalb die letzte Zeile (ohne Symbol) aus der Markierung heraus und wählen danach erneut die gewünschten Objekteigenschaften an. Jetzt wird die Änderung übernommen. Dieses wird durch ein Fähnchen in der jeweiligen Zeile gekennzeichnet.

STEP7 V5.2 - Config in Run, Referenz auf verfügbare Dokumentation zum Beginn
Bestellnummer:

FRAGE:
Mit STEP 7 V5.2 gibt es die neue Funktion "Config in Run".  Welche Möglichkeiten bietet mir diese Funktion und wo erhalte ich weiterführende Informationen?

ANTWORT:  
Mit der neuen Funktion Config in Run  (CiR) haben Sie die Möglichkeit, Änderungen an der Konfiguration einer Anlage während der Laufzeit vorzunehmen. Der Prozess muss dafür nicht angehalten werden. Die CPU bleibt während dieser Änderungen im Zustand RUN. 

Diese Funktion wird von der CPU S7-400 Standard und CPU S7-400-H (jeweils ab Firmware V3.1.0) unterstützt.

Eine umfassende Beschreibung zu dieser Funktion finden Sie in dem Handbuch "SIMATIC Anlagenänderungen im laufenden Betrieb mittels CiR" . 

Dieses Handbuch ist als Download mit der Beitrags-ID 14044916  verfügbar.

STEP 7 V5.1 Hinweis zum Anlegen von Organisationsbausteinen zum Beginn
Bestellnummer:

FRAGE:
Beim Einfügen von OB´s in den Bausteinordner wird im Deklarationsteil nur ein Array erstellt. Wie kann ich das beheben?

ANTWORT:  
Die Dateien im Ordner "s7wiz"sind beschädigt. 

Bitte löschen Sie im Verzeichnis \Siemens\S7data\s7wiz alle Dateien mit dem Namen "OB*.AWL". Anschließend deinstallieren Sie STEP 7 und installieren Sie STEP 7 erneut auf Ihrem Rechner, damit diese Dateien neu angelegt werden

Welche Arten der Meldungsprojektierung gibt es ab STEP7 V5.2 ?zum Beginn
Bestellnummer:

Beschreibung:
Bis zur Version 5.1 von STEP 7 wurden Meldungen innerhalb des gesamten Projekts mit einer eindeutigen Nummer versehen. Dazu wurde jedem S7-Programm im Projekt ein Nummernbereich zugeordnet. Kopierte man ein Programm - in dem Meldenummern vergeben waren - konnte es erforderlich sein, den Nummernbereich zu ändern, um einen Konflikt mit doppelten Meldenummern zu vermeiden.

  • Ab V5.2 können Sie entscheiden, ob Sie die Meldenummern projektweit (bisheriges Verfahren) oder CPU-weit (neues Verfahren) vergeben möchten. Die CPU-weite Vergabe bietet den Vorteil, dass Programme auch innerhalb eines Projektes dupliziert werden können, ohne dass Meldenummern neu vergeben werden müssen.
  • Beim ersten Anlegen von Meldungen und Anzeigetexten in einem Projekt wird abgefragt, ob die Meldenummern projektweit oder CPU-weit eindeutig vergeben werden sollen. Sie können mit dem Menübefehl Extras > Einstellungen > Meldenummern im SIMATIC Manager eine Voreinstellung für das Anlegen von neuen Projekten vornehmen, so dass eine Abfrage bei jedem ersten Anlegen von Meldungen entfällt. 
    Diese Voreinstellung wirkt auch bei Datei > Speichern unter mit eingeschalteter Reorganisation - es sei denn, die Voreinstellung für neue Projekte steht auf projektweit und das aktuelle Projekt ist auf CPU-weit eingestellt. 
    Anmerkung: 
    Eine Änderung der Projekteinstellung von CPU-weit auf projektweit ist nicht möglich.
  • Wenn Sie CPU-weite Meldenummern gewählt haben und diese in einem HMI-Gerät anzeigen lassen möchten, ist dies nur mit den Applikationen "WinCC V6.0" und/oder "ProTool V6.0" möglich. Sollten Sie mit Versionen dieser Applikationen kleiner als V6.0 arbeiten, wählen Sie bitte projektweite Meldenummern aus.

ToolTips werden im KOP/AWL/FUP Editor nicht angezeigt zum Beginn
Bestellnummer:

FRAGE: 
Warum werden im KOP/AWL/FUP Editor  zu Anweisungen, Funktionsleiste usw. keine ToolTips angezeigt?

ANTWORT:  
Zu diesem Verhalten kann es unter Umständen beim Einsatz des Internet Explorer V6.0 und STEP 7 Version V5.1 SP3 kommen. Die Darstellung der ToolTips ist eine Funktionalität des Betriebssystems. Durch Deinstallieren des Internet Explorer V6.0 und Installation des Internet Explorer V5.5 wurden in dem vorliegenden Fall die ToolTips wieder wie gewohnt angezeigt.

Suchbegriffe: 
tool tips

Berechnung von Zeitenzum Beginn
Bestellnummer:
>

FRAGE:
Wie kann man Zeiten berechnen?

ANTWORT:
Das Format IEC-TIME ist vom Formattyp Doppelinteger und kann daher mit normaler Arithmetik berechnet werden.

Das Format S5TIME muss umgewandelt werden, dies kann mit dem Baustein FC33 (S5TI_TIM) durchgeführt werden. Der Baustein befindet sich in der "Standart Library" im Ordner "IEC Function Blocks". Um einen TIME-Wert in das Format S5TIME umzuwandeln, benutzt man den FC40 (TIM_S5TI), welcher sich ebenfalls im Ordner "IEC Function Blocks" befindet.
Die genaue Beschreibung zu den Bausteinen entnehmen Sie bitte der Hilfe zu den IEC-Standard-Funktionen.  Klicken Sie hierzu im SIMATIC-Manager zuerst auf das "Hilfe"-Symbol in der Symbolleiste und dann auf den gewünschten Block.
Eine genaue Beschreibung der Datentypen finden Sie in der STEP 7-Hilfe ("SIMATIC-Manager > Hilfe > Hilfethemen... > Inhalt > Anhang > Daten- und Parametertypen > Elementare Datentypen > Elementare Datentypen").

 

Meldung beim Übersetzen der Quelle: "Vertauschungen in Parameterreihenfolge..." zum Beginn
Bestellnummer:

FRAGE:
Beim Übersetzen einer Quelle ab STEP 7 V 5.1 SP3 erscheint folgende Fehlermeldung, die bei vorhergehenden STEP 7 Versionen nicht auftrat:

"Vertauschungen in Parameterreihenfolge bei  Parameternamen kann zu Vertauschungen

 / Verschiebungen bei Kommentaren auch in den nachfolgenden Anweisungen führen."

ANTWORT:  
Die Reihenfolge der Parameter bei einem Bausteinaufruf ist nicht identisch mit der im aufgerufenen Baustein deklarierten Reihenfolge der Parameter. Bei älteren STEP 7 Versionen wurde dies nicht als Fehler sondern als Warnung angezeigt.

Abhilfe:
Prüfen Sie bitte in der Quelle, ob die Reihenfolge der Parameter bei allen Aufrufen mit der Reihenfolge der Parameterdeklaration der aufgerufenen Bausteine übereinstimmt. Korrigieren Sie bitte vorhandene Unterschiede.

Suchbegriffe:
Compilerfehler

STEP 7 Verwendungstabellezum Beginn
Bestellnummer:
>

FRAGE:
Wie aktualisiert man die Referenzdaten ?

ANTWORT:  
Über die Funktion "Aktualisierung der Referenzdaten" können Sie die Referenzdaten Ihres STEP 7-Projekts aktualisieren. Die Referenzdaten umfassen Querverweisliste, Belegungsplan, Anwenderprogrammstruktur und die Liste nicht verwendeter Operanden bzw. die Liste der Operanden ohne Symbol. Zur Aktualisierung der Referenzdaten haben Sie bei STEP 7 zwei Möglichkeiten:

 

  1. Im Bausteineditor  KOP/AWL/FUP können Sie unter "Extras > Einstellungen" in der Registerlasche "Baustein erzeugen" die Option "Referenzdaten erzeugen" aktivieren. Bei Anwahl dieser Option erzeugt das System nach dem Übersetzen einer Quelle bzw. nach dem Abspeichern eines inkrementellen Bausteins die Referenzdaten. 

Referenzdaten_01_d.gif ( 621 KB )

  1. Eine weitere Möglichkeit, die Referenzdaten zu erzeugen, bietet der Menübefehl "Extras > Referenzdaten > Generieren" im SIMATIC-Manager. Nach dem Aufruf dieser Funktion haben Sie die Wahl, die Referenzdaten neu zu generieren oder zu aktualisieren.

Referenzdaten_02_d.gif ( 489 KB )

 

Referenzdaten_03_d.gif ( 485 KB )

Suchbegriffe:
Referenzdaten, Aktualisierung, Neuerzeugung

Wirksinn des Reglers "CONT_C" (SFB41/FB41) umdrehen zum Beginn
Bestellnummer:

FRAGE:
Wie kann ich den Wirksinn eines Reglers z.B. des "Continue_Control" (SFB41/FB41) umdrehen?

ANTWORT:
Den Wirksinn des Reglers können Sie umdrehen, indem Sie am Eingang "GAIN" des Reglers einen negativen Wert für die Verstärkung angeben.

Zusätzliche Informationen finden Sie auch in der Online-Hilfe zu STEP 7.

Suchbegriffe:
Reglerbaustein, Continue_Control

DB-Zugriffe tauchen nicht in Querverweisliste auf zum Beginn
Bestellnummer:

FRAGE:
Warum werden die DB-Zugriffe nicht in der Querverweisliste angezeigt?

ANTWORT:
Beim Erzeugen der Referenzdaten können die Zugriffe auf DB-Variablen mit berücksichtigt werden. Aber die Default-Einstellung zum Filtern der Referenzdaten (Querverweise) verhindern eine Anzeige.

Abhilfe:
Ändern Sie die Filtereinstellungen unter dem Menüpunkt "Extras > Referenzdaten > Filtern". Hier aktivieren Sie den Speicherbereich für DBs unter der Registerkarte "Querverweise".

Bild 1: Filtereinstellungen

Dennoch kann eine funktionell identische Programmierung bei der Querverweisliste zu unterschiedlichen Ergebnissen in einem AWL- und einem SCL- Programm  führen. Insbesondere der Aufruf von Funktionen und Funktionsbausteinen erscheint bei der SCL Programmierung nicht mehr.
Dies liegt daran, dass aus der SCL-Programmierung direkt MC7 Code generiert wird, der sich etwas vom AWL Code unterscheidet. Weitere Informationen dazu erhalten Sie in Beitrags-ID 838801 -  "Mit Programmeditor den durch SCL generierten AWL-Code ansehen" und Beitrags-ID 1426554 - "AWL-Quelle aus einer SCL-Quelle generieren".

Suchbegriffe:
Querverweisliste, Systemkonfiguration

Textstrings bearbeiten und ein- bzw. ausgeben in STEP 7 und WinCCzum Beginn
Bestellnummer:

FRAGE:
Wie bearbeite ich einen Textstring und lese ihn in eine S7-Steuerung bzw. aus einer Steuerung?

ANTWORT:
Zeichenketten vom Datentyp "STRING" bestehen aus bis zu 254 Zeichen (Nettodaten).
Im erste Byte jeder Stringvariablen wird die maximale Länge der Variablen festgelegt. Im zweiten Byte steht die aktuelle Länge. Danach folgen die Textstringzeichen im ASCII-Format.

Zunächst muss die Zeichenvariable deklariert werden.
Zum Beispiel in SCL:
varname: STRING[maxAnzahl] := Vorbelegung

Hinweis:
"varname" steht für die vom Anwender gewählte Variablenbezeichnung.
STRING ist ein Schlüsselwort (und kann daher auch klein geschrieben werden).
Die Vorbelegung kann, muss aber nicht erfolgen. Eine Vorbelegung als Leerstring ist möglich.

Bei der Definition bzw. Ablage in einem Datenbaustein, z.B. in DB10.DW10 ist zu berücksichtigen, dass für die Datenlänge die Anzahl der maximalen Länge (= max. Anzahl Zeichen) plus die beiden Verwaltungsbytes zu rechnen sind. D.h. Eine Stringvariable, die aus zehn Buchstaben besteht, muss mindestens 12 Byte lang gewählt werden.

Variablen vom Typ "STRING" können also an Bausteinparametern vom Datentyp "STRING" und auch vom Typ "ANY" angelegt werden.
Zur Verarbeitung von Stringvariablen im Anwenderprogramm gibt es Standardbausteine (IEC-Funktionen), hier eine Auswahl:

Funktion

Beschreibung

FC2 CONCAT

Fügt zwei Strings zusammen

FC4 DELETE

Löscht einen String

FC5 DI_STRING

Datentypumwandlung von DOUBLE-INTEGER nach STRING

FC16 I_STRING

Datentypumwandlung von INTEGER nach STRING

FC30 R_STRING

Datentypumwandlung von REAL nach STRING

FC37 STRING_DI

Datentypumwandlung von STRING nach DOUBLE-INTEGER

FC38 STRING_I

Datentypumwandlung von STRING nach INTEGER

FC39 STRING_R

Datentypumwandlung von STRING nach REAL

FC31 REPLACE

String ersetzen durch einen anderen String

Auch auf WinCC-Seite kann eine Textvariable über den Speicherbereich definiert werden, z.B. DB10.DW10. WinCC sorgt beim Schreiben einer Textvariablen für eine entsprechende Anpassung der Verwaltungsinformation.

Suchbegriffe:
Datenübertragung, Datenverarbeitung

Umverdrahten in einem Baustein nicht möglich in STEP 7 V5.0 / V5.0 + SP1 / V5.0 + SP2zum Beginn
Bestellnummer:

FRAGE:
Warum kann ich die Operanden in einem Baustein nicht umverdrahten?

ANTWORT:
Sie arbeiten mit einer der folgenden STEP 7 Versionen:

  • STEP 7 V5.0
  • STEP 7 V5.0 + SP1
  • STEP 7 V5.0 + SP2

Bei diesen Versionen handelt es sich um eine Systemeigenschaft, dass die Operanden in einem Baustein nicht umverdrahtet werden können.

Abhilfe:
Ab der Version STEP 7 V5.0 + SP3 wird Ihnen diese Funktionalität wieder angeboten. Unter der Beitrags-ID: 2950274 können Sie sich das Servicepack 4 herunterladen bzw. bestellen, welches das Servicepack 3 beinhaltet.

Suchbegriffe:
Rangierung

Ladebefehle auf Instanz-Datenbausteine funktionieren nicht in STEP 7 V5.1zum Beginn
Bestellnummer:

FRAGE:
Warum werden Ladebefehle auf Instanz-Datenbausteine in STEP 7 V5.1 nicht akzeptiert?

ANTWORT:
Ihr Programm, das vorher mit STEP 7 V5.0 funktionierte, geht mit STEP 7 V5.1 nicht mehr. Alle Ladebefehle auf Instanz-Datenbausteine funktionieren nicht. Beim Programmieren von Ladebefehlen wie z.B.:

 

U

DB40.DBX

0.0

werden diese nach der Übernahme mit RETURN rot markiert. Bewegt man den Mauszeiger zu dem Ladebefehl, dann erscheint die Fehlermeldung
"Zugriff in Instanz Daten durch einen globalen DB-Zugriff sind nicht zugelassen".

Abhilfe:
Zur Behebung dieses Verhaltens haben Sie zwei Möglichkeiten:

  1. Wenn das Programm nicht geändert werden soll, deaktivieren Sie im KOP/AWL/FUP Editor die Funktion "Querzugriffe als Fehler melden" unter "Extras > Einstellungen > Editor".
  2. Möchten Sie die Ausgabe dieser Fehlermeldungen jedoch nicht unterdrücken, dann ist es besser direkt (symbolisch) auf das Instanzdatum zuzugreifen.
    Ist der direkte Zugriff nicht möglich, dann können Sie auch die Anweisung "U DIX" verwenden.

Eingabe einer S5-Adresse für die IM463-2 und für den S5-Adapter nicht möglichzum Beginn
Bestellnummer:

FRAGE:
Warum kann ich für die IM463-2 und für den S5-Adapter keine S5-Adresse größer 124 eingeben?

ANTWORT:
Sie verwenden STEP 7 V5 mit SP3 und projektieren eine IM463-2 oder einen S5-Adapter. Als Adresse für dieses Modul wollen Sie eine S5-Adresse größer 124 eingeben. Dies ist nicht möglich.

Abhilfe:
Erst ab der Version V5.1 von STEP7 haben Sie diese Möglichkeit.

Programmbeispiel: Regeln von zwei Stellgliedernzum Beginn
Bestellnummer:

FRAGE:
Wie kann ich mit einem PID-Regelkreis zwei Stellglieder regeln?

ANTWORT:
Verwenden Sieeinen Demultiplexer und schalten Sie den Ausgang mit Hilfe einer BOOL-Variable um.

Beispiel:
Bei diesem Beispiel hat eine Klimaregelung zwei redundant gekühlte Wasserversorgungssysteme. Es ist immer nur ein Kühler im Einsatz (siehe Bild).

In diesem Beispiel kommen ein PID-Regler und zwei Stellgliedern zum Einsatz. Der Demultiplexer schaltet den Stellwert des Regelkreises auf einen der zwei Stellglieder auf.

Achtung:
Dieses Programmbeispiel ist nicht dazu geeignet, mit einem PID-Regler unterschiedliche Regelkreise zu regeln. Weiterhin muss sichergestellt werden, dass das nicht benötigte Stellglied keinen Einfluss mehr auf die Regelstrecke besitzt (z.B. noch halb geöffnet ist).
 

Parameter

Deklaration

Datentyp

Beschreibung

Value

INPUT

WORD

Der aktuelle Regelwert

Select

INPUT

BOOL

umschalten zwischen den Stellgliedern

output_0

OUTPUT

WORD

Ausgang für das erste Stellglied

output_1

OUTPUT

WORD

Ausgang für das zweite Stellglied

AWL-Code:

FB1.pdf ( 5 KB )

Beispielprojekt:
Kopieren Sie die Datei Regler.exe auf ein separates Verzeichnis und starten sie anschließend per Doppelklick. Das STEP7 Projekt wird jetzt mit allen dazugehörigen Unterverzeichnissen entpackt. Anschließend können Sie das entpackte Projekt mit dem SIMATIC Manager öffnen und bearbeiten.

Regler.exe ( 52 KB )

Programmbeispiel: Baustein zur Nachbildung eines Stromstoßrelaiszum Beginn
Bestellnummer:

FRAGE:
Wie kann ich eine Stromstoßrelais-Funktion in STEP7 nachbilden?

ANTWORT:
Hier finden Sie ein Beispiel für die Realisierung eines Stromstoßrelais. Die Funktion läßt sich in einem FC mit nur vier Anweisungen programmieren.

Das Listing sehen Sie in folgendem pdf-Dokument.

FC1_1.pdf ( 2 KB )  

Folgendes zip-Archiv enthält ein STEP7 V4.02 Beispielprojekt. Kopieren Sie die Datei Stromstoßschalter_1.exe auf ein separates Verzeichnis und starten sie anschließend per Doppelklick. Das S7 Projekt wird jetzt mit allen dazugehörigen Unterverzeichnissen entpackt. Anschließend können Sie das entpackte Projekt mit dem SIMATIC Manager öffnen und bearbeiten.

Stromstoßschalter_1.exe ( 77 KB )    

CALL SFC mit Übergabe ganzer ARRAYs via UDT als statische Variable nicht möglich! (STEP 7 V5 < SP3)zum Beginn
Bestellnummer:

FRAGE:
-

ANTWORT:
Sie setzen STEP 7 mit einem Service Pack kleiner SP3 ein und haben einen UDT (z.B. UDT1) definiert. In dem UDT haben Sie eine ARRAY Variable definiert. Nun legen Sie in einem FB eine statische Variable vom Typ UDT1 an. Sie wollen diese Variable einer FC übergeben, so dass das gesamte ARRAY von UDT1 übergeben wird.

Fehlerbild:
Nach dem Speichern wird nur das erste Feld vom ARRAY übergeben!

Beispiel:

TYPE UDT 1

STRUCT
Empfangsbereich : ARRAY [0 .. 7 ] OF BYTE ;
END_STRUCT ;

END_TYPE

FUNCTION_BLOCK FB 1

TITLE =
VERSION : 0.1

VAR
achsdaten : UDT 1;
END_VAR

BEGIN
NETWORK
TITLE =

CALL "DPRD_DAT" (
LADDR := MW 20,
RET_VAL := MW 22,
RECORD := #achsdaten.Empfangsbereich);
// nach dem Speichern wird daraus RECORD := #achsdaten.Empfangsbereich[0]); !!!

END_FUNCTION_BLOCK

Abhilfe:
Definieren Sie ARRAY direkt im FB als statische Variable, dann wird der Parameter richtig übergeben! Dieses Verhalten ist in STEP 7 V5.0 Service Pack 3 verbessert worden.

Maskieren vom niederwertigsten oder höchstwertigen gesetzten Bit in WORD und DWORD Variablen. zum Beginn
Bestellnummer:

FRAGE:
Ich muss in meinem Programm häufig nach dem ersten bzw. nach dem letzten gesetzten Bit in einer Bitfolge suchen. Gibt es einen effektiven Algorithmus für derartige Suche?

ANTWORT:
Die Suche erfolgt meistens in Programmschleifen. Die Variable wird Bit für Bit rotiert, bis alle Bits ausmaskiert wurden. Diese Methode ist nicht optimal und zeitaufwendig. Der ungünstigste Fall: Sie suchen das höchstwertige gesetzte Bit. Das Bit steht aber auf der Stelle 0 im niederwertigen Byte.

Hier sehen Sie 2 schnellere Suchalgorithmen.
Die Algorithmen nutzen die Umwandlung von einer Ganzzahl in eine Gleitpunktzahl in IEEE 32 Bit Format mit dem STEP7 Befehl DTR.

Eine 31 Gleitpunktzahl ist nach IEEE Standard so aufgebaut:

31

30...............................23

22............................................................0

S

Exponent+Bias

Mantisse

Bit 31 enthält das Vorzeichen von Mantisse.

Bias beträgt für 32 Bit Gleitpunktzahlen 127
Ausführliche Information zum IEEE Standard für Gleitpunktzahlen finden Sie auf folgenden Internetseiten:
http://standards.ieee.org/
http://research.microsoft.com/~hollasch/cgindex/coding/ieeefloat.html

Finden des höchstwertigen Bits in einer WORD Variable

Sie haben beispielsweise das Bitmuster 2F4h, binär:
0000_0010_1111_0100
Zur Umwandlung wird die Zahl in das Standardformat gebracht:
1,0_1111_0100 * 2^9.
Dazu wird das Komma bis zu dem ersten gesetzten Bit nach links verschoben.
Exponent der Zahl 2 gibt an, um wie viele Stellen das Komma verschoben wurde. Wenn Sie den Exponenten auswerten, wissen Sie, wo das erste gesetzte Bit steht.

Die Gleitpunktzahl sieht folgendermaßen aus:

31

30..........................23

22.........................................0

0

9+127 = 1000_1000

011_1101_0000_0000_0000

Die Bits 30 bis 23 enthalten den Exponent+127.
Um die Position des ersten gesetzten Bits zu ermitteln, müssen Sie die Bits mit dem Exponenten um 23 nach rechts verschieben. Subtrahieren Sie davon 127, so erhalten Sie in AKKU1-LL die gesuchte Position.

In folgenden PDF-Dokument finden Sie ein Beispiel der Implementierung in AWL.

 FC1_01.pdf (3 KB)

ACHTUNG!!

Sie müssen abfragen, ob der Eingabewert 0 ist. Wenn Sie 0 eingeben, gibt der Algorithmus –127 zurück.

Finden des niederwertigsten Bits in einer WORD Variable

Sie können auch das niederwertigste Bit ermitteln. Dazu wird folgender Algorithmus verwendet.

Sie möchten beispielsweise bei Bitmuster 2F4h die Position des niederwertigsten Bits finden.
Binär: 0000_0010_1111_0100

Sie müssen die Bits auf den Positionen vor dem niederwertigsten Bit auf 1 setzten und den niederwertigsten Bit auf 0. Subtrahieren Sie zu diesem Zweck 1 von der Zahl.
Sie bekommen die Differenz Dif.
Dif = 0000_0010_1111_0100 – 1 = 0000_0010_1111_0011
Nun müssen Sie alle Bits auf den Positionen vor dem niederwertigsten Bit auf 1 setzen, und alle Bits auf den Positionen nach dem gesuchten Bit auf 0. Das geschieht mit zwei bool’schen Verknüpfungen:

Das zu durchsuchende Bitmuster wird mit Dif bitweise AND verknüpft:

0000_0010_1111_0100
AND
0000_0010_1111_0011
=
0000_0010_1111_0000

Dieses Ergebnis wird mit dem Dif bitweise XOR erknüpft:

0000_0010_1111_0011
XOR
0000_0010_1111_0000
=
0000_0000_0000_0011

Jetzt sind im Suchmuster alle Bits auf den Positionen vor dem niederwertigsten Bit 1, das Bit an der Stelle des niederwertigsten Bits und alle Bits auf den Positionen danach sind 0.

Der Rest funktioniert wie beim Finden des höchstwertigen Bits. Sie müssen nur zu dem Ergebnis 1 addieren.

In folgenden PDF-Dokument finden Sie ein Beispiel der Implementierung in AWL.

 FC2_01.pdf (3 KB)

ACHTUNG !!
Dieses Verfahren hat zwei Einschränkungen!

  1. Ist das Bit an der Position 0 in WORD gesetzt, liefert der Algorithmus –127 zurück.
  2. Ist das zu untersuchende Bitmuster 0, liefert der Algorithmus 1 zurück.

Verwenden der Algorithmen mit DWORD-Variablen

Der Gedanke liegt nahe, die beschriebenen Algorithmen auch mit DWORD Bitmustern zu verwenden.

ABER: Mit DWORD Variablen funktionieren die Algorithmen nicht immer richtig

Das hat folgende Ursachen:

  1. Das 32 Bit wird vom DTR-Befehl als Vorzeichen interpretiert
  2. Der DTR-Befehl rundet unter Umständen die DWORD Zahl.
    Die Mantissa der 32bit Gleitpunktzahlen besteht aus 23 Bit. Sind in DWORD Bitmuster nur die Bits von Position 0 bis einschliesslich Position 23 gesetzt, rundet der DTR-Befehl die Zahl nicht. Wenn mehr als die ersten 24 Bits gesetzt sind, kann es folgende Effekte haben:
    Zahl 1FFFFF1h, binär 0000_0001_1111_1111_1111_1111_1111_0001 wird nicht gerundet.
    Der Algorithmus liefert richtiges Ergebnis: MSB an der Position 24.
    Bitmuster 1FFFFFFh, binär
    0000_0001_1111_1111_1111_1111_1111_1111
    rundet
    DTR zu
    0000_0010_0000_0000_0000_0000
    Somit liefert der Algorithmus 25 zurück. Das Ergebnis ist FALSCH.

 

Trotz ausgeschalteter Typoperandenprüfung erscheint rote Anzeigezum Beginn
Bestellnummer:

FRAGE:
Warum erscheint bei dem FB-Aufruf trotz ausgeschalteter Typoperandenprüfung die rote Anzeige?

ANTWORT:
Sie haben einen FB mit Eingangsparametern vom Typ INT programmiert. Diesen FB rufen Sie in einem anderen FB auf. Sie schreiben an einen der Eingangsparameter z.B. ein MW0 (symbolischer Name: "Motor"). Dies wird durch die Syntaxprüfung abgelehnt, obwohl INT und WORD beide 16 Bit breit sind und die Typoperandenprüfung ausgeschalten ist. Vermutlich liegt der Fehler bei der Deklaration des betreffenden Symbols in der Symboltabelle. Dort wird bei "MW" als Adresse standardmäßig der Datentyp "WORD" geschrieben. Wenn der Formalparameter des aufzurufenden FB als INT deklariert ist, treten Probleme auf, obwohl die Typenoperandenprüfung in den Einstellungen für KOP/FUP ausgeschaltet ist. In diesem Fall müssen Sie in der Symboltabelle den Datentyp "WORD" in "INT" ändern.

FB-Aufruf mit symbolischem IDB wird in STEP7 V5 rot, kursiv dargestellt zum Beginn
Bestellnummer:

FRAGE:
Warum wird in Projekten, die vor STEP 7 V5 erstellt wurden, bei FB-Aufrufen der symbolische Name des Instanz-Datenbausteins (IDB) in STEP 7 V5 rot, kursiv dargestellt?

ANTWORT:
In einer Version vor STEP 7 V5 haben Sie einem Instanzdatenbaustein einen symbolischen Namen vergeben. In der Spalte "Datentyp" ist  dabei "DB" angegeben worden. Jetzt haben Sie versucht, dieses Projekt mit STEP 7 V5 zu bearbeiten. 
Der Bausteinaufruf, bei dem der Instanzdatenbaustein benutzt wird, wird rot kursiv dargestellt.

  • STEP7 V3:  
    Es war möglich, in der Symboltabelle als Datentyp für einen Instanzdatenbaustein "DB" oder "FB" anzugeben.
  • STEP7 V4: 
    Es tritt folgendes Verhalten auf: Wenn Sie den Aufruf des FBs vor dem Eintrag in der Symboltabelle programmiert haben, wird als Datentyp defaultmäßig "FB" eingetragen. Sie haben jedoch immer noch die Möglichkeit, diesen Wert in "DB" zu ändern, ohne dass beim Funktionsaufruf ein Fehler angezeigt wird.
  • STEP7 V5:  
    Es wird in der Symboltabelle als Datentyp automatisch "FB" eingetragen. Diese Angabe können Sie auch nicht in "DB" ändern. Somit wurde das Fehlverhalten von STEP7 V3 in STEP7 V5 endgültig behoben.

Die rot, kursiv dargestellten symbolischen Namen können entfernt werden, indem Sie in der Symboltabelle bei jedem Instanz-DB den Datentyp auf FB setzen.

Parametrierung des SFC5zum Beginn
Bestellnummer:

FRAGE:
Wie muß ich die physikalische Kanaladresse am SFC 5 angeben, um die logische Adresse des Kanals damit zu ermitteln?

ANTWORT:
Die Beschreibung des SFC 5 kann leicht mißverstanden werden, deshalb hier die folgende Klarstellung:
Am Eingang SUBNET wird angegeben:

0

Kanal befindet sich auf einer Baugruppe im Zentralgerät oder einem Erweiterungsgerät

>0: DP-Mastersystem-ID

Kanal befindet sich auf einer Baugruppe in einem dezentralen Peripheriegerät

Am Eingang RACK wird angegeben:

0

Kanal befindet sich auf einer Baugruppe im Zentralgerät

1-21: Nummer des Erweiterungsgerätes

Kanal befindet sich auf einer Baugruppe in einem Erweiterungsgerät

die Stationsnummer (DP-Profibus-Adresse)

Kanal befindet sich auf einer Baugruppe in einem dezentralen Peripheriegerät

Am Eingang SUBSLOT wird angegeben:

0

Kanal befindet sich nicht auf einem Submodul oder es kann keines gesteckt werden

der Submodulsteckplatz

Kanal befindet sich auf einem Submodul

Am Eingang SUBADDR wird angegeben:

Der Byteoffset des Kanals im Nutzdatenadressraum der Baugruppe

  • Bei digitalen Baugruppen 0 für Kanal 0..7, 1 für 8..15 etc.
  • Bei analogen Baugruppen 0 für Kanal 1, 2 für Kanal 2, 4 für Kanal 3 etc.

Alle Kanaladressen müssen als Konstante in Hexadezimal-Darstellung programmiert werden.

Diese Informationen finden Sie auch in der Online-Hilfe zu STEP7.

Programmbeispiel Demultiplexerzum Beginn
Bestellnummer:

FRAGE:
-

ANTWORT:
Der nachfolgende Baustein arbeitet als Demultiplexer. Aus einem WORD-Wert (x) selektieren Sie mit dem Parameter NR ein bestimmtes Bit, dessen Wert auf den Ausgang (y) "durchgeschaltet" wird.

Parameterbeschreibung:

Parameter

Typ

Beschreibung

Bereich

NR

INT

Zeiger auf das in "x" zu selektierende BIT

1 <= NR <= 16

sonst y=0

x

WORD

Eingangswert, aus dem ein BIT, durch den Parameter "NR" selektiert wird

0h ... FFFFh

y

BOOL

Enthält den Zustand des durch "NR" adressierten BITS

-

Aufrufbeispiel:
CALL FC 300
NR:=MW20
x :=MW22
y :=M0.0

y enthält damit den Wert des Bits M20.1

Zur Erklärung:
High-Byte von x: M20.7,M20.6,M20.5,M20.4,M20.3,M20.2,M20.1,M20.0
Low-Byte von x: M21.7,M21.6,M21.5,M21.4,M21.3,M21.2,M21.1,M21.0

Anmerkung :
Handelt es sich bei x um ein Datenwort, muß der DB vorher über den Befehl "AUF DB" geöffnet werden.

Beispiel:
AUF DB 10
CALL FC 300
NR:=MW20
x :=MW22
y :=M0.0

Der Baustein als Textdatei:
  fc300_d.pdf (3 KB)

Der Baustein als Quelldatei:
 fc300.exe (30 KB)

Uhrzeit-Alarme werden nicht mehr ausgeführtzum Beginn
Bestellnummer:

FRAGE:
Warum werden die Uhrzeit-Alarme (OB10-OB17) nicht mehr bearbeitet, nachdem ich eine Datums/Uhrzeit-Umstellung gemacht habe?

ANTWORT:
Durch die Rückstellung des Datums bzw. der Uhrzeit kommt es zum Aufruf des OB80 (Uhrzeitalarme abgelaufen durch Uhrzeitsprung) Wenn der OB80 im Anwenderprogramm nicht vorhanden ist, geht die CPU daraufhin in STOP. Danach sind die Uhrzeitalarme DEAKTIVIERT !

Sie können die Uhrzeitalarme durch eine der folgenden Maßnahmen wieder aktivieren:

  • Führen Sie einen Neustart durch.
  • Rufen Sie den SFC_30 "ACT_TINT" auf.
Gelöschten Zeilenumbruch wieder herstellen im KOP/FUP/AWL-Editorzum Beginn
Bestellnummer:

FRAGE:
Wie kann ich im KOP/FUP/AWL-Editor einen gelöschten Zeilenumbruch wieder rückgängig machen ?

ANTWORT:
Wenn Sie im KOP/FUP/AWL-Editor, in AWL, hinter einem Kommentar "Delete" bzw. "Entfernen" betätigen, wird das CR (Return) gelöscht. Die nächste Anweisungszeile rutscht dadurch hinter den Kommentar. Dies können Sie nicht mit "Return" rückgängig machen, da das "Return" eine Typenprüfung auslöst.

Um die Anweisung wieder in die nächste Zeile zu bringen haben Sie 2 Möglichkeiten:

  • Markieren Sie die Anweisung, die in die nächste Zeile muß. Mit "Ausschneiden"(STRG + X) und "Einfügen"(STRG + V) verschieben Sie diese Anweisung an ihre ursprüngliche Stelle zurück.
  • Stellen Sie den Cursor vor die Anweisung und drücken Sie "Shift+Return".
Arbeiten mit Datenbausteinregisterzum Beginn
Bestellnummer:

FRAGE:
Welcher Datenbaustein ist nach der Bearbeitung des Befehls " L DB20.DBW5" geöffnet?

ANTWORT:
Bei Bearbeitung des Befehls "L DB20.DBW5" wird der DB20 geöffnet und in das Datenbausteinregister DB1 eingetragen.

Dies entspricht der Befehlsfolge:

AUF    DB20     // Datenbaustein wird geöffnet
L         DBW5    // es wird das WORD 5 des geöffneten Bausteins geladen

Der Datenbaustein bleibt so lange im Datenbausteinregister DB1 eingetragen, bis Sie einen neuen DB öffnen oder auf einen anderen globalen DB zugreifen.

Betriebsstundenzähler programmieren (APPnote# 214)zum Beginn
Bestellnummer:

FRAGE:
Wie kann ich den Betriebsstundenzähler programmieren?

ANTWORT:
In dem folgenden Beispiel ist beschrieben, mit welchen Systembausteinen man den Betriebsstundenzähler setzen, starten und stoppen kann.

SIMATIC APPLICATION NOTE: 214(englisch):

 app_214.pdf (82 KB)

Strukturen als Eingansvariablen verwenden (APPnote# 208)zum Beginn
Bestellnummer:

FRAGE:
Wie kann ich Strukturen als Eingangsvariablen verwenden?

ANTWORT:
Die Lösung mit einem Beispiel dazu finden Sie in der folgenden Datei.

SIMATIC APPLICATION NOTE: 208 (englisch):

 app_208.pdf (82 KB)

Datenformat ASCII-Text für Import von Symboltabellen.zum Beginn
Bestellnummer:

FRAGE:
Wie muß ich das Datenformat bei ASCII-Text für Import von Symboltabellen aufbauen?

ANTWORT:
Die verschiedenen Datenformate für die Symboltabelle können Sie auswählen z.B. *.asc, *.seq, *.sdf, *.dif.
Hier die Beschreibung des Datenformates *.asc für die Symboltabelle.
Der Aufbau des ASCII-Datenformates sieht wie folgt aus:
<Datensatzlänge><Trennzeichen><Datensatz>

  • Datensatzlänge "126" (fester Wert)
  • Trennzeichen ","(Komma).
  • Datensatz

Der Datensatz ist gegliedert in:

  • den Symbolischen Namen,
  • die absolute Adresse,
  • den Datentyp sowie den Kommentar.

Der Symbolische Name kann maximal 24 Zeichen lang sein (nicht gebrauchte Zeichen mit Blank auffüllen).
Die Absolute Adresse hat eine Länge von 12 Zeichen, die sich wie folgt aufteilen:

  • 3 Zeichen für den Operanden (benötigt der Operand nur 2 oder 1 Zeichen dann den Rest mit Blank auffüllen)
  • Trennzeichen 1 Blank
  • Byteinformation 5 Zeichen (ist die Byteadresse kleiner als 5 Zeichen müssen entsprechend viele Blanks vorangestellt werden)
  • Bitinformation 2 Zeichen (wobei das erste Zeichen der Punkt ist. Hat die Adresse keine Bitinformation füllen Sie diese mit Blanks auf)
  • Endezeichen 1 Blank

Der Datentyp ist 10 Zeichen lang (die nicht verwendeten Stellen sind mit Blanks aufzufüllen).
Der Kommentar darf maximal 80 Zeichen lang sein, ist er länger wird der Kommentar abgeschnitten.
Anmerkung:
Sie müssen die letzte Eingabezeile im Text-Editor mit Return abschließen sonst wird diese nicht übernommen.
Achten Sie bitte darauf, daß Ihr verwendeter Text-Editor keine Formatbefehle im Dokument mit abspeichert.

 

Beispiel:

Datensatzlänge, Trennz."," symbolischer Name

Operand

Datentyp

Kommentar

126,ferdinand

EW 0

INT

version4

126,test

A 0.1

BOOL

 

126,test1

A 0.2

BOOL

Anton ist eine

126,test2

A 0.3

BOOL

testvariable

126,lange absolutadresse

M 31000.7

BOOL

 

126,versuch mit doppelwort

MD 31000

DWORD

 

126,test4

PEW 31000

WORD

 

 

Unterschiede bei Operationen zur Bearbeitung von Datenbausteinen zwischen STEP 7 und STEP 5zum Beginn
Bestellnummer:

FRAGE:
Wie unterscheiden sich Operationen zur Bearbeitung von Datenbausteinen zwischen STEP 7 und STEP 5?

ANTWORT:
In der folgenden Tabelle finden Sie die Operationen zur Bearbeitung von Datenbausteinen unter STEP 5 und ihre Entsprechung unter STEP 7:

Funktion

STEP 5

STEP 7

 

Operation

Operand

Operation

Operand

Datenbaustein öffnen

A

DB20

AUF

DB 20

Datenbyte eines Datenbausteins verarbeiten

A

DB20
DL "n"
DR "n"

linkes Byte des Wortes "n"mit
mit "n = 0 bis 255

Variante 1:
AUF
L

Variante2:
L

Variante 1:
DB20
DBB "n"

Variante2:
DB20.DBB "n"
mit n=0 bis 8191
bei S7-300
und
n=0 bis 65535

Datenwort eines Datenbausteins verarbeiten

A
L

DB 20
DW "n"

mit "n = 0 bis 254

Variante 1:
AUF
L

Variante2:
L

Variante 1:
DB20
DBW "n"

Variante2:
DB20.DBW "n"
mit n=0 bis 8190
bei S7-300
und
n=0 bis 65534

Datendoppelwort eines Datenbausteins verarbeiten

A
L

DB20
DD "n"

 

Variante 1:
AUF
L

Variante2:
L

Variante 1:
DB20
DBD "n"

Variante2:
DB20.DBD "n"
mit n=0 bis 8188
bei S7-300
und
n=0 bis 65532

Bit-Zuweisung eines Datenbausteins

=

D 4.0

=

DBX 4.0

Bitabfrage eines Datenbits aus einem Datenbaustein

A
U

DB 20
D 4.15

Variante1:
AUF
U
Variante2:
U


DB 20
DBX 4.15

DB20.DBX 4.15

 

Vorbesetzung der Variablen nach "CREAT_DB- (SFC 22)zum Beginn
Bestellnummer:

FRAGE:
Werden die Variablen eines DBs nach erzeugen mit"CREAT_DB” (SFC 22) vorbesetzt ?

ANTWORT:
Nein, mit dem SFC 22 (CREAT_DB) erzeugen Sie zur Laufzeit in der CPU zwar einen DB, indem jedoch der Inhalt nicht vorbesetzt wird. (Die Werte im besagten DB können rein zufällig sein.)

Aus diesem Grund ist es Notwendig den Inhalt des zur Laufzeit erzeugten DBs vorzubesetzen.

Mit dem SFC 21 (FILL) können Sie unter anderem den Inhalt des vorher erzeugten DBs zur Laufzeit definiert beschreiben.

Im Anschluß finden Sie ein Beispiel im ASCII-Mode.

Anmerkung:

Sollten Sie mit einer Version von STEP7 älter V3.2 arbeiten, achten Sie bitte darauf daß beim übersetzen des Beispiels die Bausteine SFC 21 (FILL) und SFC 22 (CREAT_DB) in Ihrem Baustein-Container enthalten sind.

FUNCTION FC 1 : INT
VERSION : 0.0
VAR_INPUT
LOW_LIMIT : WORD ;
UP_LIMIT : WORD ;
COUNT : WORD ;
BVAL : BYTE ;
END_VAR
VAR_OUTPUT
DB_NUMBER : WORD ;
END_VAR
VAR_TEMP
ToFill : ANY ;
FillWert : BYTE ;
END_VAR
BEGIN
NETWORK
TITLE =Create DB
//Fehlerabfrage über BIE, Durchreichen des Fehlers
CALL "CREAT_DB" (
LOW_LIMIT := #LOW_LIMIT,
UP_LIMIT := #UP_LIMIT,
COUNT := #COUNT,
RET_VAL := #RET_VAL,
DB_NUMBER := #DB_NUMBER);
SPBI M001;
BEA ;
NETWORK
TITLE =Fill DB
//Fill mit SFC Fill,
//wobei der ANY-Pointer des Füllwerts
// auf das Lokaldatum FillWert zeigt
//und der Füllbereich dynamisch im Pointer ToFill aufgebaut wird.

M001:L#BVAL;
T #FillWert;
LW#16#1002; //Typ=BYTE
TLW 0;
L#COUNT; //Anzahl= Länge DB
TLW 2;
L#DB_NUMBER;
TLW 4;
LDW#16#84000000; //Bereich DBX0.0
TLD 6;
CALL"FILL" (
BVAL := #FillWert,
RET_VAL := #RET_VAL,
BLK := #ToFill);
BEA;
END_FUNCTION

Beispiel zum Datentyp CHARzum Beginn
Bestellnummer:

FRAGE: -

ANTWORT:

Aufgabenstellung:
Die Steuerwarte eines Betriebes ist über Nacht nicht besetzt. Wichtige Anlagenmeldungen sollen in diesem Fall über die Telefonanlage an einen Mitarbeiter mit Rufbereitschaft weitergeleitet werden.

Lösungsweg:
Es wird eine Funktion FC1 programmiert, in der in Abhängigkeit vom Betriebszustand der Warte (dieser liegt als Variable vom Datentyp CHAR vor) eine Binärvariable beschrieben wird. Mit dieser kann die Weitergabe von Anlagenmeldungen erfolgen.

//*************************************
FUNCTION FC1: VOID
TITLE = Fallentscheidung mit Variablen vom Datentyp CHARACTER
VERSION : 1.0
VAR_INPUT
WARTE_BESETZT : CHAR; //Warte ist besetzt: j, J, n, N
END_VAR
VAR_OUTPUT
TELENOT : BOOL; //Meldung an Mitarbeiter mit Rufbereitschaft
ft
END_VAR
BEGIN
NETWORK
TITLE =
  L #WARTE_BESETZT;
  L 'j';
  ==I ;
  R #TELENOT ;
  TAK ;
  L 'J' ;
  ==I ;
  R #TELENOT ;
 
  TAK ;
  L 'n' ;
  ==I ;
  S #TELENOT ;
TAK ;
L 'N' ;
==I ;
S #TELENOT ;

END_FUNCTION

Konvertierung S5 nach S7 - Besonderheit mit SFC20 "BLKMOV"zum Beginn
Bestellnummer:

FRAGE:
Was muss ich bei der Konvertierung eines S5 Programmes in Bezug auf den SFC20 beachten ?

ANTWORT:

Der im Handbuch : "STEP 7 Standard- und Systemfunktionen" beschriebene Baustein SFC20 kopiert die Inhalte in umgekehrter Richtung als der entsprechende Baustein bei S5.

Falls ein Programm von S5 nach S7 umgesetzt wird ist auf folgendes zu achten:

Wenn sich der Quellbereich und der Zielbereich überlappen, darf der Baustein nicht einfach beim Umstieg auf S7 ausgetauscht werden.

Bedeutung des Feldes "OB40_POINT_ADDR" bei OB4x Bausteinenzum Beginn
Bestellnummer:

FRAGE:
Was bedeutet das Feld "OB40_POINT_ADDR" in den OB4x Bausteinen?

ANTWORT:
Bei Digitalbaugruppen: Das Bitfeld mit den Zuständen der Eingänge auf der Baugruppe (Bit 0 entspricht dem ersten Eingang)

Bei Analogbaugruppen, Kommunikationsprozessoren (CPs) oder Interface-Modulen (IMs): Der Alarmzustand der Baugruppe.
Das Feld "OB40_POINT_ADDR" für Analogbaugruppen wird in der Onlinehilfe als nicht anwenderrelevant beschrieben.
Bei Analogeingabebaugruppen, die Prozessalarme unterstützen, werden in der OB4x-Startinformation die Kanäle ausgegeben, die den Prozessalarm ausgelöst haben.
Pro Kanal sind im Feld "OB40_POINT_ADDR" 2 Bit mit folgendem Inhalt definiert:

Für S7-300 bzw. 8-kanalige Analogbaugruppen sind nur die Bytes 0 und 1 definiert.

Suchbegriffe:
Diagnoseinformationen, Prozessalarm

Drum Timer (APPnote# 226)zum Beginn
Bestellnummer:

FRAGE:
Wie kann ich den Zeitwert-Timer (FB85) programmieren?

ANTWORT:
Ein Beispiel mit Kommentaren dazu finden Sie in der folgenden Datei.

SIMATIC APPLICATION NOTE: 226 (englisch):

 app_226.pdf (78 KB)

Programmbeispiel: Vergleich zweier beliebiger Datenbausteinezum Beginn
Bestellnummer:

FRAGE:
Wie kann ich den Inhalt zweier Datenbausteine auf Übereinstimmung hin prüfen?

ANTWORT:
Der Inhalt zweier Datenbausteine soll verglichen werden. Diese Anforderung wird häufig beim Alt-/Neuwertvergleich benötigt.
In dem Programmbeispiel ist eine parametrierbare Funktion enthalten, welche diese Aufgabe erfüllt.

Funktionsweise:
Im Organisationsbaustein OB 1 wird die Funktion FC 10 aufgerufen, welcher die zwei Datenbausteine vergleicht. Nur wenn der Freigabemerker M 77.0 "true" ist wird der FC 10 ausgeführt. Am Parameter "DB_Nr1" und "DB_Nr2" werden die Datenbausteinnummer angegeben, die miteinander verglichen werden sollen. Die Datenbausteine werden Wort für Wort mit einander verglichen. Wenn die Datenbausteine ungleich sind, wird der Merker M 77.1 auf "true" gesetzt, sonst ist er "false".

FC 10 Parameter:
 

Parameter

Deklaration

Datentyp

Beschreibung

start_address

INPUT

INT

Anfangsadresse des Datenbytewortes, ab dem die Datenbausteine verglichen werden

Number_DBW

INPUT

INT

Anzahl der zu vergleichenden Datenbausteinworte

DB_Nr1

INPUT

INT

Nummer des 1. Datenbausteines

DB_Nr2

INPUT

INT

Nummer des 2. Datenbausteines

result

OUTPUT

BOOL

Vergleichsergebnis:
0 = die DB's sind gleich
1 = die DB's sind ungleich

Listing der Funktion FC10:

FC10.pdf ( 2 KB )

Das S7 Projekt als Archivdatei:
Kopieren Sie die Datei Db_compa.exe auf ein separates Verzeichnis und starten sie anschließend per Doppelklick. Das S7 Projekt wird jetzt mit allen dazugehörigen Unterverzeichnissen entpackt. Anschließend können Sie das entpackte Projekt mit dem SIMATIC Manager öffnen und bearbeiten.

Beachten Sie, dass Sie die Hardwarekonfiguration an Ihre Anlage anpassen müssen!

Db_compa.exe ( 81 KB )

Programmbeispiel Sortieren eines Datenbausteinszum Beginn
Bestellnummer:

FRAGE: -

ANTWORT:
Im folgenden Beispiel wird der Inhalt eines Datenbausteins, beginnend bei dem kleinsten Element, der Größe nach geordnet. Dazu muß die Länge des zu sortierenden Bausteins angegeben werden.

Beispiel einer Sortierung:

DBW-Nr.

Inhalt des DB's vorher

Inhalt des DB's nachher

0

4

4

2

7

5

4

78

7

6

12

9

8

5

12

10

9

78

Parametrierung:

Name

Adresse (Beispiel)

Beschreibung

Data_DB

DB15

Datenbaustein

DB_length

W#16#A

Länge des DBs

Aufrufbeispiel als Textdatei:
ob1.pdf ( 3 KB )

Der Baustein als Quelldatei:
fc1_d.zip ( 672 bytes )

STEP 7 V5.2 Symbolauswahl im KOP/FUP ein- und ausblenden zum Beginn
Bestellnummer:

FRAGE:
Wie kann ich die Auswahlliste bei der Beschaltung von Bausteinen unterdrücken bzw. wieder einblenden?

ANTWORT:  
Die Symbolauswahl bei der Beschaltung der Bausteine in der KOP- und FUP-Ansicht lässt sich über die Tastenkombination CTRL + 7 ein- und ausschalten. 
Diese Einstellung bleibt jedoch nur so lange wirksam, bis der Editor geschlossen wird. Danach wird die Standardeinstellung mit Symbolauswahl anzeigen wieder hergestellt.

Um auch nach dem erneuten Öffnen des KOP/AWL/FUP-Editors die Einstellung ohne Symbolauswahl zu erhalten, gehen Sie im Editor unter dem Menüpunkt "Extras > Einstellungen" in die Registerkarte "Ansicht" und wählen dort die Einstellung "Symbolauswahl automatisch (bei KOP/FUP)" ab. Um die Symbolauswahl wieder anzeigen zu lassen, gehen Sie erneut in die Registerkarte "Ansicht" und aktivieren die gewünschte Option.

Suchbegriffe:
Auswahldialog, 

Wie kann der vom System vorgegebene Aufbau der temporären Variablen im OB verändert werden?zum Beginn
Bestellnummer:

 
Anleitung:
Der vom System vorgegebene Aufbau der temporären Variablen kann in einem Organisationsbaustein prinzipiell nicht geändert werden. Es ist aber möglich, über die Vergabe von Namen die temporären Variablen im Organisationsbaustein neu aufzubauen. Bild 01 zeigt den vom System vorgegebenen Aufbau der temporären Variablen im OB86.


Bild 01

Als Beispiel soll die temporäre Variable "OB86_RACKS_FLT" für die Auswertung einer Diagnose in drei einzelne Variablen deklariert werden. Der Datentyp "Array [0..31] of Bool" repräsentiert ein Doppelwort (Bit 1 bis 32), mit denen die folgenden Informationen gemäß nachstehender Tabelle im Falle eines Stationsausfalls ermittelt werden können.
 

Adresse des betroffenen Slaves

Informationen des betroffenen Slaves

Bit 0 bis 7 Nr. der DP-Station (1 Byte)
Bit 8 bis 15 DP-Subnet-ID bzw. Master-ID (1 Byte)
Bit 16 bis 30 Logische Basisadresse des DP-Slaves (1 Word), Bit 31 ist für die I/0-Kennung

Die nachfolgende Tabelle beschreibt Ihnen die Vorgehensweise, wie Sie die temporäre Variable "OB86_RACKS_FLT" in drei einzelne Variablen im OB86 splitten können:
 
Nr. Vorgehensweise
1 Markieren Sie in der Variablendeklaration die Variable "OB86_RACKS_FLT" und ändern Sie zum Splitten für die erste Variable den Namen und den Datentyp, z.B.
  • "OB86_Basisadr_IO_Kennung" vom Datentyp Word.
2 Markieren Sie die nächste untere temporäre Variable (hier "OB86_DATE_TIME") und klicken Sie auf die rechte Maustaste. Fügen Sie aus dem sich öffnenden Kontextmenü über den Menübefehl "Neue Deklarationszeile" für die zweite Variable eine Zeile ein und vergeben Sie den Namen z.B.:
  • "OB86_DP_Master_ID" vom Datentyp Byte.
3 Wiederholen Sie den Schritt 2 für die dritte Variable und vergeben Sie den Namen z.B.:
  • "OB86_Nr_DP_Station" vom Datentyp Byte.


Bild 02

Jetzt können Sie auf die vorher versteckten Informationen direkt zugreifen.

Hinweis:
Weitere Informationen und Beschreibungen zu den temporären Variablen in den Organisationsbausteinen finden Sie in der Onlinehilfe zu STEP 7, indem Sie im SIMATIC Manager den entsprechenden OB markieren und die Taste "F1" betätigen.

Suchbegriffe:
Baugruppenträgerausfall

Wie können mehrere absolute Adressen in einem S7-Programm komfortabel mit Symbolen versehen werden?zum Beginn
Bestellnummer:

Anleitung:
Sie haben während der Programmierung an verschiedenen Stellen (in Funktionen oder Funktionsbausteinen, usw.) direkte Adressen vergeben und möchten diese jetzt mit symbolischen Namen versehen. Die nachstehende Tabelle beschreibt Ihnen hierzu die Vorgehensweise:
 
Nr. Vorgehensweise
1 Markieren Sie in Ihrem S7-Programm den Bausteinordner und klicken Sie auf die rechte Maustaste. Wählen Sie im nachfolgenden Kontextmenü den Menübefehl "Referenzdaten > Anzeigen".

Hinweis:
Falls Ihre Referenzdaten noch nicht erzeugt oder nicht aktuell sind, erhalten Sie einen Dialog mit der Abfrage, ob die Referenzdaten aktualisiert oder neu generiert werden sollen. Wählen Sie die entsprechende Funktion und klicken Sie auf die Schaltfläche "Ja".

2 Selektieren Sie im nachfolgenden Dialog "Einstellungen" die Ansicht "Operanden ohne Symbol" und bestätigen Sie mit "OK".


Bild 01

3 Markieren Sie in der folgenden sich öffnenden Referenztabelle die Adressen, die Sie mit einer symbolischen Adresse versehen möchten und führen Sie anschließend die Funktion "rechte Maustaste > Symbole bearbeiten..." (Bild 02) aus.


Bild 02

4 Anschließend öffnet sich die Symboltabelle mit den absoluten Adressen und Sie können die symbolischen Adressen mit den Datentypen ergänzen. Klicken Sie anschließend auf die Schaltfläche "Übernehmen".


Bild 03


 Beitrags-ID:36988405   Datum:2007-08-28 
Dieser Artikel...hat mir geholfenhat mir nicht geholfen                                 






























mySupport
My Documentation Manager 
Newsletter 
CAx-Download-Manager 
Support Request
Zu diesem Beitrag
Drucken
PDF erstellen 
Beitrag versenden
QuickLinks
Kompatibilitäts-Tool 
Hilfe
Online Hilfe
Guided Tour