TIA Mit einer Eingangsgösse, einen Ausgangswert wert aus Tabelle holen.

Hesse

Level-2
Beiträge
933
Reaktionspunkte
170
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit einer Eingangsgösse, einen Ausgangswert wert aus Tabelle holen.

Hallo,
vorab: Ich erwarte keine fertige Lösung!
gegeben:
Anlage mit S7-1200 (CPU 1214C) und HMI KTP400 Basic, von mir gebaut und programmiert.

Ich habe den Wert (Zählerstand) in einer Variablen „Laufmeter“ als DInt , die ändert sich von 0- 30000
Diese Variable muss jetzt die Eingangsgröße für eine (Tabelle) Rezept? sein.
Und je nach deren Eingangsgröße von „Laufmeter“ brauch, ich denn eingetragenen Wert der Tabelle am Ausgang für die Erzeugung als 0-10V analog.

Die Tabelle sollte ca. 30 Stützpunkte haben, Zwischenwerte müssen linear Interpoliert werden.
Beispiel Tabelle
Eingang---lfm-------------------Ausgang--U
00-------------------------------------1V
1000----------------------------------5V
2000--------------------------------5,5V
3000----------------------------------6V
4000------------------------------------6V
5000--------------------------------4,5V
Usw.
30000--------------------------------8V

Hinterlegt und angewählt werden müssen ca. 3 Rezepte bzw. Tabellen.
Die Tabellen sollten „einigermaßen“ komfortabel am KTP400 erstellt/geändert werden können.

Ich würde mich über gezieltes Googelfutter oder weiterführend Links ,
zum einlesen erfreuen.

Danke
 
Ich weiß nicht ob ich das richtig verstanden habe:

Der Eingangswert (0-30000) soll Analog (0-10V) umgesetzt werden?

Wenn dem so ist, würde ich einfach normieren und skalieren, statt eine Tabelle zu nutzen. (Voraussetzung ist, dass es linear skaliert).
 
Prinzipiell ja, aber da das ganze ist nicht linear und frei von jedem berechenbaren Rhythmus oder Logik.

Somit ist es mit normieren und skalieren nicht getan.

Es ist auch schwierig zu erklären ….
Der Eingangswert soll praktisch der Zeiger einer Tabelle sein und der Wert der dort an der Position steht soll in den Analogausgang geschrieben werden.

Beispiel: Eingangswert 4450 (4.450) jetzt muss in Tabelle oder (Rezept?) An Position 4 nachgesehen werden, was da steht z.B. 6,0 V und diese 6,0 V müssen dann am Analogausgang rauskommen.
Das normieren und skalieren ist mir hier klar, mir ist nur die Tabellen Anlegung und Verarbeitung unklar, da ich sowas noch nicht gemacht habe.

Da diese Tabelle aber keine 30000 Position haben kann muss sie auf 30 beschränkt werden, also alle
1000 Schritte vom Eingangswert .
Somit müssten die 4450 vom Beispiel noch auf den Zwischenwert von Pos4 und 5 linear Interpoliert werden.
An Pos.4 steht 6,0V
An Pos.5 steht 4,5V
Also entspricht 4450 dann 5,325V

Danke an jeden der Versucht meine Darstellung zu verstehen …….
 
Den Zählerstand durch 1000 dividieren und als Index in ein entsprechend initialisiertes Array benutzen, am besten in SCL.
CASE OF .. ginge auch noch.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So wie ich das verstehe, hast du eine Tabelle (Array of UDT) mit 30 Einträgen.
Nun schaust du zwischen welchen beiden Werten deine Eingangsgrösse ist, und fütterst damit die normierung und Scalierung. Vorausgesetzt, zwischen zwei Datenpunkten kann linear Skaliert werden.
 
Zurück
Oben