FP_CRC

Zyklische Blockprüfung

Dieser FP-Befehl berechnet die zyklische Blockprüfung (CRC) entsprechend der durch s1_Control festgelegten Methode. Die Werte werden durch die Anfangsadresse s2_Start und die Anzahl der Bytes n_Bytes festgelegt. Der CRC-Wert wird in den Speicherbereich d geschrieben.

Parameter

Eingang

s1_Control (WORD, INT, UINT)

Berechnungsmethode

s2_Start (WORD, INT, UINT)

Anfangsadresse

n_Bytes (WORD, INT, UINT)

Anzahl der Bytes

Ausgang

d (WORD, INT, UINT)

CRC-Wert

Anmerkungen

Spezifikationen für den Steuercode s1_Control

  1.  (1) Berechnungsmethode

    0: CRC (SYS_CRC_CALCULATION_METHOD_CRC16)

    1: CRC-CCITT (SYS_CRC_CALCULATION_METHOD_CRC16_CCITT)

  2.  (2) Ausgangsposition der Berechnung (Bytes ab s2_Start)

    16#0–16#F

  3.  (3) Ausgangsposition der Speicherung (Bytes ab d)

    16#0–16#F

  4.  (4) Umzuwandelnde Werte

    16#0: Binärwerte (1 Byte)

Generatorpolynome

CRC-16: x16 + x15 + x2 +1

CRC-CCITT: x16 + x12 + x5 +1

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

  • wenn die durch s1_Control festgelegte Berechnungsmethode oder die Umwandlungswerte außerhalb des zulässigen Bereichs liegen

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich

  • wenn die durch s1_Control festgelegte Berechnungsmethode oder die Umwandlungswerte außerhalb des zulässigen Bereichs liegen

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	VAR
		bStart: BOOL:=FALSE;
			(*activates the function*)
		wStartAddress: WORD:=16#1002;
		iNumberBytes: INT:=22;
		wCRC: WORD:=0;
		iControlCode: INT:=16#00B0;
	END_VAR

POE-Rumpf

Wenn die Variable bStart auf TRUE gesetzt wird, wird die Funktion ausgeführt.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_F,FP_CRC!,,10,1,17,7,,?DEN?Ds1_Control?Ds2_Start?Dn_Bytes?AENO?Cd);
B(B_CONTACT,,bStart,4,2,6,4,);
B(B_VARIN,,iControlCode,8,3,10,5,);
B(B_VARIN,,wStartAddress,8,4,10,6,);
B(B_VARIN,,iNumberBytes,8,5,10,7,);
B(B_VAROUT,,wCRC,17,3,19,5,);
L(1,3,4,3);
L(6,3,10,3);
L(1,0,1,7);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

FP_CRC(s1_Control := iControlCode, 
       s2_Start := wStartAddress, 
       n_Bytes := iNumberBytes, 
       d => wCRC);

Letzte Änderung am: 2022-04-19Feedback zu dieser SeitePanasonic Hotline