TIA Werte aus DB auslesen und weiterverarbeiten

Erzer112

Level-2
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi. Ich bräuchte mal Hilfe bei dem Durchsuchen von einem DB. Irgendwie steh ich auf dem Schlauch....
Ich habe 78 Prüflinge, die mit unterschiedlichen Werten geprüft werden müssen. Welcher Typ Prüfling in der Maschine ist, bekomme ich von extern als INT Wert mitgeteilt.
Als SPS ist es eine 1214C, und Programm wird mit TIA V19 erstellt.
Auf Basis dieser INT Zahl würde ich gerne einen DB durchsuchen (Struktur siehe Bild) und die Werte Druck, Volumen und Vorrichtung im PLC Programm weiterverarbeiten (Volumen wird als Sollwert für Vergleicher mit IST genommen, Druck als Einstellwert für ein Propventil etc.).

Ich könnte auch 78 Vergleicher nehmen, und dann mittels Move Befehle die jeweiligen Prüfwerte aus dem DB nehmen und in neue Variablen zum weiterverarbeiten schreiben, oder mir 78 einzelne DB´s anlegen damit ich eine genaue Zuordnung habe.
Aber eventuell gibt es ja eine komfortablere Möglichkeit das ganze zu realisieren?
Programm ist im FUP gemacht und eine FUP Lösung wäre gut :cool: , zur Not würde auch ein SCL Baustein gehen.
 

Anhänge

  • DB.png
    DB.png
    47,4 KB · Aufrufe: 51
Danke euch. Ein Array of Strukt?
Sprich ich bekomme eine 20 per INT rein, und dann eine For Schleife in dem DB bis ich den Array[20] gefunden habe? Wie komme ich dann an die Werte innerhalb von [20]?
Tut mir leid wenn ich so dumm Frage, habe aber bisher noch nicht mit solchen Suchen gearbeitet 😓
For Schleife werde ich mir im Internet oder YT mal raussuchen😊
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du legst dir idealerweise einen Datentypen an (Udt) und rufst den als Array auf, das Struct kannst du dir dahingehend sparen.

In die Udt kommen dann deine Variablen Druck, Volumen, Vorrichtung
Hierzu noch ein kleiner Tipp: Leerzeichen in Variablen und generellen Bezeichnern vermeiden, ist einfach ein best practice zum sauberen Arbeiten und erhöht meinem Empfinden nach die Lesbarkeit von Variablen.

Umlaute versuche ich zu vermeiden, aber ich bin auch so jemand der immer in der englischen Sprache programmiert

Du bekommst ja schon einen Wert übergeben vom Prüfling, also musst du quasi nichts suchen sondern nur diese Variable, in welcher die Nummer deines Prüflings steht als Index benutzen..

Die For Schleife kannst du streichen..

Aus DB_Bauteilauswahl.1.Druck wird dann DB_Bauteilauswahl[VariablePrueflingsnummer].Druck

Du kannst auch eine Konstante für deine Arraygröße verwenden, diese kannst du in Variablentabellen anlegen, da gibts oben rechts einen Reiter für Konstanten.

So wird dann aus Array[0..20] einfach Array[0..KONSTANTE_ARRAY_GROESSE]

Nicht vergessen Arrays mit 0 zu beginnen, um keinen Fehler zu erzeugen falls die Variable mal eine 0 liefert. Am besten das Array so groß gestalten, wie höchste anzunehmde Zahl sein kann..
 
Auf den Weg mit dem UDT hätte ich auch drauf kommen müssen. 😓😓 Hab das vor 2 Jahren genauso beim Unified Lehrgang gemacht. War exakt das selbe zu machen mit dem Anlegen und Auswählen wenn man da was animieren will. 🤦 Manchmal hängt die Festplatte eben.

Habt tausend Dank Freunde der Programmierkunst 👍🏻👍🏻😃

Und ja, ich ersetze normalerweise Leerzeichen auch durch Unterstriche, war heute morgen nur in der Verzweiflung als Bsp Datensatz schnell geschrieben zum Testen von Ansätzen. 😉
Mein Ausbilder vor 20 Jahren hätte mich geschlagen, wenn ich mir es mit Leerzeichen angewöhnt hätte 😂
 
Mein Tipp wäre, mach es nach Styleguide im camelCasing. Das bringt die beste Lesbarkeit, wenn man sich dran gewöhnt hat.
Unterstriche machen es gruselig.
Unterstriche machen es nur gruselig, wenn man sich nicht daran gewöhnt hat oder sich prinzipiell nicht daran gewöhnen mag.
Zugegeben, camelCasing spart objektiv Platz gegenüber der Verwendung von Unterstrichen.
camelCasing ist aber nicht so leicht anwendbar, wenn die Gross-/KleinSchreibung mehr bedeutet, als nur den Anfang von Wort(-bestandteil-)en zu kennzeichnen.
Wie sieht es z.B. bei vielen Abkürzungen oder EigenNamen/MarkenNamen aus oder bei "Dimensionen" (z.B. mW vs. MW - ist ja "nur" der Faktor 10^9)?
 
Mein Tipp wäre, mach es nach Styleguide im camelCasing. Das bringt die beste Lesbarkeit, wenn man sich dran gewöhnt hat.
Unterstriche machen es gruselig.
Jedes casing hat seine Berechtigung, solange es einhaltlich ist.

der eine nutzt snake casing, der andere camel casing, ich nutze am liebsten pascal casing..

Wenn im Projekt halt ein casing vorgegeben ist oder schon verwendet wird, dann halte ich mich auch daran.
 
Zurück
Oben