Binarix FL-net Library for Windows

マニュアル>アプリケーション開発ガイド C/C++編>メッセージ伝送

メッセージ伝送

メッセージ伝送の概要

コモンメモリによるデータ交信とは別にメッセージ伝送機能があり、特定のノード間でメッセージの送受信、または全ノードにメッセージを同報送信することができます。メッセージで一度に送信できるデータは、最大で1024バイトです。
メッセージには、要求メッセージ、応答メッセージ、透過形メッセージがあります。要求メッセージと応答メッセージは対になっていて、FL-net(OPCN-2)の仕様で用途が定義されています。要求メッセージを受信したノードは、送信元へ対の応答メッセージを送信します。但し、同報送信された要求メッセージを受信した時は、応答メッセージを送信しません。透過形メッセージは、ユーザーが用途を定義できるメッセージです。

メッセージの送受信権

コモンメモリは複数のユーザーアプリケーションからアクセスできますが、メッセージ伝送ができるユーザーアプリケーションは1つだけです。メッセージ伝送を行うには、BflOpen関数でメッセージ用コールバック関数テーブルを指定します。この時、他のユーザーアプリケーションが先にメッセージ用コールバック関数テーブルを指定してBflOpen関数を呼び出していると、後から呼び出したBflOpen関数は失敗します。最初にメッセージ用コールバック関数テーブルを指定してBflOpen関数を呼び出したユーザーアプリケーションだけがメッセージの送受信権を持ち、メッセージ伝送を行うことができます。

応答メッセージの送信

ユーザーアプリケーション定義のコールバック関数で自ノード宛の(同報送信でない)要求メッセージを受信した時は、ユーザーアプリケーションが応答メッセージを送信する必要があります。コールバック関数が定義されていない時は、FL-net通信エンジンが要求メッセージ送信元に対して非実装を示す応答メッセージを自動的に送信します。

メッセージ送受信キュー

FL-net通信エンジンは、メッセージ送受信キュー(FIFOバッファ)を持っています。メッセージを連続で送受信しても、キューに空きがある間は正常に処理できます。メッセージ送信キューが満杯の状態でメッセージ送信関数を呼び出した時は、エラーを返します。メッセージ受信キューが満杯の状態でメッセージを受信した時は、送信元にバッファ満杯を表すACKデータを送信します。メッセージ送受信キューの数は、下表の通りです。

メッセージ送信キューの数8
メッセージ受信キューの数16

ACKデータ

FL-net(OPCN-2)のメッセージ伝送は、メッセージを受信したノードが送信元にACKデータを送信することで、メッセージの通達確認をする仕様になっています。本製品では、FL-net通信エンジンがACKデータを自動的に送信します。ユーザーアプリケーションがACKデータを送信する必要はありません。