8つのNodeClass

8つのNodeClassは下記の通りです。

NodeClass名 説明
Object NodeClass システム、システムコンポーネント、実世界のオブジェクト(例えば自動車など)、およびソフトウェアオブジェクトを表すために使用されます。   
Variable NodeClass 値を表すために使用されます。
Method NodeClass Method(FA機器の場合はコマンド)を表すために使用されます。
View NodeClass AddressSpaceでNodeの数を制限するために使用されます。
ReferenceType NodeClass Node間の関係を示すために使用されます。
ObjectType NodeClass Objectのタイプを定義するために使用されます。Objectに追加のReferenceを使用し他のノードとの複雑な関係を定義します。
VariableType NodeClass Variableのタイプを定義するために使用されます。VariableTypeはVariableの初期値を定義するために使用されます。
DataType NodeClass DataTypeはObject(音声や動画など)とHasEncoding Referenceで関連付けされObjectのエンコーディング情報を提供します。

Object NodeClass

Object NodeClassはシステム、システムコンポーネント、実世界のオブジェクト、およびソフトウェアオブジェクトを表すために使用されます。

Object NodeはテンプレートとなるObjectType NodeとHasTypeDefinition Referenceで関連づけられます。Objectはその構成要素としてObject、Variable、Methodを関連付けることができます。 ObjectはEventを生成する場合があり、EventはClientにより取得されます。Object NodeClassはBase NodeClassのAttibuteにEventNotifier Attributeが追加されます。

名称 M/O データタイプ 説明
EventNotifier M Byte EventNotifierは必須です。Objectで発生するイベントのサブスクライブ、またはイベントの履歴の読み取りもしくは書き込みをObjectで使用できるかどうかを識別します。8ビットの符号なし整数の構造体です。イベントのサブスクライブに使用できるかどうかを示します。SubscribeTo Events Fieldの値が"0"はイベントのサブスクライブに使用できないことを意味し、"1"はイベントのサブスクライブに使用できることを意味します。

ObjectType NodeClass

ObjectType NodeClassは複雑なObjectを定義するために使用されます。ObjectTypeはObjectのテンプレートです。ObjectのHasTypeDefinitionにより参照されます。

ObjectType NodeClassはBase NodeClassのAttibuteにIsAbstract Attributeが追加されます。

名称 M/O データタイプ 説明
IsAbstruct M Byte Istructは必須です。Trueの場合はAbstruct(抽象) ObjectTypeです。このObjectTypeからインスタンス化しません。 FalsedはこのObjectTypeからインスタンス化する可能性を示します。

Variable NodeClass

Variableは値を表わすために使用されます。VariableにはPropertyとDataVariableの2つの種類があります。

Property

PropertyはAttributeと異なりServerによって定義、追加することが可能です。AddressSpace内でNodeとして表示されます。Nodeが生成されたときに初期設定された値がそのまま変更されずに使用されるものがPropertyです。Nodeが生成された後に変更されてもそのNodeを運用する間は変更されない構成データのようなものもPropertyです。

例としては EU(工業単位)や EURange(工業単位レンジ)があげられます。 判断基準はその値が独立して変更されるのか、他の値に依存して変更されるのかによります。他の値に依存して変更される場合はPropertyです。

DataVariable

DataVariablesはServerはAttributeと異なりServerによって定義、追加することが可能です。AddressSpace内でNodeとして表示されます。変化する値を公開するために使用されます。ObjectからHasComponent Referenceで関連付けられます。

PropertyとDataVariableの関係

OPC UAの仕様書ではファイルオブジェクトが例として記述されています。ファイル内部のバイトストリームはバイト配列はDataVariableと考えられ、ファイルの更新時間、所有者はPropertyと考えられます。Propertyは独立して変更することはできず、ファイル内部のバイト配列データが新規作成または更新される時に連動して変更されるのでPropertyとして定義されます。

Variable NodeClassはBase NodeClassのAttibuteにValue、DataType、ValueRank、ArrayDimensions、AccessLevel、UserAccessLevel、MinimumSamplingInterval、HistorizingのAttributeを追加し定義します。個々のAttributeの説明は下記の通りです。

保持
名称 M/O データタイプ 説明
Value M DataType Valueは必須です。OPC UA Serverが持つVariableの最新の値です。 データタイプはDataType Attributeによって定義されます。
DataType M NodeId DataTypeは必須です。Value Attributeのデータタイプを定義します。Value AttributeのDataTypeはNodeIdで指定されます。基本となるBuilt-in DataTypeはOPC UA Part3-8で定義されています。
ValueRank M Int32 ValueRankは必須です。Valueの配列値の各次元の長さを指定します。
ArrayDimensions O UInt32[] ArrayDimensionsはオプショナルです。Valueの配列値の各次元の長さを指定します。
AccessLevel M Byte AccessLevelは必須です。VariableのValueへのアクセス方法(読み取り/書き込み)、および現在のデータや履歴データが含まれているかどうかを示すために使用されます。
UserAccessLevel M Byte UserAccessLevelは必須です。VariableのValueへのアクセス(読み取り/書き込み)方法、およびユーザーアクセス権を考慮した現在または過去のデータが含まれているかどうかを示すために使用されます。
MinimumSamplingInterval O Duration MinimumSamplingIntervalはオプショナルです。Valueがどのくらい保持されるかを示します。Serverが変更の値をサンプリングできる速度をミリ秒単位で指定します。
Historizing O Boolean Historizingはオプショナルです。Historizing AttributeはServerがVariablesの履歴のデータをアクティブに収集しているかどうかを示します。値がTrueの場合はServerがアクティブにデータを収集していることを示します。 値がFalseの場合はServerはデータをアクティブに収集していません。 デフォルト値はFalseです。

VariableType NodeClass

VariableType NodeClassはValueのデフォルト値または初期値を記述するAttributeを定義するために使用されます。VariableはVariableTypeのHasTypeDefinitionのタイプ定義によりインスタンス化されます。Variable Nodeをインスタンス化する場合、ReferenceするVariableType NodeのValue、DataType、ValueRank、ArrayDimensions Attributeの値はVariableにコピーされます。その他のAttributeはコピーされずにVariableにより指定されたものをそのまま使用します。

DataType、ValueRank、およびArrayDimensions Attributeは単純な値と複雑な値を記述する機能を提供します。VariableType NodeClassはBase NodeClassのAttibuteにValue、DataType、ValueRank、ArrayDimensions、IsAbstract Attributeが追加されます。IsAbstractはこのVariableTypeがインスタンス化するかどうかを定義します。

名称 M/O データタイプ 説明
Value M DataType Attributeで指定されたもの Valueは必須です。OPC UA Serverが持つVariableの最新の値です。 データタイプはDataType Attributeによって定義されます。これによりすべてのVariableが同じDataTypeで定義されたValuesを持つことができます。
DataType M NodeId DataTypeは必須です。Value Attributeのデータタイプを定義します。Value AttributeのDataType定義はNodeIdで指定されます。Built-in DataTypeはOPC UA Part3-8で定義されています。
ValueRank M Int32 ValueRankは必須です。Value配列値の各次元の長さを指定します。
ArrayDimensions O UInt32[] ArrayDimensionsはオプショナルです。Value配列値の各次元の長さを指定します。
IsAbstract M Boolean IsAbstractは必須です。IsAbstructがTrueの場合はAbstruct(抽象) VariableTypeです。この階層のVariavleTypeはインスタンス化しません。 FalseはこのVariableTypeからインスタンス化する可能性があります。

Method NodeClass

Methodは呼び出し可能な関数(FA機器のコマンド)を定義します。HasComponent ReferenceでObjectに関連付けられます。ClientはCall Serviceを使しMethodを呼び出します。MethodのCallは常に最後まで実行され完了すると応答を返します。

Method NodeClassはBase NodeClassのAttibuteにExecutable、UserExecutable Attributeが追加されます。

名称 M/O データタイプ 説明
Executable M Boolean Executable Attributeは必須です。Methodが現在実行可能かどうかを示します。Falseは実行可能でないことを意味しTrueは実行可能を意味します。Executableはユーザーアクセス権を考慮しません。
UserExecutable M Boolean UserExecutableは必須です。Methodがユーザーのアクセス権を考慮し現在実行可能かどうかを示します。Falseは実行不可能でTrueは実行可能を意味します。

View NodeClass

OPC UAシステムは大規模になることが多く、Clientはデータの特定のサブセットのみに関心を持つことがよくあります。この場合、興味のないAddressSpaceのNodeを表示する必要はありません。この問題に対処するためにOPC UAはView NodeClassを使用します。

ViewはAddressSpaceのNodeのサブセットを定義します。同時にOPC UAの仕様の中でも機能でNodeの適用範囲を示す場合にこの概念は使用されます。MonitoredItemsやDeviceSetがこれに相当します。

名称 M/O データタイプ 説明
ContainsNoLoops M Boolean ContainsNoLoopは必須です。Viewにループが含まれているかどうかを識別します。ループがある場合はTrue、ない場合もしくは識別できない場合はFalseに設定されます。
EventNotifier M Byte EventNotifierは必須です。Viewで発生するイベントのサブスクライブ、またはイベントの履歴の読み取り/書き込みをViewで使用できるかどうかを識別します。8ビットの符号なしの整数です。イベントのサブスクライブに使用できるかどうかを示します。SubscribeTo Events Fieldの値が0はイベントのサブスクライブに使用できないことを意味し、1はイベントのサブスクライブに使用できることを意味します。

ReferenceType NodeClass

ReferenceはNode間の関係を定義するNodeの記述要素です。ReferenceはAddressSpaceにNodeとして表示され、ReferenceType NodeClassを使用し定義されます。つまり、Node間を定義しながらそれ自体もNodeであるという不思議な性格を持ちます。

仕様書にでてくる"Has*******"がReferenceです。個々のReferenceは別のページで説明します。RefenceTypeを定義するにはBase NodeClassのAttributeに加えてIsAbstract、Symmetric、InverseName Attributeを定義する必要があります。

名称 M/O データタイプ 説明
IsAbstract M Boolean IsAbstract は必須です。Treuの場合は抽象的ReferenceTypeです。このReferenceTypeはインスタンス化されません。Falseはインスタンス化する可能性があります。
Symmetric M Boolean Symmetricは必須です。Trueの場合、ReferenceTypeはSourceNode(RefeerenceのもとになるNode)とTargetNode(ReferenceされるNode)の双方向とも同じ意味です。Falseの場合、TargetNodeから見たReferenceTypeの意味はSourceNodeから見た場合の逆になります。
InverseName O LocalizedText InverseName はオプションです。Referenceの逆の名前つまりTargetNodeから見たReferenceTypeの意味を表します。例えば”IsControlledBy”のInverseNameは”Controlls"になります。

DataType NodeClass

VariableやVariableTypeのDataTypeはValue AttributeのDataType(データタイプ)を定義するために使用されます。DataTypeを定義することはソフトウェアの間で交換するデータの形式を定義します。これに対しVariableTypeは指定したDataTypeのValueをもつVariableのメタ情報を定義することを意味します。

DataType NodeのNodeIdはOPC UA ServerとClient間で共通的な理解を提供します。これによりClientはDataTypeを読み取る必要なくValueを解釈できるようにします。 このように、ServerはAddressSpaceで対応するBuilt-in DataTypeのNodeIdを使用することでClientにDataTypeを通知することが可能です。

これに対して音声や映像などのObjectはHasEncoding Referenceで関連付けされたDataType Nodeを使用しエンコーディング情報を提供します。OPC UAでServerは情報とデータ型は同時にClientに提供します。

DataType NodeClassはBase NodeClassのAttibuteにIsAbstractが追加されます。

名称 M/O データタイプ 説明
IsAbstract M Boolean IsAbstractは必須です。Trueの場合はAbstruct DataTypeで、インスタンス化されません。FalseはConcrete DataTypedeで、インスタンス化される可能性を示します。