PLC Simulator
Free for students

PLC Simulator for Students

Practice real IEC 61131-3 ladder logic in your browser. Auto-graded machine scenarios, structured lessons, and interview preparation — no install, no credit card.

Join 9400+ learners practicing PLC programming

Create a free account to track progress. No card and no trial clock.

Why students choose us

Everything you need. Zero hardware cost.

Real IEC 61131-3 execution

Your ladder logic runs through a real parser and interpreter — not a visualisation. The same IEC standard used in Codesys, OpenPLC, and hundreds of industrial controllers.

Auto-graded feedback

Authored scenarios use repeatable test cases. Submit your program and get objective, immediate feedback about the required machine behavior — no need to grade your own diagram.

Structured curriculum

55 learning modules, 12 quizzes, 6 interview tracks, and curated Beginner, Intermediate and Advanced paths take you from PLC fundamentals to job-ready plant control.

The concepts you'll learn

A visual map of the PLC fundamentals

The guided paths build these concepts in prerequisite order — scan cycle, ladder logic, wiring, timers, counters, Structured Text, safety, process control and diagnosis. Every pattern becomes something you write, run and grade in the browser. No hardware or install.

PLC architecture for students — CPU, input modules, output modules and field devices — the first concept in the free PLC curriculumA modular PLC rack on a backplane: power supply, CPU processor, input module, output module and a communications module side by side.PLC RACKbackplane busPSUPowerCPUProcessorDIInputDOOutputNETComms
Lesson 1 — what a PLC is: CPU, inputs, outputs, and the field devices they connect to.
The PLC scan cycle for students — read inputs, execute the program, update outputs, then repeat — taught early in the free browser PLC curriculumThe repeating PLC scan cycle: read inputs, execute the ladder logic, update outputs, then housekeeping, looping continuously.1Read Inputs2Execute Logic3Update Outputs4HousekeepingSCANCYCLE
The scan cycle — the single idea that makes ladder logic make sense.
A student's first ladder logic rung — a normally-open contact driving an output coil — written and auto-graded in the browser PLC simulatorA basic ladder logic rung between two power rails: an examine-if-closed contact (XIC) in series driving an output coil (OTE).L1L2] [StartXIC I:0/0LampOTE O:0/0
Your first rung — a contact driving a coil — graded instantly in the browser.
Ladder logic symbols for students — normally-open and normally-closed contacts, output coils, set and reset coils — the alphabet of PLC programmingThe core ladder logic symbols side by side: XIC examine-if-closed, XIO examine-if-open, OTE output energize, OTL output latch and OTU output unlatch.XICIfXIOIfOTEEnergizeLOTLLatchUOTUUnlatch
The ladder symbol set — the alphabet you read and write across every scenario.
An IEC TON on-delay timer timing chart for students, the instruction behind the traffic-light scenario in the free PLC curriculumA TON on-delay timer: the accumulated time bar ramps up toward the preset value, and the done (DN) bit turns on when the accumulator reaches preset.TONPRE 5000ACCACC ramps to PREPREDNdone bit
Timers (TON / TOF) — the instruction behind the traffic-light scenario.
An IEC CTU up-counter for students, the instruction used to count parts in the conveyor-sort scenario of the free PLC curriculumA CTU count-up counter: each input pulse increments the accumulator toward the preset, and the done (DN) bit turns on when count reaches preset.count pulsesCTUPRE 5ACC 3ACCcount toward presetDNdone bit
Counters (CTU / CTD) — the instruction used to count parts in conveyor scenarios.
The five IEC 61131-3 languages for students — Ladder, Function Block, Structured Text, SFC and Instruction List — the standard taught in the free PLC curriculumThe five IEC 61131-3 PLC programming languages as chips: Ladder Diagram, Function Block Diagram, Structured Text, Instruction List and Sequential Function Chart.IEC 61131-3 — five languagesLDLadder DiagramFBDFunction BlockSTStructured TextILInstruction ListSFCSequential Func. Chart
IEC 61131-3 — the international standard, so the skills transfer to Codesys, OpenPLC and real controllers.
An IEC 61131-3 Structured Text code block for students, the text-based PLC language introduced later in the free curriculum for state machines and PIDA small Structured Text code block in an editor: an IF/THEN condition, a TON timer call and assignments, showing text-based PLC programming.main.st — Structured Text1IF Start AND NOT Stop THEN2 Run := TRUE;3END_IF;4DelayTmr(IN := Run, PT := T#5s);5Lamp := DelayTmr.Q;
Structured Text — the high-level language for state machines and PID, introduced later in the path.

Follow it all in My Learning Path, or explore the browser PLC simulator directly.

Practice scenarios

From traffic lights to industrial machines

140 published scenarios across industrial domains. Each has a detailed brief, animated simulation, and auto-graded test cases.

Beginner

Traffic Light

Three-phase timer sequence. Classic first PLC project.

View scenario →
Beginner

Motor Start/Stop

Seal-in rung, stop button, overload protection.

View scenario →
Intermediate

Tank Fill

Level sensor, inlet valve, pump, overflow alarm.

View scenario →
Advanced

PID Temperature

Closed-loop temperature control with PID tuning.

View scenario →

How it works

Four steps to your first passing program

01

Sign up free

Create your account in 30 seconds. No credit card or trial clock. The source catalogue tags 27 practice records for free-tier access; visibility can vary by entitlement and rollout.

02

Start the curriculum

Follow curated Beginner, Intermediate and Advanced paths from PLC fundamentals to PID and plant-scale control, or explore any scenario.

03

Write real programs

Type ladder logic or structured text in the code editor. Run it against the machine simulation and watch outputs respond in real time.

04

Get graded feedback

Submit your program and the auto-grader runs every test case. See exactly which steps passed and which failed.

Why us

vs OpenPLC, LogixPro, and PLC-Fiddle

No install — works on any browser, any OS, any device
Auto-graded scenarios give objective pass/fail feedback
Curated Beginner–Advanced paths vs no guided progression
Three vendor dialects: IEC, Allen-Bradley, Siemens
Interview tracks with timed coding rounds
Free forever tier — not a 30-day trial

Pricing

Start free. Go pro when you are ready.

The free tier gives you 27 practice scenarios, guided beginner labs and starter learning modules — enough to build real foundations. Pro adds all 140 published scenarios, 55 modules, 108 dialect lessons, 12 quizzes and 6 interview tracks.

For classes and engineering teams

Assign this training to a managed cohort

Import a roster, assign learning paths, export learner progress and issue organisation-attributed certificates. Test it with a real cohort before purchasing.

Questions

Student FAQ

Yes. Run a guided first program without an account, then create a free account for 27 practice scenarios, including 10 guided beginner PLC labs. There is no card or time limit. Pro unlocks all 140 published scenarios when you are ready.

Start learning PLC programming today

Free tier. No install. No credit card. 30-second signup.

Create free account →

Competency and practice field guide

PLC simulator for students: implementation, evidence and troubleshooting

Direct answer

PLC simulator for students becomes useful when it connects learner level, course outcome, device, browser, accessibility, account policy, dialect, practice time and evidence expectation with briefing through executable logic, typed i/o, machine behavior, checks, hints, saved progress and instructor review, then proves one start-stop, timer and sequence task completed independently from a clean state under normal, boundary, fault and recovery conditions. The objective is a repeatable engineering or learning result, not merely activity inside a page or tool.

This guide is written for school, college, apprenticeship and self-directed learners needing repeatable PLC practice on their own devices. The intended result is specific: the learner can build, run, diagnose and explain a small machine program and preserve evidence for instructor or portfolio review.

Adult learners and an instructor using PLC racks and laptops while studying accessible student PLC programming practice in an industrial automation lab
Use this physical system view to connect accessible student PLC programming practice with observable inputs, control decisions, outputs and verification evidence.

System map / 02

Six concepts that control the result

Treat these as connected checkpoints. Each checkpoint has an expected state, an observable state and a boundary to the next part of the system. That structure prevents a software indication from being mistaken for physical proof.

NODE 01observable

Define the operating contract

learner level, course outcome, device, browser, accessibility, account policy, dialect, practice time and evidence expectation. For accessible student PLC programming practice, record the initial condition, actor, requested change, observable result and stopping condition before selecting a tool or implementation.

NODE 02observable

Map the evidence path

briefing through executable logic, typed I/O, machine behavior, checks, hints, saved progress and instructor review. Separate request, internal state, output or service, physical or user-visible result and independent feedback so each boundary can be inspected.

NODE 03observable

Prove normal operation

one start-stop, timer and sequence task completed independently from a clean state. Run more than one cycle from a known state and retain the values, timings or artifacts that demonstrate repeatability.

NODE 04observable

Exercise a boundary case

copying, hidden state, weak feedback, inaccessible control, unsupported browser, lost work and missing target transfer. Choose minimum, maximum, simultaneous, delayed or restart conditions that reveal assumptions hidden by the happy path.

NODE 05observable

Diagnose a controlled fault

a concept, syntax, runtime, machine, accessibility, persistence, assessment or transfer gap. Preserve the first symptom, divide the system at a measurable boundary and change one condition only after predicting the result.

NODE 06observable

Transfer and hand over

the evidence varied, explained and later recreated in vendor tools and supervised hardware practice. Restore normal state, remove temporary changes, repeat affected checks and document which claims remain limited to the learning environment.

Procedure / 03

A six-step practice and commissioning workflow

Run the steps in order the first time. Later, the same structure becomes a diagnostic loop: define the expected condition, observe the boundary, interpret the difference and choose one proving action.

  1. 01

    Write the acceptance case

    Convert learner level, course outcome, device, browser, accessibility, account policy, dialect, practice time and evidence expectation into initial conditions, one stimulus and observable pass criteria.

    Evidence: Another person can repeat the case without guessing the intended result.

    Avoid: Using page completion or an animation as the acceptance criterion.

  2. 02

    Build the map

    Document briefing through executable logic, typed i/o, machine behavior, checks, hints, saved progress and instructor review and name who owns each state or decision.

    Evidence: Every request and result has a source, destination and useful inspection point.

    Avoid: Using the same value as command, status and independent feedback.

  3. 03

    Run the baseline

    Apply one start-stop, timer and sequence task completed independently from a clean state from a clean start and record the expected evidence.

    Evidence: Repeated runs produce the same bounded result.

    Avoid: Changing several parameters before a baseline exists.

  4. 04

    Challenge assumptions

    Test copying, hidden state, weak feedback, inaccessible control, unsupported browser, lost work and missing target transfer without changing the acceptance contract.

    Evidence: Limits, timing and restart behavior reach defined states.

    Avoid: Testing only one ideal sequence.

  5. 05

    Isolate one failure

    Introduce or analyse a concept, syntax, runtime, machine, accessibility, persistence, assessment or transfer gap and locate the first disagreement.

    Evidence: The proving action distinguishes the leading hypotheses.

    Avoid: Resetting, forcing or replacing before evidence is retained.

  6. 06

    Close the evidence loop

    Complete the evidence varied, explained and later recreated in vendor tools and supervised hardware practice and repeat the affected regression cases.

    Evidence: A learner completes the surface by explaining the result, passing a changed case and identifying what still requires supervised target-equipment practice.

    Avoid: Treating an acknowledged message or one successful rerun as handover.

Diagnostic matrix / 04

Symptoms, proving points and next actions

The table is a reasoning aid, not a parts-replacement chart. Preserve the initial symptom, inspect the named boundary and use the interpretation to choose the next controlled test. Site safety procedures and equipment manuals remain authoritative.

Diagnostic symptoms, inspection points, interpretations and next actions for PLC simulator for students: implementation, evidence and troubleshooting
Observed symptomInspectInterpretationNext proving action
The expected result is unclearRequirement, initial state, actor, stimulus, units and pass conditionThe learner, instructor and assessor may be solving different versions of the task.Rewrite one observable acceptance case before continuing.
Internal state changes but the outcome does notRequest, final owner, output or service boundary and independent feedbackA software or interface indication proves intent at one layer, not the complete outcome.Trace the first boundary after the changing state.
Normal case passes but an edge case failsLimits, timing, simultaneous events, reset and restart assumptionsThe implementation contains a hidden assumption exposed by the changed condition.Add the failed boundary as a permanent regression case.
The failure disappears after resetOriginal symptom, histories, diagnostics, timestamps and active causeReset changed evidence or state without proving the initiating cause.Reproduce under a controlled condition and preserve pre/post-event data.
Simulator and target disagreeModel boundary, software version, task timing, I/O behavior, data types and configurationA learning model and the intended target do not share one of the recorded assumptions.Reduce the case and verify against current target documentation.
The result cannot be explainedPrediction, observation, proving action, alternative hypotheses and limitationsActivity occurred but the evidence is not yet transferable or reviewable.Have the learner defend the signal path and repeat a changed case.

Product evidence / 05

What the browser practice can actually demonstrate

The browser platform can retain programs, scenario results, attempts and observable machine state so practice is attached to evidence rather than seat time alone.

Where simulation stops

Student simulation cannot replace supervised electrical labs, target controller practice, safety validation or formal qualification requirements.

Commissioning notebook / 06

Six cases that turn the concepts into evidence

Use these as written briefs rather than click-through instructions. For every case, state the expected condition before acting, retain the first useful observation and explain why the final result proves the requirement. A different program or component choice can still be correct when it produces the same bounded behavior and evidence.

Case 01

predict → observe → prove

Prove define the operating contract

Engineering context. learner level, course outcome, device, browser, accessibility, account policy, dialect, practice time and evidence expectation. For accessible student PLC programming practice, record the initial condition, actor, requested change, observable result and stopping condition before selecting a tool or implementation. Begin with a written normal condition and identify which request, state, physical result or communication value will provide independent confirmation. Do not begin by changing the configuration; the initial state is part of the evidence and should remain reproducible.

Controlled setup. Use the “Write the acceptance case” stage of the workflow: convert learner level, course outcome, device, browser, accessibility, account policy, dialect, practice time and evidence expectation into initial conditions, one stimulus and observable pass criteria. The acceptance record should show this result: another person can repeat the case without guessing the intended result. Record initial conditions, the exact stimulus and the observation point so another learner can repeat the case without relying on your memory.

Fault challenge. Introduce or analyse “The expected result is unclear” as one bounded deviation. Inspect requirement, initial state, actor, stimulus, units and pass condition The working interpretation is that the learner, instructor and assessor may be solving different versions of the task. The next proving action is to rewrite one observable acceptance case before continuing. Change only one condition before observing the result, and preserve timestamps or measurements where timing matters.

Review and recovery. The most common trap here is using page completion or an animation as the acceptance criterion. After restoring the cause, repeat the normal case and at least one stop, timeout, disconnect or restart boundary relevant to this topic. Remove temporary forces and bypasses, return the model to a known state and retain the evidence that both operation and recovery are deliberate.

Explain it aloud: What should I learn first about accessible student PLC programming practice? A defensible short answer is: Start with the operating contract and evidence path: learner level, course outcome, device, browser, accessibility, account policy, dialect, practice time and evidence expectation, followed by briefing through executable logic, typed i/o, machine behavior, checks, hints, saved progress and instructor review. Add advanced features only after the baseline is predictable.

Case 02

predict → observe → prove

Prove map the evidence path

Engineering context. briefing through executable logic, typed I/O, machine behavior, checks, hints, saved progress and instructor review. Separate request, internal state, output or service, physical or user-visible result and independent feedback so each boundary can be inspected. Begin with a written normal condition and identify which request, state, physical result or communication value will provide independent confirmation. Do not begin by changing the configuration; the initial state is part of the evidence and should remain reproducible.

Controlled setup. Use the “Build the map” stage of the workflow: document briefing through executable logic, typed i/o, machine behavior, checks, hints, saved progress and instructor review and name who owns each state or decision. The acceptance record should show this result: every request and result has a source, destination and useful inspection point. Record initial conditions, the exact stimulus and the observation point so another learner can repeat the case without relying on your memory.

Fault challenge. Introduce or analyse “Internal state changes but the outcome does not” as one bounded deviation. Inspect request, final owner, output or service boundary and independent feedback The working interpretation is that a software or interface indication proves intent at one layer, not the complete outcome. The next proving action is to trace the first boundary after the changing state. Change only one condition before observing the result, and preserve timestamps or measurements where timing matters.

Review and recovery. The most common trap here is using the same value as command, status and independent feedback. After restoring the cause, repeat the normal case and at least one stop, timeout, disconnect or restart boundary relevant to this topic. Remove temporary forces and bypasses, return the model to a known state and retain the evidence that both operation and recovery are deliberate.

Explain it aloud: How do I practise accessible student PLC programming practice effectively? A defensible short answer is: Use short cases with known initial conditions, a written prediction, one action and an observable result. Then alter a boundary or fault and explain why the evidence changed.

Case 03

predict → observe → prove

Prove prove normal operation

Engineering context. one start-stop, timer and sequence task completed independently from a clean state. Run more than one cycle from a known state and retain the values, timings or artifacts that demonstrate repeatability. Begin with a written normal condition and identify which request, state, physical result or communication value will provide independent confirmation. Do not begin by changing the configuration; the initial state is part of the evidence and should remain reproducible.

Controlled setup. Use the “Run the baseline” stage of the workflow: apply one start-stop, timer and sequence task completed independently from a clean state from a clean start and record the expected evidence. The acceptance record should show this result: repeated runs produce the same bounded result. Record initial conditions, the exact stimulus and the observation point so another learner can repeat the case without relying on your memory.

Fault challenge. Introduce or analyse “Normal case passes but an edge case fails” as one bounded deviation. Inspect limits, timing, simultaneous events, reset and restart assumptions The working interpretation is that the implementation contains a hidden assumption exposed by the changed condition. The next proving action is to add the failed boundary as a permanent regression case. Change only one condition before observing the result, and preserve timestamps or measurements where timing matters.

Review and recovery. The most common trap here is changing several parameters before a baseline exists. After restoring the cause, repeat the normal case and at least one stop, timeout, disconnect or restart boundary relevant to this topic. Remove temporary forces and bypasses, return the model to a known state and retain the evidence that both operation and recovery are deliberate.

Explain it aloud: What counts as proof of competence? A defensible short answer is: A repeatable artifact or system result plus an explanation of the signal path is stronger than time spent, screenshots or a copied answer. Physical competence requires separate supervised evidence.

Case 04

predict → observe → prove

Prove exercise a boundary case

Engineering context. copying, hidden state, weak feedback, inaccessible control, unsupported browser, lost work and missing target transfer. Choose minimum, maximum, simultaneous, delayed or restart conditions that reveal assumptions hidden by the happy path. Begin with a written normal condition and identify which request, state, physical result or communication value will provide independent confirmation. Do not begin by changing the configuration; the initial state is part of the evidence and should remain reproducible.

Controlled setup. Use the “Challenge assumptions” stage of the workflow: test copying, hidden state, weak feedback, inaccessible control, unsupported browser, lost work and missing target transfer without changing the acceptance contract. The acceptance record should show this result: limits, timing and restart behavior reach defined states. Record initial conditions, the exact stimulus and the observation point so another learner can repeat the case without relying on your memory.

Fault challenge. Introduce or analyse “The failure disappears after reset” as one bounded deviation. Inspect original symptom, histories, diagnostics, timestamps and active cause The working interpretation is that reset changed evidence or state without proving the initiating cause. The next proving action is to reproduce under a controlled condition and preserve pre/post-event data. Change only one condition before observing the result, and preserve timestamps or measurements where timing matters.

Review and recovery. The most common trap here is testing only one ideal sequence. After restoring the cause, repeat the normal case and at least one stop, timeout, disconnect or restart boundary relevant to this topic. Remove temporary forces and bypasses, return the model to a known state and retain the evidence that both operation and recovery are deliberate.

Explain it aloud: Why test faults and restart behavior? A defensible short answer is: Because a concept, syntax, runtime, machine, accessibility, persistence, assessment or transfer gap or copying, hidden state, weak feedback, inaccessible control, unsupported browser, lost work and missing target transfer can expose assumptions that never appear during ideal startup and steady operation.

Case 05

predict → observe → prove

Prove diagnose a controlled fault

Engineering context. a concept, syntax, runtime, machine, accessibility, persistence, assessment or transfer gap. Preserve the first symptom, divide the system at a measurable boundary and change one condition only after predicting the result. Begin with a written normal condition and identify which request, state, physical result or communication value will provide independent confirmation. Do not begin by changing the configuration; the initial state is part of the evidence and should remain reproducible.

Controlled setup. Use the “Isolate one failure” stage of the workflow: introduce or analyse a concept, syntax, runtime, machine, accessibility, persistence, assessment or transfer gap and locate the first disagreement. The acceptance record should show this result: the proving action distinguishes the leading hypotheses. Record initial conditions, the exact stimulus and the observation point so another learner can repeat the case without relying on your memory.

Fault challenge. Introduce or analyse “Simulator and target disagree” as one bounded deviation. Inspect model boundary, software version, task timing, I/O behavior, data types and configuration The working interpretation is that a learning model and the intended target do not share one of the recorded assumptions. The next proving action is to reduce the case and verify against current target documentation. Change only one condition before observing the result, and preserve timestamps or measurements where timing matters.

Review and recovery. The most common trap here is resetting, forcing or replacing before evidence is retained. After restoring the cause, repeat the normal case and at least one stop, timeout, disconnect or restart boundary relevant to this topic. Remove temporary forces and bypasses, return the model to a known state and retain the evidence that both operation and recovery are deliberate.

Explain it aloud: Can browser practice replace official software or hardware? A defensible short answer is: No. It can build concepts and diagnostic reasoning. Exact firmware, I/O electrical behavior, networking, safety and commissioning require current official tools, documentation and target equipment.

Case 06

predict → observe → prove

Prove transfer and hand over

Engineering context. the evidence varied, explained and later recreated in vendor tools and supervised hardware practice. Restore normal state, remove temporary changes, repeat affected checks and document which claims remain limited to the learning environment. Begin with a written normal condition and identify which request, state, physical result or communication value will provide independent confirmation. Do not begin by changing the configuration; the initial state is part of the evidence and should remain reproducible.

Controlled setup. Use the “Close the evidence loop” stage of the workflow: complete the evidence varied, explained and later recreated in vendor tools and supervised hardware practice and repeat the affected regression cases. The acceptance record should show this result: a learner completes the surface by explaining the result, passing a changed case and identifying what still requires supervised target-equipment practice. Record initial conditions, the exact stimulus and the observation point so another learner can repeat the case without relying on your memory.

Fault challenge. Introduce or analyse “The result cannot be explained” as one bounded deviation. Inspect prediction, observation, proving action, alternative hypotheses and limitations The working interpretation is that activity occurred but the evidence is not yet transferable or reviewable. The next proving action is to have the learner defend the signal path and repeat a changed case. Change only one condition before observing the result, and preserve timestamps or measurements where timing matters.

Review and recovery. The most common trap here is treating an acknowledged message or one successful rerun as handover. After restoring the cause, repeat the normal case and at least one stop, timeout, disconnect or restart boundary relevant to this topic. Remove temporary forces and bypasses, return the model to a known state and retain the evidence that both operation and recovery are deliberate.

Explain it aloud: How should progress be documented? A defensible short answer is: Keep the requirement, initial state, program or configuration, observed values, fault hypothesis, proving action, recovery result and a concise limitations statement.

Answer surface / 07

Questions people ask about PLC simulator for students

These concise answers define the operating, training and product boundaries most often missed in broad summaries. The full workflow and diagnostic table above provide the evidence behind them.

What should I learn first about accessible student PLC programming practice?

Start with the operating contract and evidence path: learner level, course outcome, device, browser, accessibility, account policy, dialect, practice time and evidence expectation, followed by briefing through executable logic, typed i/o, machine behavior, checks, hints, saved progress and instructor review. Add advanced features only after the baseline is predictable.

How do I practise accessible student PLC programming practice effectively?

Use short cases with known initial conditions, a written prediction, one action and an observable result. Then alter a boundary or fault and explain why the evidence changed.

What counts as proof of competence?

A repeatable artifact or system result plus an explanation of the signal path is stronger than time spent, screenshots or a copied answer. Physical competence requires separate supervised evidence.

Why test faults and restart behavior?

Because a concept, syntax, runtime, machine, accessibility, persistence, assessment or transfer gap or copying, hidden state, weak feedback, inaccessible control, unsupported browser, lost work and missing target transfer can expose assumptions that never appear during ideal startup and steady operation.

Can browser practice replace official software or hardware?

No. It can build concepts and diagnostic reasoning. Exact firmware, I/O electrical behavior, networking, safety and commissioning require current official tools, documentation and target equipment.

How should progress be documented?

Keep the requirement, initial state, program or configuration, observed values, fault hypothesis, proving action, recovery result and a concise limitations statement.

What should I do when the answer differs from a guide?

Check assumptions, version, units and initial state first. Reduce the case, compare one boundary at a time and prefer current primary documentation for target-specific behavior.

When is a accessible student PLC programming practice exercise finished?

A learner completes the surface by explaining the result, passing a changed case and identifying what still requires supervised target-equipment practice.