一往確認日記 |
2016年12月29日 [長年日記]
_ Escalator の KV-5000対応
Escalatorというのは、各種PLCがメーカーや機種毎にプロジェクトデータが異なるため互換性がなく、移植するのが大変なのを解決しようとするものです。
ここのescalatorのカテゴリーを見てもらえると今までの経緯を見てもらうことができます。
PLCの実装についての説明を続けてきましたが、KV-5000用のPLCプログラムが公開できるレベルになったので、中断してこの事について書きます。 (予想では年明けになってしまいそうでしたが、何とか年内に滑り込む事ができました。)
Gemを更新していますのでgem installでインストールまたは更新できます。 Rubyが実行できる環境を準備してからコマンドプロンブトで以下の様にコマンドを実行します。
$ gem install escalator
適当なフォルダーでescalatorコマンドを打ち込むとescalatorプロジェクトが作られます。
$ escalator create my_project
ファイルは次の様に作られます。
.
├── Rakefile
├── asm
│ └── main.esc
├── config
│ └── plc.yml
└── plc
├── keyence
│ └── kv-5000
│ └── kv-5000
│ ├── DocumentWindowInfo.xml
│ ├── Escalator.mod
.
.
│ ├── kv-5000.kpr
│ ├── kv-5000.lbl
│ ├── kv-5000.mil
│ ├── kv-5000.spl
│ ├── operand-history.txt
│ └── sample.al2
└── mitsubishi
└── iq-r
└── r08
├── LICENSE
└── r08.gx3
keyence以下が今回追加されたファイルになります。 KV STUDIOで開いて適切なIPアドレスに変更します。
plc.ymlにkv-5000用の設定が追加になっていますので、ここでもhostの行にPLCに設定したIPアドレスに書き換えます。 (下はkv-5000に関係する部分の抜粋です)
kv5000:
cpu: kv-5000
protocol: kv_protocol
host: 192.168.0.11
main.asmがラダープログラムになります。 必要に応じて変更します。
Rakeコマンドでescalatorプログラムを転送します。 kv-5000の場合はtarget=kv5000と指定します。
$ rake target=kv5000
hex asm/main.esc
uploading build/main.hex ...
done uploading
Escalator is an abstract PLC.
This is a console to communicate with PLC.
>
KV-5000を実装してみて
I/Oの扱いについて
三菱電機ではX、Yですが、KVの場合はRで入出力どちらにも割り当てができる様になっています。 そして普通にR30000など上位に割り当てられたりするので、どう扱うか悩んでいます。 補助コイルを仮想的な入出力として、別の方法で実際にI/Oにマッピングすることになるかもしれません。
タイマー、コイルの扱い
タイマー、コイルについては三菱でも実装されてないのですが、KVの場合はタイマーを配列としてラベル登録する事ができませんでした。 ラベルでアドレスを変える事で自由にエリアを変更できる様にしていますが、どこかに固定するしかないかなという感じです。
今後について
まずはKVでも同じコードで動作できる事を証明できましたので、実用的に使用出来るレベルに上げていきたいと思っています。
今はPLCですが、マイコンボードでもescalatorを実行できるプログラムを作れば、簡単なものであればPLCで動作確認し、マイコンボードで量産品を作るなども可能になります。
と、まあ構想だけは大きいのですが、なにぶん一人で進めているので、なかなか進みは遅いです。 せっかくオープンソースで進めているので、興味がある方は参加してもらえるとはかどります。
今年はこれで最後になります、また来年もよろしくお願いします。