×
Siemens Industry Online Support
Siemens AG
Beitragstyp: Anwendungsbeispiel Beitrags-ID: 15309835, Beitragsdatum: 26.05.2003
(1)
Bewerten

Vergleichen zweier Datenbereiche vom Type Byte in einer S7-CPU

  • Beitrag
  • Betrifft Produkt(e)

FRAGE:
Wie kann ich in einer S7-CPU Daten verschiedener Datenbereiche miteinander vergleichen ?

ANTWORT:  
In der Programmiersprache AWL in STEP 7 existieren direkte Vergleichsoperationen für Daten bis zu 32-Bit-Länge. Für den Vergleich von Datenbereiche die darüber hinaus gehen, gibt es keine Operationen/Funktionen. Dafür muss eine entsprechende Funktionalität programmiert werden. 

Das beiliegenden Programmbeispiel enthält einen Funktionsbaustein mit dem es möglich ist, zwei Datenbereiche byteweise zu vergleichen.  Folgende vier Bereiche können mit dem Funktionsbaustein verglichen werden:

  • Speicherbereich der Eingänge (E)
  • Speicherbereich der Ausgänge (A)
  • Speicherbereich der Merker (M)
  • Datenbausteine (DB)

Schnittstellbeschreibung der Vergleichs Funktion (FC 1):

Deklaration Name Typ  Kommentar
IN Datenblock_1 ANY 1. Datenblock, der zum Vergleich ansteht
IN Datenblock_2 ANY 2. Datenblock, der zum Vergleich ansteht
OUT VERGLEICH_OK BOOL TRUE: Datenbereiche sind inhaltlich identisch
OUT RETVAL INT Vergleich nicht OK: Nr. des Bytes der ersten Nichtübereinstimmung
OUT ERROR WORD Fehlercode:
W#16#0000 = kein Fehler 
W#16#7FFF = falscher Datentyp (nicht BYTE)
W#16#8FFF = Datenlängen nicht gleich lang 
W#16#9FFF = falscher Speicherbereich 

Die zwei Datenbereiche sind in Form von ANY-Pointern der Funktion zu übergeben. Der Vergleich erfolgt byteweise.
Die Funktion prüft die Länge, den Datentyp und den Datenbereich der beiden Pointer und gibt gegebenenfalls eine Fehlerinformation aus. 

Beschreibung des Programmierbeispiels
Im Folgenden werden beispielhaft zyklisch zwei Datenbausteine verglichen, weil herausgefunden werden soll, ob das Rezept 1 im Datenbaustein 1 dem Rezept 5 im Datenbaustein 2 entspricht. Ein Rezept besteht aus 10 Integer-Werten.  Die Rezepturen können in der Variablentabelle des Demo-Programms verändert und das Ergebnis des Vergleichs verfolgt werden.

CALL "COMPARE_BYTE"
Datenblock_1:="Data 1".Rezeptur1 // P#DB1.DBX 0.0 BYTE 20
Datenblock_2:="Data 2".Rezeptur5 // P#DB2.DBX 80.0 BYTE 20
VERGLEICH_OK:=M20.0
RETVAL :=MW22
ERROR :=MW24

Mögliche Ausgabekombinationen der Funktion:

Bedingung OUT-Parameter Wert des Parameters
Vergleich ist OK (Speicherbereiche stimmen überein) VERGLEICH_OK TRUE
RETVAL W#16#0000
ERROR W#16#0000
Datenblöcke sind unterschiedlich VERGLEICH_OK FALSE
RETVAL Bytenummer, bei der sich die Daten zum ersten mal unterscheiden
ERROR W#16#0000
Parametrierfehler VERGLEICH_OK FALSE
RETVAL W#16#0000
ERROR W#16#7FFF = falscher Datentyp
W#16#8FFF = falsche Datenlänge
W#16#9FFF = falsche Speicherbereiche

 

Der beigefügte Download enthält das STEP 7 Projekt "CompareByteArea" mit dem FC 1 zum Vergleich von Datenbereichen. 

Compare_ByteArea.exe

Kopieren Sie die Datei "Compare_ByteArea.exe" in ein separates Verzeichnis und starten Sie die Datei anschließend per Doppelklick. Das STEP 7  Projekt wird jetzt automatisch mit allen dazugehörigen Unterverzeichnissen entpackt. Anschließend können Sie das entpackte Projekt mit dem SIMATIC Manager öffnen und bearbeiten.

Ablauffähigkeit und Testumgebung:
Das Beispiel ist einsetzbar auf allen CPU Varianten der SIMATIC S7-300, S7-400 und WinAC.
In der folgenden Tabelle sind die Komponenten aufgeführt,  mit denen dieser Beitrag erstellt und die beschriebene Funktionsweise verifiziert wurde:

Testumgebung Version / Ausgabestand Version / Ausgabestand
PC Plattform Pentium III  650MHz, 384 MB Pentium III  800MHz, 264 MB
Betriebssystem  Windows  2000 SP2 Windows XP
STEP 7  V 5.1 SP6 V5.2
S7-CPU PLCSIM V 5.0 SP1 315-2DP 
(6ES7 315-2AF03-0AB0)

 

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.