안녕하세요.
맨날 딱딱한 인사만 하니까 글이 너무 무거워 지는 느낌이라 느낌을 좀바꿔보기로 했습니다.
대학생시절 공부하면서부터 느낀건데 공학은 안그래도 어려워 죽겠는데 왜 이렇게 딱딱하게 설명되어 있는지
늘 불만이 많았거든요.
영화도 공포 로멘스 코미디가 나뉘는데...
왜!....
제일 재미 때가리 없는 공학은 늘 궁서체 장르인가요??
제가 소싯적 했던 생각입니다.
내가 전문가가 되는날 나는 궁서체 장르가 아니라 최대한 코미디 장르로 재미있게 이해시켜줘야지 싶었는데...
막상.... 직장인이 되고 글을 올리다보니 제가 그러고 있네요.
그래서 인사 먼저 좀 바꾸겠습니다.
다시 인사드리죠
저는 공직자입니다.
(공)대 다녔던 (직)장인이라 (자)부심 있는 남자 입니다.
이번 시간엔 평소에는 좀 드물게 쓰는 명령들을 배워보겠습니다.
기능적인 부분만 이해를 하면 되다보니 이번시간은 한숨 돌리며 이야기 할 수 있겠어요
첫번째 주제는 재미 때가리 없어보이는
BIN/BCD 명령입니다.
BIN 명령은 뭘까요?
어디서 들어본것도 같아요
BIN은 Binary의 약자입니다. 주로 2진수를 표현하죠
2진수가 무엇인지는 잘 아시리라 믿습니다.
1 아니면 0 즉, 전기가 흐르냐 안흐르냐 입니다
BCD 명령은 뭘까요?
BCD도 어디서 들어본거 같은데 헷갈리죠? Binary Coded Decimal의 약자입니다
2진화 10진수라고 보면 됩니다.
2진수면 2진수고 10진수면 10진수지
2진화 10진수가 뭐냐구요??
자 천천히 봅시다.
10진수는 뭔가요?
우리가 평상시에 사용하는 숫자이죠?
근데 컴퓨터라는 것은 10진수를 못알아 먹습니다.
그래서 보통 아래 그림과 같이 숫자를 이해시키게 되죠.
예를들어 십진수 42를 컴퓨터에 인식시키려면 어떻게 해야되나요???
128 = 2^7 | 64 = 2^6 | 32 = 2^5 | 16 = 2^4 | 8 = 2^3 | 4 = 2^2 | 2 = 2^1 | 1 = 2^0 |
0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 |
그래요. 42는 컴퓨터에 잘 인식시켰어요.
근데 우리가 역으로 이진수를 보고 해석을 해야한다고 생각해보면 어떤가요???
이진수인 0010/1010 을 역으로 계산해야 하는 번거로움이 따르게 됩니다.
42이라는 수가 쓰였다는 걸 알아내기 위해서는 2^1 + 2^3 + 2^5 = 42(매우매우 귀찮음)
지금은 숫자가 작으니 그나마 하는거지 숫자가 크면 답이 없어요.
그래서 등장한 BCD 코드 일명 8421코드라고도 불립니다.
BCD 코드는 2진 코드와 무엇이 다를까요?
같은 수치인 42을 표현한다고 봐봅시다
아래 표를 보세요.
8 = 2^3 | 4 = 2^2 | 2 = 2^1 | 1 = 2^0 | 8 = 2^3 | 4 = 2^2 | 2 = 2^1 | 1 = 2^0 |
0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
직관적으로 봐보세요
보라색 글씨가 42에서 10의자리수인 4를 의미하고
검은색 글씨가 42에서 1의자리수인 2를 의미하네요
컴퓨터만 알아들을 수 있는 2진수로만 표현했다고 하더라도 사람이 알아보기 쉽지 않나요??
바로 이거에요.
BCD 코드를 사용하는 이유에는 여러가지가 있겠지만
제일 중요한건 사람이 사용하기 편리하게끔 만든거라는거죠
8421가 조합되어 10진수의 한자리를 표현하기 때문에 BCD는 8421코드라고도 불립니다.
기초적인 배경지식에 대해서 학습했으니
본격적으로 XG-5000내의 명령어를 한번 배워보도록 할까요?
1. BIN(P)
의미: BCD 코드를 2진수 코드로 변환한다.
2. BCD(P)
의미: 2진수 코드를 BCD 코드로 변환한다.
이게 답니다 끝.
그럼 예제를 통해서 좀 더 몸에 와닿게 이해를 해봅시다
레더는 아래와 같아요.
P0를 누른후 D0값에 어떤숫자가 들어가있나요?
어디서 많이본거 같죠???
앞서 설명한 이야기들과 일맥상통합니다.
그다음은 P1을 눌러보시죠.
여러분중 90%는 이때 갸우뜽하겠죠
"접점을 잘못넣었나?, 뭐여 왜 D1에 안들어가? 예제가 잘못된거아니야? 맛이 갔나????"
여러분....
이제 시뮬레이터를 끄고 다시 돌아가봅시다.
MOVP 명령부분에 숫자 '42'가 아니라 '41'을 넣어보고 똑같이 시뮬레이터를 돌려봅시다.
추측하건데 독자여러분중 90%는 이러실껍니다.
????????????
42는 안되고 41은 되????
왜????
머여?????????? 문제 잘못냈네???
여러분... 안돌아 가는거 맞습니다.
이게 바로 제 설계에요... ㅎㅎ
BCD코드에서 가장 중요한 부분을 각인시키기 위해 나중에 소개드렸어요.
BCD 코드는 8421코드라고 하였죠 즉, 4개의 비트 값의 조합으로 십진수의 숫자를 만들어냅니다.
2진수를 가지고 10진수를 표현하다보니 문제가 발생합니다.
공간이 남아도는게 바로 문젭니다.
1과 0의 조합으로 각 4개의 비트를 통하여 만들 수 있는 경우의 수는 16가지(2^4)인데 우리가 표현하고 싶은숫자는
0부터 9까지만 표현하고 싶습니다.
왜냐구요? 앞서 말했듯이 4개의 비트마다 십진수의 각 한자리수씩만 표현하고 싶거든요.
그럼 1001(십진수로 9에 해당) 다음은 어떻게 하나요?
네, 안씁니다. 남는 공간이 생긴다는 것이죠.
0,1,2,3,4,5,6,7,8,9만 있으면 우리가 사용하는 10진수를 표현하는데 전혀 문제가 없습니다.
16진수에서는 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 까지 표현하였겠지만
우리는 알파벳 따위는 필요가 없다는 것이죠.
다시 본론으로 돌아와서 42를 넣었을때를 봅시다.
숫자의 조합이 어떻게 되나요?
자... 힌트 진짜 많이드렸습니다
뭐가 문젠지 찾으셨나요???
42라는 숫자는 하위 4개 비트의 조합(1010)이 A로써 9라는 수치를 넘어버려 BCD 코드로 인식할 수 없으며 더욱이
이를 2진수로 변환할 수 없습니다.
그래서. 안되는겁니다.
BINP 명령은 모름지기 BCD를 BINARY로 변환하는 것이지 외계어를 BINARY로 변환할 수 없거든요.
근데 41은 왜 될까요?
하위 4개의 비트를 다더해도 9밖에 안되거든요.
네... 그래서 됩니다.
이건 BINP 명령 입장에서 외계어가 아니거든요.
D0에 41이라는 수치가 들어가있고 P1을 눌렀을때
D1 레지스터에는 29가 들어가네요.
41은 BCD 코드로 보았을때 4와 1이 각각 4개의 비트를 차지하기 때문에
D0가 0010 / 1001이 됩니다.
이를 BCD 코드로 변환시킨다면
0001 / 1101이 되는데
2^0(1) + 2^2(4) + 2^3(8) + 2^4(16) = 29
이기 때문이죠.
이어 P2를 눌렀을때 데이터 레지스터의 수치변화를 봅시다.
다시 원상태로 돌아오는걸 확인할 수 있겠죠??
어떤가요?? 머리속에 콱박혔다면 제 오늘 목표는 소기의 달성을 한 것이네요.
두번째 주제는 Inverse 명령입니다.
반전 명령을 의미하는데요.
솔직히 말하면 왜쓰는지 모르겠습니다.
병렬을 직렬로 사용할때 편하다고 하시는 엔지니어도 계시고(?)
(개인적으로 노이해입니다.)
프로그램의 해석을 타인이 수정하기 어렵게 하기 위하여 일부로 해놓는 엔지니어님도 봤습니다....
(외주 설계시 프로그램 보완용이라는데, 개인적으로 더 노이해입니다.)
반전 명령은 전기기사를 공부하신 분이라면 뭔지 대충 감을 잡으실껀데
다 뒤집는겁니다 회로고 스위치 접점이고 전부다요.
사례를 볼게요.
1. A접점을 인벌스하면 B접점이 됩니다.
2. B접점을 인벌스하면 A접점이 됩니다.
3. 직렬연결을 인벌스하면 병렬연결이 됩니다.
4. 병렬연결을 인벌스하면 직렬연결이 됩니다.
XG-5000의 단축키로는 Shift + F9 버튼을 누르면 회로상 반전 명령이 된 답니다.
말로는 이해가 어려울듯하여 예제를 드릴테니 한번 해결해보시는 걸로 진행하는게 더 좋겠군요.
레더를 봅시다.
이 회로의 인벌스 회로는 뭘까요?
구조를 보아하니
1. P0를 누르면 P20이 점등되고
2. P21은 상시 점등되나 P1을 누르면 꺼지네요.
3. P22는 P3를 누르면 켜지나 P2를 누르면 꺼집니다.
4. P23은 상시 점등되나 P5만 누르게 되면 꺼지네요.
위 회로를 인벌스 시켜보세요.
자...
저는 반전회로를 보여드릴게요.
우리가 예측한대로 회로가 구동되는지 한번 봅시다.
제일 처음 화면을 띄우니 아래화면이 보입니다.
1. P0를 누르면 P20이 점등되고
2. P21은 상시 점등되나 P1을 누르면 꺼지네요.
3. P22는 P3를 누르면 켜지나 P2를 누르면 꺼집니다.
4. P23은 상시 점등되나 P5만 누르게 되면 꺼지네요.
이번주는 이정도만 이해하고 넘어가셔도 무방합니다.
다음주에는 특수릴레이 사용과 예제를 보며 공부해보도록 하겠습니다.
이상. 공직자였습니다.
끝.
'PLC > PLC(XG-5000)' 카테고리의 다른 글
14. 트렌드모니터링, 래치의 개념 (0) | 2020.07.07 |
---|---|
13. 특수릴레이의 개념 (0) | 2020.06.30 |
11. 비교연산문, 조건문, 데이터 이동 명령어의 응용 해설 (0) | 2020.06.16 |
10. 비교연산문, 조건문, 데이터 이동 명령어의 응용 (0) | 2019.07.31 |
9. 비교연산문, 조건문, 데이터 이동 명령어의 개념 (4) | 2019.07.24 |