본문으로 건너뛰기

02. 시스템 구성도

·275 단어수·2 분
산에사는가재
작성자
산에사는가재
광운대학교 컴퓨터정보공학부 학부 졸업생.

본 프로젝트는 KDT 과정인 AI 융합 로봇 SW 개발자(2기)의 교과인 PLC 프로그래밍을 수강하며 구현한 미니프로젝트이다. 우리는 기존에 배운것 이외의 명령어인 CALL, RET, DUTY, MIN 등을 추가로 학습하여 기존의 수업에서 배운 개발 방법을 확장하였다. 이를 통하여 낮은 가독성, 빈번한 이중코일, 낮은 확장성 문제를 개선하데 성공하였다.

1. 구현 모듈
#

본 프로잭트의 주된 목적은 모듈화를 통해 기존 개발 방식의 문제를 해결함에 있다. 우리는 기능을 분리하여 구현한 모듈을 총 3개로 각각 다음과 같다.

  • ACTUATOR 모듈은 공급, 가공 등에 사용되는 실린더와 소재 운반을 위한 VC, 각종 모터의 기능을 포함한다. 추가로 만일 실린더에게 전, 후진 명령을 했음에도 5초 안에 완료하지 못했을 시 에러로 간주하고 자동으로 시스템을 비상 모드로 전환한다.
  • SERVO 모듈은 SERVO 모터의 가동과 원점 복귀, 그리고 소재를 창고로 적재하거나 창고에서 배출하는 운반 기능을 포함한다.
  • STORAGE 모듈은 창고에 소재를 적재, 배출시에 필요한 정보를 제공하며 또한 해당 정보들을 보다 쉽게 사용, 설정할 수 있는 기능을 포함한다.

아래의 그림과 같이 총 3개의 모듈을 구현하였으며, 그림은 각 모듈에 포함되어 메인 프로그램에서 사용할 수 있는 기능을 보여준다.

모듈

2. 전체 시스템 구조
#

우리는 고급언어에서 제공하는 함수와 유사한 CALL, RET, ECALL PLC 명령어를 사용하여 해당 모듈내의 기능을 메인 프로그램에서 호출할 수 있도록 구현했다. 이를 통하여 사용자는 해당 기능의 동작 방식을 몰라도 보다 쉽게 사용할 수 있으며, 또한 동일한 기능을 하나의 함수로 만듬으로써 재사용성을 늘릴 수 있다. 만약 해당 모듈의 구현자가 안전 등의 이유로 동작을 바꾸더라도 이미 구현되어 있는 메인 프로그램의 수정이 불필요하여 높은 확장성 또한 보인다. 각 메인 프로그램에서의 모듈에 대한 의존은 아래의 그림과 같다. 해당 그림과 같이 각 메인 프로그램은 추가 구현 없이 간편하게 모듈에 기능을 요청함으로써 보다 쉬운 구현이 가능하다. 또한 실린더 에러 감지와 같은 부가 기능을 추가 구현 없이 모든 실린더 동작에 적용시킬 수 있다.

모듈