펄스 승수(Pulse Multiplier, PMUL)

이 정보
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370,
GuardLogix
5570,
CompactLogix
5380,
ControlLogix
5580 및 ControlLogix 5590 컨트롤러에 적용됩니다.
PMUL 명령어는 한 스캔에서 다음 스캔으로 입력의 변화를 계산하여 위치 입력 모듈에서 디지털 시스템으로 리졸버나 인코더 피드백 모듈 같은 인터페이스를 제공합니다. 특정 워드 크기를 선택해 PMUL 명령어를 구성, 롤오버 경계를 통해 연속 선형 미분합니다.
사용 가능한 언어
래더 다이어그램
이 명령어는 래더 다이어그램에 사용할 수 없습니다.
펑션 블록
RSL5K_PMUL Function Block_v31
구조화된 텍스트
PMUL(PMUL_tag);
피연산자
펑션 블록
피연산자
유형
형식
설명
PMUL tag
PULSE_MULTIPLIER
구조
PMUL 구조
구조화된 텍스트
피연산자
유형
형식
설명
PMUL tag
PULSE_MULTIPLIER
구조
PMUL 구조
스트럭쳐드 텍스트 내 식의 구문에 대한 자세한 내용은 스트럭쳐드 텍스트 구문을 참조하십시오.
PULSE_MULTIPLIER 구조
입력 매개 변수
데이터 유형
설명
EnableIn
BOOL
활성화 입력. 선택하지 않으면 명령이 실행되지 않고 출력이 업데이트되지 않습니다.
기본값은 설정 상태입니다.
In
DINT
명령어에 대한 아날로그 입력 신호.
유효값 = 임의의 DINT
기본값 = 0
Initialize
BOOL
초기화 입력. 설정되면 Out은 0.0으로 유지되고 내부 레지스터는 모두 0으로 설정됩니다. 해제된 초기화의 전환 설정에서, In
n-1
= InitialValue (절대 모드에서는 유효하지 않음) 해제되면 명령어는 정상 실행됩니다.
InitialValue
DINT
초기값 입력. 해제된 초기화의 전환 설정에서, In
n-1
= InitialValue
유효값= DINT
기본값 = 0.
Mode
BOOL
모드 입력. 설정하면 상대 모드가 켜집니다. 절대 모드를 활성화하려면 해제합니다.
기본값은 설정 상태입니다.
WordSize
DINT
워드 크기는 비트입니다. 상대 모드에서 (In
n
-In
n-1
)를 계산할 때 사용할 비트의 수를 지정합니다.
WordSize는 절대 모드에서 사용하지 않습니다.
In의 변화량이 1/2 * 2
(Wordsize-1)
보다 크면 Out는 부호가 변합니다.
WordSize가 유효하지 않으면 Out은 유지되고 명령어는 Status에 적절한 비트를 설정합니다.
유효값 = 2~32
기본값 = 14
Multiplier
DINT
승수. 이 값을 100,000으로 나누면 Out에 대한 In의 비를 제어할 수 있습니다. 유효하지 않으면 명령어는 값을 제한하고 Status에 적절한 비트를 설정합니다.
유효값 = -1,000,000~1,000,000까지
기본값 = 100,000
출력 매개 변수
데이터 유형
설명
EnableOut
BOOL
활성화 출력.
Out
REAL
명령어는 Out입니다. Out 계산에 오버플로가 발생하면 Out은
+
/- Infinity sign가 되고 Status에 적절한 비트가 설정됩니다. 이 출력에 대해 연산 상태 플래그가 설정됩니다.
Status
DINT
펑션 블록의 상태.
InstructFault (Status.0)
BOOL
명령어에서 다음 실행 에러 중 하나가 감지됩니다. 마이너 또는 메이저 컨트롤러 에러가 아닙니다. 나머지 상태 비트를 확인하여 발생한 에러를 판단합니다.
WordSizeInv (Status.1)
BOOL
유효하지 않은 WordSize 값
OutOverflow (Status.2)
BOOL
내부 출력 계산에 오버플로우가 발생했습니다.
LostPrecision (Status.3)
BOOL
Out < -2
24
또는 Out > 2
24
. 명령어가 Out을 정수에서 실수 값으로 변환할 때 결과가 |2
24
|보다 큰 경우 데이터가 손실됩니다. REAL 데이터 유형이 2
24
으로 제한되기 때문입니다.
MultiplierInv (Status.4)
BOOL
유효하지 않은 Multiplier 값.
설명
PMUL 명령어는 상대 또는 절대 모드로 작동합니다.
상대 모드에서 명령어의 출력은 스캔 간 입력의 미분에 (Multiplier/100,000)를 곱한 것입니다. 상대 모드에서 명령어는 스캔에서 나누기 연산 후 나머지를 저장하고 다음 스캔 시 그것을 다시 더합니다. 이렇게 하면 연산 중에 위치 정보를 잃어버리지 않습니다.
PMUL Description relative mode
절대 모드에서 명령어는 한 스캔에서 다른 스캔으로 정보를 잃지 않고 위치 같은 입력을 위로 조정할 수 있습니다.
PMUL Description
출력과 나머지 계산
PMUL 명령어는 이 등식을 이용해 상대 또는 절대 모드에서 Out을 계산합니다.
Ans = ((DiffInput x Multiplier) + INT_Remainder)
INT_Out = Ans / 100,000
INT_Remainder= Ans - (INT_Out * 100,000)
Out = INT_Out
연산 상태 플래그에 영향
아니요
폴트 조건
부 폴트 발생 조건
폴트 유형
폴트 코드
기능이 활성화되고 오버플로가 감지됨
4
4
피연산자 관련 폴트에 대해서는 공통 속성 항목을 참조하십시오.
실행
펑션 블록
조건
펑션 블록 조치
사전 스캔
EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다.
Tag.EnableIn이 거짓임
EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다.
Tag.EnableIn이 참임
EnableIn 및 EnableOut 비트가 참으로 설정됩니다.
명령어가 실행됩니다.
명령어 최초 실행
N/A
명령어 최초 스캔
In
n-1
= In. Out
n-1
=0. 나머지 = 0.
사후 스캔
EnableIn 및 EnableOut 비트가 거짓으로 해제됩니다.
구조화된 텍스트
조건/상태
수행한 작업
사전 스캔
펑션 블록 표의 사전 스캔을 참조하십시오.
정상 실행
펑션 블록 표에서 Tag.EnableIn이 참임을 참조하십시오.
사후 스캔
펑션 블록 표에서 사후 스캔을 참조하십시오.
예
예 1
PMUL 명령어의 보편적인 용도는 연산의 상대 모드에 있습니다. 이 모드에서는 PMUL 명령어가 몇 가지 역할을 합니다. 먼저 상대 모드에서는 PMUL 명령어가 입력에서 수신된 정보를 한 스캔에서 다른 스캔으로 미분합니다. 데이터가 수신되면 명령어는 입력의 차를 한 스캔에서 다른 스캔으로 출력합니다. 이는 스캔 "n"에서 In = 500이고 스캔 "n+1"에서 In = 600이면, 스캔 "n+1"에서 Out = 100이라는 의미입니다.
둘째, PMUL 명령어는 이 연산 모드에 있을 때 피드백 모듈에서 유래하는 2진 데이터의 "롤오버" 값도 보상합니다. 예컨대, 리졸버 피드백 모듈은 2진값으로 표시된 분해능 12비트와 -2048 ~ 2047 범위의 부호를 가질 수 있습니다. 피드백 모듈에서 오는 원시 데이터의 측면에서 피드백 장치의 회전은 다음과 같이 표시될 수도 있습니다.
PMUL Example 1
이 예에서 피드백 데이터가 2047에서 -2048로 움직일 때 위치의 실제 변화는 위치가 4095 카운트 수만큼 점프하는 것에 해당합니다. 하지만 실제로 이 같은 위치의 변화는 리졸버 피드백 장치의 회전 측면에서 4096 중 한 부품에 불과합니다. PMUL 명령어는 피드백 모듈에서 입력되고 있는 데이터의 실제 워드 크기를 파악해 아래 다이어그램과 같이 데이터를 회전하며 봅니다.
PMUL Example 2
PMUL 명령어는 이 블록에 입력되는 데이터의 워드 크기를 알아내 수학적으로 계산된 4095가 아니라 블록에 대한 입력이 2047에서 -2048로 이동할 때 1 카운트의 출력을 미분합니다.
팁: 이 블록을 적용할 때, 회전 방향을 제대로 미분하려면 피드백 데이터가 스캔과 스캔 사이에서 워드 크기의 ½을 초과해 변하면 안 된다는 사실을 기억해야 합니다.
위 예에서, 피드백 장치가 시계방향으로 움직여 스캔 'A'에서 0이고 스캔 'B'에서 -2000이라면 위치의 실제 변화는 시계 방향으로 +2096 카운트와 같습니다. 그러나, 이 두 값이 워드 크기의 ½을 초과하므로(실제 장치의 1/2 회전 초과), PMUL 명령어는 피드백 장치가 반대 방향으로 회전했다고 계산하고 +2096이 아니라 -2000이라는 값을 반환합니다.
펄스 승수 블록의 세 번째 속성은 Multiplier/100,000 스케일링 계수의 결과로 존재하는 나머지가 있다면 한 스캔에서 다른 스캔으로 갈 때 그 분수 부분을 간직한다는 것입니다. 블록의 각 실행이 완료되면, 이전 스캔의 나머지는 현재 값의 합에 다시 더해집니다. 이로써 모든 카운트 수 또는 "펄스"의 소재가 확인되고 시스템에서 사라지는 데이터는 없게 됩니다. 블록의 출력인 Out은 항상 부동 소수점 데이터 유형으로 정수를 생성합니다.
펑션 블록
RSL5K_PMUL Function Block Example 1_v31
Initial_Position = 0, Multiplier = 2500이라고 가정 => (25,000/100,000)
스캔
Position_Feedback
PMUL_02.Out
Total_Position
n
0
0
0
n + 1
1
0
0
n + 2
2
0
0
n + 3
3
0
0
n + 4
4
1
1
n + 5
5
0
1
구조화된 텍스트
MUL_02.In := Position_feedback;
PMUL_02.Initalize := Initialize_Position;
PMUL_02.WordSize := 12;
PMUL_02.Multiplier := 25000;
PMUL(PMUL_02);
UPDN_02.Initialize := Initialize_Position;
UPDN_02.InPlus := PMUL_02.Out;
UPDN(UPDN_02);
Total_Position := UPDN_02.Out;
예 2
이 전자 라인 샤프트 응용 프로그램에서 모터 A의 피드백은 모터 B가 따라야 하는 마스터 참조 역할을 합니다. 모터 A의 피드백은 "Position_feedback"로 명명됩니다. 모터 B의 피드백은 "Follower_Position"로 명명됩니다. 두 명령어의 승수가 1/4이므로, 모터 B는 모터 A가 네 번 회전할 때마다 한 번 회전해야 UPDN 누적기의 누산 값을 0으로 유지할 수 있습니다. UPDN 명령어의 출력에 0이 아닌 값이 있다면 그것은 Position_error로 간주되며 다시 모터 B로 돌려보내 두 모터 간 위상 고정을 유지할 수 있습니다.
펑션 블록
RSL5K_PMUL Function Block Example 2_v31
구조화된 텍스트
PMUL_02.In := Position_feedback;
PMUL_02.Initalize := Initialize_Position;
PMUL_02.WordSize := 12;
PMUL_02.Multiplier := 25000;
PMUL(PMUL_02);
PMUL_03.In := Follower_Position;
PMUL_03.Initalize := Initialize_Position;
PMUL_03.WordSize := 12;
PMUL_03.Multiplier := 100000;
PMUL(PMUL_03);
UPDN_02.Initialize := Initialize_Position;
UPDN_02.InPlus := PMUL_02.Out;
UPDN_02.InMinus := PMUL_03.Out;
UPDN(UPDN_02);
Position_error := UPDN_02.Out;
의견을 작성 부탁드립니다.
이 자료에 대한 문의사항이나 요청사항이 있습니까? 여기에 요청사항을 작성 부탁드립니다.
Normal