2020-03-23/2020-06-10
rftagrwは、OMRON V640シリーズ CIDRWアンプユニットの設定や、IDタグの読み書きを行うためのコマンドラインツールです。
コマンドラインオプションを指定してV640デバイスに個別のコマンドを発行できるほか、標準入力からオムロンオリジナルコマンド文字列を与えてV640デバイスに送信し、実行結果として受信したレスポンスを標準出力に書き出すこともできます。
rftagrwコマンドは、V640シリーズの上位機器のプログラムを作成するプログラマや、フィールドエンジニアのようなプロフェッショナルが利用する想定で作られています。 CLIによるPC操作に習熟したユーザ向けのソフトウェアです。
次の環境において動作を確認しています。
Windows版とRaspbian版は32ビットバイナリ、Ubuntu版とmacOS版は64ビットバイナリ、となっています。
rftagrwコマンドは、クロスプラットフォームのC++アプリケーションフレームワーク Qt 5 LGPL版 を用いて製作されています。実行にはQt 5フレームワークが必要です。
rftagrwコマンドは単純なCLIツールですので、次に示すダウンロード先で配布しているISOイメージをマウント(あるいは展開)し、その中に収録されている、お使いのプラットフォームに適したrftagrwコマンドを、実行可能ファイルが配置できる任意の場所にコピーしてください。
ダウンロード: rftagrw.iso(ISOイメージファイル)
SHA-256: b72b5afaa0d2a2f71a00189fba954e9e41c100645014558af430edc77faf6059
Windows用のコマンド本体(実行ファイル)はISOイメージをマウントしたボリューム内の Windows\rftagrw\rftagrw.exe にあります。実行ファイルを含むフォルダ「rftagrw」を丸ごと、好きな場所へコピーしてください。
Raspbian用のコマンド本体はISOイメージをマウントしたボリューム内の Linux/Raspbian/rftagrw にあります。Ubuntu用のコマンド本体はISOイメージをマウントしたボリューム内の Linux/Ubuntu/rftagrw にあります。 実行ファイル「rftagrw」だけを好きな場所へコピーしてください。
rftagrwコマンドの実行には、Qt 5のシリアルポートライブラリとネットワークライブラリが必要です。Raspbian、Ubuntuどちらも次のコマンドラインを実行すればパッケージからインストールできます。
$ sudo apt-get install libqt5serialport5 libqt5network5
※シリアルポートにアクセスするにはユーザーを dialout グループに追加しておく必要があります。
macOS用のコマンド本体(実行ファイル)はISOイメージをマウントしたボリューム内の macOS/rftagrw.app/Contents/Resources/rftagrw にあります。実行ファイルを含む「rftagrw.app」を丸ごと、好きな場所へコピーしてください。
アプリケーションバンドル自体は「アプリケーション」フォルダにコピーし、/usr/local/binあたりにでもrftagrwコマンドへのシンボリックリンクを作成するとよいでしょう。
$ sudo ln -s /Applications/rftagrw.app/Contents/Resources/rftagrw \
/usr/local/bin/rftagrw
※アプリケーションバンドルrftagrw.appはコマンドラインツールを配布するためのコンテナにすぎません。ダブルクリックして起動することもできますが、rftagrwコマンドのヘルプが表示されるだけで、てとりたててに役立つ機能はありません。
デバイス(接続先、号機番号)に対して実行したいV640コマンドをオプションとして指定し、rftagrwコマンドを実行するのが使い方の基本です。
macOSのターミナル (bash) 上で通信テストを行う例を見てみましょう。工場出荷時設定のデバイス(DIPスイッチが全てOFF状態すなわちIPアドレスが192.168.1.200となっている V640-HAM11-ETN-V2 あるいは V640-HAM11-L-ETN-V2)との接続を想定しています。
$ rftagrw --test=12345678
12345678
オプション --test の指定は通信テストを行うことを意味します(その他の使用可能なオプションについては後述)。
DIPスイッチでIPアドレスが192.168.1.16に設定されているデバイスとの通信テストを行う場合のコマンドラインは次の通りです。
$ rftagrw -t 192.168.1.16 --test=12345678
オプション -t で接続先IPアドレスを指定しています。
USB RS-232C 変換アダプターにより /dev/tty.usbserial でシリアル接続されているデバイスとの通信テストを行う場合のコマンドラインは次のようになります(1:1手順で、通信速度が38400bpsに設定されているものとします)。
$ rftagrw -t /dev/tty.usbserial -n 0 -c 38400 --test=12345678
オプション -n で号機番号を指定します。号機番号ゼロ (0) は1:1手順であることを示します。オプション -c で通信条件を指定します。
Windows環境でシリアルポート COM3 に、工場出荷時設定のデバイス(DIPスイッチが全てOFF状態の V640-HAM11-V4 あるいは V640-HAM11-L-V2)が接続されている場合、次のコマンドラインで通信テストが行えます。
$ rftagrw -t COM3 --test=12345678
通信テスト以外のV640コマンドも同様に実行できます。実行したいV640コマンドを発行するオプションを選んでコマンドラインに記述してください。
コマンドラインオプションとして、rftagrwコマンド自体の動作を規定するものと、デバイスに対して発行するV640コマンドを指定するものがあります。 V640コマンドを発行するオプションは、同時に複数指定することはできません(rftagrwコマンド自体の実行1回につき、V640コマンドを1つずつ実行できます)。
※コマンドラインの中で、値として16進数を渡す場合、そのアルファベット表記には大文字 A〜F を使ってください。
V640コマンドの詳細についてはオムロンの『CIDRWシステム V640シリーズ ユーザーズマニュアル』を参照してください。
rftagrwコマンドの使用方法を表示します。
rftagrwコマンドのバージョンを表示します。
接続先を指定します。 操作対象のデバイスがシリアル接続 (RS-232C, RS-485) の場合は接続ポート名(デバイスファイル)を、Ethernet接続の場合はIPアドレスを指定します。デフォルト値は 192.168.1.200 です。
macOS環境やLinux環境において /dev/tty.usbserial-FTCV5 に接続されたデバイスを指定する例:
rftagrw -t /dev/tty.usbserial-FTCV5
Windows環境において COM4 に接続されたデバイスを指定する例:
rftagrw -t COM4
IPアドレス 192.168.1.16 に設定されたEthernet接続デバイスを指定する例:
rftagrw -t 192.168.1.16
※同時に複数の接続先を指定することはできません。
シリアル接続における号機番号を指定します。デフォルト値は1です。
1:1手順(RS-232C接続)の場合はゼロ (0) を指定します。 1:N手順(RS-485接続)の場合は 1〜31 を指定します。 Ethernet接続ではオプション指定の値に関わらず、常にゼロを指定したものとして扱われます。
シリアル接続時の通信条件を指定します。デフォルト値は 9600 です。 Ethernet接続では指定しても無意味です(無視されます)。
通信速度を 19200bps に設定したデバイスに接続する例:
rftagrw -t COM3 -c 19200
デバイスからの応答待ち時間をミリ秒単位で指定します。設定間隔をすぎても応答がない場合、通信エラーとして処理を中断します。デフォルト値は 8000 = 8秒です。
このオプションを指定するとデバイスが正常終了以外の終了コードで応答した場合、rftagrwコマンドの終了ステータスもエラーとします。標準入力から連続的にコマンドを与えているときはプログラムの実行を終了します。デフォルトではデバイスからのレスポンスがエラーであっても処理を続けます。
コマンド実行結果を出力する際のフォーマットを指定します。 デフォルトでは人間が読みやすように実行結果を解釈して整形出力します。 次の値を指定できます。
デフォルト値以外の場合、デバイスとの間で送受信したコマンド/レスポンス文字列そのものが出力されます。ただし、先頭データ (SOH) と末尾データ (CR) は出力されません。
IDタグのデータを読み取ります(コマンドコード 0100 を発行します)。オプションパラメータとして、読み取りたいページの番号をコンマ (,) で区切って指定します(ページ番号は10進数です。コンマとページ番号の間にスペースは置けません)。
ページ2、3、5、7、11、13、17を読み出す例:
rftagrw -r 2,3,5,7,11,13,17
IDタグにデータを書き込みます(コマンドコード 0200 を発行します)。オプションパラメータとして、書き込みたいページを指定します(記法は --read に同じ)。その後に続いて、コマンドライン引数としてページ数分の書き込みデータを16進数文字列表現で指定します。
ページ4にデータ 12 34 56 78 90 AB CD EF を書き込む例:
rftagrw -w 4 12 34 56 78 90 AB CD EF
書き込みデータ間を区切るスペースはなくても構いません(「1234567890ABCDEF」のように続けて書いてもよい)。
書き込みたいページ番号リストについては任意の順番で記述できますが、書き込みデータについては最小ページ番号に対応するデータから、最大ページ番号に対応するデータへと、ページ単位で順に記述しなければなりません。書き込みデータ数は、指定ページ数 × 8バイト分必要です。
IDタグの複数ページに同一のデータを書き込みます(コマンドコード 0300 を発行します)。オプションの記法は --write に同じですが、書き込みページ数にかかわらず、書き込みデータ数は常に1ページ分(8バイト)を指定します。
ページ2、4、8に同一データ 99 AA BB CC DD EE FF 00 を書き込む例:
rftagrw -s 2,4,8 99 AA BB CC DD EE FF 00
IDタグの特定の開始アドレスから、任意の数のデータを書き込みます(コマンドコード 0400 を発行します)。書き込み開始アドレスは16進数で指定します。
先頭アドレスを 1C として、続く2バイトの領域にデータ AA 55 を書き込む例:
rftagrw -b 1C AA 55
通信テストを行います(コマンドコード 10 を発行します)。テストデータを16進数で指定します。
正常であれば、指定したテストデータがデバイスからそのままレスポンスパラメータとして返ります。
テストデータ 12345678 をデバイスに送信する例:
rftagrw --test=12345678
直前のレスポンスを取得します(コマンドコード 12 を発行します)。
デバイスの形式(型番)を取得します(コマンドコード 1401 を発行します)。
デバイスのファームウェアバージョンを取得します(コマンドコード 1402 を発行します)。
デバイスのMACアドレスを取得します(コマンドコード 1403 を発行します)。
ネットワーク接続機種においてDIPスイッチによるネットワーク設定が有効であるかどうかを調べます(コマンドコード 1410 を発行します)。
デバイスのDIPスイッチで設定されているIPアドレスを取得します(コマンドコード 1411 を発行します)。
デバイスのDIPスイッチで設定されているサブネットマスクを取得します(コマンドコード 1412 を発行します)。
デバイスのEEPROMに設定されているIPアドレスを取得します(コマンドコード 1413 を発行します)。
デバイスのEEPROMに設定されているサブネットマスクを取得します(コマンドコード 1414 を発行します)。
デバイスのメモリ状態を取得します(コマンドコード 1420 を発行します)。
デバイスのCIDRWヘッド接続状態を取得します(コマンドコード 1421 を発行します)。
最後に実行したコマンドコードを取得します(コマンドコード 15 を発行します)。
デバイスの更新履歴を取得します(コマンドコード 16 を発行します)。
デバイスの更新履歴をクリアします(コマンドコード 17 を発行します)。
CIDRWヘッド周辺のノイズを測定します(コマンドコード 40 を発行します)。
デバイスを再起動します(コマンドコード 7F を発行します)。
※パスワード、IPアドレス、サブネットマスクの設定変更を適用するには、デバイスを再起動する必要があります。
ネットワーク接続機種のWebインターフェイスのパスワードを設定します(コマンドコード A2 を発行します)。
パスワードを zYFgEkt5t30u に設定する例:
rftagrw --set-web-password=zYFgEkt5t30u
パスワードを無効化したい場合は空の文字列を渡します。
rftagrw --set-web-password=""
ネットワーク接続機種のIPアドレスを設定します(コマンドコード A300 を発行します)。
IPアドレスを 172.21.0.3 に設定する例:
rftagrw --set-ip-address=172.21.0.3
ネットワーク接続機種のサブネットマスクを設定します(コマンドコード A301 を発行します)。
サブネットマスクを 255.255.0.0 に設定する例:
rftagrw --set-subnet-mask=255.255.0.0
コマンドラインにV640コマンドを発行するオプションを指定しなかった場合、rftagrwコマンドは標準入力からV640コマンド文字列を受け取ってデバイスに送信します。
このとき、入力するV640コマンド文字列には、SOH、号機番号、FCS、CRは不要です。シリアル接続時の号機番号はオプション -n, --node-number で指定します。
rftagrwコマンドは実行に成功すると、終了ステータスとしてゼロ (0) を返します。
エラーが発生した場合はゼロ以外の値を返します。現在、定義されている終了ステータスは次の通りです。
本ソフトウェア (rftagrw) は、私共へのソフトウェア製作の依頼を検討されているお客様に対し、技術デモ用として提供するものです。本ソフトウェアがあらゆる状況において、お客様の期待した通りに動作するという保証はありません。本ソフトウェアを利用あるいは利用できないことにより生じる損害について作者は一切の責任を負いません。お客様ご自身の判断と責任においてご利用ください。
V640シリーズに限らず、さまざまなFA機器制御プログラム(産業用機器、計測器を利用するアプリケーション)の製作を承っております。ソフトウェア開発についてのお問い合わせは、次の連絡先にお願いいたします。
※このコマンドラインツール rftagrw は、高橋良司(ゾーンゼロ)が独自に開発したものであり、オムロン株式会社の製品ではありません。このソフトウェアについてオムロンに問い合わせないようにしてください(自社製品でもないソフトウェアについてオムロン側に答える義務はありません。問い合わせた側の常識を疑われる結果に終わるだけです。虚しいのでそのような行為は慎みましょう)。