CJtoKV
OMRON CJシリーズからKEYENCE KVシリーズへのラダー変換ツール
CJtoKVはOMRON CJ1M、CJ2M、CJ2H向けCX-Programmer形式のラダープログラムを、 KEYENCE KV-8000、KV-7000、KV-5500、KV-5000、KV-3000シリーズへ移行するための変換ツールです。
概略
OMRON CJのラダー回路をKEYENCE KVシリーズのラダー回路に変換するアプリケーションです
回路は出来るだけ変換しますが、全ての命令を変換することは出来ません
変換できない命令はKV STUDIOでニモニックでコメント行で表示されます
CJとKVのメモリ対応表
CJのメモリアドレスは以下のようにKVのメモリに変換します
(数値は最大アドレスです)
| CJ2H | KV8000 | |||
|---|---|---|---|---|
| リレー | CIO | 6144 | R | 32000 |
| 内部補助リレー | WR | 8192 | MR | 64000 |
| ラッチリレー | HR | 8192 | LR | 16000 |
| リンクリレー | B | 32768 | ||
| タイマ | T | 4096 | T | 4000 |
| カウンタ | C | 4096 | C | 4000 |
| コントロールリレー | AR | 48128 | CR | 1280 |
| データメモリ | DM | 32768 | DM | 65535 |
| 拡張DM | EM | 32768 x 25 | EM | 65535 |
| ファイルレジスタ | FZ | 524288 | ||
| FM | 32768 x 16 | |||
| リンクレジスタ | W | 32768 | ||
| テンポラリDM | TM | 512 | ||
| インデックス | IR | 16 | Z | 23 |
| DR | 16 | |||
| コントロールメモリ | CM | 9600 | ||
CJの特殊補助リレー(AR)とKVのコントローリレー(CR,CM)の対応表
CJの特殊補助リレーとKVのコントロールリレーの似ている内容のアドレスを対応表で書き出しました
注 意
同じ動作をするわけではありません。
目安として参考にしてください。正確には説明書を確認して動作を確認してください。
| CJ | KV | ||
|---|---|---|---|
| コンディションフラグ | 名称 | アドレス | 名称 |
| P_ER | エラーフラグ | CR2012 | 演算実行エラーのときON |
| P_CY | キャリーフラグ | CR2009 | 演算結果が負またはオーバーフローのときON |
| P_GT | >フラグ | CR2011 | 演算結果が正のときON |
| P_EQ | =フラグ | CR2010 | 演算結果がゼロのときON |
| P_LT | <フラグ | CR2009 | 演算結果が負またはオーバーフローのときON |
| P_On | 常時ONフラグ | CR2002 | 常時ON |
| P_Off | 常時OFFフラグ | CR2003 | 常時OFF |
| P_First_Cycle | 運転開始時1スキャンのみON | CR2008 | 運転開始時1スキャンのみON |
| CJ | KV | ||
|---|---|---|---|
| コンディションフラグ | 名称 | アドレス | 名称 |
| P_0_1ms | 0.1ms | - | |
| P_1ms | 1ms | - | |
| P_0_01s | 10ms | CR2004 | 10msクロックパルス(duty50%) |
| P_0_02s | 20ms | - | |
| P_0_1ms | 100ms | CR2005 | 100msクロックパルス(duty50%) |
| P_0_2ms | 200ms | - | |
| P_1s | 1s | CR2006 | 1sクロックパルス(duty50%) |
| P_1min | 1min | - | |
| CJ | KV | ||
|---|---|---|---|
| アドレス | 名称 | アドレス | 名称 |
| A0 | 10ms 加算フリーランニングタイマ | CR1030 | 32ビット1msフリーランカウンタ (※) |
| A1 | 100ms 加算フリーランニングタイマ | ||
| A2 | 1s 加算フリーランニングタイマ | ||
| A200.11 | 運転開始時1サイクルONフラグ | CR2008 | 運転開始時1スキャンのみON |
| A262 - 263 | サイクルタイム最大値(0.1ms) | CR0727 | KV-5000,7000 スキャンタイム最大値(10us単位) (※) |
| CR1006 - 1007 | KV-8000 スキャンタイム最大値(1us単位) (※) | ||
| A264 - 265 | サイクルタイム現在値(0.1ms) | ||
| A266 - 267 | サイクルタイム現在値(0.01ms) | CM0720 | KV-5000,7000 スキャンタイム測定値(10us単位) |
| CM1000 - 1001 | KV-8000 スキャンタイム測定値(1us単位) (※) | ||
| A343.14 | ファイルアクセス中フラグ | CR5402 | メモリカード使用中 |
| A343.15 | メモリカード認識完了フラグ | CR5403 | メモリカード認識完了 |
| A351 | 時計データ(分 秒) | CM0705 | RTCからの読み出し 秒 |
| CM0704 | 分 | ||
| A352 | 時計データ(日 時) | CM0703 | 時 |
| CM0702 | 日 | ||
| A353 | 時計データ(年 月) | CM0701 | 月 |
| CM0700 | 年 | ||
| A354 | 時計データ(曜日) | CM0706 | 曜日 |
| A402.04 | バッテリ異常フラグ | CR2306 | バックアップ電池異常 |
※ 単位が違うので使用している場合は修正が必要です
手順
1. 準備 : CX-ProgramerでプロジェクトをCX-Programmerテキストファイル(*.cxt)形式で保存する
CX-Programerで変換したいプロジェクトを読み出して、[ファイル]-[名前を付けて保存]を選択して任意のフォルダにCX-Programmerテキストファイル(*.cxt)形式で保存します
指定したフォルダには???.cxtというファイルが作成されます
例 : c:\temp\cj-projectフォルダを指定した場合
変換先に???.cxtというファイルが出力されます
例 : c:\temp\cj-projectフォルダを指定した場合
2. CJtoKV.exeを実行する
CJtoKV.exeを実行します
変換元ファイルに1.準備で保存したcxtファイルを指定してます
変換先フォルダには変換後のファイルを保存するフォルダを指定します
[変換]ボタンをクリックすると変換先フォルダにKV用のニモニックリストのファイルが出力されます
例 : c:\temp\kv-projectフォルダを指定した場合
ファイル名は「PLC名称_プログラム名称.mnm」というファイルが出力されます
変換後のファイルはプログラム単位で分かれて出力するようにしています
3. KV-STUDIOを起動してニモニックリストを読み込む
- KV-STUDIOを起動して、対応機種に「KV-8000」を指定して任意のプロジェクト名で新規プログラムを作成します
KV-8000以外に変換したい場合も一旦KV-8000で作成した後で機種を変更してください - メニューの[ファイル]-[ニモニックリスト]-[読出]を選択します
- 例えば"新規PLC1_新規プログラム1.mnm"を読み出した場合は下図のようになります
変換内容
- 変換が成功した行はラダー図で表示されます
- アドレスが変数の場合はそのまま変数名が赤字で表示されますが、変数名がKVのシステム予約の文字と重複しないように手修正が必要な場合があります
- 変換が失敗した行はコメント行で表示されて、「区切り用出力」をラダー図に追加する場合があります
「区切り用出力」は手修正後削除してください - 変換に失敗したコメント行は変換元の命令語とそれに違いKVの命令語を記述しています
注 意
CJの命令語はKVの命令語とは異なるため、変換できなかったところは手修正が必要です
変換に成功していてもオペランドの意味の違う場合があるので動作確認してください
よく似た命令語がある場合は変換前の命令語の後ろにカッコ()を付けて変換できそうな命令語を記述しています
似た命令語が無い場合はラダー回路を作り直す必要があります
ニモニックリストの読出しに失敗した場合
KV-STUDIOでニモニックリストの読出しをしたときに失敗のメッセージが出たときは、新規プログラムを作成して「リスト編集」を使ってニモニックを読み込ませて失敗している箇所を特定しながら修正を加えていきます
1. メモ帳で開く
読出しに失敗したニモニックリストのファイルをメモ帳で開きます
2. リスト編集を開く
KV-STUDIOで新しいプログラムを追加して[編集]-[リスト編集]を選択します
3. リスト編集に貼り付け
メモ帳で開いたニモニックリストをコピーしてKV-STUDIOのリスト編集に貼り付けます
メ モ
最初の3行「DEVICE:57 ;MODULE:新規プログラム4 ;MODULE_TYPE:0」と
最後の「;END(001)」は不要なので削除してください
4. [挿入]を押してエラーを修正
[挿入]を押すとラダーに出来なかった行が表示されるので、その行を手修正します
とりあえずラダー図で表示したいので以下の方法で修正してみます
- 表示された行の上に"LD CR2002"(常時ON)を追加してみる
- 行の先頭に";"を付けてコメント行にしてみる
変換できなかったところの対応 例1
変換できなかったところはコメント行としてそのブロックの下に表示されます
よく似た命令語がある場合は変換前の命令語の後ろにカッコ()を付けて変換できそうな命令語を記述しています
日付時刻のメモリの配置が違うところの修正
日付時刻のメモリの配置が違うため合わせる必要があります
| CJ | KV | |
|---|---|---|
| 年 | A353.08-15 | CM0700 |
| 月 | A353.00-07 | CM0701 |
| 日 | A352.08-15 | CM0702 |
| 時 | A352.00-07 | CM0703 |
| 分 | A351.08-15 | CM0704 |
| 秒 | A351.00-07 | CM0705 |
| 曜日 | A350.00-07 | CM0706 |
↓
- 3行目: LD CR2002の次に「区切り用出力」が挿入されています 手修正後は削除してください
-
4行目: MOVD→DISNまたはDISBなど(オペランドの修正必要) A353→CM700 (A353.08-15 年) CM701(A353.00-07 月) $012 tmpWord
CJのラダーではA353の上位桁(A353.08-15)をMOVDでtmpWord変数に格納してからBIN命令でBCDからBINに変換しています
これはカレンダーの年のみを取り出して年に変換しています
KVの場合はCM0700に直接年が入っているのでCM0700の値をDM0にMOVするだけで完了します - 6行目: 同様にA353の下位桁(A353.00-07)をMOVDでtmpWord変数に格納してからBIN命令でBCDからBINに変換しているのでカレンダーの月を取り出して月に変換しているのでCM0701の値をDM1にMOVするだけで完了です
- 8行目: 同様に日の処理はCM0702の値をDM2にMOVするだけで完了です
- 10行目: 同様に時の処理はCM0703の値をDM3にMOVするだけで完了です
- 12行目: 同様に分の処理はCM0704の値をDM4にMOVするだけで完了です
- 14行目: 同様に秒の処理はCM0705の値をDM5にMOVするだけで完了です
- 16行目: 同様に曜日の処理はCM0706の値をDM6にMOVするだけで完了です
変換できなかったところの対応 例2
サイクルタイムの単位の違い
| CJ | KV | |
|---|---|---|
| 現在値 | A266,267(0.01ms単位) | CM1000,1001(1us単位) |
| 最大値 | A262,263(0.1ms単位) | CM1006,1007(1us単位) |
↓
- 10行目: CJの場合はサイクルタイム最大値の単位が0.1msなので100を掛けてusにしています
KVでは単位がusなのでそのままMOVに変換します - 11行目: 区切り用出力は手修正後に削除します
-
12行目: CJの場合はサイクルタイム現在値の単位が0.01msのエリア(A266)に10をかけてusにしています
KVでは単位がusなのでそのままMOVに変換します
変換できずにコメントになった行は後ろに追加されるので元の順番に戻すために10行と入れ替えます
変換できなかったところの対応 例3
タイマの違い
| CJ | KV | |
|---|---|---|
| 減算式ONディレイタイマ 0.1s単位 (BCD) | TIM | |
| 減算式ONディレイタイマ 0.1s単位 (BIN) | TIMX | TMR |
| 減算式ONディレイタイマ 0.01s単位 (BCD) | TIMH | |
| 減算式ONディレイタイマ 0.01s単位 (BIN) | TIMHX | TMH |
| 減算式ONディレイタイマ 1ms単位 (BIN) | TMS | |
| 減算式ONディレイタイマ 0.1ms単位 (BCD) | TIMU | |
| 減算式ONディレイタイマ 0.1ms単位 (BIN) | TIMUX | |
| 減算式ONディレイタイマ 0.01ms単位 (BIN) | TMU |
↓
- 62行目: CJのTIMX命令はBIN減算式0.1sタイマなのでKVのTMR命令に変換できています
- 63行目: CJのTIMHX命令はBIN減算式0.01sタイマなのでKVのTMH命令に変換できています
- 64行目: 区切り用出力は手修正後に削除します
- 65行目: CJのTIM命令はBCD減算式0.1sタイマなのでKVのTMR命令の設定値をBINに変えて修正します
- 66行目: CJのTIMH命令はBCD減算式0.01sタイマなのでKVのTMR命令の設定値をBINに変えて修正します
- 67行目: CJのTIMU命令はBCD減算式0.1usタイマなのでKVのTMU命令の設定値をBINに変えて単位を計算して修正します
- 68行目: CJのTIMUX命令はBIN減算式0.1usタイマなのでKVのTMU命令の設定値の単位を計算して修正します
- 順番は適宜修正します
よくある質問
全ての命令を変換できますか?
いいえ。一部の命令は手修正が必要です。
KV-STUDIOのどの機種に対応していますか?
KV-8000向けニモニック形式に出力しますが、変換後にKV7000、KV5500、KV5000、KV3000、KV1000、KV Nanoなどに機種変更してください。
CJ以外でも利用できますか?
CJ以外の機種ではCX-Programerで機種をCJシリーズに変更してからKVシリーズのニモニックに変換が可能です。










