Binärlogik in SCL / ST

Zuviel Werbung?
-> Hier kostenlos registrieren
Soviele Verknuepfungen kann man ja auch mit Zwischenvariablen machen?
Vor allem vergisst man oft, das man boolesche Ausdruecke gar nicht mit if Orgien vergewaltigen muss.
Ich kann ja hinten dran immer noch if then Konstrukte verwenden.
 
Soviele Verknuepfungen kann man ja auch mit Zwischenvariablen machen?
Vor allem vergisst man oft, das man boolesche Ausdruecke gar nicht mit if Orgien vergewaltigen muss.
Ich kann ja hinten dran immer noch if then Konstrukte verwenden.
Machbar ist fast alles, nur die Übersichtlichkeit/Wartungsfreundlichkeit und die schnelle Bearbeitung von dritten wird darunter leiden.

Ich verstehe unser Handwerk so, wir erstellen kein Laufzeit optimierten Code sondern fangen jeglichen falschen Zustand ab und versuchen eine Programm zu erstellen welches von anderen Programmierern möglichst intuitiv verstanden werden kann.

Zwischvariablen sind ein gutes Mittel wenn diese logisch sind z.B.

alleTürenOffen:=Tür1offen & Tür2offen …
 
Machbar ist fast alles, nur die Übersichtlichkeit/Wartungsfreundlichkeit und die schnelle Bearbeitung von dritten wird darunter leiden.

Ich verstehe unser Handwerk so, wir erstellen kein Laufzeit optimierten Code sondern fangen jeglichen falschen Zustand ab und versuchen eine Programm zu erstellen welches von anderen Programmierern möglichst intuitiv verstanden werden kann.

Zwischvariablen sind ein gutes Mittel wenn diese logisch sind z.B.

alleTürenOffen:=Tür1offen & Tür2offen …
Bi. ch bei dir.
Allerdings ist empfinde ich die Verknüpfung von 40 Bits egal in welcher Sprache, als unübersichtlich
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Back to the roots: A:= (B OR A) AND NOT C (mit Klammer = SR, ohne Klammer = RS),

Etwas Offtopic, aber ich wollte anmerken, dass das logisch nicht ganz richtig ist.

Nehmen wir an B (S) = 1 und C (R) =1

Für A := (B OR A) AND NOT C wäre das Ergebnis demnach A = 0, also ein rücksetzdominater Speicher.

Die Aussage A := A OR B AND NOT C bringt uns bei obiger Annahme einen undefinierten Zustand. A würde lediglich von seinem vorherigen Zustand abhängen. Das AND hat Vorrang vor dem ODER, damit hätten wir weder eine Setz- oder Rücksetzdominanz.

Ich finde deshalb die Umsetzung von RS/SR FlipFlops über ein IF/ELSE Konstrukt besser.

Zum Thema:

Bei bis zu 4 Ausdrücken in einer Verknüpfung schreibe ich alles in eine Zeile. Der Bildschirm hat ja 16:9 😄
Darüber hinaus würde ich Zwischenvariablen nutzen.
 
Zuletzt bearbeitet:
Etwas Offtopic, aber ich wollte anmerken, dass das logisch nicht ganz richtig ist.

Nehmen wir an B (S) = 1 und C (R) =1

Für A := (B OR A) AND NOT C wäre das Ergebnis demnach A = 0, also ein rücksetzdominater Speicher.

Die Aussage A := A OR B AND NOT C bringt uns bei obiger Annahme einen undefinierten Zustand. A würde lediglich von seinem vorherigen Zustand abhängen. Das AND hat Vorrang vor dem ODER, damit hätten wir weder eine Setz- oder Rücksetzdominanz.

Ich finde deshalb die Umsetzung von RS/SR FlipFlops über ein IF/ELSE Konstrukt besser.

Zum Thema:

Bei bis zu 4 Ausdrücken in einer Verknüpfung schreibe ich alles in eine Zeile. Der Bildschirm hat ja 16:9 😄
Darüber hinaus würde ich Zwischenvariablen nutzen.
in codesys gibt dies ohne dass man IF/ELSE Konstrukt bilden muss

 
Darum schrieb ich ja diese Zuweisungen sind Zwischenergebnisse.
Das if else kommt danach.
In Setz/Ruecksetzlogigk umgemünzt, bedeutet es sowieso das die Funktion (als Bsp.) bei einem Reset immer hinter dem Setzen kommen muss.
Zudem wuesste ich nicht wer sowas programmiert, sowas rekursives.
Nenne mir da mal ein Anwendungsbeispiel.
 
Da empfehlen sich dann aber Funktionen?Kommen mehrere solche Maskierungen vor sind halt die Bausteine
mehrfach hintereinander aufzurufen.Wird natürlich dann länger.

In SCL ist das dann aber kompakter, da hat er schon recht.Aber wer maskiert soviele Doppelwörter?
Das muss man ja auch durchschauen.
Hier muesste mann dann den Anwendungsfall kennen.
 
Back to the roots: A:= (B OR A) AND NOT C (mit Klammer = SR, ohne Klammer = RS),
dass das logisch nicht ganz richtig ist.
...
Die Aussage A := A OR B AND NOT C bringt uns bei obiger Annahme einen undefinierten Zustand. A würde lediglich von seinem vorherigen Zustand abhängen. Das AND hat Vorrang vor dem ODER, damit hätten wir weder eine Setz- oder Rücksetzdominanz.

A := (B OR A) AND NOT C ohne Klammern

ist allerdings nicht:
A := A OR B AND NOT C

sondern:
A := B OR A AND NOT C

;)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Und wo kommt sowas zur Anwendung?
Ich kenne Selbsthaltungen wo der Ausgang als Parallelzweig wieder auf die Spule zurückgeht.
Aber dort halte ich KOP fuer am uebersichtlichsten.Das ist doch ein theoretisches Konstrukt.
Bitte mal ein Bsp. nennen.
 
Da empfehlen sich dann aber Funktionen?Kommen mehrere solche Maskierungen vor sind halt die Bausteine
mehrfach hintereinander aufzurufen.Wird natürlich dann länger.

In SCL ist das dann aber kompakter, da hat er schon recht.Aber wer maskiert soviele Doppelwörter?
Das muss man ja auch durchschauen.
Hier muesste mann dann den Anwendungsfall kennen.
In meinem Fall handelte es sich um 3 Förderbänder, diese können ihre Lage jeweils auf vier Positionen verfahren um 8 Silos anzufahren, die Position wurde mit einen induktiven Sensor festgestellt. Die alle Position für ein Band (6) wurden in einem Byte untergebracht, der zielbehälter hatte nur ein Bit in einem Byte, wenn ich jetzt die Bytes mit UND verknüpfe kann ich feststellen in welche Richtung ich das Band verfahren muss um schnellstmöglich dort zu sei.

Das ist ein kleines Beispiel, wenn die Anlage jetzt auf 16 Oder 32 Behälter hochskaliert wird, dann muss ich mein Code zur Berechnung nicht anpassen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Kann man so machen.Ohne jetzt viel nachgedacht zu haben, hätte ich jetzt versucht 3 Bausteine(pro Fördeband einer ).
Die Bausteine kriegen die Eingangsbits und geben dann eine behälternummer aus(1...8).
 
Komplexe Binäranweisungen werden bei uns mit Bitzuweisung auf z.B. einen INT und anschließend mit einer CASE abfrage gemacht. Damit kann man seine Stati sauber granulieren, mit Konstanten die Bedingungen Dokumentieren und die abfragen auch sauber erweitern.
 
Zurück
Oben