A practical companion for homework and PLC programming practice Β· Works offline
Select a topic or search by instruction name, description, or example. The terminology follows familiar Allen-Bradley ladder logic conventions; Western.IO is an educational simulator, not Studio 5000 or CCW.
Welcome to Western.IO
Choose a simulation from the homepage. Each machine starts with a blank ladder program. Build the logic yourself and observe the physical inputs, outputs, and animation.
Use the instruction palette to select or drag a contact, output, timer, counter, or comparison onto a rung wire. Click an instruction to assign a tag or adjust its settings.
Suggested practice: begin with the Input.Output Sim, then Garage Door, conveyors, and more complex sequencing exercises.
A simple start-button rung
Left rail ββ] [ββββββββ( )ββ Right rail
XIC OTE
Input_1 Output_1
When Input_1 is true, the XIC passes the true condition to the OTE, setting Output_1 true. When Input_1 is false, Output_1 turns off.
The PLC scan cycle
A typical PLC repeatedly reads inputs, evaluates logic, and updates outputs. In Western.IO, ladder instructions are evaluated in rung order and the animated equipment responds to the simulated output states.
Think about the order of rungs, timer and counter status bits, and when an input changes.
Physical NO/NC versus XIC/XIO
Normally open (NO) and normally closed (NC) describe a physical device in its normal state. XIC and XIO examine the value of a PLC bit. These are related but not interchangeable concepts.
Use the actual wiring and input state to choose the correct instruction.
Series, parallel, and interlocks
Series contacts represent AND logic; parallel paths represent OR logic. An interlock prevents incompatible outputs from operating together, such as forward and reverse motors.
Western.IO supports parallel output branches and reports invalid output placement during its build checks.
XIC β Examine If Closed
β] [β
Operation: True when the referenced bit equals 1; false when it equals 0.
Example: Examine a start pushbutton input or a timer done bit.
Remember: XIC describes the value of a bit, not the physical NO/NC construction of a switch.
XIO β Examine If Open
β]/[β
Operation: True when the referenced bit equals 0; false when it equals 1.
Example: Check whether a stop condition or sensor bit is false.
Remember: A physical NC stop pushbutton can supply a 1 during healthy operation; do not assume XIO always corresponds to NC wiring.
OTE β Output Energize
β( )β
Operation: Writes the rung condition to the destination bit on each scan. When false, the bit is written false.
Example: Drive a pilot light or motor command from permissive logic.
Remember: OTE is non-retentive; repeated writes to the same destination can cause unexpected results.
OTL β Output Latch
β(L)β
Operation: Sets the destination bit true when its rung is true; does not clear it when the rung goes false.
Example: Remember a request until another condition resets it.
Remember: Provide a corresponding OTU reset path and consider startup behavior.
OTU β Output Unlatch
β(U)β
Operation: Clears the destination bit when its rung is true.
Example: Reset a latched request after a cycle completes.
Remember: OTL and OTU order matters if both execute in one scan.
ONS β One Shot
ONS
Operation: Passes a true condition for one PLC scan on a false-to-true transition.
Example: Generate a single count pulse from a maintained sensor.
Remember: A one-shot does not stay true while the input remains high.
TON β Timer On Delay
TON
Operation: Accumulates elapsed time while enabled. .DN becomes true when .ACC reaches .PRE; a false enabling rung resets the non-retentive timer.
Example: Delay a wash brush motor or conveyor sequence.
Remember: Western.IO presets use milliseconds. Use T1.DN in a later contact to test completion.
TOF β Timer Off Delay
TOF
Operation: Delays the done state turning off after the enabling rung transitions false.
Example: Keep a blower running briefly after a trigger ends.
Remember: Check .EN, .TT, and .DN in the timer monitor.
CTU β Count Up
CTU
Operation: Increments .ACC on a false-to-true transition of the count input; .DN indicates the preset threshold.
Example: Count boxes passing a photoeye.
Remember: Do not count a continuously true signal repeatedly; reset with RES when needed.
CTD β Count Down
CTD
Operation: Decrements .ACC on a false-to-true transition of the count input.
Example: Track remaining products in a batch.
Remember: Initialize and reset counter values intentionally.
RES β Reset
RES
Operation: Resets the selected timer or counter state when the rung condition is true.
Example: Clear a counter at the start of a new batch.
Remember: Select an existing timer or counter name in the editor.
EQU β Equal
EQU
Operation: True when Source A equals Source B.
Example: Compare a counter accumulator to a target count.
Remember: Sources can be constants or numeric tag members.
NEQ β Not Equal
NEQ
Operation: True when Source A differs from Source B.
Example: Detect a value that is not the target.
GRT β Greater Than
GRT
Operation: True when Source A is greater than Source B.
Example: Detect an exceeded threshold.
GEQ β Greater Than or Equal
GEQ
Operation: True when Source A is at least Source B.
Example: Check that a minimum count is reached.
LES β Less Than
LES
Operation: True when Source A is less than Source B.
Example: Allow a machine to run while a count is below capacity.
LEQ β Less Than or Equal
LEQ
Operation: True when Source A does not exceed Source B.
Example: Test an upper boundary.
LIM β Limit Test
LIM
Operation: Tests whether a value falls within configured lower and upper bounds.
Example: Accept a reading inside a target range.
Remember: Pay attention to the low, test, and high fields.
Editing ladder logic
Use οΌ Add rung to create a rung. Drag a palette instruction onto a wire or select it and click a wire. Use Parallel branch to create OR logic. Drag an instructionβs β Ώ handle to move it within a rung, between rungs, or into a parallel path.
Click an instruction to edit its tag and shared description. Use the Γ control to delete it.
Undo and redo β new in V26
Click βΆ Undo or β· Redo in the simulator toolbar to reverse or reapply ladder edits. Shortcuts: Ctrl+Z for undo; Ctrl+Y or Ctrl+Shift+Z for redo (Cmd on Mac).
Undo history covers ladder edits and tag descriptions, not the running machine state. History is session-only and is not exported with your program.
Save and reopen your work
Click Export JSON to download your ladder program. Use Import JSON to reopen a saved program in the appropriate simulation. Keep a copy before closing the browser or switching simulations.
Programs are not automatically saved in V26.
Safety and scope
Western.IO is designed for educational practice. It does not execute on a physical PLC and is not suitable for real machine safety control, commissioning, or validation.
The Math and Move/Logical palette categories are reserved for future implementation; do not assume those instructions are available yet.