三菱電機製のシリアルコミュニケーションユニット「QJ71C24N」は、シリアル通信を用いて対応機器と通信できるインテリジェントユニットのひとつ。
過去よく使用された通信方法ですが、現在はイーサネットを使用したフィールドネットワークに取って代わられています。
とはいえまだまだシリアル通信にしか対応していない機器があるのも事実。
今回はオムロン製のRFIDコントローラ「V680-CA5D01-V2」との接続を参考に、シリアル通信の手順を解説します。
シリアル通信(RS−232C)の基礎知識
シリアル通信とは1つのデータ伝送路を使って、1ビットずつデータをやり取りする通信方式を指します。
少ない信号線で多くのデータをやり取りできるため、機器同士の通信でよく使用されていました。
シリアル通信にはいくつか種類があり、その中でもよく使用されるのがRS-232Cです。
RS-232Cの通信方式
RS-232Cは1対1の全二重シリアル方式です。
送信用と受信用のデータ線を用意することで、機器間での送受信を同時に実行できます。
ピン配置と信号
RS-232Cはピン配置に対して信号の割り付けが規格化されています。
そのためどのような相手機器であっても、規格通り配線および通信手順を守るだけで通信が可能となるのです。
信号内容
ピンNo. | 信号名(別名) | 入出力 | 内容 | 備考 |
---|---|---|---|---|
1 | DCD(CD) | IN | キャリア検出 | モデム利用時使用 |
2 | RxD(RD) | 受信データ | ||
3 | TxD(SD) | OUT | 送信データ | |
4 | DTR(ER) | データ端末レディ | 自機の動作を示す 相手側DSRと接続 (DTR/DSRフロー制御時使用) | |
5 | GND(SG) | – | グランド | |
6 | DSR(DR) | IN | データセットレディ | 相手側の動作を示す 相手側DTRと接続 (DTR/DSRフロー制御時使用) |
7 | RTS(RS) | OUT | 送信リクエスト | 送信要求信号 相手側CTSと接続 (RTS/CTSフロー制御時使用) |
8 | CTS(CS) | IN | 送信可 | 送信可能信号 相手側RTSと接続 (RTS/CTSフロー制御時使用) |
9 | RI(CI) | 被呼表示 | モデム利用時使用 |
ピン配置
フロー制御
互いの機器においてデータ処理能力が十分に高い場合、基本的にデータの取りこぼしは起きません。
一方が処理能力の低い機器だった場合、データの取りこぼしが発生し正常に通信できない場合もあります。
そこでデータの取りこぼしを防ぐために使われる機能がフロー制御です。
DTR/DSR
DTR信号とDSR信号を使用して、相手機器との通信可否を判断する制御。
ハンドシェイク(接続)確認に使用されます。
相手機器のデータ端末レディ(DTR)が自機のデータセットレディ(DSR)に入力されたら通信を開始する。
相手機器との接続状態しかわからないため、相手の処理能力が追いつかない場合などはデータの取りこぼしが発生します。
DTR/DSRフロー制御を利用する際は、機器間でDTRとDSRを相互に接続してください。
RTS/CTS
RTS信号とCTS信号を使用して、データの送信中断と再開を行う制御。
相手機器からの送信リクエスト(RTS)が自機の送信可(CTS)に入力されている間データを送信する。
相手機器の処理状況に応じてデータを送信できるため、理論上データの取りこぼしが発生しません。
RTS/CTSフロー制御を利用する際は、機器間でRSTとCTSを相互に接続してください。
XON/XOFF
受信側の返信データ内に送信中断と再開を示す制御文字を組み込む手法。
データ信号線だけの配線で済むため、追加の配線をせずにフロー制御を実現できます。
デメリットは送信データに無駄な文字が追加されるため、通信量が増えて通信時間が伸びる点。
このようなフロー制御をソフトウェアフローと呼びます。
ボーレート
ボーレートとはシリアル通信を行う機器間で通信タイミングを定める際に設定する通信速度のこと。
RS-232Cはクロック信号がないため、ボーレートの設定を機器間で合わせて同期をとります。
ボーレートを高いほど1秒あたりの情報量が増えますが、機器側に高い処理能力が必要です。
設定値は互いの処理が確実に行える範囲で最も早い値を設定するのがベターでしょう。
スタートビット、パリティビット、ストップビット
送信するデータは以下の4つから構成されています。
信号名 | 占有ビット | 値 | 機能 |
---|---|---|---|
スタートビット | 1bit | 0 | データブロックの先頭を示す |
データビット | 8bit | データの内容による | データの内容を示す |
パリティビット | 1bit | 設定による | 送信データの整合性を示す |
ストップビット | 1/1.5/2bit | 1 | データブロックの終了を示す |
スタートビット
スタートビットは1バイトデータ送信の先頭を示す信号です。
送信データブロックのうち1ビットを占有しており、信号は必ず0となります。
ストップビット
ストップビットは1バイト分のデータ送信が終わったことを示す信号です。
ストップビットが占有する領域のビットは、すべて1となります。
このときストップビットが占有するビット数は設定により変更可能です。
機器同士でストップビットの占有ビット数を合わせないとデータ構造に齟齬が起きるため、必ず一致させます。
パリティビット
パリティビットは送信したデータが正常に送られたかをチェックするために付与されるビット。
指定した規則に則らないデータを受信した際に、送信データに誤りがあることを判断します。
PLCを使ったRS232C通信では「ノンパリティ」「偶数パリティ」「奇数パリティ」の使用が一般的です。
ノンパリティ
ノンパリティではパリティビットによる送信データの整合性確認を行いません。
パリティビットは常に0となります。
偶数パリティ
データビット内における1の数とパリティビットの信号をあわせて、1が偶数個となるよう信号を変化させます。
データビット内における1の数 | パリティビット |
---|---|
奇数個 | 1 |
偶数個 | 0 |
例
データビット「00101111」の場合、1が5個なのでパリティビットは「1」となり合計6個となるよう調整します。
奇数パリティ
データビット内における1の数とパリティビットの信号をあわせて、1が奇数個となるよう信号を変化させます。
データビット内における1の数 | パリティビット |
---|---|
奇数個 | 0 |
偶数個 | 1 |
例
データビット「00101111」の場合、1が5個なのでパリティビットは「0」となり合計5個となるよう調整します。
無手順プロトコル交信とは
無手順プロトコル交信とは、機器間で決めた規則に沿ってデータを送信する手法。
独自の規格データをやり取りできるため、PLCと外部機器を接続する際に使われます。
ただし1つだけ決まりがあって、データのまとまりであるメッセージの最後には終了を示すデリミタ符号が必須です。
デリミタ符号はCR(Caride Return 復帰改行符号)やETX 符号がよく使用されます。
三菱Q71C24Nでは終端記号の項目から変更可能で、相手機器の仕様に合わせて設定を変更します。
三菱Q71C24NとオムロンV680-CA5D01-V2との接続
さてここからが本題です。
三菱Q71C24Nを使ってオムロンのRFIDリーダーV680-CA5D01-V2とRS232C接続をしてみましょう。
RS232C接続用ケーブルの準備
QJ71C24NとV680を接続するRS232Cケーブルは自作します。
購入品
引用元:V680シリーズIDコントローラユーザーズマニュアル(オムロン)
シールド付きケーブル | FKEV-SB 0.3sq×4P(富士電線工業) |
プラグ(オス) | XM3A-0921(オムロン) 2個必要 |
フード | XM2S-0911(オムロン) 2個必要 |
結線図
機器間の接続は上記のとおり結線します。
今回はフロー制御を利用しないため、RS⇔CS間は短絡して常時データ送信を可能な状態にしてください。
GRはプラグの金属部分です。シールド付き電線のシールドをプラグに短絡させるよう配線してください。
【参考】QJ71C24Nのピン配置
ピンNo. | 略号 | 信号名称 |
---|---|---|
1 | CD | キャリア検出 |
2 | RD | 受信データ |
3 | SD | 送信データ |
4 | ER | データ端末レディ |
5 | SG | 信号用接地線、共通帰線 |
6 | DR | データセットレディ |
7 | RS | 送信要求 |
8 | CS | 送信可 |
9 | CI | 被呼表示 |
【参考】V680-CA5D01-V2のピン配置
ピンNo. | 略号 | 信号名称 |
---|---|---|
2 | SD | 送信データ |
3 | RD | 受信データ |
4 | RS | 送信要求 |
5 | CS | 送信可 |
9 | SG | 信号用接地線、共通帰線 |
V680-CA5D01-V2側の通信パラメータ設定
スイッチNo. | 項目 | 設定値 | 設定内容 |
---|---|---|---|
SW3-1 | SW切換え | OFF | ディップスイッチ有効 |
SW3-2 | タグメモリ | OFF | 標準モード |
SW3-3 | 通信速度 | OFF | 19200bps |
SW3-4 | ON | ||
SW3-5 | データ長設定 | ON | 8ビット |
SW3-6 | パリティ設定 | OFF | 偶数パリティ |
SW3-7 | OFF | ||
SW3-8 | ストップビット | ON | 1ビット |
SW3-9 | 通信手順設定 | OFF | 1対1手順 |
SW3-10 | コマンド体系設定 | OFF | V680コマンド形式 |
RFIDリーダーの通信パラメータは上記の通り設定します。
コントローラNo.(SW1、SW2)
コントローラNo.とは1台のQJ71C24Nに複数のIDコントローラを並列接続する際に設定するパラメータです。
今回は1対1での接続となるため、コントローラNo.は「0」となります。
ディップスイッチの設定(SW3、SW4)
ディップスイッチの設定により、コントローラの通信設定やその他パラメータを設定します。
SW3は通信パラメータ設定用で、SW4はメンテナンスモードで使用するパラメータです。
ここでは通信に必要なSW3のパラメータのみ紹介します。
スイッチNo. | 機能 | OFF時 | ON時 |
---|---|---|---|
SW3-1 | SW切換え | ディップスイッチ有効 | 内部設定有効 |
SW3-2 | タグメモリ設定 | 標準モード | CA1Dモード |
SW3-3 | 通信速度設定 | SW3-3[OFF]、SW3-4[OFF] → 9600bps SW3-3[OFF]、SW3-4[ON] → 19200bps SW3-3[ON]、SW3-4[OFF] → 38400bps SW3-3[ON]、SW3-4[ON] → 115200bps | |
SW3-4 | |||
SW3-5 | データ長設定 | 7ビット | 8ビット |
SW3-6 | パリティ設定 | SW3-6[OFF]、SW3-7[OFF] → 偶数パリティ SW3-6[OFF]、SW3-7[ON] → パリティなし SW3-6[ON]、SW3-7[OFF] → 奇数パリティ SW3-6[ON]、SW3-7[ON] → 偶数パリティ | |
SW3-7 | |||
SW3-8 | ストップビット設定 | 2ビット | 1ビット |
SW3-9 | 通信手順設定 | 1対1手順 | 1対N手順 |
SW3-10 | コマンド体系設定 | 形V680コマンド形式 | 形V600コマンド形式 |
モード切替スイッチ(SW5)
モード切替スイッチ(SW5)は、メンテナンスモードを利用する際にONします。
通常利用時はOFFで使用してください。
QJ71C24N側の通信パラメータ設定
GX-Works2のインテリジェント機能ユニット項目から、QJ71C24Nの通信パラメータを設定します。
- スイッチ設定
- 各種制御指定
今回は上記の2点を次の説明のとおり設定してください。
スイッチ設定
スイッチ設定は、接続先のV680と通信パラメータを合わせます。
CH1のみ設定する理由は、CH1がRS232Cポートだからです。
項目 | CH1 |
---|---|
動作設定 | 独立 |
データビット | 8ビット |
パリティビット | あり |
奇数/偶数パリティ | 偶数 |
ストップビット | 1 |
サムチェックコード | なし |
RUN中書込み | 禁止 |
設定変更 | 禁止 |
通信速度設定 | 19200bps |
通信プロトコル設定 | 無手順プロトコル |
局番設定 | 0 |
各種制御指定
データ受信用(CH1) | |
---|---|
受信終了データ数指定 | 511(1FFh) |
受信終了コード指定 | 13(Dh) |
各種制御指定のうち、受信終了コード指定のみ設定を変更します。
1対1手順で読み出しを行う場合、V680から受け取るデータの受信終了コードはターミネータの部分です。
ターミネータの「CR」がデータの末尾となるため、ASCIIコードで「CR」を示す13(0x0D)を指定しデータの終わりを確認します。
V680からIDを読み出すためのシリアル通信用のラダー
QJ71C24NでV680とシリアル通信をするために、データの送受信を行うラダーが必要を作ります。
大まかな流れとしては、
- QJ71C24NからV680へリクエスト(データ送信)
- V680からQJ71C24Nへレスポンス(データ受信)
- QJ71C24Nからレスポンスデータを読み出し
といった感じです。
前提条件
QJ71C24NとV680でシリアル通信を行うために必要な設定、準備を解説します。
QJ71C24Nの取付位置
QJ71C24Nの取付位置は、スロット0の2番目(16進数で2)です。
スロット0-0はDC入力ユニット、スロット0-1にはトランジスタ出力ユニットを取り付けます。
V680-CA5D01-V2とPLC入出力とのハード接続
入出力ピンNo. | 名称 | PLC接続先アドレス |
---|---|---|
1 | RUN | X0 |
2 | BUSY | X1 |
3 | ERROR | X2 |
4 | OUT1 | 未使用 |
5 | OUT2 | 未使用 |
6 | COM_O | DC0V |
7 | RST | Y10 |
8 | TRG1 | 未使用 |
9 | TRG2 | 未使用 |
10 | COM_I | DC24V |
RFタグのデータ内容
読み出すRFタグに書き込まれているデータ内容は“ABCDEFGHIJKLM”とします。
データ位置 | データ内容 |
---|---|
1バイト目 | A |
2バイト目 | B |
3バイト目 | C |
4バイト目 | D |
5バイト目 | E |
6バイト目 | F |
7バイト目 | G |
8バイト目 | H |
9バイト目 | I |
10バイト目 | J |
11バイト目 | K |
12バイト目 | L |
13バイト目 | M |
V680コントローラーエラーリセット回路
V680コントローラーのエラーをリセットするための回路です。
V680がエラー状態のとき、任意のエラーリセット入力を行うことで、V680のアラームをリセットできます。
V680読み出し命令回路
V680が正常かつ交信中でないとき、IDリード命令によりV680との通信を開始します。
通信の開始と同時に、送受信の完了状態をリセットしておきましょう。
V680との通信中を示すIDリード実行中は、送信と受信が正常に完了するまで自己保持をかけておきます。
QJ71C24N→V680データ送信回路
シリアル通信における送信命令G.OUTPUTは1パルスだけ実行します。
そのため、ここでIDリード実行信号をパルス化しておきましょう。
送信用のデータを記述します。
送信するデータはASCIIコードで、内容は「RDSTA10070010*CR」です。
送信データの内容についての詳細は下記を参照してください。
名称 | アドレス | 設定データ | 設定値 | 詳細 |
---|---|---|---|---|
コマンドコード | D0 | RD | リード | RFタグから2Kバイトまでのデータを読み出します。 |
交信指定 | D1 | ST | シングルトリガ | コマンド受信時にRFタグと交信し、レスポンスを返します。 |
データ指定 | D2 | A | ASCIIコード | 読出し たデータのレスポンス時に伝送するコー ドの形式を指定します。 |
アンテナ指定 | 1 | アンテナ1 | 交信するアンテナを1に指定します。 | |
読出エリア先頭アドレス | D3~D4 | 0007 | 7番目(単位バイト) | RFタグからデータを読出すエリアの先頭アドレスを16進数4桁で7番目に指定します。 指定可能範囲 : 0000Hex~ FFFFHex |
読出バイト数 | D5~D6 | 0010 | 10バイト | RFタグからデータを読出すバイト数を10バイト分、16進数4桁で指定します。 |
ターミネータ | D7 | *CR(0D2Ah) | – | 送信データの終了コードです。データの末尾に必ず設定してください。 |
QJ74C24Nにデータ送信を指示します。
データ送信に使用する命令はG.OUTPUTです。
命令・アドレス | 設定値 | 詳細 |
---|---|---|
G.OUTPUT | – | 無手順プロトコルでのユーザ任意の伝文フォーマットによるデータ送信を行います。 |
U2 | – | QJ71C24Nのユニット取り付け位置 |
D10 | 1 | 送信チャンネルNo. |
D11 | 0(リセット用) | OUTPUT命令による送信結果 |
D12 | 8 | 送信データ数(バイト数指定) |
D0~D7 | – | 送信データ内容※送信コマンド詳細を参照 |
M10 | – | データ送信完了信号 |
M11 | – | データ送信異常完了信号 |
G.OUTPUT命令を実行したあと、送信状態をチェックしましょう。
M10が送信命令実行完了状態を示し、M11が送信命令の完了状態を示します。
M11は送信が正常にできた際にOFF、異常時がONです。
M10で送信命令の実行完了を確認したあと、M11の状態で送信に問題がないかを確認します。
レスポンスデータ読み出し
X23およびX24はQJ71C24Nの内部信号です。
X23は無手順プロトコル通信にてデータを送信し、相手機器からレスポンスデータを受信するとONします。
X24はレスポンスデータに異常があるとONします。
X23もしくはX24のONで、レスポンスデータの読み出しを行う回路です。
読み出し開始指令を受けて、QJ71C24NのCH1で受け取ったレスポンスデータをプログラム上に読み出します。
レスポンスデータを読み出すための命令はG.INPUTです。
命令・アドレス | 設定値 | 詳細 |
---|---|---|
G.INPUT | – | 無手順プロトコルでのユーザ任意の伝文フォーマットによるデータ受信を行います。 |
U2 | – | QJ71C24Nのユニット取り付け位置 |
D20 | 1 | レスポンスデータ読み出し先チャンネルNo. |
D21~D22 | 0(リセット用) | G.INPUT命令による送信結果 |
D23 | 30 | レスポンスデータ読み出しデータ数(バイト数指定) |
D27~D56 | – | レスポンスデータ(30バイト分) |
M30 | – | データ読出完了信号 |
M32 | – | データ読出異常完了信号 |
読み出したレスポンスデータはD27~D56の30ワード(60バイト)へ保管されます。
アドレス | データ内容 |
---|---|
D27 | HG |
D28 | JI |
D29 | LK |
D30 | *M |
D31 | CR |
D32~D56 | データなし |
G.INPUT命令を実行したあと、読み出し状態をチェックしましょう。
M30が読出命令実行完了状態を示し、M31が読出命令の異常完了状態を示します。
M31はレスポンスデータ読み出し時に、異常があった場合にONする信号です。
M30で読出命令の実行完了を確認したあと、M31の状態で読み出しに問題がないかを確認します。
レスポンスデータの整合性チェック
V680からのレスポンスデータについては下記のとおりです。
- レスポンスデータのコマンドコードが送信時のコマンドと一致していること
- レスポンスデータの終了コードが正常を示す”00″であること
上記の2点を満たすレスポンスデータが返ってきたとき、レスポンスデータは正常であると判断します。
レスポンスデータが正常であることを確認したら、リード命令の実行完了記憶を起こします。
リセット条件M101は、用途に応じて設定してください。
コメント