FP0H의 캠 제어
이 명령은 고속 카운터의 경과값에 따라 최대 32개 목표값을 사용하여 지정된 DUT의 파라미터에서 지정한 대로 캠 제어를 수행합니다. 모든 단일 캠 출력의 경우 목표값은 ON 및 OFF 설정값의 쌍 하나로 설정됩니다.
경과값이 목표값 중 하나와 일치할 때마다 인터럽트 프로그램을 실행할 수 있습니다.
입력
고속 카운터 채널: 0-3
데이터 테이블이 포함된 영역의 시작 어드레스
출력
출력 워드 어드레스가 포함된 영역의 시작 어드레스(WR, WL 또는 WY)(예: BOOL32_OVERLAPPING_DUT). diNumberOfTargetValuesAndOutputRelays를 사용하여 번호 설정에 따라 크기(16 또는 32비트)를 선택합니다.
입력
샘플과 같은 다음 DUT를 사용하여 자체 DUT 만들기: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT
DUT에서 F168_PulseOutput_Home_DUT 파라미터를 지정할 수 있습니다.
제어 코드
출력의 워드 어드레스
목표값 수
(F165_HighSpeedCounter_Target_Values_OnOff_DUT의 ON/OFF 설정값)
최대 목표값
설정 범위: 1–2147483646 (16#1–16#7FFFFFFE)
출력
목표값 수가 1–16 범위 내에 있으면 1워드가 사용됩니다. 목표값 수가 17–32 범위 내에 있으면 2워드가 사용됩니다.
예: 출력 어드레스가 "내부 플래그"로 설정되면 출력 어드레스의 시작 워드 번호는 "0"으로 설정되고 목표값 수는 "32"로 설정된 후 R0~R1F는 캠 출력의 어드레스로 할당됩니다.
출력 플래그(Y)가 지정된 경우 값은 CPU 출력과 연산 메모리 모두에 출력됩니다.
예
1000–4999 R100: ON
7000–8999 R101: ON
F165_HighSpeedCounter_Cam을 사용하면 지정된 목표값으로 제어를 수행할 수 있습니다. 최대 목표값 제어의 활성화/비활성화 설정과 최대 목표값은 데이터 테이블에 지정되어 있습니다.
데이터 테이블은 목표값 수와 지정된 최대 목표값 설정에 따라 12~138 워드 범위 사이입니다.
데이터 테이블 끝의 최대 목표값은 dwCamControlCode에서 목표값 제어가 16#0010(최대값 포함)으로 설정된 경우에만 유효합니다. 목표값 제어를 16#0000(최대값 미포함)으로 설정하면 이 설정을 생략할 수 있습니다.
유효 |
무효 |
||
---|---|---|---|
계산 범위 |
0~목표값 |
최소 음의 값~최대 양의 값 |
|
계산 범위를 초과하면 연산 |
증가 계산: |
경과값이 목표값을 초과하면 0으로 설정됩니다. |
경과값이 최대 양의 값을 초과하면 최소 음의 값으로 돌아갑니다. |
감소 계산: 데이터 테이블의 포인터는 마지막 목표값에서 목표값 1로 이동합니다. |
경과값이 0 미만이면 목표값으로 설정됩니다. |
경과값이 최소 음의 값 미만하면 최대 양의 값으로 돌아갑니다. |
출력은 ON 설정값과 OFF 설정값에 따라 달라집니다.
OFF 목표값 > ON 설정값
경과값이 ON 설정값보다 크거나 같고 OFF 설정값보다 작으면 해당 출력 비트가 켜집니다. 경과값이 범위를 벗어나면 해당 비트가 꺼집니다.
증가 계산: |
감소 계산: |
---|---|
OFF 설정값(1) > ON 설정값(2) |
ON 설정값 > OFF 설정값
경과값이 ON 설정값보다 작고 OFF 설정값보다 크거나 같으면 해당 출력 비트가 꺼집니다. 경과값이 범위를 벗어나면 해당 비트가 켜집니다.
증가 계산: |
감소 계산: |
---|---|
ON 설정값(1) > OFF 설정값(2) |
ON 설정값 = OFF 설정값
경과값이 범위를 벗어나면 해당 비트가 꺼집니다.
증가 계산: |
감소 계산: |
---|---|
ON 설정값(1) = OFF 설정값(2) |
시스템 레지스터에서 원하는 채널의 고속 카운터 입력을 선택합니다.
고속 카운터 명령이 실행되면 사용한 채널의 고속 카운터 제어 플래그(예: sys_bIsHscChannel0ControlActive)는 TRUE로 전환됩니다. 같은 채널을 사용하여 다른 고속 카운터 명령을 실행하면 제어 플래그는 더 이상 TRUE가 아닙니다.
최대 두 채널에서 이 명령을 동시에 실행할 수 있습니다.
명령 실행을 취소하려면 고속 카운터 제어 코드(sys_wHscOrPulseControlCode)를 저장하는 데이터 레지스터의 비트 3을 TRUE로 설정합니다. 그러면 고속 카운터 제어 플래그는 FALSE로 변경됩니다. 고속 카운터 명령 실행을 다시 활성화하려면 비트 3을 FALSE로 초기화합니다.sys_wHscOrPulseControlCode의 비트 3을 TRUE로 설정하면 최대 목표값 제어도 비활성화됩니다. 최대 목표값 제어가 중지되면 캠 출력은 유지되고 고속 카운터는 계속 계산합니다.
명령이 활성화되기 전에 고속 카운터 경과값을 재설정 또는 사전 설정합니다.
명령 실행 중에 사용된 채널의 경과값을 다시 쓰면 예상치 못한 연산이 발생할 수 있습니다.
명령이 주 프로그램에서 실행되면 인접 목표값 사이의 최소 시간 범위가 스캔 시간보다 큰 지 확인하십시오.
명령이 인터럽트 프로그램에서 실행되면 인접 목표값 사이의 최소 시간 범위가 인터럽트 프로그램의 최대 실행 시간보다 큰 지 확인하십시오.
재설정 입력 또는 소프트웨어 재설정을 사용하고 있는 경우, 목표값 1이 정수이고 ³ 1인지 확인하십시오.
최대 목표값 제어가 재설정 입력 또는 소프트웨어 재설정과 함께 사용되는 경우, 동시에 사용하지 마십시오.
고속 카운터 제어 중에 하드웨어 재설정 또는 소프트웨어 재설정을 실행하면 고속 카운터 경과값은 0으로 재설정됩니다. 캠 제어에 할당된 출력은 경과값 0에 따라 출력됩니다.
또한 경과값이 각 목표값에 도달할 때마다 인트럽트 프로그램 INTn이 시작될 수 있습니다. 이 연산의 경우 인터럽트 제어 명령 ICTL을 통해 인터럽트 프로그램 활성화가 허용되어야 합니다.
목표값 > 최대 목표값인 경우.
목표값= 0인 경우.
목표값은 오름차순으로 정렬되지 않은 경우
목표값 > 최대 목표값인 경우.
목표값= 0인 경우.
목표값은 오름차순으로 정렬되지 않은 경우
DUT F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT는 FP Library에서 사전 정의되고 샘플로 사용될 수 있습니다.
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bEnable: BOOL:=FALSE;
dutF165FP0H_CH0: F165_HighSpeedCounter_Cam_8_Values_OnOff_DUT;
END_VAR
VAR_EXTERNAL
g_dutCamControl_WY0: BOOL32_OVERLAPPING_DUT;
END_VAR
변수 bEnable이 TRUE로 설정되면 함수가 실행됩니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,bEnable,5,1,7,3,);
B(B_F,F165_HighSpeedCounter_Cam!,,14,0,28,5,,?DEN?HiHscChannel?Ds_dutDataTable?AENO?CdutBitOutputs);
B(B_VARIN,,0,12,2,14,4,);
B(B_VAROUT,,g_dutCamControl_WY0,28,2,30,4,);
B(B_VARIN,,dutF165FP0H_CH0,12,3,14,5,);
L(1,0,1,6);
L(1,2,5,2);
L(7,2,14,2);
END_NETWORK_BODY
END_NET_WORK
END_BODY
if (bEnable) then
F165_HighSpeedCounter_Cam(iHscChannel := 0, s_dutDataTable := dutF165FP0H_CH0,
dutBitOutputs => g_dutCamControl_WY0);
end_if;