一往確認日記 |
2016年03月30日 [長年日記]
_ ラダーの自動生成(1)
ラダーのクロスプラットホーム化を考えてみるの流れになりますが、タイトルを変えてラダーの自動生成について試してみます。
ラダーの自動生成
キーエンスではニーモニックの読み書きができるので、Rubyプログラムによる生成をしてみます。
KV STUDIOでR000をそのままR500に出力するラダーを作ります。(KV-5000で試しています。)
ファイルメニューのニーモニックリスト、保存でニーモニック形式でテキストファイルとして書き出すことができます。 適当な場所に書き出します。
Main.mnmというファイルができますので、テキストファイルなどで開きます。
ファイルの中身はこの様になっています。
DEVICE:52
;MODULE:Main
;MODULE_TYPE:0
LD R000
OUT R500
END
ENDH
注目するのはLD R000
とOUT R500
の部分です。
LD R000
が接点を表し、OUT R500
が出力コイルを表しています。
下の様にLD R001
とOUT R501
を追加するとR001の入力をR501に出力する回路が追加になります。
LD R000
OUT R500
LD R001
OUT R501
ここまでで分かるとRubyで生成できます。 mk_keyence_ladder.rbというファイルに下の内容を入力します。
Rubyが実行できる環境(Macだと最初から入ってます)でターミナルアプリを開いて下のコマンドを実行するとNewMain.mnmというファイルができます。
$ ruby mk_keyence_ladder.rb > NewMain.mnm
ファイルの中身は下の様になります。
このファイルをKV STUDIOで読み込んでみます。 今度は読出...で読み込みます。
下の様にR000〜R007がR500〜R507まで1:1でつながった状態になります。
普通は一つ一つ入力していくか、1行入力したら複製しアドレスだけを変更していきますが、人が介在するので入力ミスが発生します。 1101を1011と間違って入力して、たまたま問題なさそうに動いていると、後で重大なミスに繋がってしまうこともあるかもしれません。
ある一定のルールで繰り返したり、アドレスを置き換えていくというのはコンピューターが得意とすることですので、代わりにやってもらった方が早く正確にできます。
Rubyプログラム5行目の部分を変えることで100行でも10000行でも一瞬で生成してくれます。 5行目を下のようにするとR1000〜R1915までをMR1000〜MR1915に1:1で出力するようになります。
(1000...2000).select{|e| e % 100 < 16}.map{|i| ["R#{i}", "MR#{i}"]} each do
R1000〜R1915までの160行をを手作業ですると考えたら気の遠くなる作業ですね。
ここでは簡単な回路でしたが、複雑な回路でも(プログラムするのは大変ですが)一瞬でできあがっててしまいます。 関係するデバイスをExcelの表にしておきそれを読み込んで作り出すこともできます。
エラー回路やシリンダー、RBなんかはパターンがあってアドレスを置き換えるだけというのはよくやっていることだと思いますので、自動生成に向いています。
こんなことができないか?などありましたらご相談ください。(たまには営業も(^^; )
三菱電機もGX Works2ならCSVファイルにニーモニックをかきだせました。(GX Developer、GX Works3はダメでした)