Today
-
Yesterday
-
Total
-
  • PLC와 터치패널로 만든 우리 만의 두더지 잡기
    Soliloquy 2019. 12. 23. 19:26

    ⚙️

     

    거의 반학기 동안 배운 PLC와 HMI 터치패널을 이용하여 5주간 조별로 자유주제로 작품을 만들어보는 시간을 가진 적이 있었다. 조원과 무엇을 만들지 정하다가 내 의견으로 나온 스마트 조명 시스템, 캐치마인드(게임) 2개로 나누어졌다.

     

    스마트 조명 시스템은 조명의 밝기와 조명의 동작 방식을 시간에 맞춰서 자동적으로 변하게 지정할 수 있게 만드는 것이었고, 캐치마인드는 미리 지정된 사진 파일과 관리자가 직접 그림 파일을 만들어 기기 내에서 문제와 답을 만들 수 있게 만드려던 참이었다.

     

    스마트 조명 시스템은 구현하기는 쉬울 것 같다는 단점 아닌 단점이 있었고, 캐치마인드는 HMI의 메모 기능을 활용해야 하는데, 메모 기능이 어떻게 사용되는지 아직 완전히 확인을 안 했다는 문제점이 있었다.

     

    무엇을 할지 계속 고민하다가, 설계 계획서는 비교적 작성하기 쉬운 스마트 조명 시스템으로 하고, 캐치마인드가 직접 구현 가능할지 찾아보고 가능하다면 캐치마인드로 하기로 했다. [각주:1]

     

    1주일 동안 여러 가지 시도를 해봤지만, 아쉽게도 HMI 기능 자체로는 캐치마인드 구현에 어려움이 많았다. 하는 수 없이 스마트 조명 시스템으로 할까 하다가, 갑자기 터치패드로 하기 좋은 게임이 어떤 게 있을까?라는 의문에 두더지 잡기라는 게임이 떠올랐다.

     

    두더지 잡기 만들기의 시작

    캐치마인드를 만들었을 때와는 달리 진행은 매우 순조롭게 진행되었다. 우선 HMI에 두더지를 표시할 방법과 두더지를 없앨 방법을 생각해 냈다. 내가 생각해낸 방법이 잘 동작하자, 나는 조원에게 이건 가능하겠다고 말했고, 나와 조원은 서둘러서 역할 분담을 하였다.

     

    인터페이스와 외관적인 기능을 담당하는 HMI 설계는 내가 캐치마인드를 구상하면서 쌓은 경험이 더 많으니, HMI는 내가 맡고, 조원은 게임의 두더지 출현과 각종 타이머 기능 구현 등 전체적인 작동 알고리즘을 담당하는 PLC 쪽 프로그래밍을 맡았다. [각주:2]

     

    작동 가능함을 테스트 하기 위한 환경, 디그다를 누르면 디그다가 사라진다.

     

    각종 기능들의 추가

    비록 다른 조들과는 다르게 주제가 여러 번 바뀌며 시작 시간이 좀 느려졌기는 하지만 같이 작업을 하면서 터득한 주소 선정과 같은 여러 가지 노하우 들을 이용하여 제작 진행 속도를 엄청 빠르게 해 나갔다. 또한 HMI에는 동전을 넣는 기능이나 게임 시간을 설정하는 기능들의 구현을 구상하는 등 게임의 기능 추가에 중점을 두었다.

     

    01
    새롭게 추가한 기능 일부

     

    그리고 같이 하는 조원과 역할을 바꾸어 이번에는 내가 PLC를 맡고, 조원이 HMI를 맡는 식으로 하였다. 내가 PLC에 추가하려던 것은 두더지의 랜덤성 구현이였다. 어떻게 하면 두더지를 랜덤성 있게 구현할 수 있을까? 어떻게 하면 규칙성을 최대한 숨길 수 있을까?

     

    분명 누군가는 PLC로 랜덤 숫자를 만드는 방법을 구현해냈을 텐데... 우리는 우리만의 방식으로 랜덤성을 구현해보고 싶었다.

     

    조원의 활약

    디자인에는 그렇게 힘을 쏟을 생각이 없었는데, 생각지도 못하게 조원이 정말 힘을 잘 써주었다. 게임 배경과 두더지가 눌려지는 모션, 일시정지 기능 추가에다가 시간 초 표시 기능에 더불어 정말 생각지도 못한 기능들을 많이 추가해 주었다.[각주:3]

     

    조원이 추가해 준 뒤의 게임 화면

     

    내가 준비한 기능인 두더지 랜덤성 기능보다 훨씬 게임을 재미있게 만드는데 크게 기여하기도 했고, 내가 전혀 생각지도 못한 방법으로 여러 기능들을 구현해와서 정말 놀랐다. 협업이라는 게 정말 이런 맛으로 하는 거구나... 싶었다.

     

    두더지 잡기 개발 단계 동영상

     

    이렇게 기본적인 기능을 완성해 놓고 기쁜 마음으로 중간발표를 조원과 열심히 하고 이제 현재 존재하는 버그들을 파악하고 수정하면서 게임의 완성도를 높여나가기로 하였다.[각주:4]

     

    예상치 못한 난관들

    장치 사용의 미숙함에서 나오는 간단한 실수로부터 장치의 동작을 알아도 발견하거나 알고리즘 상의 문제로 항상 일어날 수밖에 없는 문제 등, 거의 6개가 넘는 큰 버그들과 수정 사항들을 해결하는 데에만 거의 1~2주가 소요되었다. 그중에 가장 기억에 남는 문제는 바로 게임 시작 버튼을 누르면 가끔씩 게임이 진행되지 않고 멈추는 버그였다.

     

    두더지 잡기 개발 단계 버그 시연 동영상

     

    이 버그의 특징은 다른 버그와는 다르게, 시뮬레이션에서는 해당 버그가 관측되지 않는 특징이 있었다. 시뮬레이션이 정말 이상적인 환경을 기준으로 해서 그런가? 싶었는데, 아무리 그래도 그렇지... 이게 얼마나 복잡한 회로라고...

     

    하지만 정말 피나는 노력으로 여차저차 해당 버그가 발생하는 이유와 해결 방법까지 생각해내는 데 성공했고, 직접 적용해보니 시뮬레이션이든, 실제 기기에서든 문제가 더 이상 발생하지 않음을 확인했다. 이 문제로 정말 시험기간까지 끌고 가지 않을까 했는데, 다행히 문제없이 마무리를 할 수 있었다.

     

    끝날 때까지 끝난 게 아니다 - 최종 보고서

    PLC의 작동 방식을 서로 잘 알고 있기도 하고, 서로가 만든 기능을 리스트를 만들어서 관리를 해온 덕분에 개발하는데 다른 조들 보다 시간이 적게 걸렸다. 아마 버그까지 잡고 우리 조 만큼 일찍 끝난 조가 없었던 것 같다.

     

    교수님 앞에서 5주간의 결과물을 직접 시연함으로써 잘 작동됨을 검사받고, 이제 대망의 최종 보고서 작성만이 우리 앞에 과제의 최종장으로 남았다. 교수님이 말하시길 데모 발표 때에 한 것은 나중에 까먹기 쉬워서 최종 보고서에 자세히 쓰라는 말을 하셨는데, 얼마나 자세하게 써야 할지 감이 안 왔다.

     

    두더지 잡기 최종 버전 동영상

     

    이제 시험 기간까지 약 1주일, 슬슬 최종 보고서를 써야만 했다. 조원과 만나서 약 3시간 만에 작성을 마치려고 했으나, 3시간이 6시간이 지나도록 끝이 나지를 않았다. 이는 결과 보고서에 특별한 양식이 주어지지 않아서 그렇기도 하지만, 복잡한 회로를 어떻게 하면 쉽게 풀어서 적을 수 있을까?라는 고민에 보고서 작성 방식과 구성이 여러 번 달라져서 그런 이유도 컸다.

     

    항상 그렇듯 끝나지 않는 일이란 없는 것처럼, 보고서를 수정하고 다시 검토하고 수정하고를 반복하다 보니 어느덧 제출 시간이 다 되었고 우리는 가장 마지막으로 수정된 보고서로 제출하였다.

     

    정말 PLC와 HMI로 생각지도 못하게 진심으로 즐거운 시간을 보낸 것 같다. 이렇게 무언가를 만들어가며 서로 같이 고찰도 하고, 이론 수업에서 얻을 수 없는 능력을 길러주는 것은 설계 과목만이 줄 수 있는 큰 특징인 것 같다.

     

     

    [본문 MP4 파일]

     

    workfine.mp4
    1.54MB

     

    notworkfine.mp4
    1.62MB

     

    finalwork.mp4
    3.35MB

     

    [글 대표 이미지]

     

    1. 주제는 언제든지 변경 가능했다. [본문으로]
    2. 물론 PLC 쪽이 HMI 쪽 보다 생각해야 하는 것이 훨씬 많아서 전체적인 틀은 조원과 만나서 2주 동안은 같이 PLC를 맞춰나갔다. 전체적인 부분을 담당하는 PLC를 이해하지 못하면 HMI 구현에도 나중에 문제가 일어날 수 있다는 이유도 컸다. [본문으로]
    3. 정말 나를 놀라게 했던 것은 기능 구현을 위해 수업 시간에 알려주지 않은 스크립트 기능까지 매뉴얼을 읽어보고 찾아왔다는 점이었다. [본문으로]
    4. 여담인데 발표는 조원에게 떠넘기는 식으로 부탁했다. 단지 이렇게 능력 있는 조원이 어떻게 발표하는지 보고 싶었기 때문이었다. 대신 나는 작지만 발표할 때 PPT를 넘기는 역할을 대신 맡았다. [본문으로]

    댓글

어제는 이곳에 명이 다녀갔습니다.

Powered & Designed by Tistory