NodeClass

OPC UA Server上のすべてのNodeは8つのNodeClassに分類されますが、Base NodeClassは派生する8つのNodeClassの親になります。よって、Base NodeClassのAttributeはすべてのNodeに共通する構成要素になります。NodeClassはOPC UAの仕様によって定義されていますので、Severは新しいNodeClassを追加したり作成したりできません。 各々のNodeClassの内容はOPC UA Foundationにより定義されたAttributeによって記述され、AttributeはMandatory(必須)とOptional(オプション)の2種類があります。

Base NodeClassとそのAttribute

Attribute名 説明 M/O
NodeID AddressSpaceでNodeを一意に識別するためのIdです。NodeはNameSpaceとIdentifierの組み合わせで一意化されます。例えば「NodeId="ns=1;i=3018"」の様にXMLに記載されます。Identifierの2000番まではOPC UA Foundationにより予約されています。    M
NodeClass Nodeを8つのNodeClassどれかに分類します。 M
BrowseName 人間が読める名前として使用されるAttributeです。TranslateBrowsePathsToNodeIds Serviceを使用しBrowseNameで構成されたパスをたどることができます。 M
DisplayName ローカライズ可能なAttributeで人間が判読できる文字としてユーザーに公開されます。例えばBrowseNameは英語、DisplayNameはドイツ語の場合が多く見受けられます。 M
Description Nodeの意味を説明します。 O
WriteMask WriteMaskはClientが書き込む可能性を公開します。 O
UserWriteMask UserWriteMaskはClientがユーザーアクセス権を参照し書き込む可能性を公開します。 O

8つのNodeClassの説明

8つのNodeClassは下記の通りです。8つのNodeClassはBase NodeClassのAttributeを引き継ぎます。

NodeClass名 説明
Object NodeClass システム、システムコンポーネント、実世界のオブジェクト(例えば自動車など)、およびソフトウェアオブジェクトを表すために使用されます。   
Variable NodeClass 値を表すために使用されます。
Method NodeClass Method(FA機器の場合はコマンド)を表すために使用されます。
View NodeClass AddressSpaceでNodeの数を制限するために使用されます。
ReferenceType NodeClass Node間の関係を示すために使用されます。
ObjectType NodeClass ObjectのTypeを定義するために使用されます。Objectに追加のReferenceを使用し他のノードとの複雑な関係を定義します。
VariableType NodeClass VariableのTypeを定義するために使用されます。 Variable Nodeはデータタイプを定義するためにHasTypeDefinition Referenceがあり、DataTypeはVariableのValueの型を定義します。
DataType NodeClass VariableやVariableTypeはDataType Attributeを持ちます。DataType Attributeの値はValue Attributeのデータ型を定義します。


Object NodeClass

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

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

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

ObjectType NodeClass

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

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

名称 M/O データタイプ 説明
IsAbstruct M Byte IsAbstructがTRUEの場合はAbstruct(抽象) ReferenceTypeです。そのサブタイプ(HasSubtype)のみが存在します。 FALSEはHasSubtype以外のReferenceが存在する可能性があります。

Variable NodeClass

Variableは値を表わすために使用され値を格納するValueというAttributeを持ちます。VariableにはPropertyとDataVariableの2つの種類があります。

Property

Nodeが生成されたときに初期設定された値がそのまま変更されずに使用されるものがPropertyです。Nodeが生成された後に変更されるとしても、1つの値が設定されてからそのNodeを運用する間は変更されない構成データのようなものもPropertyです。

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

DataVariable

DataVariableは初期に設定された値はそのまま使用せず変化する値を入れるコンテナです。EURange(工業単位レンジ)がPropertyとして設定温度の表し最低、最高を表わすとすると温度そのものはDataVariableで表します。

PropertyとDataVariableの関係

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

各々のVariablesはValueのDataTypeを表すHasTypeDefinitionのReferenceが必要です。よってHasTypeDefinitionのTarget Nodeは必ずVariableかVariableTypeです。

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

名称 M/O データタイプ 説明
Value M DataType Attributeで指定されたもの サーバーが持つVariableの最新のValueです。 データ型はDataType Attributeによって定義されます。 これはデータ型が関連付けられていない唯一のAttributeです。これによりすべてのVariableが同じValueで定義された値を持つことができます。
DataType M NodeId Value Attributeのデータタイプを公開します。Value AttributeのDataType定義はNodeIdで指定されます。標準DataTypeはOPC UA Part3-8で定義されています。
ValueRank M Int32 配列値の各次元の長さを指定します。
ArrayDimensions O UInt32[] 配列値の各次元の長さを指定します。
ArrayDimensions O UInt32[] 配列値の各次元の長さを指定します。
AccessLevel M Byte Variableの値へのアクセス方法(読み取り/書き込み)、および現在のデータや履歴データが含まれているかどうかを示すために使用されます。現在のValueが書き込み可能かどうかを示します。0は書き込み不可、1は書き込み可能を意味します。
UserAccessLevel M Byte Variableの値へのアクセス(読み取り/書き込み)方法、およびユーザーアクセス権を考慮した現在または過去のデータが含まれているかどうかを示すために使用されます。現在のValueが書き込み可能かどうかを示します。0は書き込み不可、1は書き込み可能を意味します。
MinimumSamplingInterval O Duration Valueの値がどのくらい保持されるかを示します。Serverが変更の値をサンプリングできる速度をミリ秒単位で指定します。
Historizing O Boolean Historizing Attribute はServerがVariablesの履歴のデータをアクティブに収集しているかどうかを示します。値がTRUEの場合はServerがアクティブにデータを収集していることを示します。 値がFALSEの場合はServerはデータをアクティブに収集していません。 デフォルト値はFALSEです。

VariableType NodeClass

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

DataType、ValueRank、およびArrayDimensions Attributeは単純な値と複雑な値を記述する機能を提供します。VariableType NodeClassはBase NodeClassのAttibuteにValue、DataType、ValueRank、ArrayDimensions、IsAbstract Attributeが追加されます。

名称 M/O データタイプ 説明
Value M DataType Attributeで指定されたもの サーバーが持つVariableの最新のValueです。 データ型はDataType Attributeによって定義されます。 これはデータ型が関連付けられていない唯一のAttributeです。これによりすべてのVariableが同じValueで定義された値を持つことができます。
DataType M NodeId Value Attributeのデータタイプを公開します。Value AttributeのDataType定義はNodeIdで指定されます。標準DataTypeはOPC UA Part3-8で定義されています。
ValueRank M Int32 配列値の各次元の長さを指定します。
ArrayDimensions O UInt32[] 配列値の各次元の長さを指定します。
IsAbstract M Boolean TRUEの場合はAbstruct VariableTypeです。つまり、このタイプのVariableは存在せずそのサブタイプのみが存在します。 FALSEは抽象VariableTypeではありません。このタイプのVariableは存在します。

Method NodeClass

Methodは呼び出し可能な関数(FA機器のコマンド)を定義します。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ビットの符号なし整数です。イベントのサブスクライブに使用できるかどうかを示します(0はイベントのサブスクライブに使用できないことを意味し、1はイベントのサブスクライブに使用できることを意味します)

ReferenceType NodeClass

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

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

名称 M/O データタイプ 説明
IsAbstract M Boolean IsAbstract は必須です。TRUEの場合はAbstractReferenceTypeです。Reference はそのサブタイプReference(HasSubtype)のみが存在しその他は存在しません。      FALSEはConcereat ReferenceTypeです。サブタイプ以外のReferenceが存在する可 能性があります。
Symmetric M Boolean Symmetric は必須です。TRUEの場合、ReferenceTypeはSourceNode(FerenceのもとになるNode)とTargetNode(ReferenceされるNode)の双方向とも同じ意味です。FALSEの場合、TargetNodeから見たReferenceTypeの意味はSourceNodeから見た逆になります。
InverseName O LocalizedText InverseName はオプションです。Referenceの逆の名前つまりTargetNodeから見たReferenceTypeの意味を表します。例えば”IsContollBy”のInverseNameは”Conrolls"になります。

DataType NodeClass

DataTypeはVariableのValueの構造とデータ型を記述するために使用されます。DataTypeを定義することはソフトウェアの間で交換するデータの形式を定義することを意味します。これに対してVariableTypeは指定したDataTypeのデータ形式によるValueをもつVariableのメタ情報を定義することを意味します。VariableTypesはValue AttributeのDataTypeを定義し、VariableはVariableTypeで定義された同じDataTypeもしくはサブタイプのDataTypeを指します。

DataType NodeのDataTypeIdはOPC UA ServerとClient間で共通的な理解を提供します。ClientはSeverからDataTypeの説明を読み取る必要なくValueを解釈できるようにします。 したがって、ServerはAddressSpaceで対応する標準DataTypeのNodeIdを使用することでClientにDataTypeを通知することが可能です。

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

名称 M/O データタイプ 説明
IsAbstract M Boolean TRUEの場合はAbstruct DataTypeです。FALSEはConcrete DataTypedeです。