【QJ71C24N】無手順プロトコル交信によるシリアル通信(RS232C)のやり方【V680との接続例あり】

三菱電機製のシリアルコミュニケーションユニット「QJ71C24N」は、シリアル通信を用いて対応機器と通信できるインテリジェントユニットのひとつ。

過去よく使用された通信方法ですが、現在はイーサネットを使用したフィールドネットワークに取って代わられています。

とはいえまだまだシリアル通信にしか対応していない機器があるのも事実。

今回はオムロン製のRFIDコントローラ「V680-CA5D01-V2」との接続を参考に、シリアル通信の手順を解説します。

目次
↓これは広告です↓

シリアル通信(RS−232C)の基礎知識

シリアル通信とは1つのデータ伝送路を使って、1ビットずつデータをやり取りする通信方式を指します。

少ない信号線で多くのデータをやり取りできるため、機器同士の通信でよく使用されていました。

シリアル通信にはいくつか種類があり、その中でもよく使用されるのがRS-232Cです。

RS-232Cの通信方式

RS-232Cは1対1の全二重シリアル方式です。

送信用と受信用のデータ線を用意することで、機器間での送受信を同時に実行できます。

ピン配置と信号

RS-232Cはピン配置に対して信号の割り付けが規格化されています。

そのためどのような相手機器であっても、規格通り配線および通信手順を守るだけで通信が可能となるのです。

信号内容

ピンNo.信号名(別名)入出力内容備考
1DCD(CD)INキャリア検出モデム利用時使用
2RxD(RD)受信データ
3TxD(SD)OUT送信データ
4DTR(ER)データ端末レディ自機の動作を示す
相手側DSRと接続
(DTR/DSRフロー制御時使用)
5GND(SG)グランド
6DSR(DR)INデータセットレディ相手側の動作を示す
相手側DTRと接続
(DTR/DSRフロー制御時使用)
7RTS(RS)OUT送信リクエスト送信要求信号
相手側CTSと接続
(RTS/CTSフロー制御時使用)
8CTS(CS)IN送信可送信可能信号
相手側RTSと接続
(RTS/CTSフロー制御時使用)
9RI(CI)被呼表示モデム利用時使用

ピン配置

引用元:wikipedia RS-232C

フロー制御

互いの機器においてデータ処理能力が十分に高い場合、基本的にデータの取りこぼしは起きません。

一方が処理能力の低い機器だった場合、データの取りこぼしが発生し正常に通信できない場合もあります。

そこでデータの取りこぼしを防ぐために使われる機能がフロー制御です。

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つから構成されています。

信号名占有ビット機能
スタートビット1bit0データブロックの先頭を示す
データビット8bitデータの内容によるデータの内容を示す
パリティビット1bit設定による送信データの整合性を示す
ストップビット1/1.5/2bit1データブロックの終了を示す
送信データ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.略号信号名称
1CDキャリア検出
2RD受信データ
3SD送信データ
4ERデータ端末レディ
5SG信号用接地線、共通帰線
6DRデータセットレディ
7RS送信要求
8CS送信可
9CI被呼表示
シリアルコミュニケーションユニット Q71C24NのRS232Cポートピン配置

【参考】V680-CA5D01-V2のピン配置

ピンNo.略号信号名称
2SD送信データ
3RD受信データ
4RS送信要求
5CS送信可
9SG信号用接地線、共通帰線
RFIDコントローラ V680-CA5D01-V2のRS232Cポートピン配置

V680-CA5D01-V2側の通信パラメータ設定

スイッチNo.項目設定値設定内容
SW3-1SW切換えOFFディップスイッチ有効
SW3-2タグメモリOFF標準モード
SW3-3通信速度OFF19200bps
SW3-4ON
SW3-5データ長設定ON8ビット
SW3-6パリティ設定OFF偶数パリティ
SW3-7OFF
SW3-8ストップビットON1ビット
SW3-9通信手順設定OFF1対1手順
SW3-10コマンド体系設定OFFV680コマンド形式

RFIDリーダーの通信パラメータは上記の通り設定します。

コントローラNo.(SW1、SW2)

コントローラNo.とは1台のQJ71C24Nに複数のIDコントローラを並列接続する際に設定するパラメータです。

今回は1対1での接続となるため、コントローラNo.は「0」となります。

ディップスイッチの設定(SW3、SW4)

ディップスイッチの設定により、コントローラの通信設定やその他パラメータを設定します。

SW3は通信パラメータ設定用で、SW4はメンテナンスモードで使用するパラメータです。

ここでは通信に必要なSW3のパラメータのみ紹介します。

スイッチNo.機能OFF時ON時
SW3-1SW切換えディップスイッチ有効内部設定有効
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コマンド形式

SW4の各種スイッチはメンテナンスモードで使用します。通常利用時はすべてOFFに設定してください。

モード切替スイッチ(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)を指定しデータの終わりを確認します。

受信終了コードが受信データの末尾と一致しない場合、QJ71C24Nの受信内部処理が終了しません。

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接続先アドレス
1RUNX0
2BUSYX1
3ERRORX2
4OUT1未使用
5OUT2未使用
6COM_ODC0V
7RSTY10
8TRG1未使用
9TRG2未使用
10COM_IDC24V

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」です。

送信データの中身(ASCII)

送信データの内容についての詳細は下記を参照してください。

名称アドレス設定データ設定値詳細
コマンドコードD0RDリードRFタグから2Kバイトまでのデータを読み出します。
交信指定D1STシングルトリガコマンド受信時にRFタグと交信し、レスポンスを返します。
データ指定D2AASCIIコード読出し たデータのレスポンス時に伝送するコー ドの形式を指定します。
アンテナ指定1アンテナ1交信するアンテナを1に指定します。
読出エリア先頭アドレスD3~D400077番目(単位バイト)RFタグからデータを読出すエリアの先頭アドレスを16進数4桁で7番目に指定します。
指定可能範囲 : 0000Hex~ FFFFHex
読出バイト数D5~D6001010バイトRFタグからデータを読出すバイト数を10バイト分、16進数4桁で指定します。
ターミネータD7*CR(0D2Ah)送信データの終了コードです。データの末尾に必ず設定してください。

QJ74C24Nにデータ送信を指示します。

データ送信に使用する命令はG.OUTPUTです。

命令・アドレス設定値詳細
G.OUTPUT無手順プロトコルでのユーザ任意の伝文フォーマットによるデータ送信を行います。
U2QJ71C24Nのユニット取り付け位置
D101送信チャンネルNo.
D110(リセット用)OUTPUT命令による送信結果
D128送信データ数(バイト数指定)
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無手順プロトコルでのユーザ任意の伝文フォーマットによるデータ受信を行います。
U2QJ71C24Nのユニット取り付け位置
D201レスポンスデータ読み出し先チャンネルNo.
D21~D220(リセット用)G.INPUT命令による送信結果
D2330レスポンスデータ読み出しデータ数(バイト数指定)
D27~D56レスポンスデータ(30バイト分)
M30データ読出完了信号
M32データ読出異常完了信号

読み出したレスポンスデータはD27~D56の30ワード(60バイト)へ保管されます。

アドレスデータ内容
D27HG
D28JI
D29LK
D30*M
D31CR
D32~D56データなし

G.INPUT命令を実行したあと、読み出し状態をチェックしましょう。

M30が読出命令実行完了状態を示し、M31が読出命令の異常完了状態を示します。

M31はレスポンスデータ読み出し時に、異常があった場合にONする信号です。

M30で読出命令の実行完了を確認したあと、M31の状態で読み出しに問題がないかを確認します。

レスポンスデータの整合性チェック

V680からのレスポンスデータについては下記のとおりです。

レスポンスデータが正常であるための条件
  • レスポンスデータのコマンドコードが送信時のコマンドと一致していること
  • レスポンスデータの終了コードが正常を示す”00″であること

上記の2点を満たすレスポンスデータが返ってきたとき、レスポンスデータは正常であると判断します。

レスポンスデータが正常であることを確認したら、リード命令の実行完了記憶を起こします。

リセット条件M101は、用途に応じて設定してください。

参考資料

コメント

コメントする

CAPTCHA


目次