Building an I/O List From P&IDs.
A step-by-step build of a controller-ready I/O list from a P&ID set. Extract, classify, dedup, assign, freeze. With worked examples and what stays off the list.
The I/O list is the one document that connects the process drawing to the control system. Every other document in a control system project, the loop diagram, the cable schedule, the PLC program, the commissioning loop-check register traces back to it. Get it right early, and the downstream work is straightforward. Get it wrong, and the errors compound from procurement through to the FAT bench.
This article walks the full build sequence. What the list is, who uses it, what each column means, how to go from P&ID bubbles to a controller-ready row, and what to watch for at every step.
What the I/O list is and who uses it
An I/O list is a flat table where each row is one wired I/O channel and each column is one attribute of that channel. It is not a narrative document. It does not explain why an instrument is there. It records what it is, where it is, and how the control system connects to it.
Four groups of people consume it at different project phases.
At bid stage, the estimator uses the preliminary I/O count to size the PLC hardware budget. Card counts, rack quantities, cabinet footprint, and programming hours. At this point the list may be nothing more than a classified bubble count. Its accuracy determines whether the bid is profitable.
During procurement, the controls engineer uses the list to write the hardware requisition. The signal class distribution, how many AI, AO, DI, DO points determines the card mix. The protocol column, HART 4-20 mA, Profibus, Foundation Fieldbus determines the card type. Missing or mis-classified rows mean the wrong cards get ordered.
During PLC and DCS configuration, the programmer uses the rack, slot, and channel columns to build the I/O map. Every row in the I/O list becomes a tag in the controller program. A row that has a wrong signal class or a wrong drawing reference creates a wiring error that shows up at commissioning.
During commissioning, the loop technician uses the I/O list as a check register. Every row is a loop to prove. A tag in the list with no corresponding field instrument, or a field instrument with no corresponding list row, is a punch item.
The columns and where they come from
A standard I/O list row carries these columns. Some come directly from the P&ID. Others are filled in by the controls engineer during the assignment phase.
| Column | Source |
|---|---|
| Tag number | Instrument bubble on the P&ID |
| Description | Tag expansion or instrument service |
| P&ID reference | Drawing number plus sheet where the primary bubble appears |
| Loop number | Read from the tag or assigned separately |
| Signal class, AI, AO, DI, DO | ISA 5.1 function-letter decoding, or project dialect |
| Range and units | Instrument datasheet |
| Protocol | Instrument selection, 4-20 mA HART, Profibus, etc. |
| BPCS, SIS | Assigned during the process hazard review |
| Controller, rack, slot, channel | Assigned during I/O allocation |
| Notes | Anything else the programmer or commissioning team needs |
The first four columns are populated during extraction. Signal class is resolved during classification. Range, protocol, and BPCS, SIS columns are filled in during detailed design. Controller assignment comes last, after the tag count is stable enough to drive card procurement.
The relationship between the I/O list and the instrument index matters here. The instrument index is broader. It carries every instrument on every drawing, including local gauges and thermowells with no wired signal. The I/O list is the filtered subset. Only the instruments that generate or receive a signal at the controller. For a fuller comparison of these documents, see instrument index vs I/O list vs line list.
The build sequence
Step 1. Assemble the controlled drawing set
Before touching a single bubble, confirm that the drawing set is complete and at its current revision. Pull the drawing index, verify every sheet is present, and confirm the legend and abbreviation pages are included. An instrument that appears only on a sheet you do not have is a missed tag. On a brownfield project or a job that has been through several revision cycles, mixed-revision sets are common and they are the leading cause of extraction errors.
Step 2. Extract and set aside
Work through each P&ID sheet and capture every instrument bubble. Tag number, instrument type, and drawing reference. At this stage, do not classify. Just extract.
Set aside the following immediately.
- Line designations on pipe runs. A label like
4"-CS-101-A1A, size, material, line number, spec is a line-list entry, not an instrument. It belongs on the line list. - Legend and abbreviation entries. An abbreviation key or symbol legend is a guide to reading the drawing, not an instrument.
- Title block and drawing notes. Revision history, project number, north arrows, and general notes belong on the drawing, not in the I/O list.
- Hand valves with no actuator. A handwheel valve on a pipe with no instrument bubble, no actuator symbol, and no tag contributes zero I/O channels.
For a complete treatment of what stays off the list, see what is not an instrument on a P&ID.
Step 3. Deduplicate and resolve cross-page tags
Once extraction is complete across the full set, compare the tag list for duplicates. A tag that appears on two sheets is one instrument. Keep the row that shows the primary bubble. The one on the pipe or vessel where the instrument is physically mounted. The second occurrence is typically an off-page connector reference or a cross-reference bubble. It carries the same tag but is not a second instrument.
In the P&ID reference column, note both drawing numbers separated by a slash or in a dedicated secondary-drawing column. For example, PID-001 / PID-002. This matters when a commissioning technician needs to know which drawing shows the full instrument detail and which one shows the cross-reference.
Tags that appear on more than two sheets need the same treatment. Pick one primary drawing and reference the rest. Do not create multiple rows for the same physical instrument.
Step 4. Classify signal class
With a clean, deduplicated list, apply signal class to every row. Use ISA 5.1 or the project's standard as appropriate.
The rules are not negotiable once you understand them. Transmitters with the function letter T, transmit or I, indicate, when driven by a transmitter are AI. Control valves that modulate position, FCV, TCV, PCV, LCV are AO. One analog output channel, one position command. Switches and discrete-output contacts, PSH, PSHH, LSL, FSL, ZSO, ZSC are DI. On, off valves and solenoids, XV, SDV, ESDV are DO.
Two common mis-classifications.
A control valve with a motor actuator symbol is still 1 AO. The motor actuator is the means of moving the valve. The I/O channel is the position command, not the motor. Modifier letters do not multiply channels. A TCV with a Siemens SQX62 actuator and a positioner is one AO. Not two. Not three.
A position limit switch on an on, off valve, ZSO, ZSC is a separate DI from the valve's DO command. The XV-301 command is one DO. The ZSO-501 open-confirmation contact is a separate DI row. Both rows belong in the list. They are separate wired channels.
Nothing should leave this step with signal class blank or marked as REVIEW. A blank signal class at IFC means the PLC programmer does not know which card slot to assign the instrument to, and the hardware order may be wrong.
Step 5. Add implied channels only where the convention calls for them
Some equipment items that appear on the P&ID as symbols rather than instrument bubbles carry implied I/O. A pump P-301 has no bubble of its own, but it typically requires a motor start command, DO and a motor run-status feedback, DI. A fan K-501 follows the same convention.
Whether to add these implied channels as explicit rows depends on the project convention. On most projects, the motor start DO and run-feedback DI appear as explicit bubbles on the P&ID, usually labeled with the motor tag or a derived tag, M-301-START, M-301-FB. If those bubbles are already in your extract, you have the rows. If the P&ID uses only the equipment symbol and relies on convention, add the implied rows with a note indicating the source, implied from P-301.
Do not invent implied channels that the drawing does not support, and do not add them for equipment that is outside the control-system scope.
Step 6. Assign and freeze
Once the tag count is stable, assign each row to a controller, rack, slot, and channel. Apply the spare-channel policy at this stage, before finalizing card procurement, so that late additions during construction do not require new cards. For a detailed treatment of how to set and document a spare I/O policy, see spare I/O percentage explained.
At IFC, lock the list. Changes after IFC are formal revisions. A revision number, a change description, and a corresponding update to the PLC rack assignment. The list is never finished during construction, but every change after IFC must be controlled.
One channel per bubble
This is the rule that the classification step depends on, and it is the one that causes the most debate in review.
Every instrument bubble represents exactly one I/O channel. Modifier letters, actuator types, and accessory symbols on the drawing do not add channels. The bubble is the unit.
A few worked examples.
FIC-201 is a flow indicating controller. It appears as a single bubble on the P&ID, connected to a control valve output. One AO. The FIC bubble is the controller function in the DCS. The valve it drives may be FCV-302, which is a separate AO row.
FCV-302 is a flow control valve. One AO. Whether the valve has a pneumatic positioner, an electropneumatic positioner, or a Rotork electric actuator, it is one AO position command. The solenoid on a fail-close air supply is sometimes shown as a separate XV. If it has its own bubble and tag, it is its own DO row. If it is shown only as an accessory without a bubble, it has no row.
XV-301 is an on, off shutoff valve. One DO. If ZSO-501 and ZSC-502 limit switches are shown on the same drawing as bubbles with their own tags, they are two additional DI rows. The total for that valve assembly is 1 DO plus 2 DI, across three rows, not one row with three channels.
PT-101 is a pressure transmitter. One AI.
Worked walkthrough
Take a small section of PID-001 covering vessel V-201 and pump P-301 on a gas-processing plant. The extract from the drawing produces the following raw bubbles.
| Tag | Drawing | Notes from extract |
|---|---|---|
| PT-101 | PID-001 | Pressure transmitter, line 4"-CS-101-A1A |
| FIC-201 | PID-001 | Flow indicating controller, loop 201 |
| FCV-302 | PID-001 | Flow control valve, downstream of FIC-201 |
| XV-301 | PID-001 | Shutoff valve, manual isolate |
| ZSO-501 | PID-001 | Open limit switch on XV-301 |
| FT-102 | PID-002 | Flow transmitter, loop 201. Appears on PID-001 as off-page ref |
Step 3, dedup. FT-102 appears on PID-002 as the primary bubble and on PID-001 as a cross-reference. Keep one row, primary drawing PID-002, note PID-001 as secondary.
Step 4, classify.
| Tag | Signal class | Basis |
|---|---|---|
| PT-101 | AI | Pressure transmitter. Function letter T |
| FIC-201 | AI | Flow indicating controller in DCS. Receives the FT signal |
| FCV-302 | AO | Modulating control valve driven by FIC-201 |
| XV-301 | DO | On, off shutoff valve |
| ZSO-501 | DI | Position limit switch, open confirm |
| FT-102 | AI | Flow transmitter. Function letter T |
Step 5, implied channels. P-301 is shown as equipment on the P&ID. The drawing shows no motor bubble. Convention for this plant calls for a motor start DO and run-feedback DI. Add two rows. P-301-START, DO and P-301-FB, DI, both noted as implied from P-301 equipment symbol.
Final row count for this section. 6 extracted bubbles plus 2 implied channels 8 rows. Signal class distribution. 3 AI, 1 AO, 2 DI, 2 DO.
Step 6, assign. All 8 rows assigned to PLC-1. The assignment depends on how many channels are on each card and how many spare channels the rack policy requires. The point is that every row has a home before the list is frozen.
What goes wrong
Counting the same instrument twice across sheets. An instrument shown on its home sheet and referenced again at an off-page connector on another sheet is one device, not two. Count it once, on the sheet where its bubble and signal line live. An unverified list often double-counts these, inflating the channel total and the card count downstream.
Building from a stale instrument index instead of the current P&IDs. The instrument index follows the P&IDs. If the P&IDs are at revision 4 and the instrument index was last updated at revision 2, instruments added in revisions 3 and 4 are missing. The I/O list built from that index is incomplete before the first row is typed. Always work from the drawings. Reconcile the index against the list, not the reverse. See instrument index vs I/O list vs line list for a full comparison.
Signal class left as REVIEW at freeze. REVIEW is a placeholder for unresolved classification. Any row that reaches IFC with REVIEW in the signal class column is a row without a card assignment. The programmer cannot build the I/O map. The hardware order may be short a card. Resolve every row before the freeze.
Loop numbers not assigned. Without loop numbers, the list cannot be grouped by loop for loop-check scheduling. The commissioning team will assign loop numbers themselves during the loop-check phase, and those assignments will differ from whatever convention the original engineer had in mind. Carry loop numbers forward from the tag or assign them during classification.
The list is never frozen. An I/O list that keeps absorbing changes without a formal revision process becomes unreliable. The PLC programmer works from one version. The commissioning technician receives a different one. Field changes get missed. The management of change process for a frozen I/O list is not bureaucracy. It is version control on the document that drives the most downstream work on the project.
How Tagsight fits into this process
Tagsight reads a P&ID set, scanned or vector, and produces a structured instrument extract with tag number, instrument type, signal class, loop number, and drawing reference per row. The output is the extraction step of the sequence above. A classified, drawing-referenced tag list ready for the dedup, assignment, and freeze steps.
For more on the extraction process and file preparation, see how to extract instruments from a P&ID PDF. The I/O list creation guide covers the full project lifecycle from preliminary estimate through as-built.