TIA Array nach Realwerten durchsuchen

RLE-ITSA

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich habe beim Lösen einer Aufgabe nachfolgendes Problem, vielleicht könnt Ihr mir helfen.

Es wir ein Array aus Real-Werten durch Messwerte alle 100µs erstellt. Diese entsprechen Datenpunkten.
Es wir ein DB mit einem Array für Druck und ein DB mit einem Array für Strom mit Messwerten gefüllt.
Nun soll jeweils das Array nach einem Eingabewert durchsucht werden und bei einem Treffer die Array-Nummer ausgegeben werden.
Der Treffer soll ausgegeben werden, wenn der Eingabewert erstmals größer ist als ein Real-Wert im Array.
Dadurch erhalte ich jeweils die Datenpunkte die miteinander verrechnet eine Zeiteinheit ergeben (1 Datenpunkt = 100µs).
Mir fehlt im Moment völlig der Ansatz zur Realisierung das Array zu durchsuchen und wie beschrieben bei einem Treffer die Array-Nummer auszugeben.

Verwendet werden TIA-V17 und ein ET 200SP Open Controller (CPU 1515SP)

Kann mir jemand den Schubs in die richtige Richtung geben?
 
In einer Schleife vom niedrigsten zum höchsten Array-Index den Wert aus dem Array vergleichen mit dem Eingabewert. Wenn Bedingung erfüllt, dann die Schleife abbrechen. Die Schleifen-Variable enthält dann den Index, wo die Bedingung erfüllt war, oder höchster Index + 1, wenn kein passender Wert gefunden.

Wieviele Elemente hat das Array?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Schleifen-Variable enthält dann den Index, wo die Bedingung erfüllt war, oder höchster Index + 1, wenn kein passender Wert gefunden.
Das Verhalten ist so nicht definiert. Der IEC Standard sagt "implementation-dependent", und Siemens definiert das Verhalten nicht. Ich weiß nicht warum das bei SCL/ST so ist, scheint ein Relikt aus Pascal-Zeiten zu sein da war das nämlich auch so (bei Delphi auch).
 
Man kann die Schleife so programmieren, daß sich der Wert in der Schleifen-Variable exakt so verhält, wie ich beschrieben habe. Egal ob das deiner Meinung nach irgendwo nicht definiert ist. Hast du mal eine Quelle, wo im IEC Standard steht, daß das von dir gemeinte Verhalten "Implementation-dependent" ist?

Sach mal, hast du in letzter Zeit irgendwelche persönlichen Probleme? Oder gibt es keine "angemessene" Anerkennung mehr auf Arbeit für dein Wissen und Können? Brauchst du Hilfe? Oder warum kritisiert du nur noch vermeintlich falsche Aussagen anstatt hilfreich zum Thema beizutragen?
 
Sach mal, hast du in letzter Zeit irgendwelche persönlichen Probleme? Oder gibt es keine "angemessene" Anerkennung mehr auf Arbeit für dein Wissen und Können? Brauchst du Hilfe? Oder warum kritisiert du nur noch vermeintlich falsche Aussagen anstatt hilfreich zum Thema beizutragen?
Lies dir doch mal bitte ein paar deiner eigenen Beiträge durch, wie du selber mit Neulingen umgehst und wie du deine Überheblichkeit diesen gegenüber raushängen lässt. Aber kaum kommt an einem deiner Beiträge ein Zweifel auf, wird die Kritik entweder ignoriert oder es wird wie hier äußerst pikiert reagiert. Das ist mir bei der generischen Kritik an der Oscat Bibliothek schon übel aufgestoßen, und daran wie du hier mit "Standards" umgehst erkennt man, dass du noch nie an einem Projekt mit mehr als dir selber als Mitarbeiter gearbeitet hast.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Erstmal Danke für Euere schnelle Antwort.
Meine Kenntnisse in SCL sind noch sehr beschränkt, aber scheint ja die beste Lösung zu sein um die Aufgabenstellung umzusetzen.
Werde mich versuchen anhand verschiedener Beispiel-Projekte entlang zu hangeln und bei Fragen stelle ich den Code hier zur Diskussion ein.
 
Für den Fall, daß sich die Schleifenvariable irgendwann mal irgendwie exotisch verhalten könnte, kannst du vorsichtshalber eine oder zwei zusätzliche Resultat-Variablen verwenden, die du vor der Schleife passend initialisierst/vorbelegst, und bei der Fundstelle den Wert der Schleifenvariable (ist der Index der Fundstelle) in eine Resultat-Variable eintragen und die andere Variable zB. mit TRUE für "gefunden" belegen.

Nochmal meine Frage: Wieviele Elemente hat das Array? Wenn dein Array zu groß ist, dann könnte die Schleife die Zykluszeit deines Programms signifikant erhöhen.
 
Ich bin in dieser Woche unterwegs und kann nur sporadisch antworten, sorry.
Die Messwerte bestehen aus ca. 400 Datenpunkten. Dabei müssen auch nicht alle davon abgefragt werden. Es werden nur die Verhältnisse Druck/Strom im Anstieg und im Abstieg der Kurve ausgewertet.
Die Zykluszeit spielt an diesem Punkt keine Rolle, da zuerst die Messwerte aufgezeichnet werden und dann die Auswertung erfolgt.
Nachfolgend eine Grafik zur besseren Verständnis.
 

Anhänge

  • Auswertung_grafische darstellung.jpg
    Auswertung_grafische darstellung.jpg
    76,6 KB · Aufrufe: 14
Zurück
Oben