シーケンス制御講座

KX-100L

シーケンス制御講座 上級編 KX-100L

高砂製作所製DC電源KX-100シリーズとPLCをRS-232Cで接続して外部コントロールしてみます。

作成日:2016年05月10日
更新日:2022年12月12日


配線方法と設定

高砂製作所製DC電源KX-100シリーズとPLCを接続して外部コントロールしてみます。接続はシリアル通信(RS232C)で行います。

メーカー:高砂製作所
型式:KX-100L
PLC:三菱Q02U程度
インテリジェント機能ユニット:QJ71C24N-R2

まず外部コントロール用にD-SUB9ピンコネクタ同士を下記配線図のように接続します。これはクロス接続と呼びます。

注意しないといけないのは、市販のクロスケーブルの場合、全ての配線が接続されていないことがありますので、必ず上記のような配線を行って下さい。

次に機器の設定を行います。通信設定の部分はデフォルトで問題ありません。通信設定はPLCとKX-100Lのお互いの機器で同じ設定になっていればいいのです。そのため、KX-100Lの設定はデフォルトのままで、PLC側を合わせます。この辺りの操作は作る人によっても違うと思います。設備全体で通信設定を統一しているのであれば、そこに合わせる必要がありますし、他設備と統一していればそちらに合わせる必要があります。特に何も指示が無い場合は外部接続機器に合わせることをお勧めします。それは、外部機器の設定方法は各機器によって違いますし、設定方法も説明書を見ながら行わないとできません。そのためもし何年か後に故障して交換が必要になった場合、そのままの設定で交換できるのが理想です。

今回、通信設定はデフォルトで設定しますが、外部接点により出力(OUTPUT)できるように設定してください。ファンクションキーを押して3番目の項目を1に設定して再起動してください。KX-100Lは出力も232Cで接続してコマンドから実行できます。しかし接点があればI/Oで動作させたほうがいい場合もあります。これはPLCのプログラムがシンプルになるからです。コマンドで出力させると、その後出力しているのか停止しているのかを再度確認するプログラムが必要となります。プログラム上では出力させたが、実際は分からないからです。さらに停止させるコマンドを送信する必要もあり、何かトラブルが発生した場合も、停止コマンドを送信して停止させる必要があります。しかしI/Oであれば単純にコイルを出力するだけなのでシリンダを動作するように簡単に制御できます。そのためにI/Oでいける部分はI/Oで制御します。

スイッチ設定

外部機器の配線と設定が終わったらPLCのプログラムを製作します。まずはQJ71C24N-R2のスイッチ設定を行います。PCパラメータの設定を開いて「I/O割付設定」→「スイッチ設定」を押してください。QJ71C24N-R2のユニット部分に設定をしますが、1CH目に接続するのであればスイッチ1を「05C2」、スイッチ2を「0006」に設定してください。これで通信設定は完了です。これはKX-100Lの通信設定がデフォルトの設定です。

ラダープログラム

それではプログラムを作成していきましょう。今回は単純に出力電流を10Aと2Aに設定できるプログラムを作成してみます。「B101」等はGOTのボタンに設定しています。分かりやすくするために「B」を使っています。少しコメントがおかしい部分もありますが、ご了承ください。

最初のブロックと次のブロックは電流設定用のコマンドをデータレジスタに格納しています。Q02UのCPUなのでそのまま文字列で指定しています。[CR][LF]は「H0A0D」で指定しています。10Aの設定はそのまま指定していますが、2A設定の場合注意が必要です。文字列で指定するとデータレジスタ1個に対して2文字入ります。もじ1文字の場合でもデータレジスタを1個使用します。そのため1文字の場合は残りのスペースがNULLとなります。今回の2A設定の場合文字数が奇数になりますので、文字列の後にNULLが入って[CR][LF]となります。これを防ぐため、文字列の指定を偶数文字とし、最後の文字は直接ASCIIで指定しています。

QJ71C24N-R2のバッファメモリに値を書き込む専用命令がG.OUTPUTです。上記回路では値を書き込む部分と、実際に出力する部分で回路を分けています。そのためG.OUTPUTは1個しかありません。例えばGOTにテスト用のスイッチを設定して「B101」に設定します。そしてテスト用のスイッチを押すと、D361~に送信コマンドを格納してD352に送信文字数を格納します。格納後「M1780」をパルスで出力します。2A設定の場合はパルスで「M1781」を出力します。どちらかのパルスを拾うと「M1770」を出力します。つまり送信データの設定が完了したら「M1770」をパルスで出力します。

「M1770」のパルスを拾うとコマンドを送信する仕組みです。「B101」や「B102」はGOT等のスイッチに設定して、テスト送信や手動での切り替えに使うといいでしょう。「M1705」や「M1706」は自動運転中に電流を変更するときなどに使っています。

次に専用命令の前に”A1.TK7”というコマンドが入っています。これも上記のようにコマンド設定したらG.OUTPUTが働くようになっています。このコマンドは現在の電流値を確認するときに使用します。電流を設定して電流を出力しても、実際にその電流値が出ているかは分かりません、KX-100Lは自分で測定していますので、その測定値を読み取る命令です。この命令をKX-100Lに送信すると、現在の電流値をASCIIで返してきます。このコマンドの送信条件は「Y12E」というI/O出力で電流を流しているときに0.2秒間隔で送信するようにしています。

コマンドを送信したら、実際の測定値を返してきますので受信する必要があります。KX-100Lから測定値を返してくると、バッファメモリまでは自動的に入ってきます。受信命令はこのバッファメモリから受信を行う命令です。

QJ71C24N-R2がデータを受信したら「X16A」がONします。この「X16A」はQJ71C24N-R2を差し込むユニットにより変化しますので、自分の環境に合わせてください。そして上のようにG.INPUTの専用命令を実行してください。上の回路のように実行すると、D380~は受信設定で、D390~に受信データが入ってきます。ただし受信するデータはASCIIコードのため、そのままでは非常に扱いにくいので、数値に変換します。

データを無事受信したら「M1775」がONします。その信号を使って変換します。まずKX-100Lは変なデータを受信したら”ALM128”を返してきます。このアラームコードが返ってきたら変換はしないようにします。今回は0.2秒間隔でデータを受信します。つまり現在の電流値をリアルタイムで表示するのです。アラームコードが入ってきて制御を停止させてもいいのですが、特に意味が無いので無視します。アラームコード以外が入ってきた場合、まず”A”の位置を特定します。これは桁数によって文字数が変わるため、Aの位置が変わってしまうためです。

シーケンサの機種にもよりますが、EVALと言う便利な命令があります。この命令を使うとASCIIなどで記述した数値を、浮動小数点に変換できます。指数表示でも変換してくれます。ただし、数値表示のみの変換なので、KX-100Lからの受信データのように末尾に”A”の文字がつくとエラーとなります。そこで”A”を外す必要があります。

あらかじめINSTR命令で”A”の位置を特定しています。次にLEFT命令で文字を取り出します。LEFT命令は指定した文字数までを抜き取ります。そのため”A”の位置まで抜き取ると変化しないため、”A”の位置より1文字手前までを抜き取る必要があります。そこで最初に「D6130」から1を引いています。次のLEFT命令で「D6132~」に”A”を外した文字が入ってきます。その文字をEVAL命令で変換すれば完了です。

最後の部分は電流を停止したときは強制的に表示を0にしているだけです。この辺りの処理は制御内容によって変えてください。

一応これで完了です。もう少しレベルをあげた制御をする場合は、例えば電流値を浮動小数点で指定して命令を実行すれば、自動でコマンドに変換して送信することも可能です。この辺りは使い方です。今回は電流の切り替えのみですのでこの程度の制御で十分です。さらに細かく制御する場合は浮動小数点からの変換に挑戦してみてください。



図解入門 よくわかる最新 シーケンス制御と回路図の基本はKindle版(電子書籍)です。単行本ご希望の方は、フォーマットで単行本を選択してください。または、トップページよりご購入ください。

Copyright (C) 2010 シーケンス制御講座, All rights reserved.