8つのNodeClass

Base NodeClassは、Nodeを定義する8つのNodeClassの親です。Base NodeClassから8つのNodeClassへAttributeを継承する概念だけを表しますが、Base NodeClassのAttributeはすべてのNodeが継承します。Base NodeClassに何かAttributeを追加すると8つのNodeClassが定義できます。 ObjectTypeの場合はBase NodeClassのAttributeにIsAbstract Attributeが追加されます。

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

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

Object NodeClass

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

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

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

ObjectType NodeClass

ObjectType NodeClassは、複雑なObjectを定義するために使用されます。ObjectのHasTypeDefinitionにより参照されます。

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

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

ObjectとObjectType NodeClassのUMLは図の通りです。ObjectとObjectTypeの関係はHasTypeDefinition Referenceで定義されます。ObjectはObjectTypeで定義されたTargetNodeであるMethod、Vriableなどを引き継ぎます。

Variable NodeClass

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

Property

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

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

DataVariable

DataVariableはAttributeと異なりServerによって定義、追加することが可能です。AddressSpace内でNodeとして表示されます。変化する値を公開するために使用されます。

PropertyとDataVariableの関係

OPC UAの仕様書ではファイルオブジェクトを例として2つの関係が説明されています。ファイルの実際の内容は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 10000-3で定義されています。
ValueRank M Int32 ValueRankは必須です。VariableのValueAtteributeが配列かどうか、もしある場合は配列の次元数を表します。
ArrayDimensions O UInt32[] ArrayDimensionsはオプショナルです。VariableのValueAtteributeが配列の場合、各ディメンションがサポートするデータの最大長を定義します。
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は、Variableの定義書であると同時に、Valueのデフォルト値または初期値を提供するAttributeを定義するために使用されます。VariableはVariableTypeのHasTypeDefinitionのタイプ定義によりインスタンス化されます。Variableがインスタンス化する際、VariableTypeのValue、DataType、ValueRank、ArrayDimensions Attributeの値はそのままVariableにコピーされます。その他の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は必須です。IsAbstractがTrueの場合はAbstract(抽象) VariableTypeです。この階層のVariableTypeはインスタンス化しません。 FalseはこのVariableTypeからインスタンス化する可能性があります。

VariableとVariableType NodeClassのUMLは図の通りです。VariableとVariableTypeの関係はHasTypeDefinition Referenceで定義されます。実質的にはVariableTypeで設定されたValue、DataType、ValueRank、ArrayDimensions Attributeの値はVariableに引き継がれます。AccessLevel、UserAccessLevel、MinimumSamplingInterval、Histrizingはインスタンス時に入力します。

Method NodeClass

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

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は実行可能を意味します。

Methodは帰属するObjectとObjectTypeに対してHasComponent Referenceで関係付けされています。

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ビットの符号なしのIntです。SubscribeTo Events Fieldの値が"0"はイベントのサブスクライブに使用できないことを意味し、"1"はイベントのサブスクライブに使用できることを意味します。

Viewは3つのAttributeが追加されるだけで特別なものはありません。

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"になります。

ReferenceTypeは3つのAttributeが追加されるだけで特別なものはありません。

DataType NodeClass

DataTypeはVariable および VariableTypeのValue AttributeのDataTypeを指定するためと、音声、画像オブジェクトのエンコーディング情報を提供するために使用されます。

Value Attributeを定義するDataTypeはXML上とDefinition上で表記が異なります。XMLでDataTypeはNodeIdを使用し定義されますが、Definitionでは“Boolean“と記載されます。

一般的なXMLの表記方法は下記の通りです。
( 例:i=1 ) “1”がBoolean DataType NodeのIdentifierです。

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

Variable および VariableType内のValue Attributeのデータ型と音声、画像、動画などのObjectのエンコーディング情報をHasEncoding Referenceを用いて定義するために使用されます。