Table of Contents
TogglePLC data move instructions copy values between memory locations. MOV copies a single value. FILL writes one value into a range of registers. COP copies a block of consecutive registers.
Data move instructions are among the most frequently used in any PLC program. They are the foundation of recipe management, setpoint loading, data logging, and initialisation routines in industrial automation.
We will understand what each instruction does, how the source and destination parameters work, and when to use each one. We will also cover the key differences between MOV, FILL, and COP, look at worked examples for each instruction, and see real application uses in PLC ladder logic programs.

PLC Data Move Instructions MOV FILL COP: What Each One Does
Copies a single value from a source tag or constant into a single destination tag. The source is not cleared. MOV executes every scan when the rung is true.
Writes the same single value into every element of a destination array over a specified length. Used to initialise or reset arrays to a known value.
Copies a block of consecutive elements from a source array into a destination array of the same length. Used to copy recipes, buffer data, or snapshot an array.
MOV Instruction: Copy a Single Value
The MOV instruction has two parameters: Source and Destination. When the rung is true, the source value is copied into the destination every scan. The source is not changed by the instruction.
Source: HMI_Setpoint_Tag (value = 75.0)
Dest: PID_SP_Tag
Result:
When HMI_Write_Bit is ON, PID_SP_Tag = 75.0
HMI_Setpoint_Tag is unchanged = 75.0
On the next scan, the copy repeats while the rung stays true.
FILL Instruction: Write One Value to an Entire Array
The FILL instruction has three parameters: Source, Destination, and Length. It writes the same value into every destination array element up to the number specified by Length.
Source: 0
Dest: Alarm_Array[0]
Length: 50
Result:
Alarm_Array[0] = 0
Alarm_Array[1] = 0
...
Alarm_Array[49] = 0
All 50 elements set to 0 in a single scan.
COP Instruction: Copy an Entire Array Block
The COP instruction has three parameters: Source, Destination, and Length. It copies a block of array elements from source to destination. COP is used for recipe loading, buffering, and snapshotting arrays.
Source: Recipe_A[0] ( 10 elements: temp, pressure, time... )
Dest: Active_Recipe[0]
Length: 10
Result:
Active_Recipe[0] = Recipe_A[0]
Active_Recipe[1] = Recipe_A[1]
...
Active_Recipe[9] = Recipe_A[9]
Source array Recipe_A is unchanged.
MOV vs FILL vs COP: Side by Side
| Parameter | MOV | FILL | COP |
|---|---|---|---|
| What it copies | Single value to single destination | One value to every element of an array | Block of array elements to another array |
| Source | Single tag or constant | Single value or constant | Array starting element |
| Destination | Single tag | Array starting element | Array starting element |
| Length parameter | Not used | Required (number of elements to fill) | Required (number of elements to copy) |
| Source cleared? | No | Not applicable | No |
| Typical use | Setpoint transfer, constant loading | Array initialisation, clearing registers | Recipe loading, array snapshot, buffer copy |
| Executes | Every scan rung is true | Every scan rung is true | Every scan rung is true |
Real Applications of MOV FILL COP in PLC Programs
Watch: PLC Data Move Instructions Explained
PLC Data Move Instruction Questions Engineers Ask
Related Articles on This Site
- PLC Compare Instructions Explained
- PLC Memory Addressing Explained
- 9 PLC Data Types Explained
- PLC Counter Instructions: CTU and CTD
- Ladder Logic for Beginners
External References
- Logix5000 General Instructions Reference Manual | Rockwell Automation
- PLC Instruction Reference | PLCdev
What We Learn Today
- MOV copies a single value from source to destination every scan the rung is true. FILL writes one value into every element of an array over a specified length. COP copies a block of consecutive array elements from one array to another. All three instructions leave the source unchanged.
- Use MOV for single setpoint transfers and constant loading. Use FILL to initialise or clear arrays at startup with one rung instead of many MOV instructions. Use COP to load recipes, snapshot live data into a buffer array, or copy process parameter sets between arrays.
- MOV executes every scan while the rung is true. Add a one-shot (OSR) contact in series when you only want the copy to occur once per trigger. This prevents the destination from being overwritten on every scan while the enabling condition stays active.
