
↑ 実点科技スライス型シリアルコミュニケーションユニットXB6S-C01SP
食品・医療分野で使用される温度計、はかり、3C業界で使用される圧力計、そして自動車リチウム電池・物流業界で最も広く使用されているインバータは、いずれもModbus プロトコルで通信を行います。しかし実際の使用場面では、これらはフィールドバス通信と直接通信できないため、ユニットを介して中継し、デバイスの現在の状態を読み出したり、デバイスの出力状態を変更したりする必要があります。
実点科技のスライス型シリアル通信ユニットXB6S-C01SPの役割はまさにこの点にあり、他のバスプロトコルをシリアル通信プロトコルに変換することができます。本稿ではModbus 通信プロトコルを基に、XB6S-C01SPユニットのModbus プロトコルにおける使用方法を詳しく解説します。
一、Modbus プロトコルの定義
Modbus プロトコルは、現在の工業制御分野で広く使用されている汎用通信プロトコルです。このプロトコルにより、コントローラ同士、またはコントローラがネットワーク(イーサネットなど)を経由して他のデバイスと通信することができます。
二、Modbus プロトコルの役割
プロトコルは一般に、情報伝送時に必要な条件要素を規定し、通信を実現するために設定された規則です。例えばAがBに問い合わせてBのある状態を知りたい場合、AはBに「12345」というデータを送信し、Bはこのデータを受信した後、Aに「54321」と返信します。これで一組のデータ交換が完了しますが、これらのデータは通常の言語や文字で伝送するには不便です。
このとき、数字による伝送が特に重要になりますが、数字がそれぞれどのような意味を表すかは事前に定めておく必要があります。プロトコルを制定することで、双方がこのプロトコルに基づいて送られてきた一組のデータを理解できるようになり、そこからModbus シリアル通信プロトコルが生まれました。
三、Modbus プロトコルのモード
実際には、Modbus の伝送方式は3種類に分かれます。
1、ModbusRTU
2、ModbusASCII
3、ModbusTCP
これら3種類のプロトコルは、実際にはいずれもModbus プロトコルに属します。これは、これら3種類のメッセージ形式が全体的に一致しているためです。そのうち、シリアル形式ではRTU型が最も一般的であり、TCPはネットワークケーブル端での伝送を指します。
四、Modbus プロトコルの通信方法
Modbus プロトコルはマスタ・スレーブ通信に属しており、つまり「一問一答」が必要です。通信の過程では、必ずマスタ局が要求指令を発した後に初めてスレーブ局が応答します。マスタ局が送信しなければスレーブ局も応答しません。これがModbus の限界でもあります。この「一問一答」の方式は、1つのマスタ局に対して複数のスレーブ局が対応する場合にも発生し得ます。このとき、各スレーブ局を区別するために、それぞれのスレーブ局に「名前」を付ける必要があり、そこでスレーブ局番が登場しました。
五、Modbus プロトコルの具体的な表現形式
Modbus プロトコルフレーム構造 = アドレス + ファンクションコード + データ + チェック
1、アドレス:先ほど述べたスレーブ局の「名前」——スレーブ局番のことです。
2、ファンクションコード:この指令が何をするものか、つまり照会なのか命令の実行なのかを規定するものです。
3、データ:具体的な命令実行の位置情報を記入するために使用します
4、チェック:データエリアにエラーが発生する可能性があるため、すべてのデータを計算してチェックを追加し、メッセージ送信の正確性を検証します
六、Modbus プロトコルの実例
Modbus プロトコルの構成がわかったところで、以下に読み出しと書き込みの2つの例を挙げて解析します——
【例1】ホールディングレジスタの読み出し(03)
送信:01 03 00 00 00 02 C4 0B
受信:01 03 04 A0 B0 C0 D0 88 48
送信:スレーブ局番(01)+ホールディングレジスタ読み出しファンクションコード(03)+Modbus開始レジスタアドレス(00 00)+読み出しレジスタ数(00 02)+Modbus チェックコード(C4 0B)
受信:スレーブ局番(01)+ホールディングレジスタ読み出しファンクションコード(03)+読み出しバイト総数2*レジスタ数(04)+読み出しレジスタデータ内容(01 02 03 04)+Modbus チェックコード(88 48)
【例2】ホールディングレジスタの書き込み(16)
送信:01 10 00 10 00 03 06 01 02 03 04 05 06 5D D3
受信:01 10 00 10 00 03 81 CD
送信:スレーブ局番(01)+ホールディングレジスタ書き込みファンクションコード(10)+Modbus開始レジスタアドレス(00 10)+書き込みレジスタ数(00 03)+書き込みバイト総数(06)+書き込みレジスタデータ内容(01 02 03 04 05 06)+Modbus チェックコード(5D D3)
受信:スレーブ局番(01)+ホールディングレジスタ書き込みファンクションコード(10)+Modbus開始レジスタアドレス(00 10)+書き込みレジスタ数(00 03)+Modbus チェックコード(81 CD)
七、XB6S-C01SPユニットの使用
以上の詳しい説明により、Modbus プロトコルの使用方法がわかりました。次に、XB6S-C01SPユニットをシリアルポートの代わりに使用してメッセージを送信し、デバイス間の情報伝送を実現します。マスタ局はXB6S-C01SPユニットを使用し、シリアル通信ケーブルでパソコンに接続します。それぞれ上記の例のファンクションコードメッセージを使用して、ソフトウェア ModbusSlave(Modbus スレーブ局シミュレーション)とシリアルポートデバッグアシスタントでメッセージの読み出しを制御し、以下に示します——
1、まずコンフィグレーションを行います。ここでは EtherCAT プロトコルを例に、実点科技 XB6S-EC プロトコルバスカプラXB6S-EC2002を組み合わせます。

2、ユニットに対してパラメータ設定を行い、使用機能、ボーレート、ストップビット、パリティビットなどのパラメータをそれぞれ設定し、シリアルポートデバイスと一致させます。

ノードパラメータ内の定義は特殊であり、パラメータ設定の中でも最も重要な部分です。計算表に従って設定が必要なファンクションコード、アドレスなどのデータを記入すると、最終的に次のように計算できます。

Node_1_Param01(302)
Node_1_Param02(1)
Node_2_Param01(1000603)
Node_1_Param02(1)
3、送信するパラメータデータを入力します:

パラメータ設定後にユニットへ書き込みを行い、シリアルポートアシスタントを開くと、上記例示のメッセージをユニットが自動的に編集してシリアルポート経由で送信していることが確認できます。
4、ModbusSlaveを開いてホールディングレジスタに調整すると、アドレス(00 10)以降にユニットが送信したデータが読み出せることが確認でき、またデータA0 B0 C0 D0をそのアドレスに書き込むと、バスカプラ上でもデータを読み出すことができます。以上の操作により、XB6S-C01SPユニットが手動でのメッセージ作成に代わる役割を果たし、デバイスとの通信を実現します。以上が実点科技のスライス型シリアルコミュニケーションユニットXB6S-C01SPのModbusプロトコルにおける使用方法の詳細な紹介です。
ご不明な点がございましたら、お気軽にお問い合わせください。誠心誠意対応させていただきます!