「ソフテックだより」では、ソフトウェア開発に関する情報や開発現場における社員の取り組みなどを定期的にお知らせしています。
さまざまなテーマを取り上げていますので、他のソフテックだよりも、ぜひご覧下さい。
ソフテックだより(発行日順)のページへ
ソフテックだより 技術レポート(技術分野別)のページへ
ソフテックだより 現場の声(シーン別)のページへ
ソフテックだより第355号及び第359号の技術レポートで「Rockwell Automation社製Allen Bradley PLCについて」をテーマに、CPU選定の仕方や注意点、Ethernet/IPの使い方などをご紹介いたしました。
今回は第3弾として、Rockwell Automation(ロックウェル・オートメーション)社製Allen Bradley(アレン・ブラッドリー) PLC(以下、AB-PLC)のプログラミングの仕方に焦点をあてて、いくつかご紹介したいと思います。今回も、主に三菱電機社製シーケンサのMELSEC-QシリーズPLC(以降、三菱PLC)と比較して、その事例をいくつかご紹介したいと思います。
なお、使用するプログラミングツールはStudio5000 Logix Designer Version31.00.00 - Standard Editionとします。
三菱PLCでは、接点や比較命令以外のほとんどの命令は直列に配置する事ができず、複数必要な場合は並列に配置する必要があります。
その為、命令が多数ある場合、縦に長い回路となってしまいます。
AB-PLCの場合は、下図(図1)の通り、直列に配置する事が可能で、Output命令の後ろにさらに接点を配置する事もできます。
関連する命令を直列でひとまとめにする事で、より可読性の高いプログラムを組む事ができます。
図1. 命令の直列配置例
三菱PLCにてデバイスのブロック転送を行う場合は、BMOV命令を使用します。
例えば、「BMOV D10 D11 K3」という命令を実行した際のデバイス値の結果は、下図(図2)の通りとなります。
図2. BMOV命令の実行結果
AB-PLCの場合、配列タグのブロック転送を行う場合はCOP命令を使用します。
転送元と転送先のタグが重複していなければ、三菱PLCのBMOV命令と同様の結果となりますが、転送元のタグ配列が転送先のタグ配列より前で重複する場合は結果が異なりますので注意が必要です。
例えば、下図(図3)の回路でDI_TEST[10]からDI_TEST[11]へタグ値を3つ転送したとします。
図3. COP命令回路1
この場合、COP命令だとまずDI_TEST[10]からDI_TEST[11]へ転送、次にDI_TEST[11]からDI_TEST[12]へ転送、次に次I_TEST[12]からDI_TEST[13]へ転送と、順次処理している様で、結果としてタグ値は下図(図4)の通りとなります。
図4. COP命令回路1の実行結果
転送元と転送先のタグが重複していても、三菱PLCのBMOV命令と同じ動きをさせたい場合は、中継用のタグを経由させる事で同じ動きをさせる事が出来ます。
使用例を下図(図5)に示します。
図5. 中継用のタグを経由させたCOP命令回路
なお、下図(図6)の様に転送元のタグ配列が転送先のタグ配列より後で重複する場合は、三菱PLCのBMOV命令と同じ結果となります。
図6. COP命令回路2
図7. COP命令回路2の実行結果
AB-PLCで繰り返し処理を行う場合、三菱PLCのFor〜Next命令とは少し違った使い方となっています。
繰り返し処理を行う為には、繰り返し処理のプログラムを入れるサブルーチンと、そのサブルーチンが実行された回数をカウントするDINT型のタグが必要となります。
下図(図8)の例では、サブルーチン「SR_LOOP1」の処理を、DINT型のタグ「Z001」が0から1ずつ増加させ、5になるまで繰り返します。
図8. FOR命令回路の使用例
なお、DINT型のタグは、三菱PLCのインデックスレジスタの様な使い方が出来ます。
その為、FOR命令のINDEXで使用するタグを、サブルーチン側で活用できます。
図9. タグのインデックス使用例
AB-PLCには、加算を行うADD命令や減算を行うSUB命令等の基本的な計算/算術命令の他に、複雑な式を一つの命令で実行できるCPT命令があります。
CPT命令は、他の計算/算術命令よりも処理に時間が掛かり、メモリも余計に使用するデメリットもありますが、演算の途中結果を入れるタグを用意する必要が無く、プログラミングミスを防ぐ事ができるというメリットもあります。
下図(図10)の例では、R_VALUE1に5を乗算し、その結果を8で除算したR_VALUE2の結果で除算し、最終結果をR_RESULTに格納します。
図10. CPT命令使用例
CPT命令で使用できる演算子は以下の通りです。
表1. CPT命令で使用できる演算子
演算子 | 説明 |
---|---|
+ | 加算 |
- | 減算/否定 |
* | 乗算 |
/ | 除算 |
** | 指数(xのy乗) |
AND | ビットワイズ論理積 |
OR | ビットワイズ論理和 |
NOT | ビットワイズ論理補数 |
XOR | ビットワイズ排他的論理和 |
ACS | アークコサイン |
ASN | アークサイン |
ATN | アークタンジェント |
ABS | 絶対値 |
COS | コサイン |
DEG | ラジアンから角度 |
FRD | BCDを整数に変換 |
LN | ナチュラル ログ |
LOG | ログ ベース 10 |
RAD | 角度からラジアン |
SIN | サイン |
SQR | 平方根 |
TAN | タンジェント |
TOD | 整数をBCDに変換 |
TRN | トランケート |
MOD | モジュロ演算(除算) |
三菱PLCのRUN中書き込みと同様に、AB-PLCもRUN中のPLCに対してオンライン編集でプログラムの変更をする事が出来ます。
三菱PLCの場合、RUN中書き込みではデバイスコメントの書き込みは行われず、PLC内に書き込む為には、別途PLC書き込みを行う必要があります。
また、複数人で同じプロジェクトをRUN中書き込みする場合、自分が行った変更が、その他の人のプロジェクトにすぐ反映されない為、後でマージする等の作業が発生してしまいます。
AB-PLCのオンライン編集は、三菱PLCと違って、タグコメントは編集して決定後すぐにPLCに書き込まれます。
複数人で同時にオンライン編集する場合でも、自分が変更したタグコメントが、その他の人のプロジェクトにすぐ反映されます。
プログラムも同様に、オンライン編集で自分が変更したプログラムが、その他の人のプロジェクトにすぐ反映されます。
あとでコメントをマージする等の作業が不要になり、とても便利です。
タグの編集についてですが、オンライン中でも追加を行う事が出来ますし、プログラム内で使用していなければ変更や削除を行う事もできます。
オンライン中でも自由に編集できる反面、1タグ毎の編集しか行えず、複数のタグコメントをExcelから一括で貼り付けるといった事は出来ません。
なお、1タグ毎の編集しか行えないのはオフラインであっても同様です。
大量にタグの編集を行う場合には、Logix Designerの「Tools」−「Export」−「Tag and Logic Comments」で、タグ設定 を一度CSVファイルに書き出す必要があります。
そのCSVファイルをExcel等で編集した後は、Logix Designerの「Tools」−「Import」−「Tag and Logic Comments」でオフライン時のみプロジェクト内へ読み込む事ができます。
三菱PLCの場合、デバイスコメントは1点につき最大32文字までとなっていますが、AB-PLCのタグコメントは1点につき最大128文字まで設定する事が可能です。
コメントを英語にしなければならない場合、日本語に比べると文字数が多くなってしまいますので、AB-PLCの方が向いていると言えます。
タグコメントをラダー上で表示した際にも、最大20行まで表示され、内容によって下図(図11)の通り命令や接点の位置が自動で調整されます。
図11. 様々なタグコメントの回路
今回はRockwell Automation社製Allen Bradley PLCついて、プログラミングの仕方に焦点を当てて紹介させて頂きました。
第一弾はAB-PLCの注意点が多くなってしまいましたが、三菱PLCより扱いやすい点もある事がご理解頂けたと思います。
いままでご紹介した項目の他にも、さらにいくつかご紹介したい項目がありますので、また別の機会にご紹介したいと思います。
本稿が少しでも皆様のお役に立てていただければ幸いです。
(T.T.)
関連ページへのリンク
関連するソフテックだより