Simulink에서 ADS-B 신호를 사용한 항공기 추적
이 예제에서는 ADS-B(Automatic Dependent Surveillance-Broadcast) 신호를 처리하여 항공기를 추적하는 방법을 보여줍니다. 사전에 캡처된 신호를 사용하거나, RTL-SDR 라디오, ADALM-PLUTO 라디오 또는 USRP™ 라디오를 사용하여 신호를 실시간으로 수신할 수 있습니다. 추적된 항공기를 Mapping Toolbox™를 사용하여 맵에서 시각화할 수도 있습니다.
필요한 하드웨어와 소프트웨어
기본적으로 이 예제는 사전에 캡처된 데이터를 사용하여 실행됩니다. 사용자가 신호를 무선으로 수신하는 방식을 선택할 수도 있습니다. 이를 위해서는 다음 중 하나가 필요합니다.
RTL-SDR 라디오 및 Communications Toolbox Support Package for RTL-SDR Radio.
Pluto 라디오 및 Communications Toolbox Support Package for Analog Devices® ADALM-PLUTO Radio.
USRP N2xx 또는 B2xx 시리즈 라디오 및 Communications Toolbox Support Package for USRP Radio. 지원되는 라디오에 대한 자세한 내용은 Supported Hardware and Required Software 항목을 참조하십시오.
USRP E3xx, N3xx 또는 X3xx 시리즈 라디오 및 Wireless Testbench Support Package for NI USRP Radios. 지원되는 라디오에 대한 자세한 내용은 Supported Radio Devices (Wireless Testbench) 항목을 참조하십시오.
소개
Mode-S 신호 방식과 항공기 추적을 위한 ADS-B 기술에 대한 소개는 ADS-B 신호를 사용한 항공기 추적 MATLAB® 예제를 참조하십시오.
수신기 구조
다음 다이어그램은 수신기 코드 구조를 요약하여 보여줍니다. 처리 과정은 신호 소스, 물리 계층, 메시지 구문 분석기, 데이터 뷰어의 네 부분으로 구성됩니다.
![]()
신호 소스
다음 신호 소스 중 하나를 지정할 수 있습니다.
''Captured Signal''- 무선 신호를 파일로 기록하고, 이 신호를 기저대역 파일 리더 블록을 소스로 사용하여 2.4Msps 속도로 받음''RTL-SDR Radio''- 2.4Msps의 RTL-SDR 라디오''ADALM-PLUTO''- 12Msps 샘플 레이트의 ADALM-PLUTO 라디오''USRP Radio''- 모든 무선 통신에 대해 20Msps 샘플 레이트의 USRP 라디오를 사용하며, 예외적으로 N310/N300 라디오는 2.4Msps 샘플 레이트를 사용함
확장 스퀴터 메시지의 길이는 120마이크로초이므로, 신호 소스는 동시에 180개의 확장 스퀴터 메시지를 포함할 정도로 충분한 개수의 샘플을 처리하도록 구성되며, 이에 따라 신호 속성의 SamplesPerFrame을 적절하게 설정합니다. 알고리즘의 나머지 부분에서는 이 데이터 프레임에서 Mode-S 패킷을 검색한 후 올바르게 식별된 패킷을 모두 출력합니다. 이러한 유형의 처리를 일괄 처리라고 합니다. 또 다른 방식은 한 번에 하나의 확장 스퀴터 메시지를 처리하는 것입니다. 이 단일 패킷 처리 방식에서는 일괄 처리보다 180배 더 많은 오버헤드가 발생하지만 지연은 180배 더 적습니다. ADS-B 수신기는 지연이 어느 정도 허용되므로(delay tolerant), 이 예제에서는 일괄 처리를 사용합니다.
물리 계층
물리 계층(PHY)은 신호 소스에서 받은 기저대역 샘플을 처리하여 PHY 계층 헤더 정보와 원시 메시지 비트를 포함하는 패킷을 생성합니다. 다음 다이어그램은 물리 계층 구조를 보여줍니다.
![]()
RTL-SDR 라디오는 [200e3, 2.8e6]Hz 범위의 샘플링 레이트를 사용할 수 있습니다. 소스가 RTL-SDR 라디오인 경우, 예제에서는 샘플링 레이트 2.4MHz를 사용하고 실질적인 샘플링 레이트 12MHz로 5배 보간합니다.
ADALM-PLUTO 라디오는 [520e3, 61.44e6]Hz 범위의 샘플링 레이트를 사용할 수 있습니다. 소스가 ADALM-PLUTO 라디오인 경우, 예제에서는 입력값을 12MHz로 직접 샘플링합니다.
USRP 라디오는 여러 샘플링 레이트를 사용할 수 있습니다. 소스가 USRP 라디오인 경우, 예제에서는 입력값을 20MHz로 직접 샘플링합니다. N310/N300 라디오의 경우, 데이터는 2.4MHz 샘플 레이트로 수신되며 실질적인 샘플링 레이트 12e6으로 5배 보간합니다.
예를 들어, 데이터 레이트가 1Mbit/s이고 유효 샘플링 레이트가 12MHz인 경우 신호는 심볼당 12개의 샘플을 포함합니다. 수신 처리 체인에서는 복소수 심볼의 크기를 사용합니다.
패킷 동기화기(packet synchronizer)는 확장 스퀴터 패킷 2개에 상응하는 데이터 서브프레임에 대해 작동합니다. 이는 12MHz에서 1440개 샘플 혹은 120마이크로초에 해당합니다. 이 정도 길이의 서브프레임이면 확장 스퀴터가 서브프레임 안에 완전히 포함될 수 있습니다. 패킷 동기화기는 먼저 수신된 신호와 8마이크로초 프리앰블의 상관을 구하고 피크 값을 찾습니다. 그런 다음 확인된 동기화 지점이 프리앰블 시퀀스 [1 0 0 0 0 0 1 0 1 0 0 0 0 0 0]과 일치하는지 확인하여 동기화 지점을 검증합니다. 여기서 값 1은 높은 값을 나타내고 값 0은 낮은 값을 나타냅니다.
Mode-S PPM 방식은 2개의 심볼을 정의합니다. 각 심볼에는 2개의 칩이 있으며, 하나는 높은 값이고 다른 하나는 낮은 값입니다. 첫 번째 칩이 높은 값이고 그 다음 칩이 낮은 값이면 심볼은 1이 됩니다. 또는, 첫 번째 칩이 낮은 값이고 그 다음 칩이 높은 값이면 심볼은 0이 됩니다. 비트 구문 분석기가 수신된 칩을 복조하고 이진 메시지를 생성합니다. CRC 검사기가 이진 메시지의 유효성을 검사합니다. 비트 구문 분석기의 출력값은 Mode-S 물리 계층 헤더 패킷으로 구성된 벡터이며, 패킷은 다음 필드를 포함합니다.
RawBits - 원시 메시지 비트
CRCError - CRC에 통과하면 FALSE, CRC에 실패하면 TRUE
Time - 수신 시작부터 측정된 수신 시간(단위: 초)
DF - 다운링크 형식(패킷 유형)
CA - 성능
메시지 구문 분석기
메시지 구문 분석기는 [ 2 ]에 설명된 대로 패킷 유형을 기반으로 원시 비트를 추출합니다. 이 예제에서는 항공 속도, 식별 부호, 상공 위치 데이터가 포함된 짧은 스퀴터 패킷과 확장 스퀴터 패킷을 구문 분석할 수 있습니다.
데이터 뷰어
데이터 뷰어는 수신된 메시지를 그래픽 사용자 인터페이스(GUI)에 표시합니다. 데이터 뷰어는 각 패킷 유형마다 검출된 패킷 개수, 올바르게 디코딩된 패킷 개수, 패킷 오류율(PER)을 표시합니다. 라디오가 데이터를 캡처하면 이 메시지로부터 디코딩된 정보가 애플리케이션에 테이블 형식으로 나열됩니다.
Launch Map 및 Log Data
Launch Map 및 Log Data 슬라이더 스위치를 사용하여 맵을 실행하고 텍스트 파일 기록을 시작할 수도 있습니다.
Log Data* - Log Data가 On이면 캡처된 데이터가 TXT 파일에 저장됩니다. 저장된 데이터는 나중에 후처리에 사용할 수 있습니다.
Launch Map - Launch Map이 On이면 추적되는 항공기를 볼 수 있는 맵이 실행됩니다. 참고: 이 기능을 사용하려면 Mapping Toolbox의 유효한 라이선스가 있어야 합니다.
아래 그림은 애플리케이션이 항공기 세부 정보를 어떻게 추적, 나열하고 맵에 표시하는지 보여줍니다.


참고 문헌
International Civil Aviation Organization, Annex 10, Volume 4. Surveillance and Collision Avoidance Systems.
Technical Provisions For Mode S Services and Extended Squitter (Doc 9871)