|
|
@ -0,0 +1,308 @@ |
|
|
|
☐ 교통신호제어센터의 교차로 신호정보 제공 방안 |
|
|
|
|
|
|
|
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 BYTE |
|
|
|
STX2 통신프레임의 시작 부호 1 (0x7E) 1 BYTE |
|
|
|
SEQUENCE BYTE |
|
|
|
TIME 통신프레임의 시작 부호 2 (0x7E) 1 BYTE |
|
|
|
COMMAND BYTE |
|
|
|
DATA LENGTH 순차번호 (0 ~ 255) 1 BYTE |
|
|
|
|
|
|
|
현재시각 (32BIT) 4 |
|
|
|
|
|
|
|
명령코드 1 |
|
|
|
|
|
|
|
데이터 프레임의 BYTE 길이 2 |
|
|
|
|
|
|
|
▪ COMMAND 목록 |
|
|
|
|
|
|
|
번호 COMMAND 설명 송수신 방향 비고 |
|
|
|
신호서버 → 외부서버 예비 |
|
|
|
1 0xF2 교차로 신호운영현황 전송 신호서버 ← 외부서버 |
|
|
|
신호서버 → 외부서버 |
|
|
|
2 0xF3 교차로 신호운영현황 응답 (ACK) 신호서버 ← 외부서버 |
|
|
|
신호서버 → 외부서버 |
|
|
|
3 0xF4 교차로 주기정보 전송 신호서버 ← 외부서버 |
|
|
|
신호서버 ← 외부서버 |
|
|
|
4 0xF5 교차로 주기정보 응답 (ACK) |
|
|
|
|
|
|
|
5 0xF6 교차로 DB 전송 |
|
|
|
|
|
|
|
6 0xF7 교차로 DB 응답 (ACK) |
|
|
|
|
|
|
|
7 0xF9 신호정보제공 요청 |
|
|
|
|
|
|
|
- 신호정보제공 요청시 사전 등록된 서버에 한하여 신호정보제공 (예정) |
|
|
|
|
|
|
|
▪ 전체 메시지 구성 (HEADER + DATA) |
|
|
|
|
|
|
|
HEADER DATA |
|
|
|
DATA |
|
|
|
STX1 STX2 SEQ. TIME COMMAND LENGTH [Length] Bytes |
|
|
|
1 byte 1 byte 1 byte 2 byte |
|
|
|
1 byte 4 byte |
|
|
|
4. 데이터 상세 구조 |
|
|
|
1) 교차로 신호운영현황 정보전송 |
|
|
|
|
|
|
|
▪ 1초 단위의 교차로 신호운영현황 정보 |
|
|
|
▪ 정보전송 “교차로 시작번호”부터 N개의 교차로를 연속적으로 전송한다 |
|
|
|
|
|
|
|
BYTE 항목 BIT 설명 |
|
|
|
1 교차로 |
|
|
|
2 16 BIT 정보전송 교차로 시작번호 (1 – 9999) |
|
|
|
3 번호 |
|
|
|
4 현시 75 RING A의 PHASE (0 ∼ 7) |
|
|
|
코드 40 |
|
|
|
5 75 RING A의 STEP (0 ∼ 31) |
|
|
|
제어기 40 |
|
|
|
6 운영상태 RING B의 PHASE (0 ∼ 7) |
|
|
|
7 |
|
|
|
7 제어기 6 RING B의 STEP (0 ∼ 31) |
|
|
|
8 상태 5 |
|
|
|
9 4 제어기 통신상태 1 : FAIL, 0 : 정상 |
|
|
|
10 3 |
|
|
|
11 운용 맵번호 0 : 일반제, 1~5 : 시차제, 6 : 전용맵 |
|
|
|
12 2 |
|
|
|
- 등기종류 1 : 4색등, 0 : 3색등 |
|
|
|
20 1 |
|
|
|
21 교통신호기 운영모드 0 : SCU 고정주기 모드 |
|
|
|
- 0 1 : 감응하지 않는 OFFLINE 제어모드 |
|
|
|
29 7 RING 운영방식 2 : 감응되는 OFFLINE 제어모드 |
|
|
|
6 현시유지 4 : 감응되는 온라인 제어모드 |
|
|
|
5 우선신호 5 : 감응하지 않는 온라인 제어모드 |
|
|
|
4 전이 |
|
|
|
3 감응 1 : DUAL-RING, 0 : SINGLE-RING |
|
|
|
2 소등 1 : ON, 0 : OFF |
|
|
|
1 점멸 1 : 서비스 중, 0 : OFF |
|
|
|
0 수동 1 : 전이 중, 0 : OFF |
|
|
|
- 주기 COUNT 1 : 감응, 0 : 정상 |
|
|
|
- 현 주기 1 : 소등, 0 : 정상 |
|
|
|
- 연동 1 : 점멸, 0 : 정상 |
|
|
|
- A-ring 이동류번호 1 : 수동, 0 : 정상 |
|
|
|
- B-ring 이동류번호 0 ~ 255 초 |
|
|
|
0 ~ 255 초 |
|
|
|
실제 계측 OFFSET |
|
|
|
1 - 21 |
|
|
|
1 - 21 |
|
|
|
|
|
|
|
교차로 시작번호+1 신호운영정보 (9 Bytes) |
|
|
|
|
|
|
|
교차로 시작번호+2 신호운영정보 (9 Bytes) |
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
... 교차로 시작번호+N 신호운영정보 (9 Bytes) |
|
|
|
|
|
|
|
- 이동류번호는 단위시험 과정에서, 삭제 가능하다면 삭제 검토 |
|
|
|
- day plan table에 이동류 번호 지정되어 있어, 현시번호로 확인 가능 |
|
|
|
|
|
|
|
이동류번호는 시차제를 반영한 신호현시가 가능하도록 하기 위함임. 만약 day plan table이 실시간으로 조회 가능하다면 삭 |
|
|
|
제 가능하지만 그렇지 않으면 삭제 불가능. |
|
|
|
2) 교차로 주기정보 : 주기 종료 후 Split 정보 제공 |
|
|
|
▪ 주기 종료 후 Ring-A, Ring-B의 운영한 현시정보를 전송한다. |
|
|
|
▪ 정보전송은 N개의 교차로 정보를 연속하여 전송이 가능하다 |
|
|
|
|
|
|
|
BYTE 항목 BIT 설명 |
|
|
|
교차로 번호 16 BIT 정보전송 교차로번호 (1 – 9999) |
|
|
|
1 |
|
|
|
2 RING-A 운영시간 8 Bytes PHASE 1 – 8 |
|
|
|
3 |
|
|
|
- RING-B 운영시간 8 Bytes PHASE 1 – 8 |
|
|
|
10 |
|
|
|
11 |
|
|
|
- |
|
|
|
18 |
|
|
|
|
|
|
|
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 JSON 표기 WEEK PLAN data 설명 |
|
|
|
|
|
|
|
{ data : 7 plan_no |
|
|
|
“lcid” : number, plan_no = 1 ~ 10 |
|
|
|
“type” : “weekplan”, |
|
|
|
“data” : number[], |
|
|
|
} |
|
|
|
|
|
|
|
∎ week plan table 정의 |
|
|
|
② 교차로 DAY PLAN DAYPLAN data 설명 |
|
|
|
|
|
|
|
∎ JSON 표기 plan_no = 1 ~ 10 |
|
|
|
redYel : [A_flow_no, A_red_time, A_yellow_time, |
|
|
|
DAYPLAN JSON 표기 |
|
|
|
B_flow_no, B_red_time, B_yellow_time,] |
|
|
|
{ data : [hour, min, cycle, offset, split[16]] |
|
|
|
“lcid” : number, |
|
|
|
“type” : “dayplan”, |
|
|
|
“plan” : { |
|
|
|
“plan_no”: number, |
|
|
|
“redYel”: number[], |
|
|
|
“data”: number[], |
|
|
|
}[] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
- 이동류번호를 이곳에 넣어 대체하겠다는 의견인데, 그렇다면 이 변경사항을 업데이트되는 최소 주기가 얼마인지? 만약 하루 단 |
|
|
|
위로 업데이트를 하는거라면, 의미가 없다. (시단위, 분단위도 의미가 없고 초단위여야 의미가 있다.) 만약 이동류번호가 변경되었 |
|
|
|
을 때, 그 순간 (1초 내로) 변경된 값이 테이블에 반영된다면, 변경되었다는 신호가 외부서버에 즉각 전달된다는 가정 하에 신호생 |
|
|
|
성이 가능하다. 그런데 이정도로 많은 데이터라면 1초 내로 업데이트하기는 힘들 것도 같다. 혹시, 변경사항이 있을 때에만 업데이 |
|
|
|
트를 하는 거라서 1초 내로 업데이트가 가능한 것인지? |
|
|
|
- 황색시간과 적색시간이 반영된 것은 좋은데, 가장 기본적인 녹색시간이 없다. 녹색시간 혹은 현시시간 (=녹+황+적)이 있어야 한 |
|
|
|
|
|
|
|
다. |
|
|
|
|
|
|
|
∎ FLOW/RED/YELLOW |
|
|
|
|
|
|
|
현시 이동류번호 A-ring yellow_time 이동류번호 B-ring |
|
|
|
red_time red_time yellow_time |
|
|
|
현시 1 |
|
|
|
현시 2 |
|
|
|
현시 3 |
|
|
|
현시 4 |
|
|
|
현시 5 |
|
|
|
현시 6 |
|
|
|
현시 7 |
|
|
|
현시 8 |
|
|
|
|
|
|
|
∎ DAY PLAN TIME Table |
|
|
|
③ 교차로 HOLIDAY PLAN HOLIDAY PLAN data 설명 |
|
|
|
∎ JSON 표기 |
|
|
|
[month, day, plan_no] * 30 |
|
|
|
HOLIDAY PLAN JSON 표기 plan_no = 1 ~ 10 |
|
|
|
|
|
|
|
{ |
|
|
|
“lcid”: number, |
|
|
|
“type”: “holidayplan”, |
|
|
|
“data”: number[], |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
∎ HOLIDAY Plan Table |
|
|
|
④ SIGNAL MAP (Ring-A , Ring-B) SIGNAL MAP data 설명 |
|
|
|
|
|
|
|
∎ JSON 표기 map_no = 1 - 6 |
|
|
|
[output[16], min, max, eop] * 32 step |
|
|
|
SIGNAL MAP JSON 표기 |
|
|
|
|
|
|
|
{ |
|
|
|
“lcid”: number, |
|
|
|
“type”: “signal_map”, |
|
|
|
“data”: { |
|
|
|
“map_no” : number, |
|
|
|
“a_ring” : number[], |
|
|
|
“b_ring” : number[], |
|
|
|
}[], |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
∎ SIGNAL MAP Table |
|
|
|
⑤ 교차로 기반정보 구성 |
|
|
|
∎ JSON 표기 |
|
|
|
|
|
|
|
교차로 기반정보 구성 JSON 표기 교차로 기반정보 구성 data 설명 |
|
|
|
`{ |
|
|
|
|
|
|
|
“lcid”: number, |
|
|
|
|
|
|
|
“type”: “geo_map”, |
|
|
|
|
|
|
|
“intName”: string, // 교차로명 |
|
|
|
|
|
|
|
“intType”: number, // 교차로유형 (0: 주교차로, 1: 연등교차로) |
|
|
|
|
|
|
|
“lcType”: number, // 제어기 유형 (1: 2004년형, 2: 2010 년형, 3: 2023년형) |
|
|
|
|
|
|
|
“lampType”: number, // 등기 유형 (1: 4색등, 2: 3색등) |
|
|
|
|
|
|
|
“mainIntNo”: number, // 연등교차로인 경우 주교차로 번호 |
|
|
|
|
|
|
|
“groupNo”: number, // 그룹번호 |
|
|
|
|
|
|
|
“nodeNo”: number, // 교차로 노드 ID |
|
|
|
|
|
|
|
“intLat”: number, // 교차로 위도 (ex : 36.123500) |
|
|
|
|
|
|
|
“intLng”: number, // 교차로 경도 (ex : 127.123500) |
|
|
|
|
|
|
|
“ppcType”: number, // PPC 유형 (0 : 설치안됨, 1 : 현장방식, 2 : 중앙제어방식) |
|
|
|
|
|
|
|
“mainP”: number, // 주현시번호 (1 – 8) |
|
|
|
|
|
|
|
“flow”: { |
|
|
|
|
|
|
|
“num”: number, // 이동류 번호 |
|
|
|
|
|
|
|
“geoXY: number[], // 화살표 시작점 위도/경도, 중간점 위도/경도, 종료점 위도/경도, |
|
|
|
|
|
|
|
}[] |
|
|
|
|
|
|
|
} |
|
|
|
▪ 이동류 번호 |
|
|
|
|
|
|
|
이동류 이동류 이동류 이동류 이동류 이동류 |
|
|
|
설명 |
|
|
|
설명 설명 |
|
|
|
번호 방향 |
|
|
|
번호 방향 번호 방향 |
|
|
|
|
|
|
|
1 좌회전 (동 → 남) 9 좌회전 (북동 → 남동) 17 ˙ 보행신호 |
|
|
|
|
|
|
|
2 직진 (서 → 동) 10 직진 (남서 → 북동) 18 ˙ 신호 없음 |
|
|
|
|
|
|
|
3 좌회전 (남 → 서) 11 좌회전 (남동 → 남서) 21 ˙ 신호우회전 |
|
|
|
|
|
|
|
4 직진 (북 → 남) 12 직진 (북서 → 남동) |
|
|
|
|
|
|
|
5 좌회전 (서 → 북) 13 좌회전 (남서 → 북서) |
|
|
|
|
|
|
|
6 직진 (동 → 서) 14 직진 (북동 → 남서) |
|
|
|
|
|
|
|
7 좌회전 (북 → 동) 15 좌회전 (북서 → 북동) |
|
|
|
|
|
|
|
8 직진 (남 → 북) 16 직진 (남동 → 북서) |
|
|
|
|