Verfasst am: 22.12.2015, 10:47
Titel: Variabler Operator/Komperator in if-Anweisung
Guten Tag,
gibt es eine Möglichkeit, die Operatoren / Komperatoren bei if-Anweisungen dynamisch zu gestalten?
Der User soll auf einer GUI bzw. in einem csv-File nur bestimmen, welche Signale er vergleicht und vor allem WIE er sie vergleicht (und natürlich Parameter, die beim Zutreffen seiner Bedingungen gesetzt werden, aber das tut hier nichts zur Sache) und auch, wie die Konditionen (in Summe 4) zusammenhängen.
Wenn ich jetzt alle Eventualitäten ausprogrammiere (~ 100 Signale, 4 Konditionen (Bsp.: Cond_A && Cond_B || Cond_C && Cond_D), 4 Komperatoren (<, >, =, !=)) werden ich alt und der Quellcode unendlich lang.
Das Ganze wird dann per Matlab / Simulink Coder auf eine Realtime-Target Hardware übertragen. Der User hat aber mit Programmierung nix zu tun, der soll sich einfach nur aussuchen, was er wie und warum miteinander vergleicht und was dann passiert.
Als Bsp. im csv file steht:
Signal_A;temp
Comp_A;2 (bedeutet >)
Tresh_A;100
Cond_AB;2 (bedeutet ||)
Signal_B;rpm
Comp_B;2 (bedeutet >)
Tresh_B;5000
Quellcode sieht dann so aus:
WENN temp > 100 || rpm > 5000 DANN whatever (zB Abschalten!)
Ja, so ungefähr. Ich möchte nicht nur eine variable Anzahl, sondern das "Design" der if-Anweisungen sollte auch variabel sein. Also der Nutzer soll bspw. entscheiden, ob jetzt ein > oder ein < als Komperator verwendet wird und auch welche Signale/Werte an sich überhaupt verglichen werden (das ist nicht das Problem).
%% die if-Anweisungen werden dann automatisch "befüllt" / "erstellt" if signal1A comp1A tresh1A cond1AB signal1B comp1B tresh1B
strategy1 = 1 else
strategy1 = 0 end
if signal2A comp2A tresh2A cond2AB signal2B comp2B tresh2B
strategy2 = 1 else
strategy2 = 0 end
EDIT: Danke an Harald, das geht stark in die Richtung, in die ich möchte!
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.