상세 컨텐츠

본문 제목

[포스코x코딩온] 스마트 팩토리 SW 개발자 과정 10 주차 회고 | 신호등 PLC 프로젝트

본문

 10주차 첫 횟감은 2일에 걸쳐 진행했던 신호등 PLC 프로젝트 되시겠다. 신선한 주제로 양질의 포스팅을! 

  • 신호등의 조건
  • PLC 회로 분해하기
  • 동작 영상

 신호등의 조건

 이번 프로젝트를 진행하기 위한 조건은 다음과 같다.

  • 보행자가 보행 버튼을 누르면 설정한 시간 후 차선의 신호등은 황색 램프가 점등되고 설정한 시간 후 적색으로 바뀐다.
  • 이때 보행자 신호등은 청색 램프가 10초간 점등된 뒤 10초간 점멸하며 이후 적색으로 바뀐다.

위의 조건을 만족시키기 위해 주어진 데이터 메모리 값은 아래와 같다.

  • 보행자_버튼: %IX0.0.0
  • 차선_청색: %QX0.1.0
  • 차선_황색: %QX0.1.1
  • 차선_적색: %QX0.1.2
  • 보행자_청색: %QX0.1.3
  • 보행자_적색: %QX0.1.4
  • 숫자표시기: %MW1000

 PLC 회로 분해하기

 보행자 버튼을 누르면 B접점 보행자 버튼이 동작하면서 TOF1 타이머가 5초 동안 동작하며 차선_청색 램프가 5초간 동작한다. 5초 뒤에 차선_청색 램프가 종료되면 2초 동안 차선_황색 램프가 동작한다. 차선_청색, 황색 램프가 소등되면 차선_적색 램프가 점등된다. 

 차선_적색 램프가 점등되면 20초간 TOF3가 동작한다.

 차선_적색 램프가 점등되면 보행자 청색 신호등이 켜진다. 이와 동시에 병렬로 연결된 TON17이 10초간 동작하며 신호를 딜레이한다.

 위 회로는 보행자 청색 신호등이 꺼질때 까지의 시간을 카운트 해주는 회로이다. 보행자_청색 램프가 켜지면 TOF3.ET의 시간(TOF3 타이머에서 20s까지 카운트하는 시간)을 UDINT형으로 변환하고 INT형으로 다시 변환한 후 초를 표현하기 위해 1000을 나눠준다. 기본적인 시간의 단위가 ms(밀리세컨드)이기 때문에 1000을 나눠줘야 s(세컨트) 값을 구할 수 있다. 이렇게 구한 시간값 GtimeResult를 19에서 빼줌으로서 20초에서 남은 시간을 XP-Builder의 숫자 표시기에 나타낼 수 있다.

 차선_청색 램프와 차선_황색 램프를 병렬 연결해서 둘 중 하나의 신호가 들어오면 보행자_적색 램프가 점등할 수 있도록 해주는 회로이다. 여기까지만 해주면 기본적으로 한번 동작을 시킬 수 있다. 하지만 다시 동작시키려고 하면 제대로 되지 않는 문제가 발생한다. 이를 해결하기 위해 SET 코일과 RESET 코일을 활용해서 회로를 초기화 시켜주는 회로를 아래처럼 추가해준다.

 완성된 회로를 동작시키기 위한 HMI를 아래 이미지처럼 작화해줬다.

동작 영상 

 보행자 스위치를 누르고 5초 뒤에 차선 황색등이 점등되며 2초 후 차선 적색등과 보행자 청색등이 점등되며 남은 시간이 표시된다. 10초가 지나면 보행자 청색등이 1초에 1번씩 점멸하고 남은 시간이 0이 되면 보행자 청색등이 소등되고 보행자 적색등과 차선 청색등이 점등 된다. 그리고 다시 보행자 스위치를 누르면 같은 동작을 반복하는 것을 확인할 수 있다.

 

 마치며

 이번 프로젝트를 진행하면서 많은 부분을 배웠다. 알고 있다고 생각했던 부분도 다시 살펴보면서 몰랐던 부분을 알게 되었다. 그리고 몇 번씩이나 회로를 갈아엎으면서 점차 최적화되는 것을 느꼈을 때는 막히면 새로 시작하는 것도 방법이 될 수 있다는 것을 깨달을 수 있었다. 이런 배움들을 통해 또 한번 성장했다고 느낀다. 그럼 다음 포스팅에서 만나기를! 

 

관련글 더보기