Modbus通信の基本的なフォーマットを理解した後、今回は三菱FX 3 U PLC上でModbus RTU通信プロトコルを実装するシミュレーションを行います。
指令の紹介
1.ソフトウェアの準備
●仮想シリアルツール
●Modbus Slave
●PLCシミュレータの概要
●GX works2プログラミングソフトウェア
2. RS指令
RSコマンドは、シリアルポート通信を実行する際にデータを送受信するためのコマンドで、PLCにFX 3 U-485-BD通信モジュールを挿入する必要があります。
1)基本形式
このうち、m(発生データ数)とn(受信データ数)は、外部デバイスのメッセージフォーマットコマンドに従う必要があり、自由に設定することはできません。
(2)例
X0:RS命令トリガ条件。X0ビットがオンになると、RS命令はデータの送受信待ち状態に入ります。
D 10:データを送信する開始レジスタ。
K 8:送信されるデータの数は、D 10 ~ D 17の範囲内の8つのレジスタのデータを表します。
D 20:受信データの開始レジスタ。
K 7:受信データの数。外部デバイスから返されたデータをD 20 ~ D 26の範囲の7つのレジスタに格納することを示します。
三、特殊補助リレー
1)M8161データ処理桁フラグリレー
M 8161 =OFFの場合、16ビットデータを処理します。
M 8161 =ONの場合、下位8ビットのデータが処理されます。
2)M8122データ送信フラグリレー
RS命令がデータを送受信する待機状態にあるときにM8122をセットし、RS命令の送信データレジスタ内のデータを外部デバイスに送信します。データ送信完了後、システムはM 8122を自動的にリセットし、プログラムを使用してリセット操作を行うことはできません。
3)M8123データ受信フラグリレー
RSコマンドは、データ送信が完了すると、データ受信状態に入ります。この時点で、M 8123はオンに設定され、受信したデータを処理します。データ処理が完了したら、M 8123をオフにリセットしないと、次のラウンドのデータを受信できません。
4.通信パラメータの設定
通信パラメータは、PLCシステム設定で直接設定することも、D 8120の値を変更して設定することもできます。2つの設定方法のいずれかを選択できます(この記事では、主にD 8120による設定について説明します)。
1)直接設定
パラメータリストで“PLCパラメータ”→“PLCシステム設定2” →“通信設定を行う”を選択し、実際の要件に応じて通信パラメータを設定し、設定が完了してエラーが確認されたら、“設定終了”ボタンをクリックして設定を保存します。
D 8120での設定
以下の表で与えられたパラメータに従い、実際の需要と組み合わせてb0 ~b15の値を設定し、16進数に変換してD8120に送信し、通信パラメータ設定を実現する。
(3)例
通信パラメータの設定は、データ長8ビット、偶数検証、ストップビット1ビット、ボーレート96 00、ヘッダテールなし、プロトコルなしRS-485インタフェースの制御線の要件に従って設定されます。
エディタはパラメータをD8120に渡します。
(c)CRC指令
CRC命令の役割は、Modbus RTU通信メッセージのチェックコードを計算することです。
下位8ビットモード(M 816 1 =ON)では、X0がONのときにCRC命令がD 10 ~ D 15の6つのレジスタから生成されたパリティコードを計算し、計算結果の上位オクテットをD 16に、下位オクテットをD 17に格納します。
命令の適用
I.プロジェクト要件
X0ボタンを押すと、1番目のスレーブ保持レジスタ40000の値が読み取られ、X1を押すと、100がスレーブ保持レジスタ40002に書き込まれ、通信パラメータが上記の例と一致する。
II.編集プロセス
1)初期化
初期化プログラムでは、M 8161を下位8ビットデータモード(M 8161 =ON)に設定し、通信パラメータを特殊レジスタD 8120とリセットプログラムで使用するレジスタに渡します。
2)RS命令の追加
処理されるデータの長さが同じ場合は、RSポインタを1回追加するだけで、RS命令は常にデータの送受信を待っています。
送受信されるデータの長さは、外部デバイスの要件に応じて設定する必要があります。外部デバイスはModbus Slaveで、メッセージ形式は標準メッセージ形式と一致しているため、ここで送受信されるデータの長さはそれぞれK 8とK 7です。
3)読み取りプログラムの編集
a)読み取りプログラムメッセージの計算
シリアルデバッグヘルパーを使用して自動的にメッセージを生成でき、84 0 AはCRCチェックコードです。
b)メッセージングプログラムの編集
X0の立ち上がりエッジが検出されると、生成されたメッセージは、データ送信に使用されるレジスタD 10 ~ D 15に渡される。
メッセージは16進数で表示する必要があります。
c)CRC命令の追加
CRC命令は、最初の6つのメッセージからチェックコードを計算し、結果の上位オクテットをD 16に、下位オクテットをD 17に格納します。
エミュレーションではCRC命令が混在するため、このプロジェクトではCRC命令を使用せず、チェックコードをD 16とD 17に直接渡します。
d)データの送信
セットM8122は、X0の立下りエッジが検出されると、データ送信を完了する。
e)読み出したデータの受信と処理
図のように、メッセージを分析することによって得られる局からのデータの上位オクテットと下位オクテットは、それぞれD 23とD 24に格納されます。
D 23とD 24のデータは計算によって結合され、D 31に格納されます。
4)編集ライター
a)メッセージングプログラムの編集
参照読み込みプログラムの集方式。
b)データの送信
c)データの受信
局から返されたデータを受信する必要がないのでM8123をそのままリセットする.
シミュレーション環境の構成
1.仮想ポートの追加
1つはGX works2とLinear PLCエミュレータの接続を実現するため、もう1つはLinear PLCエミュレータとModbus Slaveの接続を実現するための2つの仮想シリアルポートを追加する必要があります。
2.一シミュレータの設定
構成が完了したら、ダウンロードポートを開き、拡張通信を開き、PLCを実行状態にする必要があります。
GX works2のインストール
その構成モードは、エンティティPLCを接続するときのモードと一致し、主にポート番号を選択します。設定が完了したら[通信テスト]をクリックし、テストが成功したら[OK]をクリックして設定を保存し、プログラムをエミュレータにダウンロードします。
4. Modbus Slaveの設定
1)Modbus Slave接続の設定
接続パラメータは、D8120における通信パラメータと一致する必要がある。
2)Modbus Slaveスレーブ機能の設定
図のようにスレーブ機能を設定し、レジスタ40000の値を変更します。
V.シミュレーションデモンストレーション
シミュレーション環境を設定したら、プログラムをエミュレータにダウンロードし、監視状態に入ります。
1)デモを読む
エミュレータのX0ボタンをクリックして、D 31の値がModbus Slaveの保持レジスタ40000の設定値と一致するかどうかを確認します。
2)プレゼンテーションを書く
エミュレータ内のX1ボタンをクリックして、100がスレーブの保持レジスタ40002に書き込まれるかどうかを見る。
六、手続き全体の概要
ADPRW 指令