Contact and coil instructions are in every PLC program. The Productivity Suite Software comprises more than 82 instructions, organized into 13 categories for the PLC. Contacts and Coils are two of those categories. Contact instructions include NO, NC, NO Edge, NC Edge, and Compare. Coil instructions include Out, Set, Reset, OR Out, Flasher, Debounce, Timed, Toggle, Program End, and No Operation.

We will be looking at these instructions in the Productivity Mini PLC P1-M622-16DR. We will also look at how to organize your frequently used instructions using the Favorites feature. Throughout this post, we will tie each instruction back to our start-stop motor circuit so you can see exactly how they apply to real programs. Let’s get started.
Previously in this Productivity Mini PLC P1-M622-16DR series, we have discussed:
P1-M622-16DR Mini PLC System Hardware – Video
Installing the Software – Video
Establishing Communication – Video
First Program – Video
Monitoring and Testing the Program – Video
Wiring and Testing – Video
Online Editing and Fail-Safe Wiring – Video
Using the Productivity Suite Simulator – Video
Numbering Systems and Tag Database – Video
Favorites – Contact and Coil Instructions
The Favorites section is a heading found under the Instructions window of the Productivity Suite software. You can open the Instructions window by clicking on it in the Application Tools panel, or use the main menu: Tools | Instructions List.
Right-clicking any instruction in the list opens a menu that lets you ‘Add to Favorites’. Click that option, and the instruction will now appear under your Favorites heading at the top of the list.

To remove an instruction from your Favorites, right-click on it under the Favorites heading and select ‘Remove from Favorites’.
Favorites are a great way to separate the instructions you use most often from the full list. As you work through this series and build more complex programs, you will find yourself reaching for the same handful of instructions repeatedly. Adding them to Favorites saves time and keeps your workflow organized.
Contacts – Contact and Coil Instructions
Contacts are the input conditions of a rung. They represent the state of Boolean tags — physical inputs, outputs, or internal bits — and control whether power flows through the rung to the output coil. The PLC evaluates logic from left to right, top to bottom, on each scan.
For a deeper understanding of how the PLC scan works, see this post: https://accautomation.ca/understanding-the-plc-program-scan/
NO Contact (NO) – The Normally Open contact enables power flow in a rung when the contact is energized. It disables power flow when the contact is de-energized.
This is the most common contact in PLC programming. In our start-stop motor circuit, the Start input (DI-0.1.1.1) uses an NO contact. When the physical Start pushbutton is pressed, the contact energizes, and power flows through the rung. When the button is released, the contact opens — but the sealing contact (DO-0.1.1.1 in the parallel branch) keeps the rung energized.

NC Contact (NC) – The Normally Closed contact enables power flow in a rung when the contact is de-energized. It disables power flow when the contact is energized. This is where most people get confused. Just think of a normally closed contact as the opposite logic.
In our start-stop motor circuit, the Stop input (DI-0.1.1.2) uses an NO contact in the ladder. As we covered in the Online Editing and Fail-Safe Wiring post, the physical Stop button is wired Normally Closed to the input — meaning the input is energized (ON) in its normal state. A NO contact in the ladder therefore passes power continuously as long as the Stop button is not pressed. When the Stop button is pressed, the physical NC contact opens, the input drops to OFF, and the NO ladder contact opens, breaking the rung. This is the correct fail-safe approach — a broken wire or failed button de-energizes the input and stops the motor automatically.

NO Edge Contact (NOE) – The Normally Open Edge contact acts as a one-shot input on either the Rising Edge or Falling Edge of a signal. It allows power flow for exactly one scan when the contact transitions from de-energized to energized (Rising Edge) or energized to de-energized (Falling Edge).

This is sometimes referred to as a one-shot in PLC programming. It is extremely useful when you need an action to happen only once per button press — for example, incrementing a counter each time a button is pressed rather than once per scan while it is held. See this post for more details on one-shot logic: https://accautomation.ca/how-to-make-a-one-shot-in-the-plc/
NC Edge Contact (NCE) – The Normally Closed Edge contact also acts as a one-shot, but triggers on the transition of a Normally Closed contact. It allows power flow for one scan when the contact transitions from energized to de-energized (Rising Edge) or de-energized to energized (Falling Edge).

Compare Contact (CMP) – This input contact compares two numerical values. Based on the selected operand (equal to, not equal to, greater than, less than, greater than or equal to, or less than or equal to), it either enables or disables power flow in the rung.

A practical example: if you have an analog temperature sensor reading into the P1-M622-16DR via an expansion module, you could use a Compare contact to turn on a cooling fan output when the temperature tag exceeds a setpoint. The Compare contact makes numeric decisions directly in your ladder logic without requiring a separate math instruction.
Coils – Contact and Coil Instructions
Coils are the output elements of a rung. When the rung conditions (contacts) evaluate to true, the coil executes its function. The type of coil determines exactly what that function is.
Out Coil (OUT) – Provides an output that directly responds to the current state of the rung. When the rung is true, the output is ON. When the rung is false, the output is OFF.

This is the coil we have been using throughout this series for the Motor output (DO-0.1.1.1) in our start-stop circuit. The Out coil also has a One-Shot option, which turns the output ON for just one scan during the transition from off to on.

Set Coil (SET) – Sets the output into a latched ON condition when the rung is enabled. Once set, the output remains ON even if the rung condition goes false.

Reset Coil (RST) – Resets (unlatches) the output of a corresponding Set coil. The output turns OFF when the Reset rung is enabled.

The Set and Reset instructions work together and are an alternative way to build a start-stop circuit. Rather than using a sealing contact with an Out coil as we did in our first program, you can use a Set coil on the Start rung and a Reset coil on the Stop rung. Both approaches produce the same result — the Set/Reset method can sometimes make the logic easier to read in programs with many interlocks.
See our First Program post for the sealing contact approach: https://accautomation.ca/p1-m622-16dr-mini-plc-first-program-start-stop-motor-circuit/
https://accautomation.ca/how-to-make-a-start-stop-jog-circuit-in-a-plc/
OR Out (OR) – Allows an Out coil with the same tag to be used in multiple rungs. When any rung with that tag is true, the output turns ON.

Note: While the OR Out instruction is available, having the same output tag controlled from multiple rungs can make troubleshooting difficult. From my experience in the field, this should be avoided in most cases. Keep your outputs in a single rung where possible — it makes maintenance and troubleshooting much faster.
Flasher (FLS) – Cycles an output bit ON and OFF at a programmed rate. You set the cycle time in milliseconds. When the rung condition is true, the output will be ON for half the cycle time and OFF for the other half.

For example, setting the cycle time to 1000 milliseconds results in an output that flashes 0.5 seconds ON and 0.5 seconds OFF. A practical use of the P1-M622-16DR would be to flash an indicator light (wired to one of the 8 relay outputs) to signal an alarm or a mode change — without needing a timer instruction to manage timing manually.
Debounce Coil (DBN) – Eliminates output coil chatter caused by rapid on/off transitions at the rung condition. The rung condition must remain continuously ON (or OFF) for the programmed debounce time before the output activates (or deactivates).

Chatter occurs when logic allows a rapid oscillation — for example, if a Compare contact is evaluating a value that is bouncing just above and below the comparison threshold. In our example, the rung condition must remain stable for 1000 milliseconds (1 second) before the output changes state. This adds a deliberate delay that filters out noise without needing a separate timer.
Timed Coil (TMC) – Holds the state of the output ON for a predetermined time after the rung becomes true. Even if the rung condition goes false before the time expires, the output will remain ON until the timed duration completes. An Output Maintained option is also available, which keeps the output ON after the timed period as long as the rung condition remains true.

A practical example: pressing a momentary pushbutton could trigger the Timed coil to hold a solenoid valve open for exactly 5 seconds, regardless of how briefly the button was pressed.
Toggle Coil (TGC) – Changes the state of the output each time the rung is enabled. If the output is currently ON, it turns OFF. If it is currently OFF, it turns ON. This is sometimes called a Flip-Flop circuit.

In our example, when the input transitions from off to on, the output toggles. This is useful for applications where a single pushbutton needs to act as both an on and off control — common in simple lighting or fan controls. See this post for the logic behind the flip-flop circuit: https://accautomation.ca/creating-a-flip-flop-circuit-in-the-plc/
No Operation Coil (NOP) – Indicates that the rung will have no operation. It is used as a placeholder in ladder logic — for example, when you are reserving a rung for future expansion or temporarily disabling a rung during development without deleting it.
Program End Coil (END) – Marks the end of a task. The Productivity Suite software automatically places an END coil at the end of your program. The PLC will execute all rungs up to the END coil on each scan, then restart the scan from the top.
Applying What We’ve Learned to Our Start-Stop Circuit
Looking back at the start-stop motor circuit we have built throughout this series, you can now identify every instruction by name:
- DI-0.1.1.1 (Start) – NO Contact. Passes power when the Start button is pressed.
- DI-0.1.1.2 (Stop) – NC Contact. Passes power at all times; opens when the Stop button signal is energized.
- DO-0.1.1.1 (Motor) sealing branch – NO Contact. Holds the rung energized after the Start button is released.
- DO-0.1.1.1 (Motor) – Out Coil. Turns the relay output ON when the rung is true.

That single rung uses three of the contact and coil instructions covered in this post. As we build more complex programs in the coming posts — adding timers, counters, and math — you will see all of these instructions combined in increasingly practical ways.
Watch the video below to see the contact and coil instructions used in the Productivity Mini PLC P1-M622-16DR.
Productivity Mini PLC P1-M622-16DR from AutomationDirect
Overview Link (Additional Information on the Unit) Configuration (Configure and purchase a system – BOM) User Manual and Inserts (Installation and Setup Guides) Productivity Suite Programming Software (Free Download Link)
This software contains all of the instruction sets and help files for the Productivity Series.
Next time, we will look at timer instructions in the Productivity Mini PLC P1-M622-16DR.
Watch on YouTube: P1-M622-16DR Mini PLC – Contact and Coil Instructions!
If you have any questions or need further information, please contact me. Thank you, Garry
Related Posts:
- Master PLC Programming: Essential Contact & Coil Secrets
- How to Make a Start-Stop Jog Circuit in a PLC
- Creating a Flip-Flop Circuit in the PLC
Many PLC manufacturers offer a range of hardware and software. All programmable logic controllers share similar basic features. Click here to see how I would approach learning about basic PLCs.
Once you are familiar with the basics of the PLC, you will learn the specifics of the controller you will be programming. This is the easiest way to learn about PLC programming.
Click here to see how you can program for free with the ACC PLC Simulator, with 3D scenes you can program.
Here are the controllers that we have covered or are covering at ACC Automation:
LS Electric XGB PLC Series
BRX Do-More Series (Do-More Designer Software + Simulator)
Productivity Series P1000 / P2000
Click PLC Series
Omron CP1H Series
Horner XL4 PLC Series
Arduino Opta PLC
The EasyPLC Software Suite is a comprehensive package that includes PLC, HMI, and machine simulator software. This allows you to make a digital twin. See below to receive 10% off this software. This PLC learning package contains the following:
Easy PLC – PLC Simulation will allow programming in Ladder, Grafcet, Logic Blocks, or Script.
HMI System – Easily create a visual human-machine interface (HMI)
Machine Simulator – A virtual 3D world with real-time graphics and physical properties. PLC programs can be tested using the EasyPLC or through other interfaces. (Modbus RTU, TCP, etc.)
Machine Simulator Lite – Designed to run on Android Devices.
Machine Simulator VR – Virtual Reality comes to life so you can test, train, or practice your PLC programming.
Purchase your copy of this learning digital twin package for less than $95 USD for a single computer installation or less than $110 USD to allow access on multiple computers.
Receive 10% off the investment by typing in ACC in the comment section when you order.
Learn PLC programming the easy way. Invest in yourself today.
Examples of PLC program development using the five steps.
Click PLC – Easy Transfer Line Programming – Video
Productivity PLC Simulator – Chain Conveyor MS – Video
Five Steps to PLC Program Development – Die Stamping
PLC Programming Example – Process Mixer
PLC Programming Example – Shift Register (Conveyor Reject)
PLC Programming Example – Paint Spraying
PLC Programming Example – Delay Starting of 7 Motors
PLC Programming Example – Pick and Place
PLC Programming Example – Sorting Station (Shift Register)
PLC Programming Example – Palletizer
If you’re like most of my readers, you’re committed to learning about technology. The numbering systems used in PLCs are not difficult to understand. We will walk through the numbering systems used in PLCs. This includes Bits, Decimals, Hexadecimal, ASCII, and Floating Points.
To get this free article, subscribe to my free email newsletter.
Use the information to educate others on how numbering systems work. Sign up now.
The ‘Robust Data Logging for Free’ eBook is also available as a free download. The link is included when you subscribe to ACC Automation.
