인텔리전트 유닛에서 데이터 읽기
인텔리전트 모듈의 공유 메모리에서 데이터를 읽을 수 있습니다.
입력
인텔리전트 모듈의 공유 메모리에서 뱅크/슬롯 번호 지정
인텔리전트 모듈의 공유 메모리에서 시작 어드레스 지정(소스 데이터 어드레스)
읽을 워드 수 지정
데이터 읽기를 저장하는 CPU의 시작 어드레스(대상 어드레스)
s1_BankSlot에서 지정한 인텔리전트 유닛/보드의 공유 메모리에 저장된 데이터의 n_Number 워드는 s2_Start에서 지정한 어드레스에서 읽히며 CPU의 d_Start에서 지정한 영역에 저장됩니다.
입력에서의 변수 인수 수는 PLC의 사용 가능한 인덱스 레지스터에 의해 제한됩니다.
s1_BankSlot 지정
뱅크가 없는 인텔리전트 유닛
타겟 인텔리전트 유닛이 설치된 슬롯 번호를 지정합니다.
뱅크가 있는 인텔리전트 유닛
타겟 인텔리전트 유닛이 설치된 슬롯 번호(16진수 정수)와 뱅크 번호(16진수 정수)를 지정합니다.
이름 |
주문 번호 |
|
FP3 확장 데이터 메모리 유닛 |
AFP32091 AFP32092 |
|
FPS 확장 데이터 메모리 유닛 |
AFPG201 |
s1_BankSlot이 지정 범위 제한을 초과한 경우
데이터 읽기가 d_Start 영역을 초과한 경우
s1_BankSlot이 지정 범위 제한을 초과한 경우
데이터 읽기가 d_Start 영역을 초과한 경우
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
Start: BOOL:=FALSE;
(*activates the function*)
SlotNo: WORD:=16#03;
(*if start is TRUE, this value
gets 2 words from the address
1 from the unit-slot 0*)
AddrDataToRead: INT:=19;
NoWordsToRead: INT:=4;
DestAddrCPU: ARRAY [0..3] OF INT:=[4(0)];
(*Starting address in CPU to store data read*)
END_VAR
AddrDataToRead에서 지정한 인텔리전트 유닛의 공유 메모리(슬롯 3에 위치)의 시작 어드레스(19부터 시작)에 저장된 데이터의 4워드를 읽습니다. 그런 다음 Start가 켜지면 배열 DestAddrCPU에 저장합니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 8 ;
NETWORK_BODY
B(B_F,F150_READ!,Instance,13,1,21,8,,?DEN?Ds1_BankSlot?Ds2_Start?Dn_Number?Dd_Start?AENO);
B(B_VARIN,,SlotNo,11,3,13,5,);
B(B_VARIN,,NoWordsToRead,11,4,13,6,);
B(B_VARIN,,NoWordsToRead,11,5,13,7,);
B(B_VARIN,,DestAddrCPU[0],11,6,13,8,);
B(B_CONTACT,,Start,7,2,9,4,);
L(9,3,13,3);
L(1,3,7,3);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start then
F150_READ( s1_BankSlot:= SlotNo,
s2_Start:= AddrDataToRead,
n_Number:= NoWordsToRead,
d_Start:= DestAddrCPU[0]);
END_IF;