펑션블럭을 사용자 정의 펑션으로 변환하여 프로그램 단계 저장
이러한 펑션의 주요 목적은 펑션블럭(FB)의 치환을 펑션(FUN)으로 단순화하는 것입니다. 별도의 서브루틴에 있는 여러 FB 인스턴스는 하나의 서브루틴에 있는 하나의 펑션으로 치환됩니다.
펑션블럭 |
변환된 펑션 |
모든 Panasonic 명령을 하나의 공통 펑션에 사용할 수 있는 것은 아닙니다. 하나의 공통 펑션에서 사용할 수 없는 명령의 예:
F166_HighSpeedCounter_Set, F165_HighSpeedCounter_Cam 등 일부 고속 카운터 명령
F166_PulseOutput_Set, F171_PulseOutput_Trapezoidal 등 일부 위치결정 명령
이것을 상세하게 체크해야 합니다.
훨씬 적은 수의 프로그램 코드가 필요할 수 있음
훨씬 적은 수의 릴레이가 필요할 수 있음 (R)
메모리 DUT의 배열을 사용하여 루프에 사용할 수 있음
추가 개발 및 유지 관리 작업 필요
변환된 펑션을 매우 신중하게 테스트해야 함
사용자의 더 많은 노력 필요
모니터링할 수 있는 인스턴스가 없기 때문에 모니터링이 더 어려움. 마지막 호출만 모니터링됨.
더 많은 데이터 레지스터(DT)가 필요할 수 있음
PLC 성능이 저하되고 스캔 시간이 늘어남
타이머 펑션의 동작이 타이머 FB와 약간 다를 수 있음
특히 새 펑션이 여러 번 호출될 때 새 펑션의 동작이 FB의 동작과 일치하는지 매우 주의 깊게 테스트하십시오.
펑션블럭 대신 펑션은 꼭 필요한 경우에만 사용해야 합니다.
펑션블럭 대신 펑션은 정말로 필요한 만큼만 사용해야 합니다.
최소 작업으로 최대의 이점을 얻을 수 있도록 어떤 펑션블럭을 변환해야 하는지 매우 주의 깊게 분석하십시오.
펑션블럭의 변환 여부를 결정하는 주요 기준은 다음과 같습니다. 펑션블럭은 얼마나 자주 호출되며, 펑션블럭에는 몇 개의 단계가 필요합니까?
이것은 저장할 수 있는 프로그램 코드 스텝 수를 계산하는 공식입니다.
현재 상황은 다음과 같습니다.
지정된 펑션블럭
X회 호출됨
Y 스텝 사용 => 총 스텝 수: X * Y 스텝
TON, SR, 펄스 플래그 사용
지정된 FB는 다음이 필요한 함수로 치환될 수 있습니다.
X 호출에서 메모리 DUT 데이터를 두 번 복사하는 추가 스텝(예: 대략 X * 2 * 7 스텝)(예: 2개의 FP10_BKMV에 대해)
하나의 공통 펑션 호출에 대해 Y * 2 스텝(일부 추가 스텝이 가정됨)
다음의 하나의 공통 호출:
TON_FUN(xxx 스텝 사용)
SR_FUN(xxx 스텝 사용)
R_TRIG_FUN(xxx 스텝 사용)
이 계산 예는 대략적인 수치만 제공합니다.
지정된 펑션블럭
30회 호출됨
750 스텝 사용 => 총 스텝 수: 30 * 750 스텝 = 22500 스텝
TON, SR, 펄스 플래그 사용
지정된 FB는 다음이 필요한 함수로 치환될 수 있습니다.
30회 호출에서 메모리 DUT 데이터를 두 번 복사하는 추가 스텝(예: 30 * 2 * 7 스텝 = 420 스텝)(예: 2개의 FP10_BKMV에 대해)
하나의 공통 펑션 호출에 대해 750 * 2 스텝 = 1500 스텝(일부 추가 스텝이 가정됨)
다음의 하나의 공통 호출:
TON_FUN(200 스텝 사용)
SR_FUN(35 스텝 사용)
R_TRIG_FUN(35 스텝 사용)
총 스텝 수: 420 스텝 + 1500 스텝 + 200 스텝 + 35 스텝 + 35 스텝 = 2190 스텝
결과: 이 펑션을 사용하여 대략 22500 스텝 - 2190 스텝 = 20310 스텝을 줄일 수 있습니다.
사용자 펑션블럭 XXX를 펑션 XXX_FUN으로 변환하는 절차
이름 규칙을 유지하는 것이 좋습니다.
가정: 데이터 형식이 XXX_FUN_INSTANCE_DUT인 VAR_IN_OUTdutXXX가 있는 펑션 XXX가 모든 예에 사용됩니다.
동작 |
원래 프로그래밍 예제 |
변환된 프로그래밍 예제 |
---|---|---|
호출 |
||
FB POU 헤더 |
FUN POU 헤더 |
|
DUT XXX_FUN_INSTANCE_DUT |
||
셋(S) 리셋(R) |
||
KEEP |
||
조건 할당, 계산 |
||
늘어나는/감소하는 변수 값 |
||
펄스 플래그 |
||
펑션의 끝에서: 필요한 경우 일부 메모리 변수를 해당 출력 변수에 할당: |
||
SR |
||
RS |
||
TON |
||
TM_100ms |
가정: 데이터 형식이 XXX_FUN_INSTANCE_DUT인 VAR_IN_OUTdutXXX가 있는 펑션 XXX가 모든 예에 사용됩니다.
동작 |
원래 프로그래밍 예제 |
변환된 프로그래밍 예제 |
---|---|---|
셋(S) 리셋(R) |
|
|
KEEP |
|
|
조건 할당, 계산 |
|
|
늘어나는/감소하는 변수 값 |
|
|
펄스 플래그 |
|
|
펑션의 끝에서: 필요한 경우 일부 메모리 변수를 해당 출력 변수에 할당: |
|
|
SR |
|
|
RS |
|
|
TON |
|
|
TM_100ms |
|
|