×
Siemens Industry Online Support
Siemens AG
Beitragstyp: Anwendungsbeispiel Beitrags-ID: 8803015, Beitragsdatum: 25.09.2001
(3)
Bewerten

Messwerte mit Polygonzug interpolieren und Funktionswerte ausgeben

  • Beitrag
  • Betrifft Produkt(e)

FRAGE:
Wie realisiere ich in STEP 7 einen Baustein, der eine lineare Interpolation über Messwerte ausführt und mir auf diesem Polygonzug basierend neue Funktionswerte ausgibt?

ANTWORT:
Die hier vorgestellten Bausteine erfüllen die oben genannten Forderungen. Die einzelnen Geradenstücke werden durch Stützpunkte vorgegeben.
Die Stützpunkte werden beim Funktionsbaustein FB50 als Aktualparameter und bei der Funktion FC50 in einem separaten Datenbaustein vorgegeben. Der Datenbaustein zur Versorgung des FC50 enthält pro Stützpunkt 2 Realwerte (erst x, dann y), beginnend beim kleinsten x-Wert. Der aktuelle x-Wert wird dem FC/FB übergeben.

Hinweis:
Die Stützpunkte (x, y) müssen also bei beiden Bausteinen nach x-Werten sortiert in aufsteigender Reihenfolge eingegeben werden.

Ist der übergebene Wert kleiner als der kleinste Stützpunkt-x-Wert, dann wird das erste Geradenstück zur Berechnung genutzt, ist er jedoch größer als der größte Stützpunkt-x-Wert, dann wird das letzte Geradenstück zur Berechnung genutzt.

Der Funktionsbaustein FB50 kann maximal 10 Stützpunkte verwalten, die Funktion FC50 beliebig viele (begrenzt durch Anzahl Punkte, die in einen DB passen – bei 64kByte = 8192 Punkte).

Die Funktionsweise des Bausteines ist folgende:

  1. ermitteln, zwischen welchen Stützpunkten sich der Eingangswert befindet
  2. auf der entsprechenden Geradengleichung die Berechnung durchführen

In der Abbildung liegt der Eingangswert x zwischen den Stützpunkten 2 und 3. Zur Berechnung des Ausgangswertes y wird also die Gerade genutzt, welche durch die Punkte (x2,y2) und (x3,y3) definiert wird.

Die Formel selber lautet:

y = (x-x2) / (x3-x2) * (y3-y2) + y2

Aufrufparameter des Bausteins FB50:

Deklaration

Name

Typ

Kommentar

in

x1

REAL

Aktualparameter für den ersten x-Stützwert

in

y1

REAL

Aktualparameter für den ersten y-Stützwert

...

...

...

Und so weiter bis...

in

x10

REAL

Aktualparameter für den zehnten x-Stützwert (maximal)

in

y10

REAL

Aktualparameter für den zehnten y-Stützwert (maximal)

in

x

REAL

x-Wert

in

n

INT

Anzahl der zu verwendenden Punkte

out

y

REAL

Ergebnis

out

error

BOOL

Bleibt "false" bei korrekter Berechnung

Hinweis:
Zu beachten ist, dass der Funktionsbaustein FB50 104 Byte temporäre Daten benötigt, da die Arrays im Lokaldatenbereich angelegt werden.

Aufrufparameter des Bausteins FC50:

Deklaration

Name

Typ

Kommentar

in

Punkt_DB

BLOCK_DB

Im DB stehen die Wertepaare

in

x

REAL

x-Wert

in

n

INT

Anzahl der zu verwendenden Punkte

out

y

REAL

Ergebnis

out

Gerade

INT

Gibt an, nach dem wievielten x-Stützwert der x-Wert liegt

out

error

BOOL

Bleibt "false" bei korrekter Berechnung

Der Download enthält den oben beschriebenen Funktionsbaustein FB50 und die Funktion FC50.
Sie finden sowohl die SCL-Quellen vor als auch ein Beispielprojekt mit einem Datenbaustein DB10 als Instanzdatenbaustein für den Funktionsbaustein FB50 und einem Beispielaufruf aus dem Organisationsbaustein OB1.

  polygonfb_fc_proj.exe

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

Suchbegriffe:
Näherungswerte, mathematische Funktionen

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.