Introduction
This topic is about instrumentation and controls, and in particular how these are being represented in the RDL.
Description
All Instrumentation & Controls classes are, in the top of their class hierarchies, strictly separated by function. In the table below this is shown for the first level in the hierarchy:
| SUPERCLASS(ES) | CLASS NAME | RDL ID | DEFINITION | ISO 15926-2 ENTITY TYPE | |||
| FunctionalObject | INSTRUMENTATION FUNCTION | rdl:RDS2225050 | An <INSTRUMENTATION FUNCTION> is a <FunctionalObject> that is capable of one or more of the following activities: <ACTUATING>, <COMPUTING>, <CONTROLLING>, <DETECTING>, <INDICATING>, <MEASURING>, <MONITORING>, <PROTECTING>, <RECORDING>, <REGULATING>, <SIGNAL AMPLIFYING>, <SIGNAL CONVERTING>, <SIGNAL CONVEYING>, <SWITCHING>, <TRANSDUCING>, <TRANSMITTING>, and <WARNING> related to physical variables (quantities). | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | BOOLEAN LOGIC FUNCTION | rdl:RDS222482 | A <BOOLEAN LOGIC FUNCTION> is an <INSTRUMENTATION FUNCTION> that is capable of <EXECUTING> Boolean logic. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | CONTROLLER | rdl:RDS289844 | A <CONTROLLER> is an <INSTRUMENTATION FUNCTION> that is capable of <CONTROLLING>. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | DETECTOR | rdl:RDS17604520 | A <DETECTOR> is an <INSTRUMENTATION FUNCTION> that has a capability of <DETECTING>. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | FINAL CONTROL FUNCTION | rdl:RDS2220650 | A <FINAL CONTROL FUNCTION> is an <INSTRUMENTATION FUNCTION> that physically changes a process in response to a change in the output from a <CONTROLLER>. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | INDICATOR | rdl:RDS418499 | An <INDICATOR> is an <INSTRUMENTATION FUNCTION> that has a capability of <INDICATING>. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | SIGNAL CIRCUIT | SYSTEM | INSTRUMENT LOOP | rdl:RDS222493 | An <INSTRUMENT LOOP> is an <INSTRUMENTATION FUNCTION> and a <SIGNAL CIRCUIT> and a <SYSTEM> that has two or more interlinked <INSTRUMENTATION FUNCTION>s. | dm:ClassOfFuntionalObject | |
| INSTRUMENTATION FUNCTION | SIGNAL CIRCUIT ELEMENT | INSTRUMENT LOOP ELEMENT | rdl:RDS222220 | An <INSTRUMENT LOOP ELEMENT> is a <INSTRUMENTATION FUNCTION> and a <SIGNAL CIRCUIT ELEMENT> capable of operating as a part in an <INSTRUMENT LOOP>. | dm:ClassOfFuntionalObject | ||
| INSTRUMENTATION FUNCTION | SYSTEM | INSTRUMENTATION SYSTEM | rdl:RDS222491 | An <INSTRUMENTATION SYSTEM> is a <INSTRUMENTATION FUNCTION> and a <SYSTEM>. | dm:ClassOfFuntionalObject | ||
| INSTRUMENTATION FUNCTION | MEASURING INSTRUMENT | rdl:RDS913904 | A <MEASURING INSTRUMENT> is a <INSTRUMENTATION FUNCTION> that handles the measurement result from an internal or external <MEASURING ELEMENT> | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | MONITOR | rdl:RDS13175715 | A <MONITOR> is an <INSTRUMENTATION FUNCTION> that is capable of <MONITORING> | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | PROBE | rdl:RDS648449 | A <PROBE> is an <INSTRUMENTATION FUNCTION> that is capable of obtaining specific information or physical samples for diagnostic or experimental purposes. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | GAUGE | PROCESS GAUGE | rdl:RDS462644 | A <PROCESS GAUGE> is a <INSTRUMENTATION FUNCTION> and a <GAUGE> that is a stand-alone device for measuring or sighting a process variable. | dm:ClassOfFuntionalObject | ||
| INSTRUMENTATION FUNCTION | PROCESS SIGNAL GENERATING FUNCTION | rdl:RDS2220983 | A <PROCESS SIGNAL GENERATING FUNCTION> is an <INSTRUMENTATION FUNCTION> that generates a non-standard <SIGNAL> that represents the magnitude of a process variable, and usually is made input of a <MEASURING INSTRUMENT> | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | READER | rdl:RDS2224301 | A <READER> is an <INSTRUMENTATION FUNCTION> that has the capability of <READING> some <CODE>. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | RECORDER | rdl:RDS282059 | A <RECORDER> is an <INSTRUMENTATION FUNCTION> that is capable of <RECORDING>. | dm:ClassOfFuntionalObject | |||
| INSTRUMENTATION FUNCTION | VALVE | SELF-OPERATING VALVE | rdl:RDS7018938 | A <SELF-OPERATING VALVE> is an <INSTRUMENTATION FUNCTION> and a <VALVE> that includes a means of operation (e.g. spring / gravity / fluid pressure / counter balance), and is not depending on an external source of energy. | dm:ClassOfFuntionalObject | ||
| INSTRUMENTATION FUNCTION | CONVEYOR | SIGNAL CONVEYOR | rdl:RDS222448 | A <SIGNAL CONVEYOR> is an <INSTRUMENTATION FUNCTION> and a <CONVEYOR> for a <SIGNAL>. | dm:ClassOfFuntionalObject | ||
| INSTRUMENTATION FUNCTION | SIGNAL RECEIVER | STANDARD SIGNAL RECEIVER | rdl:RDS222805 | A <STANDARD SIGNAL RECEIVER> is a <INSTRUMENTATION FUNCTION> and a <SIGNAL RECEIVER> that is capable of <RECEIVING> a <STANDARD SIGNAL>. | dm:ClassOfFuntionalObject | ||
| INSTRUMENTATION FUNCTION | SIGNAL SENDER | STANDARD SIGNAL SENDER | rdl:RDS2228051 | A <STANDARD SIGNAL SENDER> is a <INSTRUMENTATION FUNCTION> and a <SIGNAL SENDER> that is capable of <SENDING> a <STANDARD SIGNAL>. | dm:ClassOfFuntionalObject | ||
| INSTRUMENTATION FUNCTION | WARNER | STATE WARNER | rdl:RDS2220118 | A <STATE WARNER> is an <INSTRUMENTATION FUNCTION> and a <WARNER> of an unwanted state change. | dm:ClassOfFuntionalObject | ||
| ARTEFACT | INSTRUMENTATION FUNCTION | INSTRUMENTATION ITEM | rdl:RDS2220012 | An <INSTRUMENTATION ITEM> is an <ARTEFACT> and a <INSTRUMENTATION FUNCTION>(s). | dm:ClassOfInanimatePhysicalObject | ||
Click here for a report showing all 1270 subclasses of INSTRUMENTATION FUNCTION.
No combinatory explosion
Since most instrumentation items and all controls are combinations of above functions the number of possible combinations is unmanageable. And they are not required either, because these combinations can be made on-the-fly in a kind of "cafetaria mode", similar to composing your food by selecting food from a counter.
An integrated measuring element of a transmitter, process switch, process gauge, or process-connected recorder gets a subtag (see B14-FT-101-E below) and is related to that instrument with an AssemblyOfAnIndividual template.
Combinations of functions are done by typing with the applicable functions (see B14-FRC-101 below, typed with RECORDER and CONTROLLER).
Below three examples are given:
- Flow Element B14-FE-101
- Flow Transmitter B14-FT-102 with integral Orifice Plate B14-FT-102-E
- Flow Recording Controller B14-FRC-103
Declaration of Flow Element B14-FE-101
:a9733d16-0a98-4dde-b91f-86759f6dcec1 rdf:type dm:InanimatePhysicalObject, lci:NonActualIndividual, dm:WholeLifeIndividual, rdl:RDS461834 ; rdfs:label "B14-FE-101" ; meta:valEffectiveDate "2022-02-08T16:19:00Z"^^xsd:dateTime .
Like all things B14-FE-101 gets a UUID, and is a member of dm:InanimatePhysicalObject and of lci:NonActualIndividual and of dm:WholeLifeIndividual and of rdl:RDS461834.
The label is a way to access the UUID, where more than one label may occur, for example because of tag number change.
The valEffectiveDate tells the dateTime that the information starts to be valid/relevant.
Subsequently the type of Flow Measuring Element shall be put on record, e.g. an orifice plate:
:4cef7d77-aa8e-49b8-a962-e607494fd38f
rdf:type tpl:ClassificationOfIndividual ;
tpl:hasClassified :a9733d16-0a98-4dde-b91f-86759f6dcec1 ; # B14-FE-101
tpl:hasClassifier rdl:RDS418364 ; # VOLUME FLOW MEASURING ELEMENT - ORIFICE PLATE
meta:valEffectiveDate "2022-03-23T14:15:00Z"^^xsd:dateTime .
Declaration of Flow Transmitter B14-FT-102 with internal measuring orifice plate
:f1f949cf-3f43-493c-bdb0-185c35fd9d18 rdf:type lci:InanimatePhysicalObject, lci:NonActualIndividual, dm:WholeLifeIndividual, rdl:RDS880154 ; rdfs:label "B14-FT-102" ; meta:valEffectiveDate "2022-03-23T14:15:00Z"^^xsd:dateTime . :5bf88dfb-34bd-4124-ac86-eab7dccb97d4 rdf:type lci:InanimatePhysicalObject, lci:NonActualIndividual, dm:WholeLifeIndividual, rdl:RDS418364 ; rdfs:label "B14-FT-102-E" ; meta:valEffectiveDate "2022-03-23T14:15:00Z"^^xsd:dateTime .
Assembly relationship represented with a Template
:426716c9-20ec-489f-8d80-65ef5277784e rdf:type tpl:AssemblyOfAnIndividual ; tpl:hasWhole :f1f949cf-3f43-493c-bdb0-185c35fd9d18 ; # B14-FT-102 tpl:hasPart :5bf88dfb-34bd-4124-ac86-eab7dccb97d4 ; # B14-FT-102-E meta:valEffectiveDate "2022-03-23T14:15:00Z"^^xsd:dateTime .
Declaration of Flow Recording Controller B14-FRC-101
:ace83c44-54dd-453e-86fe-a1e7c5e04cd7 rdf:type lci:InanimatePhysicalObject, lci:NonActualIndividual, dm:WholeLifeIndividual, rdl:RDS282059, rdl:RDS289844 ; rdfs:label "B14-FRC-101" ; meta:valEffectiveDate "2013-02-08T16:19:00Z"^^xsd:dateTime .
Note - Always declare a (class of) physical object with the most generic, but still meaningful, instance of ClassOfFunctionalObject, so here RECORDER and CONTROLLER and not FLOW RECORDER and FLOW CONTROLLER, because the latters are, according their definition, ....specially and exclusively designed for...recording resp. controlling a flow rate. So something like this:

as opposed to recorder and controller with input of a standard signal.
What if you want a further detailed class?
Say you want a class number for a Paddle Insertion Flow Transmitter, to mention something esoteric, you can declare this in your local RDL extension as:
:R5483483 rdf:type ClassOfInanimatePhysicalObject ; rdfs:label "Paddle insertion flow transmitter" ; rdfs:subClassOf rdl:RDS2229466 , rdl:RDS222541 ; skos:definition "A <Paddle insertion flow transmitter> is a <VOLUME FLOW TRANSMITTER> and a <VOLUME FLOW MEASURING INSTRUMENT - PADDLE INSERTION> that uses the rotation of a paddle wheel to measure flow at a point inside the process."@en ; meta:valEffectiveDate "2022-03-23T14:15:00Z"^^xsd:dateTime .
When you visit here you will see how we did that in the IEC RDL extension.
Another view
Below is a diagram in which the total picture is painted for a flow transmitter.

The Standards
The following standards are playing a role:
- the lightblue boxes are entity types defined in ISO 15926-2, see here ;
- the teal-colored boxes are classes defined in ISO 15926-4, implemented in the Reference Data Library (RDL) ;
- the purple box is one of the CFIHOS classes defined in the CFIHOS extension of the RDL .
That purple box is an instance of ClassOfInanimatePhysicalObject that usually is here defined by means of an Instrument Specification.
The implementer can chose to use that data sheet as document for the Class definition, or to define the pump Class with Template instances. Important is to know that the boxes shown are placeholders to which these definitions are to be attributed.
The Project Data
The three green boxes are representing subsequent revisions of the Requirements Class for FT-101, subclass of the purple box. Where the values of the Instrument Specification, represented by the purple box, are empty ("fill in the blanks"), these values are entered for the green boxes.
Those three green boxes are representing revisions 0, 1, and 2 of the related Instrument Specification. They are related by means of an instance of ClassOfTemporalPartWhole to the darkgreen "anchor" Requirements Class. The latter has no attributed information, but is a fixed reference point that remains in place forever and is only deprecated when the individual anchor flow transmitter FT-101 is being deprecated.
At the bottom we find the "anchor" Individual flow transmitter FT-101, alias "Tag", alias "Functional Location", that is represented on a functional diagram, such as a P&ID. Again, that anchor has no attributed information. It is declared as member of dm:InanimatePhysicalObject, of dm:WholeLifeIndividual, and of dm:NonActualIndividual. This means, in other words, that it is a physical object that is not a living organism, it cannot be a temporal part of something else, and it exists in the Design & Engineering World (see here).
Our "anchor" flow transmitter FT-101 has a Temporal Part that is the only temporal part of a NonActualIndividual that is explicitly declared, for the reason outlined below. All other temporal parts are made an integral part of template models and don't have to be declared. The reason why this temporal part is required is that it has two informations attributed to it, via integral temporal parts in the template model:
- the applicable revision of the Requirement Class revision of which it is a member ;
- the installed flow transmitter that implements the Tag .
The Actual World
An member of a Manufactured Product Class has been manufactured, and is declared as a member of dm:InanimatePhysicalObject, of dm:WholeLifeIndividual, and of dm:ActualIndividual. This means, in other words, that it is a physical object that is not a living organism, it cannot be a temporal part of something else, and it exists in the actual world around us.
Our manufactured object has a temporal part that is called "Asset" (whether or not you maintain an asset register of it), and this Asset has a temporal part that is installed (and commissioned, where applicable). The installed object has a temporal part that plays its role in a process activity, such as (here) MEASURING and TRANSMITTING. For futher details see here.