1.数値の扱い
PLCでは直接的に数値を扱うことができます。ハード(実配線)のみでシーケンス制御を組む場合、数値に対する処理を必要とするときは別途調節計や警報計を使わなければなりません。
しかし、PLCには「アナログ入力ユニット」なるものが存在し、直接的に数値を取り込み扱うことが可能となります。ただし、ルールは存在します。それは、入力信号が取り込める範囲のものでなければならないということです。
よく使われる種類としては「4-20[mA]」の電流信号や「1-5[V]」の電圧信号です。センサーなどから直接これらのような信号を出せない場合は別途センサーアンプなどの変換器が必要となりますが、これは調節計なども同じです。
また、一般的に温度入力は専用入力ユニットが存在します。最近ではマルチ入力ユニットなどで温度入力も電流入力も電圧入力も取込める仕様になっているものもあるようです。
2.アナログ入力ユニットへの接続要領
PLCがアナログ信号を受取る場合、先のアナログ入力ユニットが必要となり、その上でそれ専用の配線をしなければなりません。
センサーからPLCまでのアナログ入力における配線を図示します。ここでは比較的使いやすく設定も容易でわかりやすいものを一例としてあげています。裏を返せばよく使われているユニットということになります。
また、余計な煩雑さを回避するため図中では線番はあえて振っていませんが、実際は線番を付与しなければならないことはいうまでもありませんのでご注意を。
説明画像はクリックやタップで拡大可能です。そのままでは分かりづらいと思いますので適宜拡大してご覧ください。
1)キーエンス製PLCのアナログ入力ユニット(ex.KV-AD40シリーズ)
キーエンス製PLCでの接続要領を図示します。ユニットは4ch(チャンネル)から成り、ch0には電圧による入力、ch1をとばしてch2に電流による入力となるように接続しています。ch3も使用していません。
また普段はあまりしない描き方ですが、センサーからの接続の一連を一枚の図面内に表わしています。この接続方法自体は筆者がよく使用する方法です。
ch0の電圧入力では、別途電源を必要とするセンサーから信号変換器を経てアナログ入力ユニットに入力されます。アナログユニットの「V0+」と「V0-」に入力信号線を接続しています。今回はセンサーに直流の電源を、信号変換器に交流の電源を接続していますが、これは使用する機器の要求する電源を正しく接続してください。
ch2の電流入力では「2線式」とよばれる電源と信号を同一配線で授受するセンサーの利用における配線です。信号変換器は2線式対応のものを選定する必要があり、接続においても電源供給しながら信号を受け取れる端子を選択しなければなりません。アナログ入力ユニットでは「I0+」と「V0+」を短絡したうえで信号線のプラス側を「I0+」に、マイナス側を「V0-」に接続します。誤解の無いように付け加えますが、電流入力が必ず2線式というわけではありません。今回は一例です。
ch1はとばしていますが、これに関しては特に意味はありません。敢えて言うなら図面が見やすいように間を開けただけでこのような使い方も可能です。また、アナログ入力ユニットにおける配線の接続は選定型式により微妙に異なる場合がありますので注意が必要です。
2)三菱電機製PLCのアナログ入力ユニット(ex.Q64ADH)
三菱電機製PLCでの接続要領を図示します。基本的にはキーエンス製PLCのときと同じですが、端子の並びが少し違いますのでそこは注意が必要です。さらにチャンネルは「1」から始まり「4」までです。また選定型式によりさらに接続が変わることも同じく要注意です。
3.アナログデータ取得とPLC内部の設計
ここまででセンサーなどからアナログ入力ユニットに配線がなされたわけですが、PLCにおいても調節計などと同様で配線をしただけでは動作させることはできません。別途取り込んだデータをどう扱うかやデータに対してどう動くべきかを設計してあげる必要があります。
つまりはやはり設定やPLCラダーの作成が必要となるわけです。以下、アナログ入力ユニットでの基本的な設定とPLCラダー設計を解説します。
ソフトウェアの操作については別途PLCプログラム〜ラダー図の基本〜も参考にしてください。
1)KV STUDIOでアナログ入力
KV STUDIOでのアナログ入力処理方法を以下に記載します。今回のモデルがKV-8000ですのでユニットエディタの使用から説明します。
説明画像はクリックやタップで拡大可能です。そのままでは分かりづらいと思いますので適宜拡大してご覧ください。
a.ユニットエディタ設定(アナログ入力ユニット設定)
KV STUDIOを立上げてプロジェクトファイル名の決定(「アナログ入力」とつけています)や機種選択(KV-8000を選択しています)をします。
立上げ直後からユニットエディタ編集の実施をするかしないか尋ねられますが「はい」でそのまま編集画面に入ってもいいですし「いいえ」を選択し、後述の方法でユニットエディタに入っていってもかまいません。
ユニットエディタはPLCユニットの全体構成を編集,決定するパートとなります。先ずはワークスペースの左側に位置するツリー上の「ユニット構成」をクリックして選択状態とし、さらに右クリックすると「ユニットエディタ」に入ることができます。
ユニットエディタに入ったら「ユニット選択(1)」をクリックして追加をしていきます。立上げ直後でユニットエディタを実施した場合もこの画面が立上ります。
今回は入力ユニットと出力ユニットを一つずつ追加します。追加作業はドラッグアンドドロップ操作で行います。以下の画像のように「ユニット選択(1)」から青いユニット描写画面に選定型式をドラッグしてもっていきます。
以下はドラッグ操作中の画像です。16点の入力ユニットである「KV-B16X*」にポインタをあわせクリックしたまま青い背景の枠内に移動させることでユニットをソフト上で追加していくことが可能です。ちなみに「*」は型式のサフィックスとなり、例えば端子台の形状やトランジスタによる動作かMOS-FETによる動作かなどの細かな仕様を意味しますがユニットエディタ上では必要無い情報です。
同様に「KV-B8RC」の出力ユニットを追加します。
さらに今回のテーマであるアナログ入力ユニットを追加します。「KV-AD40」を今回の追加ユニットとします。
ユニットの追加後そのまま「ユニット設定(2)」の設定項目内でKV-AD40での詳細設定を行います。入力ユニットと出力ユニットはデフォルト設定のままです。ちなみに入力ユニットでは先頭入力リレー番号が「X3400」、出力ユニットでは先頭出力リレー番号が「X3500」となっています。これは入力ユニットでは「X3400~X340F」を、出力ユニットでは「Y3500~Y3507(占有はY350Fまで)」を使用するという設定となります。各ユニット間で重複する番号は使用できません。
アナログ入力におけるユニット設定で必須及びよく使用する項目としては「先頭DM番号」「チャンネルスキップ」「入力信号レンジ」「スケーリング」です。各々画像を参考にプルダウンメニューや直接入力で使用状況に応じ設定します。まず先頭DM番号ですがこちらも先の入出力同様デフォルトのままで「D10300」とします。
今回はch0では入力レンジ;「1~5[V]」,スケーリング上限;「1000」,スケーリング下限「0」として、ch2では入力レンジ;「4~20[mA]」,スケーリング上限;「1000」,スケーリング下限「0」として設定しています。またch1とch3は使用しないのでチャンネルスキップ設定で「スキップする」に設定しています。
ここまでの設定が完了したらエディタ編集画面内の「適用」を押します。問題がなければ各設定を完了反映することができます。
「OK」を押してユニットエディタを終了します。通常のワークスペース画面に戻ります。
b.PLCラダー作成(アナログ入力データの演算/取得)
ここまで説明した結線やユニットエディタでの設定でセンサーや信号変換器が出力したデータをPLC内に取込むことが可能となりましたが、次にこれを目的に応じ利用する必要があります。PLCラダーで行います。
まずは分かっているまたは決まっているデバイスにコメントを割振っておきます。以下「X」と「D」についてのコメント例を画像にして載せています。
また、アナログ入力を含むコメントの割振りにはKV STUDIOですでに用意されたサンプルも存在します。これは先頭DM番号以降がどのように使用できるかのヒントにもなりますのでそのコメントの登録方法もここで記載しておきます。
まずデバイスコメント編集の中の「詳細(D)」ボタンを押します。
次に、開いた詳細のメニューから「ユニットデバイス登録」を押すと開いたウィンドウ内でどのユニットに対して登録をするかチェックボックスで選択できます。今回はCPUにもアナログユニットにもチェックを入れて登録を実施します。
今回使用の「D10300」以降のデバイスにサンプルコメントが割付き、各々のチャンネルで各デバイスがどのような扱いになるかのヒントがコメントとして割りつきました。KV-AD40のアナログ入力ユニットで先頭DM番号を「D10300」としたときのスケーリングデータをPLCラダー内で使用する場合は、各々ch0では「D10301」、ch1では「D10306」、ch2では「D10311」、ch3では「D10316」を使用することと決まりました。
また、使用予定デバイスのサンプルコメントには「(アナログ入力値)」というコメントを付加しています。
では、実際にPLCラダーの作成をしていきます。接点やコイルの記述方法はPLCプログラム〜ラダー図の基本〜に詳細を説明していますのでそちらを参照してください。ここでは画像による説明に留めます。まず「X3400,a接点」を記述します。これが後のch0におけるアナログデータ取込みの起点となります。
「X3400,a接点」の隣にカーソルをもっていき、「Enter」キーを押すと以下の画面内のような「命令値/マクロ/パックパレット」というダイアログボックスが出ます。
スクロールバーを操作し、「MOV」という命令を選択します。この「MOV」の命令はデータ転送命令といい取込んだデータを別のデバイスに格納するという動きをします。
さらに同じダイアログボックス内の「S」と「D」に値を入力しますが、今回はS;「D10301」,D;「D1000」と設定します。
「上書き」を押すとこれで「MOV命令」が完成します。
このラダーの一文を日本語にすると以下のとおりです。
【「X3400,a接点」が導通したらアナログ入力ユニットのch0でスケーリングした「D10301」の数値を「D1000」に格納しなさい】
次に一行下に「X3402,a接点」でch2のスケーリングデータを「D1004」に格納する一文を書込みます。以下の画像を参照してください。ただし次では「MOV命令」の直接入力を使用しています。直接入力はこの場合、適切なカーソルの位置から「MOV」と打ち込むことで開始でき「Enter」キーで完了できます。打ち込む内容は「mov␣d10311␣d1004」です。
数値データを取込んだのみでは何の活用もできません。ですのでここでは、仮にセンサーなどからアナログ信号が入力された場合に「500」を設定値として判定をする命令を記述してみます。ch0では「500以上」のデータが書込まれたら、ch2では「500未満」のデータが書込まれたら各々「Y3500」と「Y3502」を出力するように記述します。要領はこれまでと全く同じです。「Enter」キーで始まる記述方法や直接入力があります。直接入力は「>=」や「<」から書き始めます。これを比較演算命令といい、比較条件を満たすと導通し満たしていないと遮断します。また「500」などの定数を記述する場合は「K500」と記述し、これは十進法の「500」という意味です。
以下ch0に関して「Enter」キーで始める「命令値/マクロ/パックパレット」を使用した記述方法で書込んでいきます。
今、書込んだ命令のことを「比較演算命令」といいます。設定した「500」という値に対して以上なのか未満なのかを判定しラダー上で導通か非導通の動きを決定します。この演算命令の左側に出力として受取る「Y3500」のコイルを書込みます。「Y」のコメントがまだでしたらここでコメントを付加してください。
以下、直接入力による記述方法でch2に関する比較演算命令を書込んでいきます。記述方法としては記述したい位置にカーソルを合わせて「<␣d1004␣k500」を直接打込む形になります。
ここでは設定した「500」という値に対して以下なのか超えてくるのかを判定しラダー上で導通か非導通の動きを決定します。この演算命令の左側に出力として受取る「Y3502」のコイルを書込みます。
作成したPLCラダーは必ず上書保存しておきます。
c.シミュレーション
ここでは先ほどつくったPLCラダーが正しく動作するかをシミュレーションします。
あたかもセンサーからデータを受取ったかのように、またあたかもスイッチ入力があったかのように操作し、PLCラダーが正しく動作するかを確認します。シミュレーターの起動方法もPLCプログラム〜ラダー図の基本〜に記載していますので参照してください。「RUN」をかけるのをお忘れなく。
ではシミュレーターを起動します。
起動の時点ですでに「Y3502」が出力しています。これは、「D1004」が「0」であり「500」未満であるため比較条件がすでに満たされていることが理由となります。
この状態でカーソルを「MOV命令」の「D10301」へもっていき、右クリックします。次に「デバイス値変更(D)」を選択します。
「デバイス値変更」のウィンドウが出ますので、「D10301」の現在値を「500」に書換えます。これであたかもセンサー等から「500」という値に相当する「1-5[V]」のアナログ入力があったかのように振舞わせることになります。
「Enter」キーで「D10301」に数値が書込まれ疑似的にアナログデータを受取った形になります。
この状態で「X3400,a接点」をダブルクリックすると「MOV命令」が実行され「D1000」に「500」が転送されます。そして比較演算処理が行われます。
【「D1000」が「500」以上で出力】ですので結果、「Y3500」が出力されます。もちろん「X3400」の導通を遮断しても「D1000」の「500」が書換わるわけではありませんので出力状態は保持されます。
続いて「D10311」にカーソルをもっていき「デバイス値変更(D)」で先ほどと同じ要領で今度は分かりやすさのために「501」を書込んでみます(「500」でも結果は同じです)。
また、いくつものデバイスの値を変更する場合は「登録モニタウィンドウ(R)」や「一括モニタウィンドウ(A)」が使用できますがここでは「デバイス値変更(D)」を使用していきます。
ここで試しに「X3400,a接点」や「X3402,a接点」のビットを反転させてみます。しかし、出力に変化はありません。これは、「D1000」や「D1004」に「MOV」された数値が残留しているからです。
「デバイス値変更(D)」で数値を変更し再度ビットを反転(OFF→ON)させることで「MOV命令」を実行すると、その数値に応じ出力が変化することを確認してみてください。
2)GX Worksでアナログ入力
GX Worksでのアナログ入力処理方法を以下に記載します。今回のモデルはQtypeのPLCで三菱電機製PLCではCPUに応じ細かく使用できるユニットがわかれています。アナログ入力ユニットにはスケーリング等の機能が使いやすく(インテリジェント機能が使用可能)汎用性の高い「Q64ADH」を例に説明します。
説明画像はクリックやタップで拡大可能です。そのままでは分かりづらいと思いますので適宜拡大してご覧ください。
まずはQCPUのモードでGX Worksを立上げます。
a.PCパラメーター設定(アナログ入力ユニット設定)
立上げ直後の画面の左側ツリーで「パラメータ」をダブルクリックします。
展開したツリーでさらに「PCパラメータ」をダブルクリックすることで「Qパラメータ設定」のウィンドウが開きますのでさらにボックス内「I/O割付設定」をクリックします。
開いた画面上でユニットの追加や削除などの編集を行います。KV STUDIOでいう「ユニットエディタ」と同じです。今回はKVのときと同じように入出力ユニットを一つずつとアナログ入力ユニットをもう一つ追加していきます。ちなみに先頭番号は原則的に自分で割付ける必要があります。画像を参考にしてください。
「Q64ADH」はそのままではユニット種別のプルダウンメニュー内に出てきませんので「ユニット追加」をします。カーソルを「№3」の「スロット2(*-2)」の段に合わせて「ユニット追加」を押します。
さらに開く「ユニット追加」のウィンドウ内でプルダウンから「アナログユニット」と「Q64ADH」を選択し「OK」を押して決定します。そして問題なければ設定完了でI/O割付を完了します。
b.インテリジェント機能ユニットによる入力設定
次に「インテリジェント機能ユニット」での設定をします。
画面左側のツリー上にある「インテリジェント機能ユニット」の直下「Q64ADH」をダブルクリックします。すると「スイッチ設定」「パラメータ」「自動リフレッシュ」というメニューが展開します。
「スイッチ設定」をダブルクリックするとダイアログボックスが開き入力の種別を選択することができます。
この中での入力レンジ設定のデフォルトは「4~20[mA]」に設定されていますので、結線に合わせてch0を「1~5[V]」ch3をデフォルトのままの「4~20[mA]」に設定します。
設定はここでもプルダウンメニューから選択します。
続いて「パラメータ」の設定をします。ここではユニット型式により様々な設定が可能となるところです。その中で即時必要になる部分を説明します。
画面左側のツリー上で先ほどの「スイッチ設定」の下にある「パラメータ」をダブルクリックするとパラメーター設定画面が新しいタブで開きます。
今回はここでチャンネルの使用をするかしないかとスケーリング設定を行います。
以下の画像のように選択し、数値を記入するだけの簡単な設定になります。画像はch1から順番に「A/D変換許可/禁止設定」「スケーリング有効/無効設定」「スケーリング上限値」「スケーリング下限値」をしています。
ここではch1において入力レンジ;「1~5[V]」,スケーリング上限;「1000」,スケーリング下限「0」として、ch3において入力レンジ;「4~20[mA]」,スケーリング上限;「1000」,スケーリング下限「0」として設定しています。またch2とch4は使用しないので特に設定はしていません。あえて言うと、使用しないチャンネルでは「変換許可/禁止設定」を「禁止」にしておくと処理速度の向上が図れます。
ここでの設定には登録完了などのボタンはありません。
続いては「自動リフレッシュ」設定です。これまでと同じく左側ツリー上の「自動リフレッシュ」をダブルクリックするとまた新しいタブで画面が開きます。
ここではこの「Q64ADH」などを含むインテリジェント機能ユニットからの、どのようなデータをどのように格納するかなどの設定を行います。今回はユニットで取込んだデータの、スケーリング後のデータとなる「ディジタル演算値」のみを設定します。以下画像を参照してください。
c.PLCラダー作成(アナログ入力データの演算/取得)
PLCラダーの作成をします。
やはり、接点やコイルの基本的な記述はPLCプログラム〜ラダー図の基本〜を参照してください。以下では「MOV命令」や「比較演算命令」についての記述を中心に説明していきます。
これまでと同様、決まっているコメントの割当てを行います。画面左側のツリー上の「プログラム部品」直下「ローカルデバイスコメント」のさらに直下の「MAIN」をダブルクリックしてコメント編集画面を開きコメントを付与していきます。
三菱電機製の入力ユニットや出力ユニットにはその動作を許可するための「ユニットReady」という概念があることに注意してください。今回は入力ユニットであり、「先頭XY」ナンバーが「0020」と割振っていますので「X20」が「ユニットReady」となります。
割当てたコメントがPLCラダー上で表示されるように設定しておきます。
PLCラダーを作成していきます。「Shift」キー+「Ins」キーで追加行をつくりながら記述していきます。
先ず「X20,a接点」で「ユニットReady」、その右隣に「X1,a接点」を記述し、その出力としてch1のデータの「MOV命令」を記述します。「MOV命令」の記述については「F8」キーで応用命令入力操作を呼出し、デバイス種類とデバイスナンバーを入力し「Enter」キーで決定します。「mov1␣d10001␣d1001」のように記述してください。
意味は【「(パラメーター設定でスケーリング済の)D10001」にあるデータを「D1001」に転送しなさい】となります。
「X3,a接点」を「X1,a接点」の並列になるように記述します。その出力としてch3の「MOV命令」を記述します。
続いて、先述のKV STUDIOのときと同様に取込んだ数値を比較演算処理します。条件もKV STUDIOのときと同じ条件にします。
念のためねらいを説明します。
仮にセンサーなどからアナログ信号が入力された場合に「500」を設定値として判定をする命令を記述してみます。ch1では「500以上」のデータが書込まれたら、ch3では「500未満」のデータが書込まれたら各々「Y11」と「Y13」を出力するように記述します。
記述方法としてはここでも「F8」キーを押下して応用命令記述を呼び出します。その後は下の画像にあるように、比較演算子とオペランド入力をします。
以下、画像中心での説明といたしますので同じように記述してみてください。
「F4」キーで変換(コンパイル)をします。
作成したPLCラダーを保存しておきます。
「アナログ入力」というプロジェクト名をつけて任意のフォルダに保存しました。
d.シミュレーション
作成したPLCラダーが正しく動作するかをシミュレーションします。
画面上部のメニューから「デバッグ」のメニューを開き「シミュレーション開始/停止」をクリックし、シミュレーターを開きます。
ここでも先述のKV STUDIOの時と同様、すでに「Y13」は出力されています。理由としては「D10005」と連動のバッファとなる「D1005」に「0」が入力されていることに起因します。
先ずは、実機の「Q64ADH」があれば勝手に入力される「X20」を疑似的にONにします。カーソルを「X20」にあわせ右クリックを押下し、開いたメニューのうち「デバッグ(G)」にポインターを合わせると「現在値変更(M)」が選択可能となりますので、これをクリックします。
開いたウィンドウ内の「ON/OFF反転」をクリックすると「X20」がONします。
「D10001」の「MOV命令」をクリックします。
「現在値変更」のウィンドウ内のデバイスナンバーが「D10001」となり、可能な操作の内容も変化しています。
ウィンドウ内の「値」を変更します。「500」を書込みます。
「設定」を押すか「Enter」キーで決定します。「D10001」の値が「0」から「500」になり、あたかもセンサー等からアナログデータを受取りスケーリングされ格納されたかのような状態になりました。
カーソルを「X1,a接点」にもっていきビットの反転操作をして「MOV命令」を実行します。すると、比較演算処理の結果「Y10」が出力します。
次にカーソルを「D10005」の「MOV命令」にもっていき「値」に今度は分かりやすさのため「501」を書込みます(「500」でも結果は同じです)。
さらにカーソルを「X3,a接点」にもっていき、ビット反転をすると比較演算処理の結果、「Y13」の出力が断たれます。
現在導通している「X1」や「X3」を反転させ、非導通にしても「D1001」や「D1005」のデータが書換わらない限り出力状態に変化はありません。これは、「D1001」や「D1005」に「MOV」された数値が残留しているからです。
「値」を変更し、再度ビットを反転(OFF→ON)させることで「MOV命令」を実行すると、その数値に応じ出力が変化することを確認してみてください。
カーボンの美しさと堅牢性!
使いやすさで有名なThinkPad
4.アナログデータの使いこなし
以上、PLCに対する数値の取込み方法と代表的な活用方法について説明しました。これによりPLCの利便性は飛躍的に向上します。今回は内部的に設定値を決めましたが、ロータリスイッチ等でBCD入力のように数値を入力することで外部からしきい値を自由に変更でき、さらに利用範囲が広がります。
また、今回はGX Worksにおいてはインテリジェント機能ユニットを使用した方法を記載しましたが、この機能に非対応の型式では、スケーリングはラダー上で行います。その方法としては「To/From命令」とよばれる命令でバッファメモリ内から値を取出し、予めスケーリングのために設定していた2point(4データ)以上の基準データを利用したスケーリング命令「SCL」で設定します。
是非ここからアナログの扱いにも慣れていき、広く活用していきましょう。
アナログ入力があるならアナログ出力もありますよね。ということで以下ではアナログ出力の方法について記事をまとめました。
シーケンス制御を効率よく学びたい方へ、筆者も実践した方法を記事にまとめました。時間的コストと金銭的コストのバランスが非常に良い方法であることを説明しています。以下からどうぞ。