ISO/IEC SC 25/WG 1
ISO/IEC 18012-2:CodeBase Tag Discussion
Ron Ambrosio
IBM TJ Watson Research Center
2
Review of 18012
Information Model & Programming Abstraction• Application-level abstraction, not device-level
• XML description of building blocks and types: Sensor/Actuator/Control objects
• XML description application graph: Binding Map
• Declarative, meta-Info based integration model
• Separation of integration/composition from component design and implementation
• Event Bus as basic event signaling and interaction model
3
Guiding Architectural Principles
Two communities of developers being supported:• Object/device/service developers (“building the widgets”)• Solution builders/integrators (“composing the widgets into solutions”)
Maintain separation of:• Application object abstraction from application object implementation• Logical application topology from physical device/network topology
Maximize solution correctness and efficiency via both the development and runtime environments
Treat time as a fundamental primitive in the programming model Enable higher-level abstraction and integration of Operations
Domain systems and components through encapsulation• Accommodate heterogeneity rather than eliminate it• Minimize impact on existing Operations Domain systems and skills
4
Important to establish certain separations in the programming abstraction
• Separation of Object Implementation from Composition and Integration• Minimizes interference between the two communities of programmers:
• Component Developers• System Integrators
• Allows event flow of application to be modified with no impact on Object Implementation
• Separation of application topology from device topology• Minimizes impact of device evolution and reconfiguration• Simplifies reconfiguration of application for tuning, etc.• Increases level of reusability of Objects
XML Object Model
Model Object
Application Data/Event Flow Path
Model Developer
Model & ApplicationIntegrator
18012runtime
implemtation
Define & Code
Declare Construct &Validate
Construct, Schema Validation,& Code Assembly
5
Software representations of abstract control system objects (control loops, sensors, actuators)
Provide a necessary level of homogeneity across disparate control environments
Allow identification and capture of meta-information (such as latency requirements, data freshness requirements, etc.)
Establish data-typing framework
<?xml version="1.0" encoding="UTF-8"?><controlModel id="cm01" name="cm01" xmlns="http://www.ibm.com/idacs/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
instance" xsi:schemaLocation="http://www.ibm.com/idacs/xml controlModel.xsd"> <inputs> <input> <dataPoint id="i1" name="i1" xsi:type="Boolean"/> </input> <input> <dataPoint id="i2" name="i2" xsi:type="Integer"/> </input> </inputs> <outputs> <output> <dataPoint id="o1" name="o1name" xsi:type="String"/> </output> </outputs> <properties> <property name="cm01_prt1" value="value of prt1"/> <property name="cm01_prt2" value="vlaue of prt2"/> </properties> <codeBase> <codeType>JAVA</codeType> <codeLocation>com.ibm.idacs.algorithm.NullControlAlgorithm</codeLocation> <idlLocation>PIDTemperatureControl.wsdl</idlLocation> </codeBase></controlModel>
Model Object SchemasSensor, Control/Decision, Actuator Objects
6
DataPoint
AnalogPointDigitalPointLength
MassSIMultiple
OnOff-State
Occupancy SIUnit
UnitMultipleTime
Temperature
ElectricCurrent
SubstanceAmount
LuminousIntensity
Motor-Speed
RelativeHumidity
TranslationalSpeed
AngularSpeed
ElectricVoltage
Frequency
Force
Pressure
Energy
EnergyPower
HeatCapacity
baseTypes.xsd
derivedTypes.xsd
industryTypes.xsdPhysicalPointLogicalPoint
DataVector
DataUncertainty
...
...
CustomerSat
$/BTU
XML Schema: Data Point, Type and Physical Unit
7
Data
DataPoint
AnalogPointDigitalPoint
Length
Mass
OnOff-State
Occupancy
Time
Temperature
ElectricCurrent
SubstanceAmount
LuminousIntensity
TranslationalSpeed
AngularSpeed
ElectricVoltage
Energy
Force
Pressure
PhysicalPointLogicalPoint
...
CustomerSat
$/BTU
P/E Ratio
KPI
......
StringByte Boolean
Integer Long Float DoubleShort
Decimal
Business Physical
Programming
Com
putin
gA
pplic
atio
n
• Data type framework to map to computing space from application domain(s)
• Data types are extensible through XML schema to different industries and application domains
• Provides data type platform for Model Object Inputs/Outputs
XML Schema: Data Point, Type and Physical Unit
8
<<complexType>>
controlModel
<<complexType>>
inputs
<<complexType>>
input
<<complexType>>
outputs
<<DataPoint>>
dataPoint
<<complexType>>
QoIRequirement
<<DataPoint>>
dataPoint
<<complexType>>
output
<<complexType>>
codeBase
<<string>>
description
<<enumeration>>
codeType
<<string>>
codeLocation
<<string>>
idlLocation
<<complexType>>
properties
<<simpleType>>
properties
controlModelTypes.xsd
commons.xsd
<<complexType>>
QoI
XML Schema: Control Model Object example
9
Runtime Control Model Object
4. Vildate Trigger Conditionfor AlgorithmEvent()
0. queueInputEvent()
<<Control Model>>
1. queueInputEvent()via Callback
Input Data/Event Queue
Model Algorithm
Model Processor
i1
i2
i3
i4
o1
o2
Event Bus Agent
3. unpackage data() / update()
4. Validate Trigger Rules
2. de-queueInputEvent()
5.2 updatevariables
7. read() / package data()
8. pub()
6. Validate DataPublish Rules
workThreadCallback
Inputs DescriptionTable
Outputs DescriptionTable
Inp
ut
Dat
aVar
Set
Ou
tpu
t D
ataV
arS
et
DataSubscribeMap DataPublishMap
InputDataNameMap
5. execute / callback
Event Correlation
Event Bus
9. publish Event/Data to Event Bus
0. Data/Event from Event Bus
10
Example Control Model Description using Java<?xml version="1.0" encoding="UTF-8"?>
<controlModel id="cm01" name="cm01" xmlns="http://www.ibm.com/idacs/xml" xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xsi:schemaLocation="http://www.ibm.com/idacs/xml controlModel.xsd"> <category>category</category> <inputs> <input> <dataPoint id="i1" name="i1" xsi:type="Boolean"/> </input> <input> <dataPoint id="i2" name="i2" xsi:type="Integer"/> </input> <input> <dataPoint id="i3" name="i3name" xsi:type="Float"/> </input> <input> <dataPoint id="external_timer" name="external_timer" xsi:type="Long"/> </input> </inputs> <outputs> <output> <dataPoint id="o1" name="o1name" xsi:type="String"/> </output> </outputs> <modelProperties> <property name="trigger_mode" value="1"/> <property name="trigger_time_period" value="10000"/> <property name="trigger_time_delay" value="10000"/> </modelProperties> <codeBase> <codeType>JAVA</codeType> <codeLocation>com.ibm.idacs.algorithm.NullControlAlgorithm</codeLocation> <codeProperties> <property name="cm01_alg_prty1" value="valueOfAlgPrt1"/> <property name="cm01_alg_prty2" value="vlaueOfAlgPrt2"/> </codeProperties> <idlLocation>PIDTemperatureControl.wsdl</idlLocation> </codeBase></controlModel>