7세그먼트 디코딩
이 FP 명령은 트리거 EN이 TRUE이면 데이터 또는 s에서 지정한 정수를 7세그먼트 표시의 4자리 데이터로 변환됩니다. 변환된 데이터는 d에서 시작되는 영역에 저장됩니다. 7세그먼트 표시에서는 1자릿수를 표시하기 위해 8비트(1바이트)가 필요합니다.
입력
데이터 또는 정수
출력
변환된 데이터 또는 정수
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
결과가 범위를 벗어난 경우
인덱스 한정자를 사용하여 지정한 영역이 제한을 초과하는 경우.
결과가 범위를 벗어난 경우
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bStart: BOOL:=FALSE;
(*activates the function*)
wInput_value: WORD:=16#A731;
wOutput_value: WORD:=0;
(*result after 0->1 leading
edge from start:
16#77274F06*)
END_VAR
변수 bStart가 TRUE로 설정되면 펑션이 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,FP_7SEGMENT!,,12,1,20,5,,?DEN?D@'s'?AENO?Cd);
B(B_CONTACT,,bStart,7,2,9,4,);
B(B_VARIN,,wInput_value,10,3,12,5,);
B(B_VAROUT,,wOutput_value,20,3,22,5,);
L(1,3,7,3);
L(9,3,12,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bStart then
FP_7SEGMENT(s := wInput_value, d => wOutput_value);
END_IF;