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

Frage zur IEC 61131-3

herdi
2008-09-11
2008-09-16
  • herdi - 2008-09-11

    Hallo miteinander,

    ich hätte mal eine Frage an euch bezüglich des Verhaltens des CASE-Befehl unter ST und wie dieser in der IEC 61131-3-Norm beschrieben ist. Vielleicht kann mich jemand aufklären.

    Folgender Fall:

    case x of1: xxx;2: yyy;2: zzz;end_case;

    Was passiert mit der doppelten 2? Wird nur der erste Abschnitt ausgeführt? Werden beide ausgeführt? Muss/darf/soll der Compiler einen Fehler/Warnung ausgeben wenn ich sowas schreibe?

    Ich weiß dass CoDeSys das nicht zulässt, aber was sagt die Norm dazu?

    Vielen Dank.

    Gruß

    Herdi

    PS: Als pdf gibt die Norm nirgends zum Downloaden?

     
  • Erik Böhm - 2008-09-11

    Hallo

    Wie du schon richtig bemerkst, bemängelt das ja bereits der Compiler.

    Da hat er auch vollkommen recht, denn diese Vorgehensweise ist Blödsinn.

    Das Programm arbeitet die erste 2 ab und verlässt danach die case Schleife komplett.

    Beim nächsten Durchlauf wird wieder die erste 2 bearbeitet und die Schleife verlassen usw...

    Die zweite 2 käme also sowieso niemals dran.

    Ich glaube nicht dass sich die Norm dazu überhaupt irgendwie äussert...

    Gruss Erik

     
  • Erik Böhm - 2008-09-11

    Ich nochmal

    Legal gibts im gar keine IEC-/DIN-/ISO Normen zum Download.

    Die IEC ist eine Normierungsbehörde und die lässt sich ihre Arbeit bezahlen wie alle anderen auch.

    Gruss

    Erik

     
  • herdi - 2008-09-11

    Hab ich mir schon gedacht...

    Zu meiner Frage hab ich gehofft das mir hier jemand näheres dazu sagen kann. Weshalb ich eigentlich Frage ist dass ich beruflich gezwungen bin mich mit dem Siemens-SCL-Sch... rumzuärgern und deren Compiler schluckt sowas ohne zu murren und führt dann halt zur Laufzeit nur die erste Passage aus. Da bin ich auch erst drauf gekommen als ich einen entsprechenden Fehler eingebaut hatte... Witzig ist nur das die Siemens-Jünger alle das System verteidigen und auch in diesem Fall der Meinung sind: "Wenn der Programmierer sowas schreibt kann der Compiler auch nichts dafür... Und außerdem für was braucht man ST..."

    CoDeSys is Welten besser...

    Gruß

    Herdi

     
  • Anonymous - 2008-09-16

    Originally created by: Bernhard Werner

    Hallo Herdi,

    die Norm sagt eigentlich relativ eindeutig aus, dass der Wert auch mehrfach vorkommen darf. Die Idee ist, dass man mehrere Bereiche haben kann, die sich auch überlappen dürfen, und der erste Case in dessen Bereich der Wert vorkommt soll ausgeführt werden.

    So steht es da, aber wir sind manchmal so frei und machen uns unsere eigenen Gedanken und melden einen Fehler, wenn ein Case überhaupt nicht ausgeführt werden kann.

    Bernhard

     

Log in to post a comment.