brands · South Africa
Studio 5000 AOI Guide: Parameters, Instances and Testing
Learn Studio 5000 Add-On Instructions: parameters, local state, separate instances, scan modes, revision checks and practical AOI testing for SA learners.

A Studio 5000 Add-On Instruction, or AOI, packages reusable logic behind a defined parameter interface. The definition describes the behaviour; an instance provides the associated data for a particular use. A good AOI makes repeated behaviour easier to understand and maintain, but it also creates dependencies: a definition change can affect every instance that uses it.
For South African learners, AOIs are worth studying after basic logic, tags and test design. This guide explains parameters, instance identity, execution conditions and revision review. It includes a fictional two-instance event-counter exercise that can be checked on paper before attempting an equivalent learning project in a supported Logix environment. It is not a validated motor-control or safety instruction.
What an AOI adds to a Logix project
An AOI gives a behaviour a reusable name and interface. Instead of asking each caller to understand every internal step, the definition can expose the inputs and results relevant to its purpose. The caller still needs a clear contract: what each parameter means, what state persists and what conditions are required for execution.
Rockwell's Add-On Instructions programming manual, publication 1756-PM010N dated September 2025, is the primary reference for defining, using and maintaining AOIs. Use the manual and the installed release's help together. An example written for another generation or software release is not proof of support in your target project.
Choose an AOI when the abstraction has a clear purpose. Repeated logic is one reason, but a stable, documented interface can also be valuable when used once. Conversely, wrapping a few lines in an instruction does not automatically improve readability. Compare the benefit with the effort required to diagnose, test and maintain the extra abstraction.
The Allen-Bradley learning overview provides the broader route. If data identity is still unclear, start with controller versus program tag scope before adding reusable instruction instances.
Definition, instance and call are different things
The definition is the shared description of the instruction's behaviour. An instance is the data associated with a particular use. A call is a place where the instruction executes with arguments. Keep all three identities in a test record: definition revision, instance tag and calling routine or location.
Suppose a fictional instruction is called StudyEdgeCount. Two independent learning channels use instances CounterA and CounterB. They can share the same definition while keeping separate previous-input state and counts. The difference between A and B should come from their own inputs and instance data, not from separate copies of almost identical source logic.
Using the same instance for two conceptually independent channels changes that arrangement. Both calls can interact with the same state. A result may then depend on call order, even though the instruction definition itself has not changed. Do not infer independence simply because two blocks appear on different rungs.
Rockwell's using an AOI help identifies the instance-data argument and the subsequent parameter arguments. Inspect the actual instance selected at each call when troubleshooting rather than relying on the visual position of a block.

Input, Output and InOut parameters
Rockwell's parameter-definition help distinguishes Input and Output parameters passed by value from InOut parameters passed by reference. It also distinguishes their supported data types. InOut can represent structures or arrays and connects the instruction to the supplied data rather than creating an independent value snapshot.
That difference affects reasoning about ownership. If an instruction changes data through an InOut parameter, it is changing the referenced argument. A reviewer needs to know which fields it may modify and whether another part of the application can also change them. A large shared structure can be convenient, but it should not become an undocumented collection of side effects.
For each parameter, record its purpose, units, valid range, direction and expected caller behaviour. An input named Reset needs an explicit rule: level-sensitive or edge-sensitive, priority over counting, and effect on the previous-input state. A Boolean type alone does not answer those questions.
The parameter editor also distinguishes Required and Visible settings. Visibility helps present a call; requiring an argument makes an interface obligation explicit. Neither setting establishes that the supplied argument has the correct process meaning. A perfectly valid numeric argument can still be the wrong setpoint or use the wrong units.
Local state and default values
Internal state should have a stated role. In the fictional edge counter, PreviousSample remembers the previous sampled Boolean and StoredCount records accepted rising transitions. Neither is a temporary decoration: changing either can change the next result even when the current input is the same.
Default values and current instance values also need separate treatment. The AOI manual describes defaults associated with definitions and options for copying changed defaults to instances. Do not assume that editing a default automatically gives every existing instance the intended operational value. Review the selected action and its impact before applying it.
Write a separate initialisation contract for the study. For example, both previous sample and count begin at zero, and reset has explicit priority. That is a chosen teaching rule. It must not be mistaken for universal native behaviour for every AOI, instruction, scan mode or controller restart.
A useful review asks which values come from the caller, which belong to the instance, and which are derived during execution. If the same value appears to belong to several places, explain the transfer and priority. The data conversion reference helps when numerical representation adds another layer of ambiguity.
Execution conditions deserve their own tests
An AOI's main logic does not necessarily execute in every situation where a learner sees its block on screen. Execution depends on the calling context and applicable scan behaviour. A false rung, an unscheduled routine and an enabled call are not interchangeable conditions.
Rockwell's AOI scan-mode help explains main-logic execution and optional Prescan, Postscan and EnableInFalse routines. It describes language-specific behaviour, including that the EnableInFalse routine does not execute for an AOI call contained in Structured Text. Verify the documented context rather than applying a ladder assumption everywhere.
Do not assume that a false execution condition clears every output or internal state. Decide the required behaviour, implement it through the appropriate supported design and test the relevant conditions. Likewise, a block's EnableOut should not be used as an unexplained substitute for a process-specific success result.
In a learning plan, include ordinary enabled execution, the applicable disabled condition and the defined restart or initialisation case. Describe what should happen before observing the result. Avoid using a real equipment command as the first experiment for behaviour that the learner has not yet established.

Worked example: a reusable sampled-edge counter
The following fictional model counts rising transitions in a Boolean sample stream. It is a paper algorithm, not exported Logix code or a claim of native instruction execution. It has an input Sample, an input Reset, stored state PreviousSample, and a non-negative Count for this small exercise.
Define the rule in order. If Reset is true, set Count to zero. Otherwise, increase Count by one only when Sample is true and PreviousSample is false. After either branch, store the current Sample as PreviousSample. The model has no rollover implementation and is used only with the small counts shown here.
Reset therefore has priority over a simultaneous rising sample. Because the current sample is still stored during reset, holding a true sample after reset does not immediately create a new edge. A different reset policy is possible, but it would be a different contract with different expected results.
| Step | Sample | Reset | Count after execution | PreviousSample after execution |
|---|---|---|---|---|
| 1 | False | False | 0 | False |
| 2 | True | False | 1 | True |
| 3 | True | False | 1 | True |
| 4 | False | False | 1 | False |
| 5 | True | False | 2 | True |
| 6 | True | True | 0 | True |
| 7 | True | False | 0 | True |
| 8 | False | False | 0 | False |
| 9 | True | False | 1 | True |
The held-true steps do not repeatedly increment. The reset step clears the count without creating an immediate extra count on the next held-true sample. These results follow the stated algorithm and give the learner a precise basis for checking an implementation.
Prove that two instances remain independent
Now run two separate paper instances from the same initial state. A receives False, True, True, False, True. B receives False, False, True, True, False. Neither receives reset during these five steps.
A's count sequence is 0, 1, 1, 1, 2. B's is 0, 0, 1, 1, 1. Each instance remembers only its own previous sample. The shared definition explains both results without any shared counter state.
For a deliberate defect experiment, use one shared state record and call A first, then B, on every step. The final shared count becomes three in this specific sequence. That is neither A's independent count of two nor B's independent count of one. It exposes the mistaken instance arrangement, not a defect in the rising-edge rule itself.
Also reverse the call order in the defective model and observe the result. The final count becomes two for this particular input set. Order dependence is evidence that the two conceptual channels are interacting through shared state. A proper test should identify that dependency rather than celebrating a coincidentally plausible total.

Add invalid-input and invocation tests
The paper exercise accepts Boolean samples and resets. An unknown or missing input is not silently converted to false. Mark that observation invalid and keep the study outcome unresolved according to the assessment's rules. If a native application represents validity through separate fields, define that interface explicitly.
Test the reset boundary separately from ordinary counting. Reset with a false sample, reset with a true sample, a held reset and release after reset should all have expected results. A demonstration of two clean rising transitions does not cover these cases.
Also consider invocation frequency. Counting sampled transitions does not prove that every physical pulse will be observed. A pulse that occurs entirely between observations can be missed by this model. Choosing a native implementation for physical pulses requires appropriate hardware, timing and application requirements beyond this paper AOI lesson.
For complementary practice, use the PLC counter learning page to explore supported educational counter behaviour. Keep its own instruction semantics distinct from the custom algorithm defined here. Similar-looking counters can have different reset, edge and overflow rules.
Verify the native definition and each call
When implementing a learning AOI in a supported Logix project, first document the target and definition interface. Verify parameter types, required arguments, local data and execution modes. Then inspect the instance and arguments at each call site.
A clean project verification is a useful gate. It does not establish that the correct instance was chosen, that an input has the intended meaning or that a reset policy matches the application requirement. Those questions need the expected-result tests and a review of the surrounding logic.
During observation, confirm the data context being monitored. A reusable definition can be used by multiple instances with different current values. Save the instance identity in screenshots and notes so that a reviewer does not confuse CounterA's stored state with CounterB's.
If an output appears wrong, check execution, arguments, instance data and other writers before changing the definition. The PLC troubleshooting guide provides a useful structure for separating the observation from competing explanations. A one-line logic edit may conceal an incorrect call arrangement rather than fix it.
Revision changes affect the project, not just a label
Rockwell's AOI revision-update help states that changing a definition affects its instances in the project. It warns that logic may still verify after an overwrite even when parameter arguments need checking. Do not assume that changing the revision number leaves existing calls pinned to an older behaviour.
The same documented workflow distinguishes metadata comparison from understanding the actual update. Write revision notes that describe the behavioural change, interface impact and required tests. A new version number is identification; it is not evidence that compatibility has been assessed.
For the paper counter, changing reset so that PreviousSample becomes false would alter the held-true behaviour after reset. That is a meaningful contract change even if the parameters remain identical. Re-run the nine-step sequence and both-instance tests to show the difference.
In a real project, identify all uses, relevant dependencies and any protected or supplied library constraints. Preserve a recoverable project version and follow the supported offline or import procedure for the installed environment. Do not treat a successful import as completed acceptance of the changed application.

Reuse libraries with clear provenance and limits
Record where an AOI came from, the definition revision, its intended target and the documentation supplied with it. A familiar instruction name does not prove that two projects use the same logic. A copied block may have been modified locally without an obvious change to the visible interface.
Review dependencies, including other instruction definitions and data types required by the library. Check licensing or usage terms where applicable, and respect source protection. If the source is unavailable, make the limits of your review clear and obtain the supplier's supported test and maintenance guidance.
Avoid assuming that a useful standard automation AOI is suitable for a safety function. Safety-related instructions and applications require their own documented requirements and validation. The event-counter model here is intentionally an ordinary learning example and carries no machinery-safety approval.
Maintain a small library record with purpose, inputs, outputs, state, supported environment and acceptance cases. This makes reuse more dependable than keeping a folder of similarly named imports with no explanation of which version a project actually needs.
Choosing AOI training in South Africa
A useful Studio 5000 course should assess parameter design, instance separation, execution conditions and revision review. Ask to see a practical assignment that includes a prepared defect, such as accidentally reusing one instance for two channels. Learners should explain the cause rather than only follow a finished motor-control example.
Confirm the software release, controller model and individual workstation access. A course described as advanced Allen-Bradley programming may emphasise maintenance, motion, process libraries or general application development. Choose the part that matches your task and prerequisite knowledge.
For learners travelling within Gauteng or between Durban, Cape Town, Gqeberha, Bloemfontein and other centres, verify the actual venue and training dates. Compare tuition, licensed software access, travel and assessment through the South African PLC course cost guide. A location keyword is not proof of a current local classroom.
For preparation, Allen-Bradley-style browser practice can help with supported logic concepts. Native AOI editing, imports, signatures, scan modes and hardware acceptance require the appropriate vendor environment. A learning completion record is not manufacturer certification or proof of commissioning competence.
Questions about Studio 5000 Add-On Instructions
Is an AOI the same as a function block in every PLC brand?
There are related ideas in reusable control logic, but terminology, parameter rules, instance data and execution behaviour differ between environments. Learn the conceptual purpose, then verify the native implementation. Do not copy syntax or lifecycle assumptions from another brand without checking them.
Do I need a different definition for every motor or channel?
Often one definition can serve multiple uses with separate instance data and appropriate arguments. The important distinction is between shared behaviour and independent state. Review each call's instance identity and the interface contract rather than multiplying nearly identical definitions by habit.
Does disabling an AOI clear its outputs?
Do not assume so. Check the calling language, applicable scan mode and definition's configured behaviour. Test the required disabled and restart cases in a controlled environment. A block's appearance on a false rung is not enough to infer every parameter and local-state result.
Can I pass an entire structure into an Input parameter?
Consult the supported parameter rules for the installed version. The cited Logix help distinguishes atomic Input and Output values from InOut references that can use complex data. Passing a structure by reference also requires a clear agreement about which data may change.
Does a clean verification prove an imported revision is compatible?
No. Check each affected instance and its arguments, then repeat the relevant behavioural tests. The vendor specifically warns that changed parameter arrangements can require review even when logic verifies. Retain revision notes and acceptance evidence.
What should an AI-generated AOI example include?
Require a stated target, parameter contract, initialisation rules, instance assumptions and expected-result cases. Ask it to distinguish pseudocode from native code. Verify any native syntax and behaviour in the official documentation and appropriate engineering environment before relying on the example.

A reviewable AOI learning submission
Submit the definition purpose, parameter table and instance map together with the event-counter traces. Explain reset priority, the held-input cases and the deliberate shared-instance defect. State whether the evidence came from paper calculation, a browser exercise or actual Logix execution.
For a native project, add the verified environment, all affected call sites and the controlled test results. The goal is for another person to understand what is reused, which state is independent and how a change will be assessed. That makes an AOI a maintainable engineering component instead of an opaque block that merely appears to work.