Skip to content

Arrivals & ILS Approaches

Complete guide to handling arrival traffic, ILS approaches, and tower handoffs in radarcontrol.io.

Overview

Arrival traffic enters your airspace at cruise altitude and must be descended, vectored, and cleared for an ILS approach to land at their destination airport. The complete arrival flow is:

  1. Entry - Aircraft enters sector at cruise altitude
  2. Descent - Issue descent clearances to bring aircraft down
  3. Vectoring - Vector aircraft toward the ILS intercept zone
  4. ILS Clearance - Clear aircraft for the ILS approach
  5. Establish on Localizer - Aircraft captures and tracks the localizer
  6. Glideslope Capture - Aircraft intercepts the glideslope and descends
  7. Tower Contact - Hand off to tower before landing
  8. Landing - Aircraft touches down and exits the simulation

ILS Approach Basics

What is an ILS?

The Instrument Landing System (ILS) provides precision lateral (localizer) and vertical (glideslope) guidance for landing. In radarcontrol.io:

  • Localizer - Provides lateral guidance aligned with the runway centerline
  • Glideslope - Provides a 3-degree descent path to the runway threshold
  • Decision Height - Aircraft commits to landing at 200ft AGL

Approach States

Aircraft on approach progress through these states:

StateDescriptionSpeed
vectoringBeing vectored toward the approach220 kts
interceptingTurning to capture the localizer180 kts
establishedOn localizer, above glideslope160 kts
finalOn glideslope, descending145 kts
landingBelow 200ft AGL, committed to land130 kts

Speed Management

The simulator automatically manages approach speeds. Aircraft will decelerate through each phase without explicit speed commands, though you can override this if needed.

Interactive Commands

ILS Clearance

Clear an aircraft for an ILS approach to a specific runway.

Syntax:

  • i [RUNWAY] or ils [RUNWAY] - Clear ILS approach
  • Runway format: 27L, 09R, 4R, 36, etc.

Examples:

DAL123 i 27L         # Clear ILS runway 27L
SWA456 ils 09        # Clear ILS runway 09
AAL789 i 4R          # Clear ILS runway 4 right

Prerequisites

For an ILS clearance to succeed:

  • Aircraft heading must be within 30° of runway heading
  • Aircraft must be 5-20nm from the runway threshold
  • Aircraft altitude must allow glideslope capture
  • The runway must have ILS equipment

Tower Contact

Hand off the aircraft to tower control. This is required for landing to complete.

Syntax:

  • t or twr or tower - Contact tower

Examples:

DAL123 twr           # Contact tower
SWA456 t             # Contact tower (short form)

Important

Without tower contact, aircraft will continue the approach but cannot complete the landing. Always issue tower contact before the aircraft reaches decision height (200ft AGL).

Go-Around

Instruct an aircraft to abort the approach and climb.

Syntax:

  • ga - Go around

Examples:

DAL123 ga            # Go around

After a go-around:

  • Aircraft climbs to 3,000ft above airport elevation
  • Aircraft regains controllability
  • Runway protection is cleared
  • You can re-vector for another approach

Combined Commands

Commands can be chained together:

DAL123 c50 i 27L            # Descend to 5000ft, clear ILS 27L
SWA456 i 09R twr            # Clear ILS 09R and contact tower immediately
AAL789 c30 s200 i 4R        # Descend FL30, speed 200, clear ILS 4R

Vectoring to the ILS

Intercept Geometry

For a successful ILS intercept, aircraft must be:

  • Heading: Within 30° of the runway heading
  • Distance: 5-20nm from the threshold
  • Altitude: At or below glideslope altitude (+500ft margin)
  • Side: Approaching from in front of the threshold (not behind)

Vectoring Procedure

  1. Descend the aircraft to an appropriate altitude (typically 3,000-6,000ft depending on distance)
  2. Turn the aircraft toward the localizer at an intercept angle of 20-30°
  3. Clear ILS when within the intercept zone

Example Sequence:

DAL123 c60                   # Descend to FL60 (6,000ft)
DAL123 h270                  # Turn heading 270 (30° intercept to RWY 24)
DAL123 i 24L                 # Clear ILS runway 24L

Localizer Extension

The radar display shows the localizer centerline extending from each runway. Use this visual aid to:

  • Plan your intercept vectors
  • Judge when to turn aircraft toward the localizer
  • Verify aircraft are established on centerline

Visual Guidance

When an aircraft is cleared for the ILS, its target track line on the radar will show the expected path to the runway.

Scripting API

Arrival Events

onApproachCleared(callback)

Called when an aircraft is cleared for an ILS approach.

javascript
onApproachCleared((event) => {
  log(`${event.cs} cleared ILS ${event.runway} at ${event.airport}`);
});

Event Object:

javascript
{
  cs: string,        // Aircraft callsign
  airport: string,   // Airport ICAO code
  runway: string     // Runway identifier
}

onILSEstablished(callback)

Called when an aircraft establishes on the localizer.

javascript
onILSEstablished((event) => {
  log(`${event.cs} established ILS ${event.runway}`);
});

onTowerContact(callback)

Called when an aircraft is handed off to tower.

javascript
onTowerContact((event) => {
  log(`${event.cs} contact tower for ${event.runway}`);
});

onLanding(callback)

Called when an aircraft touches down.

javascript
onLanding((event) => {
  log(`${event.cs} landed ${event.airport} runway ${event.runway}`);
});

onGoAround(callback)

Called when an aircraft executes a go-around.

javascript
onGoAround((event) => {
  log(`${event.cs} going around: ${event.reason}`);
});

onUnableILS(callback)

Called when an aircraft cannot accept an ILS approach (pilot reports "unable").

javascript
onUnableILS((event) => {
  log(`${event.cs} unable ILS ${event.runway}: ${event.reason}`);
});

Reason values:

  • 'heading' - Aircraft heading too far from runway
  • 'too_close' - Less than 5nm from threshold
  • 'too_far' - More than 20nm from threshold
  • 'too_high' - Above glideslope + 500ft
  • 'wrong_side' - Behind the runway threshold
  • 'no_ils' - Runway has no ILS equipment

Aircraft Control Methods

clearILS(runway)

Clear the aircraft for an ILS approach.

javascript
onSpawn((aircraft) => {
  // For arrivals, set up approach
  if (aircraft.destinationAirport) {
    aircraft.over("FINAL", (ac) => {
      ac.clearILS("27L");
    });
  }
});

Returns: boolean - true if clearance was successful

contactTower()

Hand off the aircraft to tower control.

javascript
onILSEstablished((event) => {
  const ac = traffic.byCallsign(event.cs);
  if (ac) {
    // Hand off to tower when established
    ac.contactTower();
  }
});

goAround()

Instruct the aircraft to go around.

javascript
// Go around if runway becomes occupied
onTick(({ traffic }) => {
  traffic.all().forEach(ac => {
    if (ac.approachState === 'final' && isRunwayBlocked(ac)) {
      ac.goAround();
    }
  });
});

Aircraft Properties

Aircraft on approach have additional properties:

javascript
aircraft.approachState    // 'vectoring' | 'intercepting' | 'established' | 'final' | 'landing'
aircraft.clearedILS       // boolean - has been cleared for ILS
aircraft.contactedTower   // boolean - has been handed to tower
aircraft.destinationAirport // string - ICAO code of destination

CenterAPI Methods

Low-level approach control methods:

javascript
center.clearILS(callsign, runway)      // Clear for ILS
center.contactTower(callsign)          // Contact tower
center.goAround(callsign)              // Go around
center.isOnApproach(callsign)          // Check if on approach
center.getApproachState(callsign)      // Get current state
center.isRunwayProtected(airport, rwy) // Check runway protection

Example: Automated Arrival Handling

javascript
// Handle arrivals
onSpawn((aircraft) => {
  if (!aircraft.destinationAirport) return;

  log(`${aircraft.cs} arrival for ${aircraft.destinationAirport}`);

  // Descend toward approach altitude
  aircraft.descend(6000);
  aircraft.speed(250);

  // Direct to final approach fix
  aircraft.direct("FINAL");
});

// Clear ILS when in position
onTick(({ traffic }) => {
  traffic.all().forEach(ac => {
    if (ac.destinationAirport && !ac.clearedILS) {
      // Try to clear ILS
      const cleared = ac.clearILS("27L");
      if (cleared) {
        log(`${ac.cs} cleared ILS 27L`);
      }
    }
  });
});

// Hand off to tower when established
onILSEstablished((event) => {
  const ac = traffic.byCallsign(event.cs);
  if (ac) {
    ac.contactTower();
    log(`${event.cs} contact tower`);
  }
});

// Log landings
onLanding((event) => {
  log(`${event.cs} landed safely!`);
});

Runway Protection

The simulator enforces runway protection to prevent multiple aircraft from approaching the same runway simultaneously.

  • Protection Zone: 5nm from threshold
  • One aircraft at a time per runway
  • Protection clears when aircraft lands or goes around

Check runway status:

javascript
const occupied = center.isRunwayProtected("KJFK", "27L");
if (occupied) {
  log("Runway 27L is protected - hold aircraft");
}

Approach Speed Reference

Default approach speeds by aircraft type:

Aircraft CategoryInterceptEstablishedFinalLanding
Light jet (CRJ, E145)160 kts140 kts130 kts115 kts
Narrowbody (A320, B737)180 kts160 kts145 kts130 kts
Widebody (A330, B777)190 kts170 kts155 kts145 kts
Super heavy (A380, B747)200 kts175 kts160 kts150 kts

TIP

Aircraft automatically adjust their speed based on approach phase. Manual speed assignments will override automatic speed management.

Troubleshooting

"Unable ILS" Messages

ReasonSolution
Heading too farVector aircraft closer to runway heading (within 30°)
Too closeClear aircraft earlier (5+ nm from threshold)
Too farWait until aircraft is within 20nm of threshold
Too highDescend aircraft before clearing approach
Wrong sideAircraft is behind runway - vector around

Aircraft Not Landing

If an aircraft reaches the runway but doesn't land:

  • Check tower contact - Did you issue twr command?
  • Aircraft will not complete landing without tower handoff

Go-Around Situations

Consider a go-around when:

  • Runway becomes occupied
  • Aircraft is too high on glideslope
  • Spacing from preceding aircraft is too tight
  • Weather conditions change

Quick Reference

ILS COMMANDS
  i 27L, ils 27L     Clear ILS runway 27L
  t, twr, tower      Contact tower (required for landing)
  ga                 Go around

COMBINED EXAMPLES
  DAL123 c50 i 27L           Descend 5000, clear ILS
  SWA456 i 09R twr           Clear ILS 09R, contact tower
  AAL789 ga                  Go around

INTERCEPT REQUIREMENTS
  Heading:  Within 30° of runway heading
  Distance: 5-20nm from threshold
  Altitude: Below glideslope + 500ft

APPROACH STATES
  vectoring     → intercepting → established → final → landing

SCRIPTING EVENTS
  onApproachCleared, onILSEstablished, onTowerContact
  onLanding, onGoAround, onUnableILS