
XB6S-C01SPはXB6Sシリーズの1チャネルシリアルコミュニケーションユニットで、XB6Sシリーズのバスカプラに適合します。ユニットの占有スペースが小さく、データ交換処理がシンプルで、さまざまなアプリケーションシーンのシリアル通信ニーズに対応できます。本記事ではXB6S-C01SPのフリーポートコンフィグレーション方法について紹介します。具体的な手順は以下のとおりです。
物理シリアルポートケーブル(232/485/422を含む)を接続する場合、ボーレート、ストップビット、キャラクタフォーマット、パリティビットなどのパラメータ設定が必要です。
フリーポートモードは4種類あり、FP_Request(フリーポート要求モード)、FP_Input_Output(フリーポート入出力モード)、FP_Input(フリーポート入力モード)、FP_Output(フリーポート出力モード)です。
【FP_Input】は、ユニットが外部シリアルポートから送信されるデータのみを受信する使用シーンで、バーコードリーダーやNFCデータ読み取りなどによく使用されます。
【FP_Output】は、ユニットがシリアルポートを通じてデータを送信するのみの使用シーンで、状態表示灯やアラーム器などによく使用されます。
【FP_RequestとFP_Input_Output】はいずれも受信と送信の両方を行うモードです。両者の違いは、FP_Requestには時系列性があり、待機時間を設定してスレーブ局が応答タイムアウトかどうかを判断し、アラーム信号を生成できる点です。一方、FP_Input_Outputには時系列性がなく、送信と受信に直接的な関係はありません。定期ポーリング送信や、1回送信して複数回受信するなどの操作が可能です。
制御モードは3種類あり、Disable(制御と状態のディセーブル)、Level(制御と状態のイネーブル - 高電平トリガ)、Rising Edge(制御と状態のイネーブル - 立ち上がりエッジトリガ)です。
このうちDisableモードでは、ユニットはデフォルトで電源投入時に設定した報文を送信し、不定長報文の送信はサポートされません(送信報文と設定した長さは完全に一致する必要があります)。LevelモードとRising Edgeモードでは、いずれもユニットに制御ワードの設定使用が必要です。Levelはポーリング報文の設定用で、Rising Edgeはトリガイネーブル時に1回送信する用途です。
シリアルポート通信の過程では、タイムアウトアラーム、チェックアラーム、長さ不一致アラームなどが発生する可能性があります。この設定では、アラームがトリガされた際に今回のデータを保持するかどうかを設定できます。一般に、フリーポートの不定長データ読み出しの設定では、この設定はHold(保持型)に設定します。
【Respond Timeout】は応答時間のことで、ユニットが要求してからスレーブ局の応答を待つ時間です。
【Poll Delay】はポーリング遅延のことで、ユニットが前回の動作を完了してから次回のポーリングまでの時間を指します。
【Slave Respond Delay】はスレーブ応答遅延のことで、ユニットがmodbusスレーブ局として動作する場合に設定する応答時間です(フリーポート設定では使用しません)。
フレーム間隔とは、シリアル通信において連続する2つの有効なデータフレームの間でデータ伝送が行われない時間間隔を指します。デフォルトは1.5Tで、報文フレームの実際の使用状況に応じて増やすことができます。
本セクションはユニットの最重要コンフィグレーションであり、完全な設定例を挙げます。
例:
ユニット要求:weight
デバイス応答:weight xxxxg
上記のメッセージから、出力メッセージ長は6バイト、応答メッセージ長は12バイトであることがわかります(実際のコンフィグレーションでは、使用バイト長より長く設定することも可能です)。長さに応じて出力16バイト、入力16バイトを設定すれば、上記のメッセージを含めることができます。
マニュアルの関連説明に基づき


制御ワードFP_Requestを持つノードパラメータ設定は以下のとおりです——
【Node1 Param1】10#32(16#20)
【Node1 Param2】10#0(16#0)
【Node2 Param1】10#3333(16#D05)
【Node2 Param2】10#0(16#0)
【Node3 Param1】10#3589(16#E05)
【Node3 Param2】10#0(16#0)
Node1 Param1は制御ワードとして使用します。本例ではFP_Requestモードを使用しているため、FP_Requestの制御ワードは10#32(16#20)となります。Node2 Param1は入力長16バイトを10#3333(16#D05)に設定し、Node3 Param1は出力長16バイトを10#3589(16#E05)に設定します。フリーポートモードではすべてのParam2は無効であり、パラメータは0で構いません。
注:本例では16バイトに設定していますが、使用中に16バイトでは不足する場合は、他のバイト数に変更することができます。あるいは次のノードでさらに入力または出力を1つ追加設定することもできます。Node4 Param1——10#3332(16#D04)とした場合、全体の入力は16+8=24バイトとなります。
出力データはマニュアルの定義に従って記入し、ASCIIを16進数に変換して送信します。


以上のプロセスデータは6バイトのASCIIデータ(weight)を送信したことを表しており、並列接続したシリアルポートツールにより、デバイスが(weight 1354g)を返したことを取得できます。

入力データはマニュアルの定義に従い、ユニットが12バイトを読み取り、既にデータに対応していることがわかります。



サードパーティによる変換検証により、16進数の読み出し値が正しいことが確認でき、正常なデータ交換が1回完了しました。


同一のXB6S-C01SPユニットには4種類の異なる仕様があり、デフォルトのユニットは32バイトです。32バイトユニットでは入力出力それぞれ最大32バイトまで設定できます(制御ワードは含みません)。制御ワードを設定するとプロセスデータが32バイトを超えるため、この場合は64バイトユニットに切り替える必要があります。
プロトコルが異なっても切り替え方法はほぼ同じで、バスカプラは32バイトユニットで正常に通信している状態から、通信モードパラメータで切り替えたいバイト数を送信します。

送信が完了したら、バスカプラの電源を切って再起動すると切り替えが完了します。コンフィグレーションでは32バイトのユニットを対応するバイト数のユニットに置き換えるだけです。
以上が実点科技のリモートI/O XB6Sシリアルコミュニケーションユニットのフリーポート設定方法のご紹介です。