どうも、もももです。
最近、KV STUDIOで構造体や変数、ファンクションブロックなどを使用するようになったのですが、複数貼り付けを行おうとすると対応していませんでした。
構造体や変数、FBの概念自体はとても好きだったので何とか両立できないかと試行錯誤した結果、「リスト編集」のニモニックリストを複製すれば何とか実現できました。
コードはただコピペするだけではアドレスや変数、インスタンス名などオフセット出来ないので簡単に行えるWebアプリを作成してみました。
上記リンクまたはサイドバーの「自作ツール」欄からご利用できます。

※「相互リンク」と「カテゴリー」欄の間に設置しました。
利用イメージとしては以下の通りです。
- KV STUDIOで複製元のニモニックリストをコピー(リスト編集 or ニモニックリスト保存)
- コード複製アプリにコピーしたニモニックリストを貼り付け
- コード複製アプリの複製条件を設定してコード生成
- 生成されたコードをKV STUDIOのリスト編集から挿入
- コード中に変数やFBのインスタンス名が含まれている場合は変数登録
以降で使用方法について説明していきます。
前提条件
本稿は以下環境を元に作成します。
- KV STUDIO:Ver11
- 使用機種(PLC):KV-8000
また、複製の際は下記のリスト編集機能を利用します。
画面構成
複製条件

・複製元コード
複製したいニモニックリストを貼り付けます。
「パラメータ数」と{1}~{9}パラメータの内容によってテキストエリア内の「{1}~{9}」の内容が置き換えられます。1~パラメータ数までが置換の対象となります。
置換対象の文字列は「{半角数字1桁}」となります。(半角波括弧+半角数字1桁+半角波括弧閉じ)
・複製数
複製元のコードを複製したい数を設定します。(最大50)
・パラメータ数
複製にあたりアドレスや変数名など変動する値の数を指定します。(最大9)
・{1}~{9}パラメータ
複製元コード中の{1}~{9}について、置き換える条件を指定します。
16進/10進オフセットを選択した場合は半角数字を「初期値」と「オフセット値」に、テキストを指定した場合は半角カンマ区切りのデータを「テキスト」に入力して下さい。

※16進オフセットを選択した場合は3桁0埋めされた状態で変換されます。
コード生成ボタン
入力された複製条件を元に複製コードを生成します。

置換パラメータの値が不適切だと上図の様に置換がスキップされます。
例) 「16進/10進オフセット」の「初期値」が未入力 / 「16進オフセット」の「初期値」に16以上の値を指定した など
生成コード

複製結果のコードが表示されます。
このテキストエリアをクリックすると生成コードが全選択されます。
使用手順
複製元のニモニックリストをコピー
リスト編集でニモニックリストを表示

複製したい行にカーソルを移動し、「リスト編集」画面を表示します。
選択行のニモニックリストが表示されるので全選択してコピーします。
ニモニックリスト保存でニモニックリストを表示

「ファイル」→「ニモニックリスト」→「保存」をクリックすると現在のプロジェクトをニモニックリストとして(.mnm)出力することが出来ます。(コメント種類の選択:コメントなし→保存場所の指定)

テキストエディタでエクスポートしたファイルを開き、複製したい箇所を選択しコピーします。
コード複製アプリにニモニックリストを貼り付け

コード複製アプリページを表示して「複製条件」の「複製元コード」にコピーしたニモニックリストを貼り付けます。
コード複製アプリの複製条件を設定してコード生成
コピーしたニモニックリストを以下の条件で複製します。
- 複製数:3
- MR000, MR001をそれぞれ2オフセット(パラメータ数:2)
ニモニックリストを編集

「MR000」を「MR{1}」に、「MR001」を「MR{2}」と変更しました。
「複製数」は3、「パラメータ数」は置換パラメータが2種類なので2としました。
個別パラメータを編集

「{1}パラメータ」は「MR000」のオフセット設定なので「初期値」は0、「オフセット値」は2としています。
「{2}パラメータ」も同様です。
コード生成を押下

「コード生成」を押下するとコードが生成されます。
上図のコードをコピーします。
生成されたコードをKV STUDIOのリスト編集から挿入

コピーしたコードをリスト編集画面に貼り付けて「ブロック置換」を押下するとラダープログラムに反映されます。
「MR000」と「MR001」だけのラダープログラムが「MR002」~「MR005」も追加されたのが確認できます。
使用想定
FBを含むラダープログラムを複製
下記で省略した個別のアラーム発生回路を複製してみます。

上図のエラー発生回路を以下の条件で複製します。
- 複製数:32個
- FBインスタンス変数名:standardAlarm100~215
- 異常発生:R100~R215
- 異常状態:MR100~MR215
- ブザー状態:MR1100~1215


複製条件は上図の通りです。

コード生成を行いリスト編集で挿入します。

生成したコードを挿入して変換をかけると上図のようにエラーになります。
これはラダープログラム中で指定しているFBインスタンス変数「standardAlarm100~215」に対してローカル変数として「standardAlarm100~215」が登録されていないためエラーとなっています。
※ドラッグ&ドロップでFBを追加した際は自動で登録されます。

ローカル変数2列を選択、コピーして複製元コードに貼り付け、置換文字列の{1}に書き換えて先程と同じ条件でコード生成します。

生成コードをコピーしてローカル変数に貼り付けて複製完了です。
まとめ
今回はKV STUDIO向けのニモニックリスト複製を行う自作のWebアプリについて使用方法をまとめました。
機能追加の要望や不具合などありましたら、適時対応致しますのでお問い合わせフォームやコメントからご意見いただければ幸いです。
是非一度使ってみてください!
また、KV STUDIOの機能で同等の機能が実装されれば更に便利になると思います。キーエンスさんお願いします!
・・・デバイスアドレスだけ考えるとラダープログラムの複製を行うのに複数貼り付けはとても便利ですね!
コメント