Unit_AnalogInOut_FPG_A44FPG-A44 유닛에서 쓰고 읽는 펑션입니다.
이 펑션은 아날로그 유닛의 아날로그 출력 채널에 디지털 데이터를 쓰고 아날로그 입력 채널에서 변환된 디지털 데이터를 읽습니다. 변환될 디지털 값과 아날로그 값인 출력은 iOutChannel0~iOutChannel3에 지정되어 있습니다. 아날로그 유닛의 변환된 디지털 값은 출력 변수 iInChannel0~iInChannel3에 채널별로 저장됩니다.
입력 및 출력 형식(전압 또는 전류)도 이 펑션으로 설정됩니다.

입력
슬롯 번호를 지정합니다.
아날로그 유닛으로 변환될 디지털 값과 출력을 설정합니다.
각 채널 번호에 대한 전압 또는 전류 입력을 설정합니다.
TRUE: 전류 입력
FALSE: 전압 입력
각 채널 번호에 대한 전압 또는 전류 출력을 설정합니다.
TRUE: 전류 출력
FALSE: 전압 출력
출력
채널을 통해 아날로그 유닛에서 변환된 디지털 데이터를 반환합니다.
전압 출력 |
전류 출력 | ||
|---|---|---|---|
디지털 값(INT) |
아날로그 값 |
디지털 값(INT) |
아날로그 값 |
4095 |
10V |
4095 |
20mA |
2048 |
5V |
2048 |
12mA |
0 |
0V |
0 |
4mA |
-2048 |
-5V |
||
-4095 |
-10V |
||
A/D 변환
전압 입력 |
전류 입력 |
||
|---|---|---|---|
디지털 값(UINT) |
아날로그 값 |
디지털 값(UINT) |
아날로그 값 |
65535 |
10V |
65535 |
20mA |
32768 |
5V |
39321 |
12mA |
0 |
0V |
13107 |
4mA |
0 |
0 |
||

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다.
모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.

VAR
iOutChannel0: INT:=0;
iOutChannel1: INT:=0;
iOutChannel2: INT:=0;
iOutChannel3: INT:=0;
bSetInChannel0ToCurrent: BOOL:=FALSE;
bSetOutChannel0ToCurrent: BOOL:=FALSE;
bSetInChannel1ToCurrent: BOOL:=FALSE;
bSetInChannel2ToCurrent: BOOL:=FALSE;
bSetInChannel3ToCurrent: BOOL:=FALSE;
bSetOutChannel1ToCurrent: BOOL:=FALSE;
bSetOutChannel2ToCurrent: BOOL:=FALSE;
bSetOutChannel3ToCurrent: BOOL:=FALSE;
uiInChannel0: UINT:=0;
uiInChannel1: UINT:=0;
uiInChannel2: UINT:=0;
uiInChannel3: UINT:=0;
END_VAR

BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 1 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 16 ;
NETWORK_BODY
B(B_F,Unit_AnalogInOut_FPG_A44!,,14,1,29,16,,?DiOutChannel0?DiOutChannel1?DiOutChannel2?DiOutChannel3?DiSlotNumber?DbSetInChannel0ToCurrent?DbSetInChannel1ToCurrent?DbSetInChannel2ToCurrent?DbSetInChannel3ToCurrent?DbSetOutChannel0ToCurrent?DbSetOutChannel1ToCurrent?DbSetOutChannel2ToCurrent?DbSetOutChannel3ToCurrent?AuiInChannel0?AuiInChannel1?AuiInChannel2?AuiInChannel3);
B(B_VARIN,,iOutChannel0,12,2,14,4,);
B(B_VARIN,,iOutChannel1,12,3,14,5,);
B(B_VARIN,,iOutChannel2,12,4,14,6,);
B(B_VARIN,,iOutChannel3,12,5,14,7,);
B(B_VARIN,,4,12,6,14,8,);
B(B_VARIN,,bSetInChannel0ToCurrent,12,7,14,9,);
B(B_VARIN,,bSetInChannel1ToCurrent,12,8,14,10,);
B(B_VARIN,,bSetInChannel2ToCurrent,12,9,14,11,);
B(B_VARIN,,bSetInChannel3ToCurrent,12,10,14,12,);
B(B_VARIN,,bSetOutChannel0ToCurrent,12,11,14,13,);
B(B_VARIN,,bSetOutChannel1ToCurrent,12,12,14,14,);
B(B_VARIN,,bSetOutChannel2ToCurrent,12,13,14,15,);
B(B_VARIN,,bSetOutChannel3ToCurrent,12,14,14,16,);
B(B_VAROUT,,uiInChannel0,29,2,31,4,);
B(B_VAROUT,,uiInChannel1,29,3,31,5,);
B(B_VAROUT,,uiInChannel2,29,4,31,6,);
B(B_VAROUT,,uiInChannel3,29,5,31,7,);
L(1,0,1,16);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
Unit_AnalogInOut_FPG_A44(iOutChannel0 := iOutChannel0,
iOutChannel1 := iOutChannel1,
iOutChannel2 := iOutChannel2,
iOutChannel3 := iOutChannel3,
iSlotNumber := 4,
bSetInChannel0ToCurrent := bSetInChannel0ToCurrent,
bSetInChannel1ToCurrent := bSetInChannel1ToCurrent,
bSetInChannel2ToCurrent := bSetInChannel2ToCurrent,
bSetInChannel3ToCurrent := bSetInChannel3ToCurrent,
bSetOutChannel0ToCurrent := bSetOutChannel0ToCurrent,
bSetOutChannel1ToCurrent := bSetOutChannel1ToCurrent,
bSetOutChannel2ToCurrent := bSetOutChannel2ToCurrent,
bSetOutChannel3ToCurrent := bSetOutChannel3ToCurrent,
uiInChannel0 => uiInChannel0,
uiInChannel1 => uiInChannel1,
uiInChannel2 => uiInChannel2,
uiInChannel3 => uiInChannel3);