오늘은 Interger Function에 대해서
알아보겠습니다.
Interger는 정수라는 개념이죠?
Siemens PLC에서 Interger는 word(16bit) 사이즈의
메모리를 차지합니다.
Unsign Interger는 부호가 없기 때문에
양의 정수만을 이야기 하지만
그냥 Interger는 부호도 포함하기 때문에
음의 정수와 양의 정수 모두를 이야기 합니다.
그래서 Interger Function은 정수 함수라는 뜻이되지요.
카테고리를 한번 열어보겠습니다.
지난번에 "Comparator"를 배울 때와 마찬가지로
중복되는게 보이네요.
언더바 뒤의 I는 Interger, DI는 Double Interger를 의미합니다.
Double Interger는 Double word (32bit)사이즈의
메모리크기를 차지합니다.
그럼 하나씩 알아보겠습니다.
먼저 간단히 얘기하자면 사칙연산입니다.
더하기, 빼기, 곱하기, 나누기
1. ADD ( ADD_I, ADD_DI )
먼저 ADD 입니다.
이정도는 다들 느낌으로 아시죠?
더하기 입니다.
IN1 단자의 MW100과 IN2 단자의 MW200의 값을
더하여 OUT단자의 MW300에 저장합니다.
여기서 ADD_I는 word(16bit)사이즈의 메모리 크기를
차지하는 데이터 단위이기 때문에
변수 address가 MW가 됩니다.
만약에 ADD_DI에는 Double word (32bit) 사이즈이기 때문에
변수 address가 MD가 되어야겠죠?
2. SUB ( SUB_I, SUB_DI )
다음은 SUB, 빼기 입니다.
뭐 어려울것 없죠?
IN1 단자의 MW100과 IN2 단자의 MW200의 값을
빼서 OUT단자의 MW300에 저장합니다.
3. MUL ( MUL_I, MUL_DI )
다음은 곱하기 입니다.
IN1 단자의 MW100과 IN2 단자의 MW200의 값을
곱해서 OUT단자의 MW300에 저장합니다.
4. DIV ( DIV_I, DIV_DI )
다음은 나누기 입니다.
나누면 몫과 나머지가 생기는데
Interger는 몫만 있습니다.
나머지는 Double Interger단위에만 있습니다.
IN1 단자의 MW100과 IN2 단자의 MW200의 값을
나누어서 몫을 OUT단자의 MW300에 저장합니다.
5. MOD ( MOD_DI )
마지막으로 MOD는 나누기의 나머지입니다.
IN1 단자의 MW100과 IN2 단자의 MW200의 값을
나누어서 나머지를 OUT단자의 MW300에 저장합니다.
간단하지요?
그럼 여기서 의문이 생깁니다.
왜 굳이 Interger와 Double Interger로 나누어서 사용하는가??
그 이유는 메모리 사용의 효율성 때문입니다.
Interger만 있을 경우에는 큰 수를 표현할 수 없고,
Double Interger만 있을 경우에는 작은수를 표현하기에는
메모리의 낭비가 너무 심하게 됩니다.
예를 들어
Interger의 경우 word (16bit )사이즈 이기 때문에
-32,768 ~ 32,767 까지의 숫자 표현이 가능합니다.
그럼 30,000의 수를 더하게 되면 60,000이 되기 때문에
덧셈만 하더라도 계산이 불가능하게 됩니다.
그렇기 때문에 Double Interger가 있는 것이고,
반대로 5 또는 10 정도의 수를 계산할 때는
약 -20억 ~ +20억의 수를 저장할 수 있는 Double Interger는
메모리의 낭비가 너무 심하게 되는 것입니다.
그래서 Interger와 Double Interger를
적절히 사용해야 합니다.
이해가 되시나요??
사칙연산은 전혀 어렵지 않은 내용입니다.
다음시간에는 좀 더 다양한 계산을 알아보겠습니다.
제 블로그를 방문해 주셔서 감사합니다.
도움이 되셨다면 공감(좋아요) 부탁드리고,
댓글은 다른분들께도 좋은 정보일 수 있으니
공개로 부탁드립니다.
여러분의 작은 정성이 좋은 포스팅을 생산하는
힘이 된답니다. :)
감사합니다.
'PLC > Siemens (S7)' 카테고리의 다른 글
SIEMENS PLC Simatic Manager 프로그래밍 기초 - Analog Control (아날로그 값 처리) (2) | 2022.02.21 |
---|---|
SIEMENS PLC Simatic Manager 프로그래밍 기초 - Floating-point fct. (0) | 2022.02.17 |
SIEMENS PLC Simatic Manager 프로그래밍 기초 - Move (0) | 2022.02.15 |
SIEMENS PLC Simatic Manager 프로그래밍 기초 - Timer (타이머 개별 구성요소, Timer Coil) (0) | 2022.02.14 |
SIEMENS PLC Simatic Manager 프로그래밍 기초 - Timer (0) | 2022.02.11 |
댓글