☐ 교통신호제어센터의 교차로 신호정보 제공 방안

1. 개요

1) 본 문서는 성남시 신호제어서버에서 외부시스템에 신호정보 제공을 위한 인터페이스를 정의한다.

2) 신호정보제공 대상 외부시스템은 다음과 같다

- 디지털 트윈 서버

- 긴급차량관제 서버

- 스마트교차로 서버

- ITS 센터

3) 연계 구성

2. 통신 방식

1) 통신 방식 : TCP 소켓 통신

[보안정책상 UDP 소켓으로 변경여지 있습니다....]

Server 측	Client 측	포트	규격
교통신호제어센터	외부시스템	7072 (TBD)	TCP/IP

2) Byte Ordering : Big-Endian

- 최상위 바이트(MSB)를 먼저 보내고, 최하위 바이트(LSB)는 맨나중에 보냄

3) 데이터 형식   : Byte 형식

4) 문자 인코딩   : UTF-8

5) 포트번호      : 7072

3. 프레임 구조

1) 본 시스템의 프레임은 “HEADER + DATA“로 구성하며, ”HEADER“의 구성과 ”COMMAND“ 목록은 다음과 같다.

▪ HEADER 구성 (10 BYTES)

항목	설명	데이터크기	데이터 유형
STX1	통신프레임의 시작 부호 1 (0x7E)	1	BYTE
STX2	통신프레임의 시작 부호 2 (0x7E)	1	BYTE
SEQUENCE	순차번호 (0 ~ 255)	1	BYTE
TIME	현재시각 (32BIT)	4	BYTE
COMMAND	명령코드	1	BYTE
DATA LENGTH	데이터 프레임의 BYTE 길이	2	BYTE

▪ COMMAND 목록

번호	COMMAND	설명	송수신 방향	비고
1	0xF2	교차로 신호운영현황 전송	신호서버 → 외부서버
2	0xF3	교차로 신호운영현황 응답 (ACK)	신호서버 ← 외부서버
3	0xF4	교차로 주기정보 전송	신호서버 → 외부서버
4	0xF5	교차로 주기정보 응답 (ACK)	신호서버 ← 외부서버
5	0xF6	교차로 DB 전송	신호서버 → 외부서버
6	0xF7	교차로 DB 응답 (ACK)	신호서버 ← 외부서버

4. 메시지 상세 구조

1) 교차로 신호운영현황 정보전송

▪ 1초 단위의 교차로 신호운영현황 정보

▪ 정보전송 “교차로 시작번호”부터 N개의 교차로를 연속적으로 전송한다

BYTE	항목	BIT	설명
1	교차로 번호	16 BIT	정보전송 교차로 시작번호 (1 – 9999)
2
3	현시 코드	7 □ 5	RING A의 PHASE (0 ∼ 7)
		4 □ 0	RING A의 STEP (0 ∼ 31)
4		7 □ 5	RING B의 PHASE (0 ∼ 7)
		4 □ 0	RING B의 STEP (0 ∼ 31)
5	제어기 운영상태	7	센터 통신 FAIL 상태	1 : FAIL, 0 : 정상
		6	운용 맵번호	0 : 일반제, 1~5 : 시차제, 6 : 전용맵
		5
		4
		3	등기종류	1 : 4색등, 0 : 3색등
		2	교통신호기 운영모드	0 : SCU 고정주기 모드 1 : 감응하지 않는 OFFLINE 제어모드 2 : 감응되는 OFFLINE 제어모드 4 : 감응되는 온라인 제어모드 5 : 감응하지 않는 온라인 제어모드
		1
		0
6	제어기 상태	7	RING 운영방식	1 : DUAL-RING, 0 : SINGLE-RING
		6	현시유지	1 : ON, 0 : OFF
		5	우선신호	1 : 서비스 중, 0 : OFF
		4	전이	1 : 전이 중, 0 : OFF
		3	감응	1 : 감응, 0 : 정상
		2	소등	1 : 소등, 0 : 정상
		1	점멸	1 : 점멸, 0 : 정상
		0	수동	1 : 수동, 0 : 정상
7		-	주기 COUNT	0 ~ 255 초
8		-	현 주기	0 ~ 255 초
9		-	연동	실제 계측 OFFSET
10		-	예비
11 - 18	교차로 시작번호+1 신호운영정보 (8 Bytes)
19 - 26	교차로 시작번호+2 신호운영정보 (8 Bytes)
	...
...	교차로 시작번호+N 신호운영정보 (8 Bytes)

-> A링, B링의 이동류번호 제공 필요. 시차제가 적용될 경우 교차로 DB정보를 통해서는 파악이 불가능하며, 신호운영현황을 통해 제공되는 이동류번호로만 파악이 가능함

2) 교차로 주기정보 : 주기 종료 후 Split 정보 제공

▪ 주기 종료 후 Ring-A, Ring-B의 운영한 현시정보를 전송한다.

▪ 정보전송은 N개의 교차로 정보를 연속하여 전송이 가능하다

BYTE	항목	BIT	설명
1	교차로 번호	16 BIT	정보전송 교차로번호 (1 – 9999)
2
3 - 10	RING-A 운영시간	8 Bytes	PHASE 1 – 8
11 - 18	RING-B 운영시간	8 Bytes	PHASE 1 – 8
	2번째 교차로 번호/ Ring-A / RING-B 운영시간 (18 Bytes)
	3번째 교차로 번호/ Ring-A / RING-B 운영시간 (18 Bytes)
	4번째 교차로 번호/ Ring-A / RING-B 운영시간 (18 Bytes)
	....

3) 교차로 DB 정보 : 교차로 DB 변경시 제공 (JSON 표기)

WEEK PLAN JSON 표기	WEEK PLAN data 설명
{ “lcid” : number, “type” : “weekplan”, “data” : number[], }	data : 7 plan_no plan_no = 1 ~ 10
DAYPLAN JSON 표기	DAYPLAN data 설명
{ “lcid” : number, “type” : “dayplan”, “plan” : { “plan_no”: number, “data”: number[], }[] }	plan_no = 1 ~ 10 [hour, min, cycle, offset, split[16]] * 16
HOLIDAY PLAN JSON 표기	HOLIDAY PLAN data 설명
{ “lcid”: number, “type”: “holidayplan”, “data”: number[], }	[month, day, plan_no] * 30 plan_no = 1 ~ 10
SIGNAL MAP JSON 표기	SIGNAL MAP data 설명
{ “lcid”: number, “type”: “signal_map”, “data”: { “map_no” : number, “a_ring” : number[], “b_ring” : number[], }[], }	map_no = 1 - 6 [output[16], min, max, eop] * 32 step
이동류 번호, 방위각 JSON 표기	기반정보 구성 data 설명
{ “lcid”: number, “type”: “geo_map”, “data”: { “map_no” : number, “a_ring” : number[], “b_ring” : number[], }[], }	map_no = 1 - 6 [direction(이동류 번호), angle(방위각)] * 8현시

→ dayplan data에 yellow, red 시간 추가 필요

=> yellow-time, red-time, min-green-time, 주현시 추가 필요. 이상의 정보들은 성남시 기존 사업자의 경우 별도의 테이블에 구성되었음(S_INT_PHASE_CONFIG, 교차로현시구성). 인천시의 경우에도 별도의 테이블에 구성되었음(soitdintsphasinfo, 교차로현시).

① 교차로 WEEK PLAN

② 교차로 DAY PLAN

③ 교차로 HOLIDAY PLAN

④ 시그널맵 (Ring-A , Ring-B)

⑤ 교차로 기반정보 구성 (이동류번호, 방위각)

RING	현시 1	현시 2	현시 3	현시 4	현시 5	현시 6	현시 7	현시 8
A-ring	이동류번호, 방위각
B-ring	이동류번호, 방위각

-> 방위각 정보는 진입, 진출 모두 제공 필요

=> 참고 : 이동류번호는 “신호운영현황(1초)”에 포함되어야 함. 방위각은 “신호운영현황(1초)”, “교차로 주기정보”, “교차로 DB 정보” 중 하나에 포함되어도 됨.

⑥ etc.

=> 교차로 이름 및 위-경도 필요. (만약 이것이 제공되지 않으면, 기존 사업자의 테이블을 사용할 수 있음)

▪ 이동류 번호 (1 byte)

이동류 번호	이동류 방향	설명	이동류 번호	이동류 방향	설명	이동류 번호	이동류 방향	설명
1		좌회전 (동 → 남)	9		좌회전 (북동 → 남동)	17	˙	보행신호
2		직진 (서 → 동)	10		직진 (남서 → 북동)	18	˙	신호 없음
3		좌회전 (남 → 서)	11		좌회전 (남동 → 남서)	21	˙	신호우회전
4		직진 (북 → 남)	12		직진 (북서 → 남동)
5		좌회전 (서 → 북)	13		좌회전 (남서 → 북서)
6		직진 (동 → 서)	14		직진 (북동 → 남서)
7		좌회전 (북 → 동)	15		좌회전 (북서 → 북동)
8		직진 (남 → 북)	16		직진 (남동 → 북서)

▪ 방위각 (2 bytes) : 0 ~ 360도

▪ 화살표 좌표 (24 bytes) -> 우리도 사용하지는 않습니다.

항목		설명
이동류 (화살표 시작 좌표)	위도	DD.DDDDDD
	경도	DDD.DDDDDD
이동류 (화살표 중간점 좌표)	위도	DD.DDDDDD
	경도	DDD.DDDDDD
이동류 (화살표 종료점 좌표)	위도	DD.DDDDDD
	경도	DDD.DDDDDD