슬레이브 스테이션에서 데이터 읽기
이 명령은 MEWNET-F 슬레이브 스테이션의 지정된 인텔리전트 유닛에서 데이터를 읽습니다.
입력
마스터/슬레이브 구성에 대한 제어 데이터를 저장합니다.
읽을 메모리 영역의 시작 어드레스
읽을 워드 수(최대 32워드)
읽은 워드가 저장된 시작 16비트 영역(F153 참조)
변수 s2_Start 및 d_Start의 데이터 형식은 같아야 합니다.
여러 개의 F152_RMRD 명령과 F153_RMWT 명령을 동시에 실행할 수 없습니다. 프로그램은 F152_RMRD/F153_RMWT 명령 실행 활성화 플래그sys_bIsMewnetFNotActive가 TRUE일 때 이러한 명령이 실행되도록 설정해야 합니다.
sys_bIsMewnetFNotActive | 0: 실행 억제(F152_RMRD/F153_RMWT 명령 실행 중) 1: 실행 활성화됨 |
F152_RMRD 명령은 요청 수락만 가능합니다. 실제 처리는 스캔이 끝날 때 수행됩니다. F152_RMRD/F153_RMWT 명령 완료 플래그(R9036)는 명령이 실행되었는지 여부를 확인하는 데 사용할 수 있습니다.
sys_bIsMewnetFError | 0: 정상 완료 1: 에러와 함께 완료됨(sys_wMewnetFErrorCode에 에러 코드가 저장됨) |
sys_wMewnetFErrorCode | 에러 sys_bIsMewnetFError(TRUE로 전환되어 TRUE로 유지됨) 이 발생한 상태로 전송이 완료되었고 에러 내용(에러 코드)이 저장됩니다. |
에러 코드(16진수) |
설명 |
---|---|
16#5B |
타임아웃 에러(지정된 위치에서 인텔리전트 유닛을 찾을 수 없음) |
16#68 |
메모리 없음 에러(지정된 어드레스에 메모리가 없음) |
16#71 |
응답 전송 타임아웃 에러 |
16#72 |
전송 버퍼 전체 타임아웃 에러 |
16#73 |
응답 타임아웃 에러 |
에러 코드가 16#71–16#73인 경우 통신 타임아웃 에러가 발생했습니다. 시스템 레지스터 32의 설정을 사용하여 타임아웃 시간을 10.0ms ~ 81초 범위(10ms 단위) 내에서 변경할 수 있습니다. 기본값은 2초로 설정되어 있습니다.
s1이 마스터 및 슬레이브 유닛의 구성에 대한 제어 데이터를 네트워크에 저장합니다. n워드는 s2_Start에 지정된 인텔리전트 유닛의 공유 메모리 어드레스 번호부터 읽어옵니다. 결과는 d에 저장됩니다.
s1_Control 사양:
뱅크가 있는 인텔리전트 유닛: FP3 확장 데이터 메모리 유닛
주문 번호: AFP32091 AFP32092
제어 데이터가 s1_Control이 지정된 범위의 한계를 초과하는 경우
MEWNET-F 마스터 유닛을 찾을 수 없는 경우
데이터 읽기가 s2_Start 영역을 초과한 경우
제어 데이터가 s1_Control이 지정된 범위의 한계를 초과하는 경우
MEWNET-F 마스터 유닛을 찾을 수 없는 경우
데이터 읽기가 s2_Start 영역을 초과한 경우
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
Start: BOOL:=FALSE;
ControlData: DWORD:=16#000A0105;
(*No bank,
slot no. 10,
Master station 1,
Slave station 5*)
StartingAddress: WORD:=0;
NoWordsWrite: INT:=5;
WordsWritten: ARRAY [0..4] OF WORD:=[5(0)];
END_VAR
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,F152_RMRD,,11,1,20,8,,?DEN?D@'s1'?Ds2?Dn?Dd?AENO);
B(B_CONTACT,,Start,5,1,7,3,);
B(B_VARIN,,ControlData,9,3,11,5,);
B(B_VARIN,,StartingAddSlave,9,4,11,6,);
B(B_VARIN,,NumberWordsRead,9,5,11,7,);
B(B_VARIN,,WordsRead[0],9,6,11,8,);
L(1,0,1,8);
L(1,2,5,2);
L(7,2,11,2);
L(11,2,11,3);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (Start) Then
F152_RMRD(s1_Control := ControlData,
s2_Start := StartingAddress,
n_Number := NoWordsWrite,
d_Start := WordsRead[0]);
End_if;