주요 콘텐츠

무어 의미 체계를 사용하여 신호등 모델링하기

이 예제에서는 무어 의미 체계를 사용하여 신호등을 모델링하는 방법을 보여줍니다. 무어 차트는 천이에서가 아니라 상태에서만 출력값을 계산합니다. 자세한 내용은 Design Considerations for Moore Charts 항목을 참조하십시오.

무어 신호등의 논리

이 예제에서는 신호등 모델에 5개의 신호 상태로 동작하는 Light_Controller라는 무어 차트가 포함되어 있습니다. 각 상태는 2개의 반대 방향(북-남 및 동-서)으로 있는 신호등의 색상과 현재 색상이 유지되는 기간을 나타냅니다. 각 상태의 이름은 북-남 방향에서 보이는 신호등의 동작을 나타냅니다.

이 차트는 시간 논리를 사용하여 상태 천이를 조절합니다. after 연산자는 소스 상태에 진입할 때 초기화되는 카운트다운 타이머를 구현합니다. 동-서 도로에 교통량이 더 많기 때문에 기본적으로 타이머는 북-남 방향보다 동-서 방향의 녹색등에 더 긴 시간을 제공합니다. 동-서 방향의 녹색등은 최소 20 클록 틱 동안 유지되지만, 북-남 방향에서 교통이 감지되지 않으면 더 오래 유지될 수도 있습니다. 센서는 북-남 방향에서 빨간등에 대기 중인 차량이 있는지 감지합니다. 차량이 감지되면, 북-남 방향의 신호등을 녹색으로 변경하여 교통 흐름을 유지합니다.

Light_Controller 차트는 무어 머신처럼 동작합니다. 즉, 현재 상태를 기반으로 출력값을 업데이트한 후 다음과 같은 새로운 상태로 천이합니다.

Stop — 북-남 방향 신호등은 빨간색, 동-서 방향 신호등은 녹색입니다.

  • 현재 상태에 따라 출력값 y1 = RED(북-남)를 설정합니다.

  • 현재 상태에 따라 출력값 y2 = GREEN(동-서)을 설정합니다.

  • 20 클록 틱 이후 활성 상태는 StopForTraffic이 됩니다.

StopForTraffic — 최소 20 클록 틱 동안 북-남 방향 신호등은 빨간색, 동-서 방향 신호등은 녹색이었습니다.

  • 현재 상태에 따라 출력값 y1 = RED(북-남)를 설정합니다.

  • 현재 상태에 따라 출력값 y2 = GREEN(동-서)을 설정합니다.

  • 센서를 확인합니다.

  • 센서가 북-남 방향에서 대기 중인 차량을 감지하면([sens] = true), 활성 상태는 StopToGo가 됩니다.

StopToGo — 신호등은 센서의 응답에 따라 교통 흐름을 변경해야 합니다.

  • 현재 상태에 따라 출력값 y1 = RED(북-남)를 설정합니다.

  • 현재 상태에 따라 출력값 y2 = YELLOW(동-서)를 설정합니다.

  • 3 클록 틱 이후 활성 상태는 Go가 됩니다.

Go — 3 클록 틱 동안 북-남 방향 신호등은 빨간색, 동-서 방향 신호등은 노란색이었습니다.

  • 현재 상태에 따라 출력값 y1 = GREEN(북-남)을 설정합니다.

  • 현재 상태에 따라 출력값 y2 = RED(동-서)를 설정합니다.

  • 10 클록 틱 이후 활성 상태는 GoToStop이 됩니다.

GoToStop — 10 클록 틱 동안 북-남 방향 신호등은 녹색, 동-서 방향 신호등은 빨간색이었습니다.

  • 현재 상태에 따라 출력값 y1 = YELLOW(북-남)를 설정합니다.

  • 현재 상태에 따라 출력값 y2 = RED(동-서)를 설정합니다.

  • 3 클록 틱 이후 활성 상태는 Stop이 됩니다.

무어 신호등에서 규칙 설계하기

이 무어 신호등 예제에서는 다음 무어 설계 규칙을 보여줍니다.

  • 차트는 상태 동작에서 출력값 y1y2를 계산합니다.

  • 차트는 천이에 대한 조건에서 입력값 sens를 테스트합니다.

  • 차트는 시간 논리를 사용하지만, 비동기 이벤트는 사용하지 않습니다.

참고 항목

도움말 항목