시스템 변수 sys_wHscOrPulseControlCode를 사용하여 고속 카운터와 펄스 출력 제어 코드가 저장된 특수 데이터 레지스터에 액세스할 수 있습니다. (시스템 변수 sys_wHscOrPulseControlCode는 특수 데이터 레지스터 DT90052에 해당됩니다.)
펄스 출력 제어 코드로 수행한 작업:
홈 위치에 가까워지면 이동을 감속하려면 원점근방 입력을 지정하고 펄스 출력 제어 코드(sys_wHscOrPulseControlCode)를 저장하는 특수 데이터 레지스터의 비트 4를 TRUE로 설정하고 다시 FALSE로 설정합니다.원점근방 비트가 유지됩니다. 이 비트를 TRUE로 설정한 후 바로 FALSE로 설정하면 원점복귀 중에 원점근방 입력 두 번째 시간을 설정할 수 있습니다.
펄스 출력 제어 코드(sys_wHscOrPulseControlCode)를 저장하는 데이터 레지스터의 비트 3을 TRUE로 설정하면 펄스 출력이 중지됩니다. 펄스 출력 명령을 사용하여 모든 프로그램에서 강제 정지를 설정할 수 있습니다. 비트 3을 FALSE로 다시 설정하여 펄스를 계속 출력합니다.
펄스 출력
경과값
1
제어 코드의 비트 1을 TRUE로 설정하면 계산이 금지되고 경과 값은 현재 값을 유지합니다. 비트 1을 FALSE로 초기화하면 계산이 계속 됩니다.
펄스 출력
경과값
펄스 출력 제어 코드의 비트 0(소프트웨어 리셋)
제어 코드의 비트 0을 TRUE로 설정하면 소프트웨어 리셋이 수행되고 경과 값은 0으로 설정됩니다. 비트 0이 FALSE로 초기화될 때까지 경과 값은 값 0을 유지합니다.
펄스 출력 명령 실행을 취소하려면 펄스 출력 제어 코드(sys_wHscOrPulseControlCode)를 저장하는 데이터 레지스터의 비트 2를 TRUE로 설정합니다. 그런 다음 펄스 출력 제어 플래그가 FALSE로 변경됩니다. 명령 실행을 다시 활성화하려면 비트 2를 FALSE로 다시 설정합니다.
제어 코드의 비트 0~15는 그룹 4개에 할당됩니다. 각 그룹의 비트 설정은 16진수로 표현됩니다(예: 00020000 0000 1001 = 16#2009).
그룹 |
(1) |
채널 번호(채널n: 16#n) |
|
그룹 |
0(고정) |
||
그룹 |
(2) |
원점근방 입력(비트 4) |
|
0: FALSE |
1: TRUE |
||
그룹 |
(3) |
펄스 출력(비트 3) |
|
0: 계속 |
1: 정지 |
||
(4) |
0(비트 2, 고정) |
||
(5) |
계산(비트 1) |
||
0: 허용 |
1: 금지 |
||
(6) |
경과 값을 0으로 초기화(비트 0) |
||
0: 아니요 |
1: 예 |
예: 16#2009
그룹 |
값 |
설명 |
|
---|---|---|---|
|
2 |
채널 번호: 2 |
|
|
0 |
(고정) |
|
|
0 |
원점근방 입력: FALSE |
|
|
9 |
16진수 9는 이진 1001에 해당됨 |
|
펄스 출력: 정지(비트 3) |
1 |
||
(비트 2, 고정) |
0 |
||
계산: 허용(비트 1) |
0 |
||
경과 값을 0으로 초기화: 예(비트 0) |
1 |
그룹 |
(1) |
채널 번호(채널n: 16#n) |
|
그룹 |
(2) |
1(고정) |
|
그룹 |
(3) |
원점근방 입력(비트 4)(참고 참조) |
|
0: FALSE |
1: TRUE |
||
그룹 |
(4) |
펄스 출력(비트 3) |
|
0: 계속 |
1: 정지 |
||
(5) |
계산(비트 1) |
||
0: 허용 |
1: 금지 |
||
(6) |
경과 값을 0으로 초기화(비트 0) |
||
0: 아니요 |
1: 예 |
예: 16#2109
그룹 |
값 |
설명 |
|
---|---|---|---|
|
2 |
채널 번호: 2 |
|
|
1 |
(고정) |
|
|
0 |
원점근방 입력: FALSE |
|
|
9 |
16진수 9는 이진 1001에 해당됨 |
|
펄스 출력: 정지(비트 3) |
1 |
||
(비트 2 고정) |
0 |
||
계산: 허용(비트 1) |
0 |
||
경과 값을 0으로 초기화: 예(비트 0) |
1 |
제어 코드의 비트 0~15는 그룹 4개에 할당됩니다. 각 그룹의 비트 설정은 16진수로 표현됩니다(예: 00020001 0000 1001 = 16#2109).
그룹 |
(1) |
채널 번호(채널n: 16#n) |
|
그룹 |
1(고정) |
||
그룹 |
(2) |
위치 제어 시작 요청 |
|
0: 무효 |
1: 유효 |
||
(3) |
감속 정지 요청 |
||
0: 무효 |
1: 유효 |
||
(4) |
원점근방 입력(비트 4)(참고 참조) |
||
0: FALSE |
1: TRUE |
||
그룹 |
(5) |
펄스 출력(비트 3) |
|
0: 계속 |
1: 정지 |
||
(6) |
펄스 출력 제어 취소(비트 2) |
||
0: 계속 |
1: 정지 |
||
(7) |
계산(비트 1) |
||
0: 허용 |
1: 금지 |
||
(8) |
경과 값을 0으로 초기화(비트 0) |
||
0: 아니요 |
1: 예 |
예: 16#2109
그룹 |
값 |
설명 |
|
---|---|---|---|
|
2 |
채널 번호: 2 |
|
|
1 |
(고정) |
|
|
0 |
위치 제어 시작 요청: 무효 |
|
감속정지 요청: 무효 |
|||
원점근방 입력: FALSE |
|||
|
9 |
16진수 9는 이진 1001에 해당됨 |
|
펄스 출력: 정지(비트 3) |
1 |
||
펄스 출력 제어 취소(비트 2) |
0 |
||
계산: 허용(비트 1) |
0 |
||
경과 값을 0으로 초기화: 예(비트 0) |
1 |
제어 코드의 비트 0~15는 그룹 4개에 할당됩니다. 각 그룹에는 1채널 설정이 포함되어 있습니다. 각 그룹의 비트 설정은 16진수로 표현됩니다(예: 0000 0000 1001 0000 = 16#90).
그룹 |
|
|
채널 |
1 |
0 |
0: 계속
1: 정지
0: FALSE
1: TRUE
0: 허용
1: 금지
0: 아니요
1: 예
예: 16#90
그룹 |
값 |
설명 |
|
---|---|---|---|
|
9 |
채널 번호: 1 16진수 9는 이진 1001에 해당됨 |
|
펄스 출력: 정지(비트 3) |
1 |
||
원점근방 입력: FALSE(비트 2) |
0 |
||
계산: 허용(비트 1) |
0 |
||
경과 값을 0으로 초기화: 예(비트 0) |
1 |
||
|
0 |
– |
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bEnableNearHome: BOOL:=FALSE;
END_VAR
VAR CONSTANT
PLS_CH2_ENABLE_NEAR_HOME: WORD:=16#2010;
(*Enables near home input for channel 2*)
PLS_CH2_CONTINUE: WORD:=16#2000;
(*Disables near home input for channel 2
and starts deceleration*)
END_VAR
원점복귀 동작 중에 채널 2의 원점근방 입력이 활성화됩니다.
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_VARIN,,PLS_CH2_ENABLE_NEAR_HOME,20,2,22,4,);
B(B_VARIN,,PLS_CH2_CONTINUE,20,6,22,8,);
B(B_F,E_MOVE!,Instance,22,0,28,4,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,28,2,30,4,);
B(B_F,E_MOVE!,Instance,22,4,28,8,,?DEN?D?AENO?C);
B(B_VAROUT,,sys_wHscOrPulseControlCode,28,6,30,8,);
B(B_CONTACT,,bEnableNearHome,4,1,6,3,R);
L(7,2,7,6);
L(1,2,4,2);
L(6,2,22,2);
L(7,6,22,6);
L(1,0,1,8);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if DF(bEnableNearHome) then
PLS_CH2_ENABLE_NEAR_HOME:=sys_wHscOrPulseControlCode;
PLS_CH2_CONTINUE:=sys_wHscOrPulseControlCode;
end_if;
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다.모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
채널 0에 대해 펄스 출력의 강제 정지가 수행됩니다.
if DF(bStopPulseOutput) then
PLS_CH2_STOP_PULSE_OUTPUT:=sys_wHscOrPulseControlCode;
PLS_CH2_CONTINUE:=sys_wHscOrPulseControlCode;
end_if;
강제 정지를 수행하면 PLC 출력 측의 경과 값과 모터 입력 측의 경과 값이 달라질 수 있습니다. 따라서 펄스 출력이 정지된 후에 복귀원점을 실행해야 합니다.