Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
CASEuiStateOF0:
  IFbStartTHEN
    IFiVal1<>0THEN
      diErgebnis:=iVal1+1;
      uiState:=1;
    ELSE
      uiState:=1;
    END_IF
  END_IF1:
  IFiVal2<>0THEN
    diErgebnis:=iVal1+iVal2+1;
    uiState:=2;
  ELSE
    uiState:=2;
  END_IF2:
  IFiVal3<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+1;
    uiState:=3;
  ELSE
    uiState:=3;
  END_IF3:
  IFiVal4<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+iVal4+1;
    uiState:=4;
  ELSE
    uiState:=4;
  END_IF4:
  IFiVal5<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+iVal4+iVal5+1;
    uiState:=5;
  ELSE
    uiState:=5;
  END_IF5:
  IFiVal6<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+iVal4+iVal5+iVal6+1;
    uiState:=6;
  ELSE
    uiState:=6;
  END_IF6:
  IFiVal7<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+iVal4+iVal5+iVal6+iVal7+1;
    uiState:=7;
  ELSE
    uiState:=7;
  END_IF7:
  IFiVal8<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+iVal4+iVal5+iVal6+iVal7+iVal8+1;
    uiState:=8;
  ELSE
    uiState:=8;
  END_IF8:
  IFiVal9<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+iVal4+iVal5+iVal6+iVal7+iVal8+iVal9+1;
    uiState:=9;
  ELSE
    uiState:=9;
  END_IF9:
  IFiVal10<>0THEN
    diErgebnis:=iVal1+iVal2+iVal3+iVal4+iVal5+iVal6+iVal7+iVal8+iVal9+iVal10+1;
    uiState:=10;
  ELSE
    uiState:=10;
  END_IF10:
  IFNOTbStartTHEN
    uiState:=0;
    diErgebnis:=0;
  END_IFEND_CASE
Michael
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2009-12-14
Originally created by: softwareheini
Hallo Michael,
erstmal vielen Dank für Deine Antwort.
Vom Prinzip her, so ungefähr.
Nur ist mein Problem der boolsche Ausgang, der
(falls mehr als ein Eingang belegt ist) mit UND verknüpft werden soll.
Die Eingänge die nicht belegt sind, müssten irgendwie „ausgeblendet“ werden.
Und wenn nur einer belegt ist müsste dieser dem Ausgang direkt zugewiesen werden.
mfg
softwareheini
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Somit sind alle Berechnungen UND Verknüpft und bei dem ersten negativen Ausgang einer Berechnung werden auch nicht mehr die anderen Berechnungen durchgeführt, da der Ausgang ja sowieso FALSE sein muss.
lg
Henry
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Originally created by: softwareheini
Hallo zusammen,
ich habe ein kleines Logikproblem.
Ich habe einen FB der 10 Integer Eingangsvariablen und
eine boolsche Ausgangsvariable hat.
Wenn jetzt am Eingang 1 z.B. eine Zahl von 1 bis ... steht und
bausteinintern eine Berechnung OK ist, dann soll mein Ausgang TRUE sein.
Wenn jetzt aber am Eingang 1 und am Eingang 2 eine Zahl von 1 bis ... steht,
dann müssten meine zwei internen Berechnungen mit UND verküpft werden.
D.h. meine Ausgang wird erst TRUE wenn beide Berechnungen OK sind.
Es kann auch vorkommen das nur z.B. Eingang 5 beschalten wird
und mein Ausgang nach der Berechnung TRUE wird.
Und das ganze eben mit 10 Eingängen.
Kann mir vielleicht jemand einen Tipp geben wie man so etwas lösen könnte?
Hoffe hab das ganzen einigermaßen verständlich beschrieben
Das ganze läuft auf einem Wago 750-841.
Vielen Dank schon mal vorab und noch einen schönen Sonntag!
mfg
softwareheini
Hallo,
hab ich das richtig verstanden?
Eingang 1 ist IMMER vorhanden.
Eingang 2-10 sind nicht immer beschaltet.
Dann wäre es doch im Prinzip
Eingang 2 -> Rechnung | OR
Eingang 3 - > Rechnung | OR
Eingang N - > Rechnung | OR
Eingang 10 -> Rechnung |
___|
AND
Eingang 1 -> Rechnung
Setzt den Ausgang.
Was soll passieren wenn zwei Eingänge beschaltet sind? Soll der Ausgang nur gesetzt werden wenn beide Rechnugen TRUE liefern?
MfG
Marcel
Originally created by: softwareheini
Hallo,
1) Nein, es sind immer alle Eingange vorhanden.
2) Ja, wenn zwei oder mehrere Eingänge beschalten sind sollen
mfg
softwareheini
Meinst Du sowas in der Art:
Michael
Originally created by: softwareheini
Hallo Michael,
erstmal vielen Dank für Deine Antwort.
Vom Prinzip her, so ungefähr.
Nur ist mein Problem der boolsche Ausgang, der
(falls mehr als ein Eingang belegt ist) mit UND verknüpft werden soll.
Die Eingänge die nicht belegt sind, müssten irgendwie „ausgeblendet“ werden.
Und wenn nur einer belegt ist müsste dieser dem Ausgang direkt zugewiesen werden.
mfg
softwareheini
Dann mach doch einfach das der "Eingang" vom AND immer TRUE ist wenn der Wert 0 ist
MfG
Marcel
Probiers mal so:
IF "alle Eingänge nicht gesetzt"
ELSE
ENDIF.
IF EINGANG1 > 0 AND Ausgang = TRUE
ELSEIF EINGANG2 > 0 AND Ausgang = TRUE
ELSEIF EINGANG3 > 0 Ausgang = TRUE
ELSEIF EINGANG4 > 0 Ausgang = TRUE
....
ENDIF
Somit sind alle Berechnungen UND Verknüpft und bei dem ersten negativen Ausgang einer Berechnung werden auch nicht mehr die anderen Berechnungen durchgeführt, da der Ausgang ja sowieso FALSE sein muss.
lg
Henry
Hab zu schnell auf senden gedrückt - sollten natürlich lauter IFs sein:
IF EINGANG1 > 0 AND Ausgang = TRUE
Ausgang = TRUE/FALSE von "Berechnung1"
ENDIF.
IF EINGANG2 > 0 AND Ausgang = TRUE
THEN Ausgang = TRUE/FALSE von "Berechnung2"
ENDIF
IF EINGANG3 > 0 AND Ausgang = TRUE
...
lg
Henry
Originally created by: softwareheini
Hallo Marcel,
oooh mann, ich hab glaub ich ein RIEßEN Brett vorm Kopf!
Einfacher gehts nun wirklich nicht mehr.
Mann sollte echt nicht immer so kompliziert denken!
Vielen Dank Marcel! --> auch an Henry
P.S. Klasse Forum hier. DANKE!
Manchmal sieht man den Wald vor lauter Brettern nicht
Oder wie ging der Spruch?
Ist doch schön das es nun klappt.
MfG
Marcel