TIA FUP - zusammengesetzter Variablennamen

Grille

Level-1
Beiträge
4
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich versuche einen Variablennamen aus dem immer gleichen Datenbaustein und einem Integer zusammenzusetzen, um einen sich immer wiederholendes Netzwerk zu vermeiden.

Am Eingang des MOVE wird der gewählte Schritt als UINT abgefragt.
Im Datenbaustein gibt es ein DWORD mit dem Namen S3 (Zeile 5 im Datenbaustein)

Besteht die Möglichkeit den Variablennamen durch einbinden der Variable #Schrittwahl zusammenzusetzen?

Ich meine mit den nicht optimierten Datenbausteinen in step7 5.4 sei das mal möglich gewesen, indem man auf die Adresse anstelle des Namens zugreift, aber auch da komme ich gerade nicht auf die Lösung.

Falls ihr eine Lösung für einen nicht optimierten DB habt - die Optimierung kann ich gerne abschalten ;-)
Darf auch gerne in SCL sein, falls es damit einfacher ist.


Besten Dank schonmal fürs lesen und Eure Ideen



1731200607314.png
 
Ich hoffe ich liege hier nicht völlig falsch, falls doch, sorry.
Ich behaupte mal, dass man nirgends einen Variablennamen zur Laufzeit zusammensetzen kann, was, wenn man mal über den Prozess der Programmerstellung nachdenkt, auch logisch ist.
Man schreibt ein Programm und verwendet dabei Variablen(namen). Danach wird das Programm übersetzt, entweder in Maschinencode, der direkt verarbeitet werden kann oder eine Zwischensprache, die zur Laufzeit interpretiert wird. Bei Ersterem gibt es dann keine Variablen mehr, sondern nur noch Adressen und ich behaupte mal bei Letzterem aus Geschwindigkeitsgründen auch nicht mehr, weil bei Nutzung einer Variablen ja erst deren Adresse ermittelt werden muss, was Zeit kostet.
Lange Rede kurzer Unsinn, ich schließe mich der Meinung der anderen an, nimm ein Array.
 
Zuletzt bearbeitet:
Tut mir doch bitte den Gefallen (und euch selbst), von VariablenNamen zu sprechen, wenn ihr VariablenNamen meint.
Eine Variable zur Laufzeit zusammensetzen? Kein Problem, wenn man damit den Inhalt einer Variablen meint. Aber völlig sinnfrei, wenn man damit den VariablenNamen meint.
Den Wunsch danach kann ich verstehen. Er kommt immer dann auf, wenn eine ProgrammierSprache keine brauchbare Möglichkeit bietet, indirekt zu adressieren. Das Verlangen danach ist aber eine VerzweiflungsTat.
 
Tausend Dank euch allen!

Ich hatte es erst mit Structs im Struct und Slicen versucht, aber da war die Verzweiflung noch größer 😵‍💫

Die Idee den Schritt als Array Position zu nehmen und nicht für jeden Schritt ein DWORD in die DB zu klatschen, war scheinbar zu naheliegend.
(Oder lag hinter dem dichten, grauen Nebel vor dem Fenster verborgen)

Warum Einfach wenn's auch kompliziert geht ....

Es rennt und ist nun auch deutlich übersichtlicher 👓
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Besteht die Möglichkeit den Variablennamen durch einbinden der Variable #Schrittwahl zusammenzusetzen?

Ich meine mit den nicht optimierten Datenbausteinen in step7 5.4 sei das mal möglich gewesen, indem man auf die Adresse anstelle des Namens zugreift, aber auch da komme ich gerade nicht auf die Lösung.
Variablennamen zusammenbasteln ist noch nie möglich gewesen.
 
Der Vollständigkeit halber sei erwähnt, dass solche Vorhaben durchaus umsetzbar sind.
Man benötigt dafür allerdings eine 1518 MFP, die Programme in Hochsprachen wie C, C++ oder C# ausführen kann.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Variablennamen zusammenbasteln ist noch nie möglich gewesen.
Möglich ist das, aber was macht man dann mit dem zusammengebastelten VariablenNamen? Wie sagt man dem Compiler, dass er zur LaufZeit den Inhalt einer bestimmten Variablen als VariablenNamen interpretieren soll? Welchem Compiler will man so etwas zumuten? ;)
 
Möglich ist das, aber was macht man dann mit dem zusammengebastelten VariablenNamen? Wie sagt man dem Compiler, dass er zur LaufZeit den Inhalt einer bestimmten Variablen als VariablenNamen interpretieren soll? Welchem Compiler will man so etwas zumuten? ;)

Das ist das täglich Brot eines Hochsprachenprogrammierers... insofern,,, nur weil jemand was kann, was man selbst nicht kann, muss das nicht nutzlos oder blödsinnig sein... oder kannst du Haare schneiden, so dass es gut aussieht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Für einen Industriemechaniker mag das zutreffen... ein Ingenieur strebt nach besseren Lösungen...
Ein Inschinör, dem nichts zu schwör ist, mag gerne nach "besseren" Lösungen streben.
Aber es gibt sone und solche Ingenieure. Viele streben lieber nach einfachen Lösungen.
Das ist das täglich Brot eines Hochsprachenprogrammierers...
Wenn das wirklich so sein sollte, dann haben die HochsprachenProgrammierer mein tiefstes Mitgefühl.
insofern,,, nur weil jemand was kann, was man selbst nicht kann, muss das nicht nutzlos oder blödsinnig sein...
(y)
oder kannst du Haare schneiden, so dass es gut aussieht?
Kann ich nicht oder soll ich sagen "ich weiss nicht - ich hab's noch nie probiert"?
 
Das ist das täglich Brot eines Hochsprachenprogrammierers... insofern,,, nur weil jemand was kann, was man selbst nicht kann, muss das nicht nutzlos oder blödsinnig sein... oder kannst du Haare schneiden, so dass es gut aussieht?
Ich bin, oder besser war, Hochsprachenprogrammierer und mein täglich Brot was das Zusammensetzen von Variablennamen zur Laufzeit nicht. Hättest Su mal bitte ein Beispiel, da ich mir immer noch nicht vorstellen kann, dass sowas geht.
 
Ich bin, oder besser war, Hochsprachenprogrammierer und mein täglich Brot was das Zusammensetzen von Variablennamen zur Laufzeit nicht. Hättest Su mal bitte ein Beispiel, da ich mir immer noch nicht vorstellen kann, dass sowas geht.
Also, keine Ahnung ob ich hier jetzt nicht verstehe, worüber geredet wird. In WinCC-C-Scripten setze ich schon seit Jahrzehnten Variablennamen aus Textteilen zusammen und hole den Inhalt dieser Variable dann aus dem WinCC-Variablenhaushalt sprich der SPS...

Aber in ner SPS würd ich solche Konstrukte nie einsetzen..


Screenshot im ersten Post.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Vollständigkeit halber sei erwähnt, dass solche Vorhaben durchaus umsetzbar sind.
Man benötigt dafür allerdings eine 1518 MFP, die Programme in Hochsprachen wie C, C++ oder C# ausführen kann.

Für einen Industriemechaniker mag das zutreffen... ein Ingenieur strebt nach besseren Lösungen...

Cool das so etwas möglich ist. Aber anscheinend nur über Umwege und mit ner potenten Hardware, also eine kostenintensive Lösung (Hardware, Engeneering). Die Wartbarkeit würde ich auch erstmal schlechter bewerten.
Dem gegenüber steht dann die einfache, kostengünstige und wartbare Lösung mit einem array.
Diese Faktoren sollte auch ein Ingenieur in seiner Entscheidung unbedingt berücksichtigen.
 
Für einen Industriemechaniker mag das zutreffen... ein Ingenieur strebt nach besseren Lösungen...
Was da besser ist muss sich herausstellen, dass ist von vielen Faktoren abhängig, nur weil etwas im Hochsprachenbereich möglich und dort auch bei vielen Anwendungen sinnvoll ist, ist es deswegen nicht auch besser und dies pauschal auch in anderen Bereichen.
Ein gutes Beispiel ist in diesem Zusammenhang die dynamische Speicherzuteilung/-anforderung zur Laufzeit. Eine Funktionalität, die im Bereich der "normalen" Anwendungsentwicklung gang und gebe ist und ständig genutzt wird. Im Bereich der SPS Programmierung aber, wenn ein System dies überhaupt unterstützt, nur rudimentär umgesetzt ist und (behaupte ich mal) von den meisten von uns hier gemieden wird. Der Grund dafür liegt darin, dass die Speicheranforderung ja auch schief gehen kann, nur was dann? Ein PC-Programm stürzt in dem Fall ab oder es kommt eine Fehlermeldung und die Funktion wird nicht ausgeführt, bei einer Anlage sind das beides aber keine sinnvollen Optionen/Reaktionen.
 
Zuletzt bearbeitet:
Zurück
Oben