Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

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

  1. #1
    Registriert seit
    25.08.2012
    Beiträge
    391
    Danke
    39
    Erhielt 34 Danke für 32 Beiträge

    Standard


    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
    Zitieren Zitieren Mit einer Eingangsgösse, einen Ausgangswert wert aus Tabelle holen.  

  2. #2
    Registriert seit
    21.11.2014
    Beiträge
    228
    Danke
    7
    Erhielt 30 Danke für 28 Beiträge

    Standard

    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).

  3. #3
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Oder schau dir mal in der Oscat Bibliothek die Funktion LINEAR_INT an.

  4. #4
    Hesse ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.08.2012
    Beiträge
    391
    Danke
    39
    Erhielt 34 Danke für 32 Beiträge

    Standard

    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 …….

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.192
    Danke
    925
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    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
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  6. #6
    Registriert seit
    20.10.2007
    Ort
    Krauchthal
    Beiträge
    50
    Danke
    4
    Erhielt 8 Danke für 8 Beiträge

    Standard


    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.

Ähnliche Themen

  1. Daten aus Excel-Tabelle in einen DB schreiben
    Von Snake56 im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 02.10.2014, 13:52
  2. Mit VBS Daten aus Excel Listen holen und schreiben
    Von Hahnus im Forum Hochsprachen - OPC
    Antworten: 1
    Letzter Beitrag: 09.09.2011, 16:21
  3. Antworten: 2
    Letzter Beitrag: 15.02.2011, 19:38
  4. Antworten: 0
    Letzter Beitrag: 04.07.2007, 15:59
  5. Suche Wert aus AW DB2 einer FM353
    Von Jim Knopf im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.08.2006, 12:17

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •