メッセージ伝送
メッセージ伝送の概要
コモンメモリによるデータ交信とは別にメッセージ伝送機能があり、特定のノード間でメッセージの送受信、または全ノードにメッセージを同報送信することができます。メッセージで一度に送信できるデータは、最大で1024バイトです。
メッセージには、要求メッセージ、応答メッセージ、透過形メッセージがあります。要求メッセージと応答メッセージは対になっていて、FL-net(OPCN-2)の仕様で用途が定義されています。要求メッセージを受信したノードは、送信元へ対の応答メッセージを送信します。但し、同報送信された要求メッセージを受信した時は、応答メッセージを送信しません。透過形メッセージは、ユーザーが用途を定義できるメッセージです。
メッセージの送受信権
コモンメモリは複数のユーザーアプリケーションからアクセスできますが、メッセージ伝送ができるユーザーアプリケーションは1つだけです。メッセージ伝送を行うには、メッセージ用イベントハンドラを定義しておく必要があります。FL-netネットワークをオープンする時に、他のユーザーアプリケーションが既にメッセージ用イベントハンドラを定義してオープンしている場合は、オープンに失敗します。最初にメッセージ用イベントハンドラを定義してFLnet.Openメソッドを呼び出したユーザーアプリケーションだけが、メッセージの送受信権を持ち、メッセージ伝送を行うことができます。
応答メッセージの送信
自ノード宛の(同報送信でない)要求メッセージを受信した時は、ユーザーアプリケーションが応答メッセージを送信する必要があります。要求メッセージに対応するイベントハンドラが定義されていない時は、FL-net通信エンジンが要求メッセージ送信元に対して非実装を示す応答メッセージを自動的に送信します。
メッセージ送受信キュー
FL-net通信エンジンは、メッセージ送受信キュー(FIFOバッファ)を持っています。メッセージを連続で送受信しても、キューに空きがある間は正常に処理できます。メッセージ送信キューが満杯の状態でメッセージ送信メソッドを呼び出した時は、エラーを返します。メッセージ受信キューが満杯の状態でメッセージを受信した時は、送信元にバッファ満杯を表すACKデータを送信します。メッセージ送受信キューの数は、下表の通りです。
メッセージ送信キューの数 | 8 |
---|---|
メッセージ受信キューの数 | 16 |
ACKデータ
FL-net(OPCN-2)のメッセージ伝送は、メッセージを受信したノードが送信元にACKデータを送信することで、メッセージの通達確認をする仕様になっています。本製品では、FL-net通信エンジンがACKデータを自動的に送信します。ユーザーアプリケーションがACKデータを送信する必要はありません。