# 単純ネット

単純ネットでは、TWENET 内での中継配送手続きの介在を行わず、単純なノード間通信を行います。通信方法はアドレス指定によるもの、同報通信による２種類を利用します。標準アプリケーション [App\_Twelite](https://mono-wireless.com/jp/products/TWE-APPS/App_Twelite/index.html) など多くのアプリケーションはこの単純ネットを用いています。

### 中継について

単純ネットでサポートする通信自体は中継を実施しないスター型のネットワークになりますが、簡単で実用的な中継を実装する方法もあります。

{% hint style="info" %}
中継配送を行う場合は、いくつかの方法があります。代表的な中継方法を紹介します。

同報通信により中継を実施する方法。受信したパケット内に中継回数にあたる寿命データを含めておいて、中継ごとに寿命カウントを減少させて、一定回数無条件に中継する。
{% endhint %}

{% hint style="info" %}
特定の要求に基づいたネットワークの実装も可能です。例えばショートアドレスを決め打ちにしたリニア型のネットワークです。

親局は 0x0000 のアドレスとし、親局から順に 0x0001 0x0002 ... とショートアドレスを振っていきます。自局の前後のアドレスは常に通信可能という前提をおきます。

こうすれば、子局から親局の配送は、自局のアドレスより１小さいアドレスに配送します。
{% endhint %}

{% hint style="danger" %}

#### ネットワークの自動構成について

周囲の中継器を探索し、中継局を決定することは、無線通信においては非常にオーバヘッドが大きいため、多くのアプリケーションでは推奨されません。

* 通信相手先を決定するのに多くの無線通信が必要になる。
  * 電池の消耗
  * 起動後から通信可能になるまでの時間がかかる
* 安定性が高くない中継局が選ばれてしまう場合がある。
  * 通信相手先の探索条件を、その時もっとも良い通信とした場合、偶然条件が良かった遠くの局が選ばれてしまう。
* 通信相手先の途絶を知るにも時間がかかる。
  * 通信失敗が連続したといった条件を成立するまでは、通信相手先の途絶とすることができないため、通信相手先の再探索まで長い時間が必要（または動的に通信相手先を切り替えるといった処方が必要）
* 中継ネットワークを維持するために多くの無線通信が必要になる。
  * 帯域の圧迫となり、結果として、収容可能ノード数が減少する。

上記のような中継局を決定・維持するための原理的な問題があります。どのような手法を取っても一長一短があり、要求に合わせて考慮する必要があります。

一般に電池駆動のノードでは、こういった中継のための通信は現実的でありません。
{% endhint %}

### 役割と宛先について

単純ネットであっても、通常は親子といった役割を定めたネットワークとします。この役割についても、無線パケット通信ではいくつかの実装方法があります。

{% hint style="info" %}

#### アドレスによるもの。

無線パケットでサポートするアドレス方式をそのまま用いて、アプリケーションでの役割を実現する方法です。具体的には[ショートアドレス](broken://pages/-LB0B9HP7r0M_p1j7fql#nettono)を用いて、親局のアドレスを 0x0000 とし、子局のアドレスを 0x0001 ... とする方法です。

子局は親局に配送する場合は、常に 0x0000 宛に配送すればよく、また、中継を必要としない場合は、ACK 通信を用いて効率的な無線配送が可能です。
{% endhint %}

{% hint style="info" %}

#### パケット内のデータによるもの。

中継を実現したい場合は、アドレスや役割に相当するもの（ここでは論理アドレスと言います）を無線パケット内のデータとして格納します。

親局には 0x00 という論理アドレスを割り振ります。子局には0x01...という論理アドレスを割り振ります。この論理アドレスは、無線送信時のパケット内のデータとして、送り主・宛先として格納します。

ショートアドレスの仕組みを使用したいところですが、中継を行う時に都合が良くないため（中継局のショートアドレスを送信元アドレスとして中継パケットを送るため）、パケット内のデータとして格納します。

無線パケットは全て同報通信として送信します。同報通信であるため、電波到達可能範囲の全てのノードがそのパケットを受信します。（注：宛先を指定したパケットであっても、その内容は電波到達範囲であれば全てのノードが受信します。宛先が違うためその受信データを無視しているだけです。）

受信されたパケットのデータを参照して、自局で処理すべきか、中継すべきかといったことをアプリケーション側で決定します。
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://sdk.twelite.info/twelite-net-api-expl/nettowkunitsuite/netto.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
