Hallo Werna,
Das heisst ich kann keine trigonometrischen Sicherheitsfunktionen rechnen.
Richtig, die trigometrischen Funktionen stehen im FS-Teil nicht zur Verfügung.
zB ich möchte eine Begrenzung realisieren, die bei derer man diese Funktionen benötigt, um zu rechnen, wie weit 4 gekoppelte Achsen ausgefahren sind?
Ich denke, dass ihr oft so ein Problem habt. Wie könnte man das realisieren?
Du könntest mit dem Baustein
FS_PositionToAngle arbeiten. Brauchst halt jeweils einen sicheren Geber an deinen Achsen. Der Baustein macht dann aus deiner Position einen Winkelwert der in einem SAFEUINT gespeichert wird und im FS Teil weiterverarbeitet werden kann.
bzgl. Gleitkommaberechnungen: Warum sind das eigentlich heikle Berechnungen? So viel ich weiß, hat KW-SW einen REAL Wert auch im Saftey Bereich.
In der Sicherheitstechnik muss ja mit diversitären Bauteilen gearbeitet werden, um systematische Fehler in Bauteilen aus zu schließen. Un so kann es bei Gleitkommaberechnungen passieren dass bei unterschiedlichen Prozessoren verschiedener Hersteller leicht unterschiedliche Werte heraus kommen. Beim Vergleich dieser Werte hätte man laufend Fehler und die berechnungen müssten erneut durchgeführt werden, was sich negativ auf Zykluszeiten auswirken würde, oder die Steuerung geht bei einer unterschiedlichen Berechnung in Fehler was sich negativ auf die Verfügbarkeit der Anlage auswirken würde. Darum sind diese Datentypen im FS-Teil nicht verfügbar.
Wie kann ich sicher sein, dass sich die Werte nicht verändert haben
Wenn du so denkst, müsstest ja auch die Befürchtung haben dass sich dein Programmcode einfach mal so verändert und aus einem UND ein ODER wird oder so.
Wenn du die Werte fest in deinem Code in ein Array einfügst wird sich hier nichts mehr verändern.
Aber du kannst ja sogar ein Array mit sicheren Datentypen anlegen, dann hast du quasi ein sicheres Array.
Als sichere Datentypen stehen folgende zur Verfügung:
SAFEBOOL
SAFEBYTE
SAFEWORD
SAFEDWORD
SAFESINT
SAFEINT
SAFEDINT
SAFEUSINT
SAFEUINT
SAFEUDINT