ソフトPLC on ソフトPLC
感想
まだ感想はありません。最初の1件を書きましょう!
サマリー
高橋が、ソフトPLCの中で別のソフトPLCを動かす「PLC on PLC」を試した経緯と仕組みを説明する。CODESYSやTwinCATが生成するC言語POUにランタイムを組み込み、共有メモリや引数、APIでランタイム間を連携でき、CODESYSとTwinCATで動作を確認した。InterLogic単体では通信・ロボット・専用ハード対応が薄い一方、他社ソフトPLCの上で動かせば、それらの機能や既存ロジックを活用できる可能性がある。C言語リソースをサービスまたは周期実行で呼び出せるため、既存PLCを置き換えずに機能を追加する構成も想定された。 後半では、各社のラダーを個別にインポートする代わりに、InterLogicのラダーを一度実装し、そのランタイムを各社PLCへ移植する案が話された。これは既存のハードやソフトを残したままCモジュールとして追加でき、メーカーの売上を奪わず協業につながる可能性がある。ただし今回の実装は一日で動作確認したプロトタイプで、品質や人によるレビュー、生産利用にはさらなる検証が必要だという。組み込みOSの呼び出しやスケジューラーの違いからランタイム側の調整も行い、将来は三菱などのC言語モジュールでも試す構想が示された。
ソフトPLCの中でソフトPLCを動かす仕組み
明日のファクトリーオートメーションへようこそ、メインパーソナリティの高橋です。
クリスでーす。
よろしくお願いします。
よろしくお願いしまーす。
クリスさん、ソフトPLC、オンソフトPLCっていうのをちょっとやってみたんですよ。
ソフトPLC、オンソフトPLCってどういうことですか?難しいね。
ソフトオンソフトPLC。
どういうことですか?ソフトオンソフトPLC?
単純に言うと、ソフトPLCの中でソフトPLCを動かすっていうのをやってみました。
え?
コディスの中でもう一個ソフトPLCが動いてるってこと?
そうそう、コディスの中でインターロジックが動いてるっていうのをやってみました。
できるんですか?そんなの。
できる。
どういうコース選んでたんですか?
簡単で、コディスもツインキャットもC言語POUを吐けるじゃないですか。
吐けますね、はい。
吐けますよね。そこにランタイムを入れたっていうだけです。
そのままそのランタイムのCをそのまま入れて実行させるというイメージですね。
そう、そういうイメージ。
おー。
おー。
考えてない。
考えてない、ごめんなさい。考えてない。
いや、それをなんか何かに使えんかっていうのを今ちょっと一生懸命考えてる。
でもさ、ランタイムの中でもう一個ランタイム。ランタイムの中でもう一個ランタイムを忘れてるっていうイメージですね、つまり。
そういうイメージですね、はい。
なるほど、なるほど。
まあまあ、POUを、PLCのPOUを全く別の言語形態で書き換えるみたいな、そういうイメージですよね。
でもあれだったら、パッと思いついたら最初に、
使いそうな部分が、説明の構成に使えるようになるのだったんです。
どういうこと?
今までのロジックが動いてる部分がそのまま包むんで、
新しいPLCの中で動いてて、
前のロジックがそのまま動いてくるじゃないですか、
PLCPOUにすると。
でも新しいPortisとかにすると、
自分のロジックを入れると、前の西洋ロジックが変わらないまま、
アウトキーを追加するっていうことですね。
そうですね。
じゃないと結構大変だよね。
全部動かなきゃいけないんですよ、Portisが。
これ結構、
めちゃくちゃ安定になったと思いますね。
そうそう。
私、CMASのお機会もあったんですけど、
ここでこういうのができるんだったら、
本当に私の新しいCPUから、
CPUプログラムを全部そのままコールして、
自分のロジックに入れたいんですよ。
また全部お機会のままずっとダウンみたいな感じです。
そうですね。
もともとプログラムを利用したかったりとかね、
そういうことありますね。
残念ながら、
インターロジックは既存のユーザーっていうのが少ないんで、
あんまりできないんですよ、それ。
なるほどね。
でも使い方としてはアリかなと思うんですけどね。
しょうがないね。
そうですね。
ランタイム間通信とC言語リソースの活用
何でそういう検証を始めたかっていうと、
インターロジックって結構機能に薄いんですよね。
APLCの部分はバッチリあるんですけど、
例えば通信だとか、ロボティクスの機能がありますかとか、
専用ハードありますかって言ったらないんですよ、ソフトコンポーネント。
でもやっぱりいるじゃないですか。提案にあたっているじゃないですか。
インターネットIPはないんですかとか、オピシオやないんですか、
イースキャットないんですか、プロフィントないんですかってみんなに言われると。
って聞かれる。
聞かれますよね。
で、だったら他のやつをそのまま使えばいいんじゃねっていうのが、
もともとのソフトウェアインテグレーターの僕の発想なんで。
あれば、じゃあCodeSの上で動かせば、
CodeSのビルドネットワーク全部取れるじゃんみたいな。
そうだよね。一応全部取れて使えばだよね。
使えるじゃんっていう。
ツインキャットの中で動けばツインキャットのやつ全部動けるじゃんって。
それはじゃあ実質、
じゃあ例えばそのオーバーリニアとか、
Xプラナーとかそういう浮遊リニアを、
いやこれインターロジックで動かしてるんですよって言うことも可能じゃんっていう。
言えないんですよ。言えるじゃないですか。
でも最初に聞きたいんですけど、このスタック、
このランタイム間どうやって通信、軽減する可能性があるんですか。
ランタイム間は結構柔軟にやれますよ。
ソフトPLCで結構柔軟に値にやり取りができるようにそもそもなっているんで。
やり方はいくつかあるんですけど、
一番簡単な共有メモリー使うことですね。
なるほどね。
別にC言語PoEの中でC言語を呼んでるんで、
そこに引数として渡すこともできます。
なるほどね。
メモリーのポイントを探せばいいか。
次にポイントを呼び込んで、
メモリーを呼び込んで、
そうすればいいんですよね。
よく読んできるし、あとは各APIがあるじゃないですか。
読むための。
ChatもAPIがありますよね。
それをAPIを使って読んでくるっていうのもできなくはないですよね。
なるほど。実際行けるわけなんだね。
実際行けるはいける。
別に裏の何をいじるでもなく、
オーソドックスな基本機能の上に実装することができる。
なるほど。
どの機器で検証したんですか?
CodeS?
今のところCodeSとTwinCatで検証してます。
面白い構成だね。
もっと縛りが強いんかなって思ってたんですよ最初。
例えば中からECPIPポート触れへんのじゃないかとか、
プログラム書き込まれへんのじゃないかとか、
そういろんな制約があるんじゃないかって考えたんですけど、
結構制約がないですね。触ってた感じ。
これはもうTAKAさんのRenderLogicのスタックもともと、
かなりローレイヤーまで触れるのもこのメリットじゃないかなと思うんですけどね。
そんな関係はあります?
TAKAさんのRenderLogicも結構ローレイヤーまでは操作できるって言ったんですよね。
この間の展示カットの中で。
それで多分これは結構、
だからこそさっきのそういう制約があんまりないんじゃないかなと思っちゃっただけですね。
かなぁ。
TAKAさん消えた。
もしかして。
もしもしー。
TAKAさんね、消えたかもしれません。
まずは話し続けてますけど、
その前に皆さんちょっと待ってくださいね。
TAKAさんに一回チャットします。
ちょっと待ってね。
TAKAさんに、
TAKASHIさん聞こえてますか?って。
多分ね、聞こえてないと思いますね。
聞こえていますか?
多分聞こえてないけど、
さっきのTAKAさんの話が結構面白くて、
多分前回、
先週かな、東永野の時の
リアタイム収録とかの話ですけど、
TAKAさんのRenderLogicのダイムが
結構ローレイヤーまで触っているというメリットがありまして、
この後、
TAKAさん聞こえますか?
今聞こえましたよ。
TAKAさんが今飛んじゃった。
まあ多分TAKAさんに聞こえていないので。
聞こえますか?
聞こえます?
大丈夫、ちょっと喋ってますから。
ちょっとこの場でキープで聞いてみます。
聞こえます?今。
はい、聞こえますよ。
どこまで喋ったんですか?
どこまで聞こえてました?
どこまで聞こえてました?
えっとね、
制限があんまりないところ。
制限があんまりないところ。
で、私が制限がないところが、
TAKAさんがこの間、
ライブ収録のときに
RenderLogicのダイムが結構ローレイヤー、
ローレイヤーの部品まで触れるから、
それのおかげで制限があんまりないんじゃないかなと
私が勝手な推測ですね。
いやそれは、
インターロジックの特性であって、
でもそれって制限されて環境に持っていったら
使えないわけじゃないですか。
そうかそうか。
それが懸念だったんですけど、
案外やってみたら何でもできました。
だからOS側の問題ですね。
縛りがあるだろうですよね、OS。
OSの問題もあるし、
TwinCatはそれにちょっと厳しかったんですけど、
ただTwinCatもTwinCat上の機能を触れるAPIが
かなり充実してたんで、
それに置き換えればやれそうだなっていうのは
なんとなく見えてる感じですね。
なるほどね。
なるほど。
既存PLCに機能を追加する構成
逆にこれを使って何か活用できるパワーがあるか
今ちょっと考えたんですけどね。
例えば、
インターロジックだけじゃなくて、
C言語リソースを使えるっていうのは
自由に使えるっていうのがなんとなくわかったんで、
もっと結構自由なことできそうやなっていうのは
ちょっと感じてますね。
これどういう形で呼び出すんですか?
コリスのPoEの中でランダム呼び出すみたいな感じですか?
それもランダムちょっと後ろまでしてて
どっちもできます。
どっちもできる。
どっちもできます。
サービスとして動かしておいて、
それを呼ぶっていうこともできるし、
毎回PoEの中で
周期ごとに叩いて実行するってことも多分できる。
なるほど。
ランダムが2つ、
インターロジックがランダム、
コリスがランダムを上に乗せてるイメージですよね。
そうですね。
だから複数タスクやりたかったら
タスクごとにPoEをランダムに乗せるって感じですね。
なるほど。
そういうことか。
結局お客さんでもCの機能がライブレートがあって、
その部分だけパッキングしておいて、
ランボックス化でいいかな。
ランボックス化しててコリスを呼び出せばいいというのを
理解でもいいですよね。
ほぼですね。
そんな感じですよね。
そうしたらコリスユーザーは
インターロジックのRudderやSDの機能を
そのまま実はコリスで使うことができますよっていう。
それがCNに入ってるみたいなイメージですね。
それがCNって。
そうそう。
それがTwinCatもコリスも同じような機能があって、
それがオンソフトPLCにおいて
あんまり障害にならないような制約だった。
これが悪くないけどな、このC言語。
例えば今、コーティスのC言語とか
あとTwinCatのセットアップ結構めんどくさいね。
特にTwinCatのセットアップちょっとめんどくさいじゃないですか。
めんどくさいですね。
そういう場合でインターロジックを噛ませて
インターロジックをランタイムに噛ませて
やらせるのが悪いかなと思いましたね。
そもそもそこまでリアタイムでも止めてないんだ。
本当にバックグラウンド処理とか
ただ全然ありかなと思いましたね。
そうですね。別にインターロジックやっても
そのコンパイル処理は必要なんで
どの道セットアップせんといかないんですけどね。
毎回コンパイルし直してるじゃないですか。
ランタイム実行のところでロケーション入れ直すみたいなミスですね。
プログラムはコンパイルしなくていいんで
そのままランタイム上にプログラムデータ流せばいいんで
一番最初だけコンパイルするって感じですよね。
なるほど。面白い発想ですね、高橋さん。
これ実際やってみたかったんですか?
実験して。昔から思いついていたんですよ。
これできるなってなんとなく思いついていたんですけど
時間がようやくできたんでちょっとやってみようかなと思って。
実験してみたら思いのほうがうまくいく。
これはこの間高橋さんのTwitterで出た
そうですね、それですね。
PLCの上で動いてるイメージですね。
そうですね、それがPLC on PLCみたいな。
面白い、高橋さんすごいな。そこまでやるそうないわ。
すごいな、高橋さん。
今ってほとんどのPLCってC言語環境用意してるじゃないですか。
そうなんですか?
例えば三菱KSのC言語のユニットってあるじゃないですか。
ユニットね。
ありますね。
JTECTもAAAがあるじゃないですか。
おもろはないけど。
だからやっぱりPLCの横にC言語環境があって
それが呼び出せるっていうのはどこの会社も実はやっていて
僕らの会社としてはそこにインターロジックの環境を乗せちゃえば
そこにぶら下がってるハードは
実質インターロジックの社会化にあると言い切れるんではないかと。
今立ち位置だと実際インターロジックのランタイムが
今のVPCとかKeynesのCモジュールに対等するイメージですよね。
維持になっちゃうんですよね。
そうですね。だからKeynesにも乗りますよとC言語モジュールの上には乗るんで。
C言語モジュールってだいたいはIoにアクセスできる機能がついてるんですよ。
なるほどだからたかさん最後にAPI使ったらもうそのKeynesIoもアクセスできるというイメージですね。
Ioもアクセスできてインターロジックの下にKeynesのIoがつながってるような技術的な状態作れるよねっていう。
頭いい。
頭いいね。
それを使って何かおもろいことできるかなっていうのを今考えてる感じです。
次は誰がCモジュールがありますか?たかさん。
三菱のKeynesのCモジュール。
KeynesのCモジュール持ってないんですよ。
でも三菱たちのCモジュールは特別ツールいるんですよね。
別ツールですよね。
いましたかな。いやわかんないなそこは。僕三菱は得意じゃないんで。
ただ会社としてはCモジュール持ってるみたいですね。
あれだと試す価値があるんですよ。インターロジックのタイムが出て。
今度やってみようかなと。
フルトプリンの小さいタイムですもんねたかさんが。
そうですね。そこは大きなリソースだから小さくなくてもいいんですけど。
なるほど。たちがKeynesのCモジュールで検証するということなんですね。
そうですね。
KVは持ってます?
KVは持ってます。KVは持ってますけどC言語モジュールは持ってないです。
分かりました。了解了解。宮崎超えましたね。
誰かもうこのCモジュールがあったらたかさんに貸していただいてください。
ツールと一緒に。ツールをギルンチャーアウトもないですね。
独創種の。
ここだけちょっとローセンス言い方がちょっと悪いんですけど。
なんでC言語自由度上げるなんてツールは制御ツールじゃないといった上なんだなと思ったりはしてます。
ラダーインポートとランタイム移植の発想
片っ端からポーティング移植やっていこうかなってちょっと思ってますね。
面白い。
ツイッターで何か上げてくださいよ。楽しみに待ってますよ。
ちょっとコツコツやってます。
いいなぁ。楽しみにやってますね。やっぱり。
そうだね。
その他に何かインターネットチェック。
何かやってみたいなと思ったのがあるんですか?検証したいみたいな構成とか。
おうでしょうね。
自分やりたかったの?PSソフト、PSオンソール、PSVGやりましたね。
一応。
それはやりたかったことですね。
ラダーのインポートって結構面倒じゃないですか。
面倒。
だいたいインポートできないからね。
面倒いらん。
だからここですよ、ツインキャットもラダーのインポートめっちゃ面倒なんですよ。
そう、面倒くさいんですよ。
この他社もあんまり共用できないし、実際共用じゃないと思うんですけどね。
なんでこういうことをやり始めたかっていうと、もともとできるってなんとなく構想はしてたんですけど、
ソフトウェアを生成して流すみたいな、インポートするみたいなことを構想したときに、今後ね。
各社のラダーインポートって結構癖があるんですよ。
そう、そしてみなさんもなんちゃってチーム的な文法入ってるから、そもそもインポート自体も難しいとかね、全然違うパフォーマンスとかあるんですからね。
ですよね、でSTは簡単なんですよね。ST言語のインポートってすごい簡単なんですよ。
グラフィックは無理やな。
でもやっぱラダーやりたいよね。でも各社ごとのニーモニック形式に全部対応していくとかってすごく大変で。
であれば、僕らはソフトPLCを持ってるからですけど、僕らのソフトPLCのラダーのインポートを一個作って、
あとはそのランタイムをひたすら移植していくってことをしたら、実装ラダーのインポートになるんじゃねって思ったんですよ。
なるほど。でこの間の変換機だけはインターロジックが作っておけば。
そうですね。だからラダーのインポートを各社ごとに作るよりも、インターロジックのランタイムの移植を各社ごとに作る方が圧倒的に楽だなって最近思ったんです。
逆方向か。私みんなで合わせる。
インターロジックのラダーを他のラダーに変換するよりも、インターロジックのランタイムを各社に移植していったほうが楽じゃねって思って。
なるほどね。ランダムだけ特化すればいいよね。インポートすれば動けるよってことですよね。
そうそう。それで一旦逃げれるんじゃないかと。いやその究極は、あるべき姿はそうじゃないのはわかってますよ。
はい。そうですね。
三菱のPLCだったら三菱のラダーを使ったほうが最大限ハードウェアを活かせるし、
金屋さん金屋さんおもろいおもろい、べっこはべっこ、おこせでこですわと思うんですけど、
一旦何もPLCを変えないまま、とりあえず1個C5モジュールさせてもらえれば、
そのPLCのラダーをインポートする上手さっていうのを自分のところで試せますよみたいな、
そういう環境があったら、それなりに何かあるんじゃないかっていうのを思ったんですよね。
なるほどね。確かに。やはり重要あるんじゃないかと思ったんですね、さっき。
今のLogicも触りたくないし、でも上に乗せて機能追加して、逆光の機能も使えるし、
さっき言ったCモジュールさせれば、何かのアタシモジュールさせれば、
ベンダーロックインを避けた協業可能性
インターロジックランタイムも流用できて、いいねこれ、いいじゃん。
Cモジュールとして売れますね、オプション、インターロジックランタイム。
インターロジックランタイム1万円しないからね。
そろそろリスペクティブに行こうか、私たちも一回。
なるほどね。
各社のハードの上にソフトPLCを移植していくっていう、
ハードPLCはベンダーロックインですよみたいなところがちょっと外れたところで
そういうことできるんじゃないかっていうのをちょっと考え始めたって感じですね。
ロックされてるんですけど、私ランダムに入れますよ、隣でみたいな感じですね。
そうですね。それのもう一つのいいところとしては、
相手のメーカーの売り上げを一切減らさない。
例えば、B2BCが使ってるお客さんから代金を買ったらどうですよね。
要は置き換えますっていう話に何もならないっていうのはすごいいいんじゃないかって思ってます。
顔上げ置いておくだけ。
便利じゃないから。
何も減らさないよ。
例えばソフトPLC使ってくださいね、パソコンになりますよって言ったら
PLCをパソコンに置き換える話になるじゃないですか。
それって利益敗敗になるじゃないですか。強豪になるじゃないですか。
でも今回の件って別にハードは何も変わってなくて、
B2BCなんかソフトは何も変わってなくて、
ただただそこにインターロジックのランタイムが入るだけなんで。
分散面倒してもいいんだよこれ。
売り上げは減らないですよね。
だから協業可能性が残るんじゃないかってちょっと思ってます。
でも確かに理解考えちゃうと、自分にも商品の売り上げちょっとされるんだったらすごい
言われるような文句とか言われるというか。
そうですね、どちらも分かれちゃうわけですね。
そうですよね、だからCoresとかZencatも、Zencatのやめてインターロジックにしましょうよって言ったら
その売り上げが下がっちゃいますけど。
いや違うよ。
Cores買った上にインターロジック積みましょうよだったら単純なプラスじゃないですか。
みんなの中でプラス。
なるほどね。
みたいななんかならんかっていうのをちょっと考えて。
これは次の敵がやってるかもしれないな。楽しみにしてます。
どうなんかな。オーディオ振ってやっていいのかちょっと分からんけどな。
Zencat別にいいかもですけどみたいな感じでね。命食うるじゃないですか。
いやさ、法的には何も問題ないし規約的には何も問題ないと思うんですよ多分。
なるほど。
でも表に出したらなんかダメなことってあるじゃないですか。
なるほどね。
言ってないからオッケーみたいなところがあって、これはそれに該当する可能性はあるような気がしますけど。
大人の事情なんですよね。
裏オプションとしてこういうのもあるんですみたいな。そういう類の話なんじゃないかってちょっと思ってますけどね。
違う。
言えないしね。
なんか黙ってやってるんだったら見逃してあげますみたいな。
そういう系のあることなんじゃないかとちょっと思ってますけどね。
面白いね結構。
プロトタイプの検証と今後の展開
この最後結構違かったんですよ。
いや、コーデックスが1日でやってるんで、
だからそういう意味で品質は取れてないですね。動きましたっていうだけですね。
ここ難しいのは動きなんだけど、
人間のウィビューとか、
ウィビューさせてもらうのは難しいね。
いろいろ見ていかなきゃいけないこといっぱいあると思いますよ。
ただその理屈の上ではできると思って、理屈調べて大丈夫そうだったから、
プロタイプ実装させて、今一旦動いてますよってそういう状況ですよね。
ちょっとリピートでプロタイプ作るのめっちゃ向いてるな。
とりあえず動くまでやっていく。
実際の生産時は試合する時はちゃんと考えてねっていうみたいな感じですよね。
これいいなこれ。
なるほど。
だからちょっとインターロジックなんかちょっといじってるんですよね、今回。
タイマーとかもいじってるんですよ。
ちょっと。
先ほどツイッターの外壁コーディションが変わったわけじゃなくて、
インターロジックのランナーブームが変わったんですね。
ちょっと変わってますね。
そうじゃないとか分からない。
実際組み込みOSとかが呼び出す仕組みがあるんですけど、
それじゃない方法で、
OSとかミドルウェイの代替がコデスみたいな形になるんで、
スケジューラーが。
普通のやり方と違うとこがあるんで、ちょっと触んないといけなかったですね。
なるほどね。
なるほど。
まずはそこ、ちょっとオビジュースがほんの少ないなって思った。
てかや、たかしさん。
なんかおもろいなって思った。
ソフトページの中でソフトページを置きますっていう絵面が面白いなって思った。
やりたかったんですよ。
たかしさんの絵面は置き換えじゃなくてオンだよね。
PLCオンPLC。
PLCオンPLC。
オンピューシー面白いな本当に。
オンピューシーオン。
なるほど。
でも考えたらよくあるんじゃないですかね。
PLCオンピューシーですけど、
例えば今さ、エッジコンビューティングとか、
IPCとかさ、
PLC入れてると、
自分のパーセントランタイムとかラッシュランタイムとか入れて、
そういうのさせるじゃないですか。
俺言ってることにしちゃうってことなんですよね。
まあまあそういうことだと思いますね。
同じかなと思って。
たかしさんのパーセントランタイム入れた結果、
たかしさんのインターネットランタイム入れた結果っていう話なので、
ラッシュアウトをちょっと覚えてきました。
こういうのをちょっと、
試験的にちょっとやってて、
どっかで皆さんの前に出せるようなものができたら嬉しいなって。
楽しみにしてますよ、たかしさん。
ありがとう。
いやいやだって、
できない、絶対そもそも考えられないですよ。
考えてもらえないですよ、そんなの。
すごい。
楽しみにしてますよ、たかしさん。
ありがとうございます。
というわけでね、
今日はソフトPLCオンソフトPCっていうアイデアを考えてみましたという、
ご案内でございました。
ありがとうございました。
ありがとうございました。
コメント
このエピソードのトピック
すべてのトピック →それぞれのトピックから、ほかの番組の会話も探せます。
スクロール