「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
第217号(2014年9月3日発行)技術レポート「各社PLC比較 〜プログラミングツール編〜」では、PLCメーカー各社のプログラミングツールを取り上げ、基本的な機能の違いについて紹介しました。
同じラダー言語を扱うプログラミングツールにも関わらず、メーカーによって異なる点が多いことに驚かれた方もいるのではないでしょうか。
本技術レポートでは、各社PLC比較シリーズの続編として、PLCを扱う上で重要な知識であるラダー命令の仕様について比較します。
プログラミングツール同様、ラダー命令の仕様も各PLCメーカーで独自に発展してきました。
IEC 61131-3(※1)という国際規格でPLCプログラミング仕様の標準化が推進されており、今回取り上げるラダー命令についてもLD(Ladder Diagram)(※2) という言語で定義されていますが、日本国内にはまだ浸透していない状況です。
本技術レポートで各PLCメーカーの違いを取り上げることで、PLCプログラミングをこれから始める方、複数メーカーのPLC技術習得を目指す方のお役に立てればと考えています。
なお、本レポートでは、各社PLC、プログラミングツールは表1を前提として比較を行っています。
また、使用する言語はラダー言語を想定しております。
メーカー | PLCシリーズ | プログラミングツール |
---|---|---|
三菱電機 | MELSEC Qシリーズ | GX Works2 |
横河電機 | FA-M3シリーズ | WideField3 R3.02 |
キーエンス | KVシリーズ | KV Studio Ver.7 |
オムロン | SYSMAC CS/CJシリーズ | CX-Programmer Ver.9 |
表1.比較を行うPLCシリーズとプログラミングツール
ラダー命令とは、ラダー言語で記述されたプログラムの最小単位の要素となります。
図1にラダープログラムの例を示します。
ラダープログラムには様々な記号が登場しますが、接点(図中①)、コイル(図中②)、応用命令(図中③)など、1つ1つがラダー命令です。
図1.ラダープログラムの例
図1のラダー回路の中の6ステップ目(赤枠箇所)に位置するFMOV命令に着目します。
三菱電機PLCのFMOV命令は、単一のデータを連続する複数領域に転送するという仕様です。
図1のラダー回路の例では、内部レジスタD10から3ワードの領域を0で埋めるという動作をします。
三菱電機PLCのFMOV命令と、同等の動作を行う横河電機PLCの命令は、BSET命令という名前となります。
図2.横河電機PLCのBSET命令
これらの命令は、名称は異なるものの、オペランド(※3)の数を含めて動作仕様は同一となっています。
オムロンPLCの場合、転送領域の指定方法が違うなど動作仕様まで変わってきます。
ラダー命令は、各社それぞれ数百の種類が存在しますが、基本的なシーケンス命令を除いて同一仕様のものは極めて少ないです。
そのため、新たなPLCメーカーでラダー製作を行う場合には、「○○社でいう△△命令はどれにあたるのだろう?」、「似たような命令だが同じ使い方で大丈夫か?」という疑問が生まれ、マニュアルを読みしっかりと理解してから使用することが重要となります。
次章より、頻繁に使用する命令を取り上げ、違いについてまとめていきます。
ラダー命令の中で基本的な命令群であるシーケンス命令について、各メーカーで比較します。
シーケンス命令は接点、コイルといったシーケンス制御における基本的な命令の分類名のことで、各PLCメーカーで必ず実装されているものです。
比較結果を表2に示します。
表2の「ラダー記号」列に示す図は、三菱電機PLCのマニュアルから抜粋しましたが、その他のPLCメーカーでも同じ記号で表現されています。
各シーケンス命令の記号をベースとし、各PLCメーカーで実装の有無、名称、命令表記の違いをまとめています。
シーケンス命令の中でも頻繁に用いられる命令は、命令名称に違いがあるものの各PLCメーカーで同一仕様となっていますので、初めて扱うPLCメーカーであっても比較的スムーズに移行することが可能です。
異なる点を挙げると以下の通りです。
横河電機PLCの立上り微分ロード命令、立下り微分ロード命令は、直列、並列で接続される場合に、複数の命令がセットになります。
微分命令とは、ラダー記号の入力条件の立上り、立下りを検出して1スキャンのみ導通する命令のことをいいます。
例えば、三菱電機PLCの場合には、母線に接続される立上り微分命令はLDP、他の命令に直列接続されるものはANDP、並列接続されるものはORPと、それぞれ異なる命令が用意されています。
これに対して横河電機PLCは、立上り微分命令は全てLDUで統一されており、直列接続の場合にANDLD、並列接続の場合にORLDというラダー回路上見えない命令とセットになります。この仕組みで他社と同一の機能を実現しています。
LDP、ANDPといった記号はニモニックと呼ばれ、ラダー記号をPLC内部で扱うための識別子です。表 2では「命令表記」列に記載しています。
ユーザはラダー記号でプログラムを組んでいくため、通常このニモニックを気にする必要はありませんが、ラダー記号がPLC内部でどのように展開されているかに着目することで、横河PLCの立上り微分系命令が三菱電機PLCのものよりもステップ数が多い理由が見えてきます。
ラダー |
三菱電機 | 横河電機 | キーエンス | オムロン | ||||
---|---|---|---|---|---|---|---|---|
名称 |
命令 表記 |
名称 |
命令 表記 |
名称 |
命令 表記 |
名称 |
命令 表記 |
|
論理演算開始 | LD | ロード | LD | ロード | LD | ロード | LD | |
論理演算 | LDI | ロードノット | LDN | ロードバー | LDB | ロード・ノット | LD NOT | |
論理積 | AND | アンド | AND | アンド | AND | アンド | AND | |
論理積否定 | ANI | アンドノット | ANDN | アンドバー | ANDB | アンド・ノット | AND NOT | |
論理和 | OR | オア | OR | オア | OR | オア | OR | |
論理和否定 | ORI | オアノット | ORN | オアバー | ORB | オア・ノット | OR NOT | |
立上りパルス演算開始 | LDP | 立上り微分ロード | LDU | ロードパルス | - | - | - | |
立下りパルス演算開始 | LDF | 立下り微分ロード | LDD | ロードパルフ | - | - | - | |
立上りパルス直列接続 | ANDP | 立上り微分ロード(直列) | LDU ANDLD | ロードパルス | - | - | - | |
立下りパルス直列接続 | ANDF | 立下り微分ロード(直列) | LDD ANDLD | アンドパルフ | - | - | - | |
立上りパルス並列接続 | ORP | 立上り微分ロード(並列) | LDU ORLD | オアパルス | - | - | - | |
立下りパルス並列接続 | ORF | 立下り微分ロード(並列) | LDD ORLD | オアパルフ | - | - | - | |
デバイスの出力 | OUT | アウト | OUT | アウト | OUT | 出力 | OUT | |
- | デバイスのセット | SET | セット | SET | セット | SET | セット | SET |
- | デバイスのリセット | RST | リセット | RST | リセット | RES | リセット | RSET |
- | 入力信号の立上り時にプログラム1週分のパルスを発生する。 | PLS | 立上り微分 | DIFU | ディフアップ | DIFU | 立上り微分 | DIFU |
- | 入力信号の立下り時にプログラム1週分のパルスを発生する。 | PLF | 立下り微分 | DIFD | ディフダウン | DIFD | 立下り微分 | DIFD |
表2.シーケンス命令比較
上で説明した三菱電機PLCでいう同一16ビットデータブロック転送(FMOV)命令を含む、頻繁に使用する命令をいくつか取り上げ、各社で比較します。
三菱電機 | 横河電機 | キーエンス | オムロン | ||||
---|---|---|---|---|---|---|---|
名称 |
命令表記 | 名称 |
命令表記 | 名称 |
命令表記 | 名称 |
命令表記 |
同一16ビットデータブロック転送 | FMOV s d n | 同一データ転送 | BSET s d n | フィルムーブ | FMOV s d n | ブロック設定 | BSET s d1 d2 |
ブロック転送 | BMOV s d n | ブロック転送 | BMOV s d n | ブロックムーブ | BMOV s d n | ブロック転送 | XFER w s d |
繰り返し | FOR n NEXT |
繰り返し先頭/繰り返し終了 | FOR d s1 s2 NEXT |
フォー/ネクスト | FOR n NEXT |
繰り返し開始/終了 | FOR n NEXT |
表3.応用命令比較
メーカー | 命令表記 | 解説 |
---|---|---|
三菱電機 | FMOV s d n | d から n 点分の領域を s で埋める。 |
横河電機 | BSET s d n | d から n 点分の領域を s で埋める。 |
キーエンス | FMOV s d n | d から n 点分の領域を s で埋める。 |
オムロン | BSET s d1 d2 | d1 から d2 までの領域(チャネル)を s で埋める。 |
表4.同一データ転送命令比較
命令の名称は三菱とキーエンスでFMOV、横河電機とオムロンでBSETとなっています。
オムロンPLCのみオペランド(※3)の意味が異なっています。他はすべて転送先の先頭アドレスと転送点数を指定するのに対し、オムロンPLCは転送先アドレス(チャネル)の先頭と末尾を指定します。
メーカー | 命令表記 | 解説 |
---|---|---|
三菱電機 | BMOV s d n | s で指定されたデバイスから n ワード(点)分を dを先頭にした領域に転送する。 |
横河電機 | BMOV s d n | s で指定されたデバイスから n ワード(点)分を dを先頭にした領域に転送する。 |
キーエンス | BMOV s d n | s で指定されたデバイスから n ワード(点)分を dを先頭にした領域に転送する。 |
オムロン | XFER w s d | s で指定されたチャネルから w チャネル数分を dを先頭にした領域(チャネル)に転送する。 |
表5.ブロック転送命令比較
オムロンPLCでオペランド(※3)の並びに違いがあるものの、命令の仕様は取り上げた全てのPLCで同一となっています。
1ワード転送するMOV命令に次いで、転送命令の中では頻繁に使用する命令です。
これは初めて扱うメーカーでも迷うことなく使用することができると思います。
メーカー | 命令表記 | 解説 |
---|---|---|
三菱電機 | FOR n NEXT |
FOR 〜 NEXT間をn回実行する。 |
横河電機 | FOR d s1 s2 NEXT |
dで指定したデバイスをカウンタとして、カウンタがs1からs2になるまで実行する。 |
キーエンス | FOR n NEXT |
FOR 〜 NEXT間をn回実行する。 |
オムロン | FOR n NEXT |
FOR 〜 NEXT間をn回実行する。 |
表6.繰り返し命令比較
横河電機PLCのみFOR〜NEXT命令の仕様は、C言語に似たものとなっています。
それ以外の三社は共通して指定回数繰返し実行するというシンプルな仕様となっています。
本レポートでは、各社PLCのラダー命令を比較し違いをまとめてみました。
プログラミングツール同様、ラダー命令についても各社で異なっており、記述方法が全く同一でも命令の動作が微妙に異なっていたり、同じ動作にも関わらず記述方法が異なっていたりということが多々あります。
実際に初めて使用する命令については、マニュアルをしっかり理解した上で使用することが重要であると言えます。
今後、引き続きラダープログラムを製作するにあたり注意点など紹介できればと考えております。
(M.S.)
関連ページへのリンク
関連するソフテックだより