UDPDevice

In-Sight スプレッドシートのセルを UDP デバイス (クライアントまたはサーバ) として定義します。この関数を定義すると、In-Sight ビジョンシステムとほかの UDP デバイスとの接続が可能になり、ネットワークを介してデータを共有することができます。UDP の接続が確立すると、ReadDevice 関数、WriteDevice 関数、および QueryDevice 関数を使用してデータを通信します。UDPDevice 関数が、ネットワークのほかの UDP デバイスと通信を開始する場合、セルは UDP クライアントとして動作します。UDPDevice 関数が、ネットワークにあるほかの UDP デバイスからの受信を待機する場合は、セルは UDP サーバとして動作します。

TCP に代わる User Datagram Protocol (UDP) はコネクションレス型通信トランスポート方法で、インターネットプロトコル経由でのメッセージ交換の際に限定的なサービスを提供します。TCP とは異なり、UDP では配信の確認や保証は行われません。また、パケットを順番どおりに並べることもありません。

:  
  • UDPDevice 関数は パケットを受信すると、イベントを発生させます。このイベントによって、スプレッドシートが更新されます。
  • 2 つの In-Sight ビジョンシステム間で UDP デバイス接続を確立するには、両方のデバイスをオンラインにする必要があります。

UDPDeviceの入力パラメータ

Syntax:UDPDevice(ホスト名,ポート,タイムアウト,バイナリーパケット)

ホスト名

UDPDevice 関数が含まれているセルをクライアントにする場合は、接続を確立する UDP サーバの名前を指定します。

:  
  • [ホスト名] ドロップダウンには、In-Sight ビジョンシステムのホスト名やネットワーク上のエミュレータは表示されません。ターゲットのビジョンシステム/エミュレータの IP アドレスを [ホスト名] フィールドに手動で入力してください。
  • ホスト名を指定しない場合 (デフォルトでは空の文字列) には、セルは UDP クライアントからの通信開始を待機するサーバになります。
ポート

UDP デバイスとの間で接続を確立する UDP サーバのポート番号です。ホスト名が指定された場合、入力されたポート番号はサーバ側にも割り当てる必要があります。ホスト名が指定されない (空の文字列である) 場合、このパラメータでこのデバイスに UDP/IP ポート番号が割り当てられます。

1 つのホストで、2 つの UDPDevice 関数が同じ UDP ポート番号を共有することはできません。この場合、一方のデバイスは UDP 接続を確立することができなくなります。例えば、1 つの In-Sight スプレッドシートの 2 つのセルにデフォルトのポート番号として「3000」を使用する UDPDevice 関数が入力されている場合、どちらか 1 つのセルのみが UDP デバイスとして機能します。ポート番号の割り当ての重複を避けることは重要です。

:  有効なポート番号は、In-Sight の通信に使用されるポートを除く、1 ~ 65535 の範囲で未使用の番号です。PC のサービスで予約されているポート番号との競合を避けるために、In-Sight エミュレータの設定では、必ず 3000 (デフォルト) 以降のポート番号を割り当ててください。
タイムアウト UDP 接続の確立を試みてから中断するまでの待機時間をミリ秒単位 (100 ~ 15000、デフォルト = 1000) で指定します。このパラメータは、UDPDevice 関数がセルで UDP クライアントとして定義されている場合のみ適用されます。
バイナリーパケット データをバイナリデータパケット、または文字列情報のどちらとして処理するかを指定します。デフォルトでは、このオプションは無効にされており、データは文字列情報として処理されます。

UDPDeviceの出力

戻り値

デバイスデータ構造体。入力パラメータが無効の場合か、タイムアウトの設定時間を超えた場合は、#ERR が返されます。

:  1 つのジョブに挿入できるデバイス構造体の数は最大 12 個です。
結果 関数がセルに入力されると、右側の隣接したセルに追加の関数が自動的に挿入されます。関数が UDP クライアントである場合は WriteDevice 関数で、UDP サーバである場合は ReadDevice 関数です。

UDPDevice

以下の例は、次のように設定されている場合、UDPDevice 関数をどのように使用するのかを示します。応答を必要としない UDP クライアント、応答が必要な UDP クライアント、メッセージのみ受信する UDP サーバ、メッセージを受信して応答する UDP サーバ

応答を必要としない UDP クライアント

この設定では、UDP メッセージを UDP サーバデバイスに送信するように In-Sight ビジョンシステムを設定します。

設定

ジョブに UDPDevice 関数が追加され、この関数に対して有効な [ホスト名] および [ポート] パラメータが設定されます。UDPDevice 関数がクライアントとして動作することが決定されると、このジョブに WriteDevice 関数が自動的に追加されます。この WriteDevice 関数は有効な [イベント] パラメータを適用することによって設定されます。[デバイス] パラメータには、UDPDevice 関数によって出力されるデータ構造体が設定されます (これは WriteDevice 関数がジョブに追加されたときに自動的に設定されます)。また、有効なバイナリデータパケットまたは文字列情報を出力するセルが参照されます。

実行

ビジョンシステムがオンラインである場合、WriteDevice 関数が有効なイベントを受信するたびに、UDP メッセージが送信されます。サーバからの応答は必要ないため、[タイムアウト] パラメータは必要ありません。

応答を必要とする UDP クライアント

この構成では、UDP メッセージを UDP サーバデバイスに送信し、[タイムアウト] パラメータに設定された期限が切れるまで、サーバデバイスからの応答を待機するように In-Sight ビジョンシステムを設定します。

設定

ジョブに UDPDevice 関数が追加され、この関数に対して有効な [ホスト名] および [ポート] パラメータが設定されます。次に、[タイムアウト] パラメータに適切なタイムアウト値を設定し、自動的に追加された WriteDevice 関数を設定します。それらの関数の設定後、QueryDevice 関数を追加し、その Event 関数を適切なイベントに設定し、[デバイス] パラメータを UDPDevice 関数と送信される適切なデータへの参照によって出力される データ構造体に設定します。ジョブに UDPDevice 関数が追加され、この関数に対して有効な [ホスト名] および [ポート] パラメータが設定されます。UDPDevice 関数がクライアントとして動作することが決定されると、このジョブに WriteDevice 関数が自動的に追加されます。この WriteDevice 関数は有効な [イベント] パラメータを適用することによって設定されます。[デバイス] パラメータには、UDPDevice 関数によって出力されるデータ構造体、および送信される適切なデータへの参照が設定されます。

実行

ビジョンシステムがオンラインである場合、QueryDevice 関数の [イベント] パラメータがトリガされるたびに UDP メッセージが送信されます。サーバからの応答を待っている間、このジョブのそのほかの関数が実行されます。サーバから応答が来ない場合、または [タイムアウト] パラメータの期間を過ぎてから応答を受信した場合はエラーが返されます。このエラーは、次のイベントによって新たな UDP メッセージの送信がトリガされたときにクリアされます。

メッセージを受信するだけの UDP サーバ

この構成では、UDP クライアントデバイスから UDP メッセージを受信するように In-Sight ビジョンシステムを設定します。

設定

ジョブに UDPDevice 関数が追加されます。[ホスト名] パラメータは空のままですが、[ポート] パラメータには有効な値が設定されます。UDPDevice 関数がサーバとして動作することが決定されると、このジョブに ReadDevice 関数が自動的に追加されます。この ReadDevice 関数は有効な [イベント] パラメータを適用することによって設定されます。[デバイス] パラメータには、UDPDevice 関数によって出力されるデータ構造体が設定されます (これは ReadDevice 関数がジョブに追加されたときに自動的に設定されます)。

実行

ビジョンシステムがオンラインの場合、これはスプレッドシートのバックグラウンドで実行され、メッセージの送信を待機する UDP サーバとして動作します。メッセージを受信したサーバはスプレッドシートをトリガして ReadDevice 関数を実行し、着信データをこの関数に代入します。このメッセージはビジョンシステムの IP アドレスに直接送信することができ、またはネットワーク上にある複数のビジョンシステムにブロードキャストメッセージとして送信することもできます。

メッセージを受信し応答する UDP サーバ

この構成では、UDP クライアントデバイスから UDP メッセージを受信し、メッセージが正常に受信されたことを示す応答を送信するように In-Sight ビジョンシステムを設定します。

設定

2 つの UDPDevice 関数がジョブに追加されます。1 つめの UDPDevice 関数はサーバとして設定されます ([ホスト名] パラメータは空のままですが、[ポート] パラメータには有効な値が設定されます)。2 つめの UDPDevice 関数はクライアントとして設定されます。着信パケットのリモートアドレスの取得には、GetRemoteAddress 関数が使用されます。また、パケットを発行したリモートポートの取得には GetRemotePort 関数が使用されます。

実行

サーバの着信メッセージおよび発信メッセージの処理には、2 つの UDPDevice 関数が使用されます。メッセージを受信すると、このメッセージを実行し、処理するために、スプレッドシートがトリガされます。ジョブが応答を作成した場合、このイベントによって、応答パケットを送信するための WriteDevice 関数もトリガされます。着信パケットには IP アドレスとポート番号が含まれています。これらは、WriteDevice 関数によって、応答パケットの送信に使用されます。このメッセージはビジョンシステムの IP アドレスに直接送信することができ、またはネットワーク上にある複数のビジョンシステムにブロードキャストメッセージとして送信することもできます。