CHS-Baustein
Kurz-Information
Name | CHS |
---|---|
→POE-Typ | →Funktion |
Kategorie | IEC-Baustein, NumericEnh, Baustein mit interner Fehlerdiagnose |
Konform zur →IEC-Norm | nicht in IEC-Norm vorgesehen |
Grafische Schnittstelle | |
Verfügbar ab | Version 1.64.0 (für logi.CAD 3) |
Funktionalität
Der Baustein liefert den Wert, der am Eingang IN
anliegt, mit geändertem Vorzeichen. Falls der Wert 0
anliegt, liefert der Baustein wieder 0
.
Verhalten bei vorzeichenlosen ganzen Datentypen (= ANY_UNSIGNED
– siehe zugehörige elementare Datentypen beim Glossar-Eintrag →allgemeiner Datentyp):
- Der Baustein liefert einen vorzeichenlosen Wert. Dieser Wert entsteht so: Der an
IN
anliegende Wert, sofern dieser >0
ist, wird von der Obergrenze des entsprechenden Datentyps subtrahiert, dann wird der Wert1
addiert:Obergrenze – IN + 1
Siehe unter "Beispiel für Verwendung im ST-Editor".
Als Hintergrund-Information: Der anIN
anliegende Wert wird als Bitmuster mit Vorzeichen interpretiert. Dieser Wert mit Vorzeichen wird umgerechnet (und wieder als vorzeichenloser Wert ausgegeben). - Zusätzlich wird der Ausgang
ENO
auf den WertFALSE
gesetzt.
Verhalten bei anderen Datentypen:
- Für
ANY_SIGNED
gültig: Falls die Untergrenze des entsprechenden Datentyps anIN
anliegt, liefert der Baustein diesen Wert. Grund: Für die Untergrenze des Datentyps ist der Wert mit geändertem Vorzeichen nicht zulässig.
Ssiehe unter "Beispiel für Verwendung im ST-Editor". - Für
ANY_SIGNED
undANY_REAL
gültig: Der AusgangENO
wird immer auf den WertTRUE
gesetzt.
Eingänge, Ergebniswert
Bezeichner | →Datentyp | Beschreibung | |
---|---|---|---|
Eingänge: | IN | REAL , LREAL , USINT , UINT , UDINT , ULINT , SINT , INT , DINT oder LINT (entspricht dem →allgemeinen Datentyp ANY_NUM )
| Wert |
Ergebniswert: | – |
|
Der Eingang EN
und der Ausgang ENO
sind für den →Aufruf des Bausteins verfügbar. Siehe "Ausführungssteuerung: EN, ENO" für Informationen zum Eingang EN
und zum Ausgang ENO
.
Interne Fehlerdiagnose für Baustein
Der Baustein prüft vor der Ausführung den Datentyp des anliegenden Werts.
Bei einem vorzeichenlosen ganzen Datentyp (= ANY_UNSIGNED
) wird der Ausgang ENO
des Bausteins auf den Wert FALSE
(oder eine Entsprechung) gesetzt.
Beispiel für Verwendung im ST-Editor
Die berechneten Werte werden mit Hilfe des Assert
-Bausteins ausgewertet.
FUNCTION_BLOCK ExampleChs VAR resultSint1, resultSint2, resultSint3, resultSint4 : SINT; resultUsint1, resultUsint2, resultUsint3 : USINT; resultUint : UINT; CheckENOSint1, CheckENOSint2, CheckENOSint3, CheckENOSint4, CheckENOUsint1, CheckENOUsint2, CheckENOUsint3, CheckENOUint : BOOL; END_VAR resultSint1 := CHS(IN := SINT#-5, ENO => CheckENOSint1); Assert(resultSint1 = 5); Assert(CheckENOSint1 = TRUE); resultSint2 := CHS(IN := SINT#0, ENO => CheckENOSint2); Assert(resultSint2 = 0); Assert(CheckENOSint2 = TRUE); resultSint3 := CHS(IN := SINT#5, ENO => CheckENOSint3); Assert(resultSint3 = -5); Assert(CheckENOSint3 = TRUE); resultSint4 := CHS(IN := SINT#-128, ENO => CheckENOSint4); (* '-128' is the lower limit for SINT. *) Assert(resultSint4 = -128); (* The upper limit for SINT is: 127. Therefore, value '128' is not possible. *) Assert(CheckENOSint4 = TRUE); resultUsint1 := CHS(IN := USINT#3, ENO => CheckENOUsint1); Assert(resultUsint1 = 253); (* Upper limit for USINT = 255. Therefore, the block calculates: 255 - 3 + 1 = 253 *) Assert(CheckENOUsint1 = FALSE); resultUsint2 := CHS(IN := USINT#155, ENO => CheckENOUsint2); Assert(resultUsint2 = 101); (* Upper limit for USINT = 255. Therefore, the block calculates: 255 - 155 + 1 = 101 *) Assert(CheckENOUsint2 = FALSE); resultUsint3 := CHS(IN := USINT#0, ENO => CheckENOUsint3); Assert(resultUsint3 = 0); (* Upper limit for USINT = 255. The calculation '255 - 0 + 1' would result in the value '256' that is out of range. *) Assert(CheckENOUsint3= FALSE); resultUint := CHS(IN := UINT#3, ENO => CheckENOUint); Assert(resultUint = 65533); (* Upper limit for UINT = 65535. Therefore, the block calculates: 65535 - 3 + 1 = 253 *) Assert(CheckENOUint = FALSE); END_FUNCTION_BLOCK
Bei der Erstellung Ihrer Anwendung im ST-Editor erstellen Sie den Aufruf eines Bausteins, indem Sie den laut Syntax erforderlichen Text eintippen oder die Inhaltshilfe verwenden.