×
Siemens Industry Online Support
Siemens AG
Beitragstyp: Anwendungsbeispiel Beitrags-ID: 16772536, Beitragsdatum: 07.08.2003
(4)
Bewerten

Suche nach dem Minimum- / Maximum-Wert (Schleppzeiger) und Mittelwertbildung.

  • Beitrag
  • Betrifft Produkt(e)

FRAGE:
Wie kann Ich den Minimal-/Maximal-Wert aus den Werten in einem Datenbaustein ermitteln ?

ANTWORT:  
Die Suche nach dem Minimal- / Maximal-Wert innerhalb eines Datenbausteins (Schleppzeiger), kann durch eine Schleifenprogrammierung realisiert werden. Das beigefügte Programmbeispiel ermöglicht die Suche nach dem Minimum / Maximum der Werte in einem Datenbaustein und bildet den Mittelwert.

Funktionsbeschreibung:
Die Suche nach dem Minimum-/Maximum inkl. Mittelwertbildung ist als Funktion realisiert. Über einen IN-Parameter wird bestimmt, in welchem Datenbaustein gesucht werden soll. Die Datentyp-Kennung bestimmt von welchem Datentyp die Werte im Datenbaustein sind. 

Das Durchsuchen erfolgt in einer Schleife. Die Anzahl der Schleifendurchläufe wird aus der Anzahl der Bytes in dem DB und der Datentypkennung berechnet. Die Anzahl der Bytes in dem DB wird über die Systemfunktion SFC 24 ermittelt.

Die Funktion setzt voraus, dass sich in dem DB nur Werte eines Datentyps befinden. Der DB wird von der Adresse 0 an mit der Schrittweite des Datentyps geprüft. Gleichzeitig werden die Werte aufsummiert und am Ende durch die Anzahl der Werte dividiert (Mittelwert). 

Ist die Länge des DBs nicht kompatibel zu dem Datentyp so wird der vorhandene Rest (z.B. 2 Byte bei dem Datentyp REAL) ignoriert. 
Ist der DB kleiner als der Datentyp lang ist, so wird ein Parametrierfehler ausgegeben. Ebenso wenn der DB nicht existiert (Info, die der SFC 24 liefert).

Der Mittelwert wird als REAL-Wert ausgegeben. Die Min-/Max-Werte werden für alle Datentypen in Variablen des Datentyps DWORD gespeichert. Dabei bleibt der eigentliche Datentyp erhalten. Das bedeutet, dass die OUT-Parameter der Funktion auf Variablen mit den entsprechenden Datentypen (ohne Umwandlungsfunktionen) zugewiesen werden können (siehe Beispiel).

CALL "MinMax"
        DBNummer :=3
        DatentypKennung :=1 // Kennung für INT
        MinimalerWert :=MD20
        MittelWert:= #Durchschnitt
        MaximalerWert :=MD24
        PAFE :=#Error

// von DWORD nach INT
    L     MD 20
    T     #IntegerVariable_Min

    L     MD 24
    T     #IntegerVariable_Max

Schnittstellenbeschreibung der Funktion FC 1 "MinMax":

Deklaration Name Type Beschreibung
IN DBNumber INT Nummer des zu prüfenden DBs
IN DatatypeID INT Kennung des Datentyps: 1=INT; 2=DINT; 3=REAL
OUT MinValue DWORD minimaler Wert, der in dem DB vorkommt
OUT AverageValue REAL Mittelwert, berechnet über die Anzahl der Werte
OUT MaxValue DWORD maximaler Wert, der in dem DB vorkommt
OUT PAFE BOOL Parametrierfehler

Hinweis:
Adressregister werden von der Funktion nicht verändert.

Beschreibung des Programmbeispiels:
In dem Programmierbeispiel wird über der FC 1 "MinMax" im OB 1 aufgerufen. In dem aktuellen Beispiel wird im DB 3 nach den Minimum-/-Maximum Werten gesucht. Der DB 3 enthält Werte vom Typ "INT". 
Für weitere Test ist der DB 4 mit Werten vom Typ DINT und der DB 5 mit Werten vom Typ "REAL" vorbereitet, sowie die dazu  erforderlichen Aufruf vom FC 1 im OB 1 als Quell-Code verfügbar.
Mit der Variablentabelle können Sie die OUT-Parameter der Funktion beobachten, sowie die Werte in den DBs verändern.

Der beigefügte Download enthält das STEP 7 Projekt mit dem Funktionsbaustein zur Minimum-/Maximum-Ermittlung und Mittelwert-Berechnung, sowie die vorbereiteten Datenbausteine und Variablentabellen. 

Min_Max.exe

Kopieren Sie die Datei "Min_Max.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
PC Plattform Pentium III  800 MHz,  264 MB
Betriebssystem  Windows XP
STEP 7  V5.2
S7-CPU CPU 315-2DP 
(6ES7315-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.