본문 바로가기
PLC 자동제어 학습/CiMon Scada 수업

통신관련 수업의 CiMon에서 실습한 내용part1

by 인터넷떠돌이 2017. 11. 28.
반응형

안녕하세요?


원래라면 오늘 있었던 수업의 내용을 전부 포스팅 해야 겠지만, 너무 내용이 많고 이론적으로 설명해야 하는 내용도 너무 많아서 하는 수 없이 2개의 파트로 나누어야 했습니다. 일단 지금은 급한 대로 실습을 했던 내용부터 포스팅을 하도록 해 보겠습니다.



먼저 위 그림에 있는 것은 USB가 있는 노트북과 같은 PC를 485라는 방식의 통신이라고 해야 할까요? PLC와 같은 Controller와 연결을 시켜주는 젠더입니다. 일단 이걸 USB포트에 꽂도록 합니다.



윈도의 장치관리자로 들어가서 COM5라는 것을 확인하도록 합니다.



COM이 몇번인지 확인했으니, 다음은 통신속도를 체크하도록 합니다. 그리고 위 스크린샷에 뵈는 고급이라는 것을 열어서 보도록 합니다.



고급에 들어온 다음에 기존에는 이 COM번호를 못 바꾸는 줄 알았는데, 이제는 바꿀 수 있다는 것을 알 수 있었습니다. 다만 사용중이라고 되어 있는 곳을 고르면, 윈도 95와 같은 오래된 버젼의 운영체제에서는 재부팅을 해야 할 수도 있다고 합니다.



장치관리자 상에서 확실하게 COM3로 바뀐것을 볼 수 있었습니다.



이제 CiMon에서 새로운 프로젝트를 만들어서 실습에 들어가 보도록 합니다.



위 스크린샷에 나와 있는 것처럼 I/O디바이스 설정에 들어가서, 새 디바이스를 추가하도록 합니다.



디바이스의 이름은 아무렇게나 정해도 되기는 합니다.




이제 485라는 형식으로 디바이스간에 통신을 해야 하는데, 위 그림에서 나와 있는 것처럼 232라는 것을 선택하도록 합니다. 원래 통신의 방식이 다르지만, 프로그램상으로는 232를 선택해서 485라는 방식의 통신이 된다고 합니다. 다소 낯설어 보이실 것인데, 일단 이에 대해서는 내일 올리는 포스팅에서 설명을 드릴 것을 약속 드립니다.



위 스크린샷을 보시면 DAQ라고 이름을 지정한 디바이스가 나오는 것을 볼 수 있습니다.



옆에 있는 통신포트란을 열어서 아까전에 보았던 통신포트의 COM의 번호랑 속도를 지정하도록 합니다. 여기서 중요한 것은 통신포트만이 아니라 속도가 차이나도 통신이 조금도 되지 않는다는 것입니다.



일단 Parity라는 것은 일종의 통신이 제대로 갔는지 확인하는 신호인데, 요즘은 회선이 좋아져서 안 쓰는 추세라는 이야기를 들었습니다. 그리고 Data  Bits는 아스키코드의 비트인데, 여기서는 그걸 정할 수 있으며, Stop Bits라는 것은 적으면 적을 수록 통신의 속도가 빠르지만, 디바이스간의 통신에 에러가 자주 나는 경우에는 2 stop Bits로 간격을 키우는 것이 편하다고 합니다.



위 스크린샷에 나와 있는 스테이션 항목에 프레임정의라는 것을 펴서, 편집을 누르도록 합니다. 일단 순서가 바뀌기는 했는데, 프레임이라는 것은 데이터의 단위라고 합니다. 



당연히 처음에는 아무런 것이 추가되지 않은 것을 볼 수 있었습니다. 하지만, 추가라는 버튼을 눌러서 데이터를 추가하는 작업에 들어가 봐야 합니다.



프레임의 이름은 아무렇게 정해도 되지만, 초기 Enable이라는 것은 통신주기인 초 마다 계속해서 데이터를 보내게 됩니다. 이제 여기서 추가라는 버튼을 또 눌러서, 뭐라고 해야 할까요? 데이터라는 것은 크게 헤더, 바디, 테일 3부분으로 되어 있는데, 이 부분을 하나하나 구성한다고 보시면 될 듯 합니다.




먼저 이름을 TX라고 지정하도록 합니다.



위 그림은 릴레이 디바이스에서 어떻게 설정을 해야 자기를 ON시킬 수 있는지 데이터를 정의한 것입니다. 먼저 헤더부분이라는 머리 부분을 어떻게 해서 완성해야 합니다. 일단 위 그림에서 05H라는 것은 H라는 의미가 Hex code, 즉 16진법입니다. 그리고 05는 입력을 할때 05라는 숫자를 입력하라는 의미입니다.



그래서 여기서는 바이너리라고 해서, 이것도 16진수인 HEX code라고 다른 이름으로 바이너리라고 부르고 있습니다. 여기서 05라는 것을 입력하도록 하고, 그 다음에는 길이라는 바이트가 1로 되어 있는지를 확인해야 합니다.



위 그림에서 보시면 번호에 0이 나온 다음에, 고정값으로 05라는 것이 나와있는 것을 보실 수 있습니다. 이렇게 해서 데이터의 프레임에 속하는 헤더 부분을 만들 수 있었습니다.




다음은 몸통에 해당하는 바디라는 부분을 만드는데, 이번에는 아스키코드라고 해서 ASCII라는 것을 선택해서, 일종의 문자로 전송할 준비를 해야 합니다.



그렇게 해서 문자로 지정이 된 바디부분이 완성된 것이 나와 있는 것을 볼 수 있었습니다.



그리고 여기서 SUM이라는 것이 있는데, 이게 데이터가 제대로 전달이 되었는지 확인하는 부분인 테일에 해당합니다. 그런데 문제는 이 합계라는 것이 16진수라서 일반적인 계산기를 이용해서 계산하는 것은 상당히 금물입니다.



이런 합계에 대해서는 오류검사 BCC라는 것을 이용해서 딱히 16진수를 계산하지 않아도 가능하다는 것입니다. 그리고 여기서 시작 세그먼트와 끝 세그먼트는 어디서 어디까지를 16진수로 계산할 것이냐고 하는 것인데, 이는 바디인 몸통 부분이니 위에서 스크린샷에 나온 1번 번호만 지정을 하도록 합니다.



이렇게 해서 일련의 데이터의 형식인 프레임이 완성이 되는 것을 볼 수 있었습니다. 아무튼 여기서 중요한 것은 확인을 누르고 나서, 저장을 해야 한다는 것입니다.




이제 저장만을 누르면 되는 단계가 왔습니다.


그리고 다음 실습으로 이 무게를 측정하는 장치와 연결을 하는 실습에 들어가고자 했습니다.



일단 설명서인 PDF파일을 보면, 아날로그 출력, 같은게 있는데, 이런 부분을 이용해서 결과가 크게 보이는 패널에 데이터를 표시할 수 있게 되는 것입니다.


다음은 이 무게를 측정하는 장치의 영점을 만드는 데이터를 보내는 것인데, 문제는 여기서 아스키코드(ASCII)으로 어떻게 되어 있으며, 이를 HEX code로 어떻게 해야 하는지를 적어둔 것입니다.



일단 일차적으로 완성해 본 것입니다. 여기서는 헤드 부분에는 3바이트의 3문자가 아니라 1개의 코드기 때문에 숫자만 입력하고, 몸통인 바디부분은 그냥 문자 그대로 입력하고, 통신을 끝낸다는 터미네이터(terminator)라고 해야 할까요? 이것도 한개의 아스키 코드가 있기 때문에, 이를 바이너리=Hex code로 해서 입력하도록 합니다.



이제 CiMon상에서 이 통신을 실제로 이용하고자 해서, 태그를 하나 만들도록 합니다. 일단 실태그라는 것을 하나 만들어서, 위 스크린샷과 같이 적어 주도록 합니다.



먼저 중요하다면 중요한 것으로 초기 Enable이라는 것을 그대로 두면, 1초마다 계속 무게가 0으로 돌아가는 문제가 발생하기 때문에, 이를 취소해 두어야 합니다. 이 경우에는 그래야 무게를 측정하기 쉬워 집니다.



그리고 나서, CiMonD에서 도형을 하나 그려놓고 영점을 하는 버튼을 만들어 주도록 합니다. 이제 실질적으로 실습에 들어가 보기는 해야 하겠지만, 여기서는 그 단계까지는 하지 않았습니다. 그래서 오늘의 포스팅은 여기서 마치도록 하고, 나머지 부분은 내일의 포스팅에서 올리고자 합니다.


반응형