8つのNodeClass
8つのNodeClassは下記の通りです。
NodeClass名 | 説明 |
---|---|
Object NodeClass | システム、システムコンポーネント、実世界のオブジェクト(例えば自動車など)、およびソフトウェアオブジェクトを表すために使用されます。 |
Variable NodeClass | 値を表すために使用されます。 |
Method NodeClass | Method(FA機器の場合はコマンド)を表すために使用されます。 |
View NodeClass | AddressSpaceでNodeの数を制限するために使用されます。 |
ReferenceType NodeClass | Node間の関係を示すために使用されます。 |
ObjectType NodeClass | Variable、VariableTypeのValue AttributeのデータタイプやObject(音声、画像)のデータエンコーディングを定義します。 |
VariableType NodeClass | Variableのタイプを定義するために使用されます。VariableTypeはVariableの初期値を定義するために使用されます。 |
DataType NodeClass | DataTypeはObject(音声や動画など)とHasEncoding Referenceで関連付けされObjectのエンコーディング情報を提供します。 |
Object NodeClass
Object NodeClassはシステム、システムコンポーネント、実世界のオブジェクト、およびソフトウェアオブジェクトを表すために使用されます。
Object NodeはテンプレートとなるObjectTypeと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 | IstructAbstructは必須です。Trueの場合はこの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
DataVariablessはAttributeと異なりServerによって定義、追加することが可能です。AddressSpace内でNodeとして表示されます。変化する値を公開するために使用されます。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により指定されたものをそのまま使用します。
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
DataTypeはVariable および VariableType内のValue Attributeのデータ型を表現するために使用されます。DataTypeの定義はXML上とDefinition上で表記が異なります。XMLでDataTypeはNodeIdを使用し定義されますがDefinition上は“Boolean“と記載されます。
一般的なXMLの表記方法は下記の通りです。
( 例:
名称 | M/O | データタイプ | 説明 |
---|---|---|---|
IsAbstract | M | Boolean | IsAbstractは必須です。Trueの場合はインスタンス化されません。Falseはインスタンス化される可能性を示します。 |