무어 의미 체계를 사용하여 신호등 모델링하기
이 예제에서는 무어 의미 체계를 사용하여 신호등을 모델링하는 방법을 보여줍니다. 무어 차트는 천이에서가 아니라 상태에서만 출력값을 계산합니다. 자세한 내용은 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
이 됩니다.
무어 신호등에서 규칙 설계하기
이 무어 신호등 예제에서는 다음 무어 설계 규칙을 보여줍니다.
차트는 상태 동작에서 출력값
y1
과y2
를 계산합니다.차트는 천이에 대한 조건에서 입력값
sens
를 테스트합니다.차트는 시간 논리를 사용하지만, 비동기 이벤트는 사용하지 않습니다.