オムロンタッチパネルNSでのDMインデックス設定

タッチパネルで品種ごとのレシピ設定を行うときに、品種が200個あれば200ページの画面を作らず、1ページで書込表示データメモリのインデックスを切り替えて対応することが多い。

したがって各社タッチパネルにデータメモリのインデックス設定がある。

  • キーエンスタッチパネルVTでは間接参照
  • 三菱タッチパネルGOTではオフセット
  • シュナイダー(旧デジタル)GPでは演算用ワードアドレス
  • 富士電機(発紘電機)Vではオフセット

上記タッチパネルはプログラムレスでインデックス設定が実現できる。

しかしながらオムロンタッチパネルNSは、上記メーカーのようなインデックス設定がない。

ただオムロンタッチパネルNSでも書込表示データメモリのインデックスを切り替える方法があるので、今回紹介したい。

オムロンタッチパネルNSは、CX Designerとよばれるアプリを使用して作成する。
※CX Oneをインストールすればインストールされているが、最新版にアップデートしておくとよい。

数値表示&入力部品をダブルクリックし、インデックス修飾したい通信アドレス(例ではEM10000)の後ろにi0~i9(例ではi0)を加えるとインデックス修飾したことになる。

このi0~i9はタッチパネル内の変数である$SW27~$SW36に該当しており、$SW27~$SW36にインデックス番号を格納すると、書込表示データメモリのインデックスが切り替わる。

ただし、インデックス番号はBCD形式で格納しないといけない。

インデックス番号をPLCデバイスと紐づけするにはNSマクロと呼ばれるプログラムをCX Designerで書かないといけない。
今回は品種編集ボタンを押したときPLCデバイスDM10126(PLCラダー内でBCDに変換済み)からインデックス番号を取得し$SW27に書き込む例を示す。

ボタンをダブルクリックし、「マクロ」タブのマクロ実行条件でタッチON時のマクロ編集を行う。ここで書いたプログラムのREADCMEM($SW27,[SERIALA:DM10126],1);というのは、
DM10126の値を$SW27に読み込んでいる意味である。

文字列表示&入力部品でも同様に設定可能だ。

オムロンCJ2でのシリアル通信

オムロンPLC CJ2ではPLC本体あるいはCJ1W-SCU**のシリアル通信ユニットで温調器などとシリアル通信するが、基本的には無手順のときはTXD(U)命令(=送信)、RXD(U)命令(=受信)を使用してシリアル通信を行う。

しかしながらキーエンスPLCのプロトコルスタジオのようにプログラムレスで送受信データの組み立てや切り分けを行いたい。

そこでオムロンにもプロトコルマクロと呼ばれる機能があるので今回紹介する。
ただし、細かい設定はここでは触れない。
※細かい設定はオムロンFAサイトから「CX-Protocol Ver. 2.0 オペレーションマニュアル」をダウンロードし3-5章を参照されたい。

まずプロトコルマクロの送受信データ定義はCX-Protocolと呼ばれるアプリを使用する。
※CX Oneをインストールすればインストールされているが、最新版にアップデートしておくとよい。

ここでシーケンスを新規作成する。今回の例では送信メッセージE5Z_read、受信メッセージE5Z_recvを定義しており、リピートカウンタに8を指定することで、1シーケンス実行時に8回送受信を行う定義にしている。

送信メッセージE5Z_readの定義である。
ヘッダやターミネータもプログラムレスで設定できる。
またラダーで書くと大変手間のかかるチェックコードもプログラムレスで設定できるのがありがたい。
アドレスのR(1)は後で述べるPMCR命令のパラメータ指定送信データメモリ+1ワードのデータを表している。

受信メッセージE5Z_recvの定義である。
データのW(2N+1)はPMCR命令のパラメータ指定受信データメモリ+(2N+1)ワードのデータを表している。
Nは上記で紹介したシーケンス定義のリピートカウンタ数である。
送受信を最大8回繰り返すたびに値が変化する。

この定義をCX-ProtocolでPLCへ転送する。
またCJ1W-SCU**のシリアル通信モードをプロトコルマクロにしておく。

ラダーではPMCR命令を書くだけである。
例では定義したシーケンスNo.0を実行している。
送信データD700に送信データCH数、D701~送信データを格納する。
受信データD800に受信データCH数が格納され、D801~受信データ本体が格納される。

IAIのSEL言語

IAIロボシリンダのPCON,SCONやRCONはPLCからCC-LINKやETHERNET/IPで
割り当てられた信号やデータを読み書きすれば制御できるが、
ASELシリーズはいくらPLCから指令しても、
内部にSEL言語でプログラムを組まないと動作しない。

以下SEL言語のプログラム例だ。
※PPUT(位置データ設定)は、No.199箱から読み出す。
 INBはNo.99箱へ読み出す。

No. B E N Cnd Cmnd Operand1 Operand2 Pst Comment
1 TAG 1 Main
2 TAG 2 動作開始動作
3 INB 64 8 (移動量 0.1mm)
4 LET 199 *99
5 DIV 199 10
6 PPUT 1 1 目標位置設定
7 INB 96 8 (速度 1mm/sec)
8 LET 1 *99
9 PVEL *1 1 移動速度設定
10 BTOF 302 位置決め完了OFF
11 MOVL 1 ポジション1 動作開始
12 BTON 302 位置決め完了ON
13 GOTO 1 Mainへ戻る
14 EXIT

オムロンCJ2でサーボ同期

オムロンでよく使うサーボアンプはR88D-KN20H-ECTといったEthercat G5シリーズだ。

今回はCJ2HのCJ1W-NC482でのサーボ制御を紹介する。

なお、サーボの同期制御はCJ2HのCJ1W-NC482でしかできない。※CJ1W-NC481ではサーボ制御はできるが、同期制御はできない。

三菱やキーエンスPLCと違い、オムロンPLCはバッファアドレスでサーボ制御をするのではなく、Wデバイスのチャンネル番号を指定することにより、制御するリレーやメモリが割り当てられる。またユニットのチャンネルのIOデバイスも使う。

サーボの制御パラメータ設定は、三菱やキーエンスPLCとほぼ同じだ。位置や速度をWデバイスにXFER(=三菱やキーエンスでいうBMOV)して、位置決め開始リレーをONする。

位置決めユニット設定(CX-ProgrammerのIOテーブルでCJ1W-NC482をダブルクリック)「ファイル」→「変数テーブル作成」で制御するデバイスを確認できる

同期の主軸・ギア比設定は メニューの「NCユニット」→「関連パラメータ設定」→「同期送り」 「出力設定」ボタン押下 →主軸・ギア比設定できる。これは三菱やキーエンスの同期パラメータ設定と似ている。

今回の場合だと同期制御するにはW110.8をONする。

同期位置送り指令対象のサーボ軸(従軸)の直接運転指令リレーエリアの[同期位置送りリレーW110.8]がON している間、主軸に同期して動作する。軸ステータスリレーエリアの[同期位置送り受付W181.8]がON したら、同期位置送り指令を受け付ける状態になっている。

なお、オムロンNXではEthercat標準装備されているので、特殊ユニットを経由せず、直接LANケーブルで通信できる。すげー。

オムロンNXはPLCOpenのMC_Moveで制御することになる。

PLCOpenとオムロンSysmacStudio

オムロンSysmacStudioはファンクションブロックとST言語とラダーを組み合わせたPLCOpenに対応したプログラムが可能。

例えばサーボはMC_Moveで位置決めができる。三菱GX Works3でも可能。

世界標準であり、シーメンス等ヨーロッパのPLCではデファクトスタンダードである。

これに慣れれば世界舞台で戦える電気制御技術者になれる。

既に筆者TakuChanは三菱・キーエンスPLCのシェアが強いアジア各国で電気制御の仕事をしてきた。

ST言語

オムロンNX102でST言語。ST言語は三菱PLCと共通。

キーエンスPLCのKVスクリプトはVBとほぼ同じ文法だがST言語は違う。Pascalに近いが全然違う部分もある。慣れれば同じだけど。