Skip to main content

デフォルトのアクション実装によるサービス指示フック

以下は、デフォルトのアクションがすでに実装されており、通常はユーザー アプリケーションに実装する必要のないフックのリストです。

サービスフック: アラーム確認応答

リクエストの有効性を確認した後、API は指定されたオブジェクトを見つけようとします。オブジェクトが存在し、 Time Stamp パラメーターが、確認されたイベントの最新の時刻と一致すると、次のことが起こります。 Acked_Transitions の値に対応するオブジェクトのプロパティ Event State Acknowledged パラメータは次のように設定されています 1result(+) プリミティブが発行され、イベント通知が発行されます。 Notify Type パラメータに等しい ACK_NOTIFICATION 発行されます。オブジェクトが見つからない場合は、 result(-) プリミティブが発行されます。確認通知は、元の確認済みまたは未確認のイベント通知が送信されたのと同じ受信者に向けられた同じサービス タイプ (確認済みまたは未確認) を使用します。の Time Stamp 確認通知で伝えられる情報は、確認通知が生成された時刻から導出されるものであり、 Time Stamp 元のイベント通知の。

サービスフック: GetAlarmsummary

リクエストの有効性を確認した後、API は、 イベントの状態 プロパティが次と等しくない NORMAL そして Notify_Type の値を持つプロパティ ALARM。以下を含む肯定的な応答が構築されます。 Alarm Summaries この検索で見つかったオブジェクト。これらの基準を満たすオブジェクトが見つからない場合は、長さ 0 のリストが返されます。

サービスフック: GetEnrollmentsummary

リクエストの有効性を確認した後、API はリクエスト プリミティブで指定された検索基準を満たすすべてのイベント トリガー オブジェクトを検索します。検索基準は、リクエスト プリミティブで省略された、明示的に設定されたすべてのフィルターの論理リンクです。を含む陽性反応 Enrollment Summaries この検索で見つかったオブジェクトに対して、 が構築されます。これらの基準を満たすオブジェクトが見つからない場合は、長さ 0 のリストが返されます。

サービスフック: SubscribeCOV

どちらでもない場合 Lifetime または Issue Confirmed Notifications 存在する場合、リクエストはキャンセルとみなされます。同じ BACnet アドレスに対してすでに存在し、 SubscribeCOV リクエストして同じものを持っています Subscriber Process Identifier そして Monitored Object Identifier、無効になっており、 SimpleAck が返されます。一致する COV コンテキストが見つからない作成されたキャンセルは、コンテキストが存在していたかのように正常に実行され、 SimpleAck。もし Lifetime パラメータは存在しませんが、 Issue Confirmed Notifications パラメータが存在する場合、値ゼロ (無期限の存続期間) が適用されます。 lifetime。もし Issue Confirmed Notifications パラメータは存在しますが、監視対象のオブジェクトが COV レポートをサポートしていない場合は、エラーが発行されます。監視対象のオブジェクトが COV レポートをサポートしている場合は、同じ BACnet アドレスの既存の COV コンテキストを見つけるためのチェックが実行されます。 SubscribeCOV リクエストして同じものを持っています Subscriber Process Identifier そして Monitored Object Identifier。既存の COV コンテキストが見つかった場合、リクエストはサブスクリプションが再度作成されたかのように処理されます。もし COV 要求に対応するコンテキストが見つからない場合は、要求を伝送する PDU からの BACnet アドレスを含む新しい COV コンテキストが作成されます。 SubscribeCOV リクエストと同じ Subscriber Process Identifier そして Monitored Object Identifier。コンテキストを作成できない場合は、エラーが返されます。新しいコンテキストが作成されるか、新しいサブスクリプションが受信されると、COV コンテキストが初期化され、次のとおり有効期間が与えられます。 Lifetime パラメータが存在する場合は 0、Lifetime パラメータが存在しない場合は 0。再購読を受信せずに何秒も経過すると、購読は自動的にキャンセルされます。ライフタイム 0 は、サブスクリプションが無期限であり、自動キャンセルが発生しないことを示します。いずれの場合も、 SimpleAck が返されます。あ ConfirmedCOVNotification または UnconfirmedCOVNotification で指定されているように、サブスクリプションまたは再サブスクリプション要求が正常に完了した後、できるだけ早く作成されます。 Issue Confirmed Notifications パラメータ。

サービスフック: AddListElement

リクエストの有効性を確認した後、API は、 Object Identifier パラメータ。識別されたオブジェクトが存在し、 Property Identifier パラメータに指定されているすべての要素を追加しようとします。 List of Elements パラメータを指定されたプロパティに追加します。この試みが成功すると、 SimpleAck プリミティブが発行されます。 1 つ以上の要素がリストにすでに存在する場合、その要素は無視され、リストに追加されません。すでに存在する要素を無視しても、サービスは失敗しません。指定されたオブジェクトが存在しない場合、指定されたプロパティが存在しない場合、または指定されたプロパティがリストでない場合、サービスは失敗し、エラー応答プリミティブが発行されます。 1 つ以上の要素をリストに追加できず、それらの要素がリストにまだ存在していない場合は、エラー応答プリミティブが発行され、要素はリストに追加されません。このサービスの効果は、指定されたまだ存在しないすべての要素をリストに追加するか、リストに要素をまったく追加しないことです。

サービスフック: RemoveListElement

リクエストの有効性を確認した後、API は、 Object Identifier パラメータ。識別されたオブジェクトが存在し、 Property Identifier パラメータを使用すると、パラメータで指定されたすべての要素を削除しようとします。 List of Elements 指定されたプロパティのパラメータ。 1 つ以上の要素が存在しないか、不十分な権限やその他の問題により削除できない場合、要素はいずれも削除されず、エラー応答プリミティブが発行されます。

サービスフック: ReadProperty

リクエストの有効性を確認した後、API は指定されたオブジェクトの指定されたプロパティへのアクセスを試みます。アクセスが成功すると、 ComplexAck アクセスされた値を返すプリミティブが生成されます。アクセスが失敗すると、失敗の理由を示すエラー プリミティブが生成されます。とき object-type の中に Object Identifier パラメータには値が含まれています Device Object そしてその中のインスタンス Object Identifier パラメータには値が含まれています 4194303の場合、API は Object Identifier あたかもローカル デバイス オブジェクトと正しく一致したかのように。これにより、生成されないデバイスのデバイス インスタンスが許可されます。 I-Am メッセージは未定です。

サービスフック: ReadPropertyMultiple

リクエストの有効性を確認した後、API は指定されたオブジェクトの指定されたプロパティへのアクセスを試みます。それは、 List of Read Access Results リクエストで指定された順序で。もし List of Property References の一部 List of Read Access Specifications パラメータにはプロパティ識別子が含まれます ALLREQUIRED、 または OPTIONAL、 そうして List of Read Access Results は、返される各プロパティが明示的に参照されているかのように構築されます。リクエストが「自動的に」実行される必要はありません。それにもかかわらず、API は、優先度の高いプロセスのみを対象として、すべての読み取り操作が可能な限り最短時間で完了するようにします。リクエストは、指定されたすべてのプロパティへのアクセスが試行されるまで処理されます。指定されたオブジェクトが見つからない場合、または指定されたオブジェクトの指定されたプロパティのいずれにもアクセスできない場合は、エラー プリミティブまたは ComplexAck すべてのプロパティのエラー コードを返すプリミティブが発行されます。指定されたオブジェクトの指定されたプロパティのいずれかにアクセスできる場合、 ComplexAck プリミティブが発行され、アクセスされたすべての値と、アクセスできなかったすべてのプロパティのエラー コードが返されます。とき object-type の中に Object Identifier の一部 Read Access Specification パラメータには値が含まれています Device Object そしてその中のインスタンス Object Identifier パラメータには値が含まれています 4194303の場合、API は Object Identifier あたかもローカル デバイス オブジェクトと正しく一致したかのように。これにより、生成されないデバイスのデバイス インスタンスが許可されます。 I-Am メッセージは未定です。

BACnet サーバー ユーザー アプリケーションの場合、内部データベースを使用できないため、 ReadPropertyMultiple サービスを実装する必要があるのは、 ReadProperty サービスフックのため ReadPropertyMultiple リクエストは 1 つに分割されます ReadProperty リクエストが内部的に処理され、完了が収集されてレスポンスが作成されます。

サービスフック: WriteProperty

リクエストの有効性を確認した後、API は、指定されたオブジェクトの指定されたプロパティを、 Property Value パラメータ。この変更の試行が成功すると、 SimpleAck プリミティブが発行されます。変更の試行が失敗すると、失敗の理由を示すエラー プリミティブが生成されます。

サービスフック: WritePropertyMultiple

それぞれについて Write Access Specification に含まれる List of Write Access Specifications、指定された各プロパティの値は、 Write Access Specification、そして SimpleAck プリミティブが発行され、サービス要求がすべて実行されたことを示します。提供されたプロパティは、 List of Write Access Specifications。処理中に変更できないプロパティが発生した場合、PI は失敗の理由を示すエラー応答プリミティブを発行します。このサービスの結果は、指定されたすべてのプロパティ、または指定されたプロパティまでのプロパティのみ (これは含まれない) のいずれかになります。 First Failed Write Attempt パラメータが正常に変更されました。あ BACnet-Reject-PDU このメッセージは、書き込み操作が正常に実行されなかった場合にのみ発行されます。これは、サービス要求が完全に拒否されたことを示します。に含まれる書き込み操作の 1 つが、 List of Write Access Specifications が正常に実行できなかった場合、上記のように失敗の理由を示すエラー応答が発行されます。

サービスフック: ReadRange

まず、API は、 Object IdentifierProperty Identifier、 そして Property Array Index パラメータを返し、オブジェクトまたはプロパティが不明な場合、参照されたデータがリストまたは配列でない場合、または現在別の理由でアクセスできない場合は、適切なエラー クラスとエラー コードを含むエラー応答を返します。もし Range パラメータが存在しない場合、API はリストまたは配列内の使用可能な項目をすべて読み取り、それらを返そうとします。もし Range パラメータが存在し、 By Position パラメータを指定すると、API は指定されたすべての項目を読み取り、それらを返そうとします。指定された項目には、 で定義されたインデックス位置の項目が含まれます。 Reference Index プラス以下のもの Count - 以下の場合は 1 項目 Count がポジティブ、または最大 -1 - Count if の前の項目 Count はマイナスです。リストの最初の要素はインデックス 1 に関連付けられます。 Range パラメータが存在し、 By Time パラメータまたは By Sequence Number パラメータを指定すると、API は適切なエラー クラスとエラー コードを含むエラー応答を返してリクエストを拒否します。返された応答は、 Item Count パラメータ。現在のアイテムは Item Data パラメータ。返された応答に最初の位置インデックスが含まれている場合、 FIRST_ITEM フラグが設定されています TRUE の中に Result Flags パラメータ;それ以外の場合は、次のように設定されます FALSE。返された応答に最後の位置インデックスが含まれている場合、 LAST_ITEM フラグが設定されています TRUEResult Flags;それ以外の場合は、次のように設定されます FALSE。リスト内の項目が一致しない場合は、 Range パラメータ基準、次に ComplexAck で返されます Item Count0 そしていいえ First Sequence Number パラメータ。

このサービスのデフォルトの実装では、 log-buffer トレンドおよびイベントログオブジェクトのプロパティ。ユーザー アプリケーションがログ オブジェクトをサポートする必要がある場合、それらのデータへのストレージとアクセスはユーザー アプリケーションによって実装される必要があります。

サービスフック: SubscribeCOVProperty

どちらでもない場合 Lifetime または Issue Confirmed Notifications 存在する場合、リクエストはキャンセルとみなされます。同じ BACnet アドレスに対してすでに存在し、 SubscribeCOVProperty リクエストして同じものを持っています Subscriber Process IdentifierMonitored Object Identifier そして Monitored Property Identifier、無効になっており、 SimpleAck が返されます。一致する COV コンテキストが見つからない場合に発行されたキャンセルは、コンテキストが存在していたかのように正常に処理されます。彼らは戻ってきます SimpleAck。 COV コンテキストが見つかった場合、それは Active_COV_Subscriptions デバイスオブジェクト。もし Issue Confirmed Notifications パラメータは存在しますが、監視対象のプロパティが COV レポートをサポートしていない場合は、エラーが発行されます。監視対象のプロパティが COV レポートをサポートしている場合は、同じ BACnet アドレスの既存の COV コンテキストを見つけるためのチェックが実行されます。 SubscribeCOVProperty リクエストして同じものを持っています Subscriber Process IdentifierMonitored Object Identifier、 そして Monitored Property Identifier。既存の COV コンテキストが見つかった場合、リクエストは再サブスクリプションとして解釈され、再サブスクリプションが作成されたかのように正常に処理されます。リクエストに一致する COV コンテキストが見つからない場合は、新しい COV コンテキストが作成されます。これには、PDU からの BACnet アドレスが含まれており、 SubscribeCOVProperty リクエストして同じものを持っています Subscriber Process IdentifierMonitored Object Identifier、 そして Monitored Property Identifier。新しいコンテキストは、 Active_COV_Subscriptions デバイスオブジェクトのプロパティ。コンテキストを作成できない場合は、エラーが返されます。新しいコンテキストが作成されるか、再サブスクリプションを受信すると、COV コンテキストが初期化され、 Lifetime パラメータ。数秒経っても再購読が受信されない場合、購読は自動的にキャンセルされます。あ SimpleAck が返され、 ConfirmedCOVNotification または UnconfirmedCOVNotification で指定されているように、サブスクリプションまたは再サブスクリプション要求が正常に完了した後、できるだけ早く作成されます。 Issue Confirmed Notifications パラメータ。

サービスフック: GetEventInformation

リクエストの有効性を確認した後、API は、次の条件を満たすすべてのイベント トリガー オブジェクトを、指定されたオブジェクトの後のオブジェクト (オブジェクト インスタンスの内部順序で昇順) から検索します。 Last Received Object Identifier パラメータが存在する場合は、 Event_State 値が次と等しくないプロパティ NORMAL、または Acked_Transitions 次のビットの少なくとも 1 つを持つプロパティ (TO-OFFNORMALTO-FAULTTO-NORMAL) に設定 FALSE。この検索で見つかったオブジェクトのイベント概要を含む肯定的な応答が構築されます。これらの基準を満たすオブジェクトが見つからない場合は、長さ 0 のリストが返されます。期限内に返却できる限り返却します。 APDU。基準を満たすが、 APDU、 そうして More Events パラメータは次のように設定されています TRUE;それ以外の場合は、次のように設定されます FALSE

サービスフック: I-Am

API はリクエストの正当性を確認した後、受信した情報を Address_Binding デバイスオブジェクトのプロパティ。これは、デバイス インスタンス番号をそのデバイスとの通信に必要な BACnet MAC アドレスに解決するために使用されます。

サービスフック: I-Have

リクエストの有効性を確認した後、API は受信した情報を内部のソートリストに追加します。このリストは、オブジェクト名をそれらのオブジェクトにアクセスするために必要なオブジェクト識別子に解決するために使用されます。

サービスフック:Who-Has

API は未確認のメッセージを送信します。 Who-Has リクエスト。通常はブロードキャスト アドレスを使用します。もし Device Instance Range Low Limit そして Device Instance Range High Limit パラメータが存在し、次に API、そのデバイス Object_Identifier インスタンス番号は範囲内にあります Device Instance Range Low Limit >= Object_Identifier Instance Number <= Device Instance Range High Limit、応答する資格があります。もし Object Name パラメータが存在し、次に API が存在します。これには、 Object_Name に一致するプロパティ値 Object Name パラメータは、 I-Have サービス要求。もし Object Identifier パラメータが存在し、次に API が存在します。これには、 Object_Identifier に一致するプロパティ値 Object Identifier パラメータは、 I-Have サービス要求。

サービスフック: 誰が誰ですか

API は未確認のメッセージを送信します。 Who-Is リクエスト。通常はブロードキャスト アドレスを使用します。もし Device Instance Range Low Limit そして Device Instance Range High Limit パラメータが欠落している場合、API はデバイスを返します Object_Identifierによる個々の応答における I-Am サービス。もし Device Instance Range Low Limit そして Device Instance Range High Limit パラメータが存在し、次に API、そのデバイス Object_Identifier インスタンス番号は範囲内にあります Device Instance Range Low Limit >= Device Object_Identifier Instance Number <= Device Instance Range High Limit、デバイスを返却します Object_Identifier によって I-Am サービス。

サービスフック: AtomicReadFile

まず、API は、 Object Identifier。を返します result(-) オブジェクトが不明な場合は、対応するエラー クラスとエラー コードを含むエラー。このサービス フックは、経由でアクセスされるファイルのみをサポートします。 STREAM。その後、ローカル ハード ドライブ上のローカル ファイル アクセスの有効性がチェックされ、 result(-) ファイルの開始位置が無効な場合、または何らかの理由でファイルにアクセスできない場合は、適切なエラー クラスとエラー コードを含む応答が返されます。有効性チェックが成功すると、指定された数値が Request Record Count のオクテットがローカル ファイルから読み取られます。実際に読み取られたオクテット数が指定されたオクテット数より小さい場合、 Returned Record Count 返されたものの result(+) 読み取ったオクテット数を示します。ファイルの終わりに達すると、 End Of File 返されたパラメータ result(+) に設定されています TRUE

このサービス フックは、次の SysFile インターフェイスを使用して実装されます。 CODESYS そしてサポートします STREAM アクセスのみ。その結果、ユーザー アプリケーションは、特にファイル アクセス用のこのサービス フックを変更する必要がある場合があります。

サービスフック: AtomicWriteFile

まず、API は、 Object Identifier。を返します result(-) オブジェクトが不明な場合は、対応するエラー クラスとエラー コードを含むエラー。このサービス フックは、経由でアクセスされるファイルのみをサポートします。 STREAM。その後、ローカル ハード ドライブ上のローカル ファイル アクセスの有効性がチェックされ、 result(-) ファイルの開始位置が無効な場合、または何らかの理由でファイルにアクセスできない場合は、適切なエラー クラスとエラー コードを含む応答が返されます。もし File Start Position サービス リクエストのパラメータがローカル ファイル サイズを超えると、ファイルは受信オクテットを書き込むために拡張されます。もし File Start Position パラメータに値があります -1、その後、ローカル ファイルに受信オクテットが追加されます。ローカル ファイルへの書き込みが失敗した場合、対応する result(-) 応答が発行されます。ローカル ファイルへの書き込みが成功すると、 result(+) が発行され、それに対応する内容が含まれます File Start Position

このサービス フックは、次の SysFile インターフェイスを使用して実装されます。 CODESYS そしてサポートします STREAM アクセスのみ。その結果、ユーザー アプリケーションは、特にファイル アクセス用のこのサービス フックを変更する必要がある場合があります。

サービスフック: CreateObject

まず、API はリクエストの正当性を検証します。 Object Specifier リクエストの は、作成可能なオブジェクト タイプを指定します (内部ルールに従って) BACnet.IsBACnetObjectAMEVCreatable)。対応するエラーを返します result(-) そうでない場合。で指定されている場合は、 Object Specifier、オブジェクト インスタンス番号の有効性がチェックされ、対応するエラーが発生します。 result(-) インスタンス番号が存在しない場合に返されます。もし List of Initial Values が指定されていない場合、作成されたオブジェクトのプロパティは、指定されたオブジェクトで指定されていないプロパティの場合と同様に、デフォルト値を使用して作成されます。 List of Initial Values。オブジェクトの作成が失敗した場合は、対応するエラーが表示されます。 result(-) が発行されますが、 First Failed Element Number 応答の設定は 0。作成が成功すると、 result(+) 作成されたオブジェクトのオブジェクト識別子を含む応答が発行されます。

このサービスフックの現在の実装は、その実装に対する包括的な提案として見なすべきです。このサービス リクエストがどのように処理されるかはユーザー アプリケーションの純粋にローカルな問題であるため、ユーザー アプリケーションがリクエストの別の処理のために独自のサービス フックを提供する可能性が非常に高くなります。

サービスフック: オブジェクトの削除

まず、API は、 Object Identifier そして、を返します result(-) オブジェクトが不明な場合は、対応するエラー クラスとエラー コードを含むエラー応答。指定されたオブジェクトが削除できる場合、 result(+) 応答が発行されます。オブジェクトの削除に失敗した場合(例:内部ルールによりオブジェクトを動的に削除できない場合) BACnet.IsBACnetObjectAMEVCreatable)、またはその他の理由で、 result(-) 発行されます。

このサービスフックの現在の実装は、その実装に対する包括的な提案として見なすべきです。このサービス リクエストがどのように処理されるかはユーザー アプリケーションの純粋にローカルな問題であるため、ユーザー アプリケーションがリクエストの別の処理のために独自のサービス フックを提供する可能性が非常に高くなります。詳細については、以下を参照してください。 現在のを使用する場合の実装要件 BACnet API/スタック