부동 소수점 값

이 정보는
CompactLogix
5370,
ControlLogix
5570,
Compact GuardLogix
5370,
GuardLogix
5570,
Compact GuardLogix
5380,
CompactLogix
5380,
ControlLogix
5580,
GuardLogix
5580 및 ControlLogix 5590 컨트롤러에 적용됩니다. 컨트롤러 구분이 있을 때는 언급합니다.
Logix 컨트롤러는 부동 소수점 산술을 위한 IEEE 754 표준에 따라 부동 소수점 값을 처리합니다. 이 표준은 부동 소수점 수가 저장 및 계산되는 방법을 정의합니다. 부동 소수점 연산을 위한 IEEE 754 표준은 적절한 저장 공간에서 매우 큰 숫자를 처리할 수 있는 기능 및 속도를 제공하기 위해 마련되었습니다.
REAL 태그는 정규화 단정도 부동 소수점 값을 저장합니다.
LREAL 태그는 정규화 배정도 부동 소수점 값을 저장합니다.
컨트롤러는 다음과 같은 기본 데이터 유형을 지원합니다.
컨트롤러
데이터 유형
CompactLogix
5380,
ControlLogix
5580,
Compact GuardLogix
5380,
GuardLogix
5580 및 ControlLogix 5590 컨트롤러
REAL, LREAL
CompactLogix 5370, ControlLogix 5570, Compact GuardLogix 5370 및 GuardLogix 5570 컨트롤러
REAL
비정규화 값 및 -0.0은 0.0으로 처리됩니다.
계산 결과가 NAN 값이면 부호 비트가 양의 부호 또는 음의 부호일 수 있습니다. 이러한 경우 소프트웨어에서는 부호 없이 1#.NAN을 표시합니다.
일부 십진수 값은 표준 형식으로 정확하게 표현할 수 없으며, 이러한 경우 정밀도가 손실됩니다. 예를 들어, 10.1에서 10을 빼면 결과는 0.1입니다. 그러나 Logix 컨트롤러에서 이 결과는 0.10000038이 되기가 아주 쉽습니다. 이 예에서 0.1과 0.10000038 간의 차이는 .000038%로, 사실상 0이나 마찬가지입니다. 대부분의 연산에서 이처럼 극히 작은 부정확도는 중요하지 않습니다. 좀 더 넓게 생각하면, 부동 소수점 값을 아날로그 출력 모듈로 보내는 경우 .000038%의 차이가 있는 모듈로 보내는 값에 대한 출력 전압에는 차이가 없습니다.
부동 소수점 산술 연산에 대한 지침
다음 지침을 따르세요.
특정 부동 소수점 산술 연산을 수행하는 경우 반올림 에러로 인해 정밀도가 손실될 수 있습니다. 부동 소수점 프로세서에는 결과 값에 영향을 미칠 수 있는 자체적인 내부 정밀도가 있습니다.
화폐 값 또는 총계 계산기 기능에는 부동 소수점 연산을 사용하지 마세요. INT 또는 DINT 값을 사용하고, 값을 위로 조정하고, 소수 자릿수를 추적합니다(또는 달러에는 INT 또는 DINT 값 중 하나를, 센트에는 INT 또는 DINT 중 나머지 하나를 사용).
부동 소수점 수를 비교하지 마세요. 대신 범위 내에서 값을 확인합니다. 이를 위해 특히 LIM 명령어가 제공됩니다.
총계 계산기 예
REAL 데이터 유형의 정밀도는 총계 산출 응용 분야에 영향을 미치므로 매우 큰 숫자에 매우 작은 숫자를 더하는 경우 에러가 발생합니다.
예를 들어, 일정 기간 동안 어떤 숫자에 1을 더합니다. 어느 시점이 되면 총 합계가 1보다 훨씬 커지고 전체 결과를 저장할 충분한 비트가 없기 때문에 더하기가 더 이상 결과에 영향을 미치지 않습니다. 더하기는 상위 비트를 가능한 한 많이 저장하고 남은 하위 비트는 버립니다.
이 문제를 해결하기 위해 결과가 커질 때까지 작은 숫자에 대한 연산을 수행합니다. 그런 다음 추가 큰 수 연산을 위해 결과를 다른 위치로 보냅니다. 예:
  • x는 작은 증분 변수입니다.
  • y는 큰 증분 변수입니다.
  • z는 어디에서든 사용할 수 있는 현재 총 카운트입니다.
  • x = x+1;
  • if x = 100,000;
  • {
  • y = y + 100,000;
  • x = 0;
  • }
  • z = y + x;
또 다른 예:
  • x = x + some_tiny_number;
  • if (x >= 100)
  • {
  • z = z + 100;
  • x = x - 100; // there might be a tiny remainder
  • }
의견을 작성 부탁드립니다.
이 자료에 대한 문의사항이나 요청사항이 있습니까? 여기에 요청사항을 작성 부탁드립니다.
Normal