トークテーマ
PLCメーカが変数を使用するように働きかけてきていますが、正直デバイスの方が便利です
変数を使う利点など感じるところがあれば教えて欲しいです
サマリー
このエピソードでは、PLCにおけるデバイスと変数の利用について、変数の利点や実装の課題が議論されています。デバイスの便利さに対する変数の弱さや、メモリ管理の重要性が強調されています。また、PLCにおけるデバイスから変数への移行について、その潜在能力や今後の利点が探られています。さらに、変数を使用することの重要性と、それに伴う課題が強調され、最終的には変数化の推奨がなされています。
変数のメリットとデバイスの便利さ
おだしょー ラジオネーム 匿名希望太郎さんからホテル
です。ありがとうございます。
高橋 ありがとうございます。
おだしょー こんばんは。いつもお疲れさま
です。PLCのデバイス変数について思うこと、または理想の形についてお話しいただけますか。現状はメーカーが変数を使ってもらうように必死になっているけど、デバイスの便利さに敵わないように使ってもらわず進まないように思っています。というか、そもそも変数だから何がいいのかも最近よくわからなくなってきました。よろしくお願いします。ということです。
おだしょー 高橋さん変数使ってます?
高橋 使ってますよ。
おだしょー うん。逆に何て言うかな。変数なんで使わなきゃいけない。使ったら何がメリットあるかから離さないといけないかなと思ったんですね。
私の場合ですね、個人の場合では変数使ったほうがプログラム読みやすいですね、私から見たら。と思いませんが、読みやすくないですよ。そうでもない?
高橋 結局ですけど、それは英語話者の観点ですよねっていうのはありますか?
おだしょー すいません。そうです。そうかもしれないですね。
高橋 僕だって変数だってアドレスだってコメント見てますからね。
おだしょー あ、そうなんです。そうなんだ。あ、コメントは日本語だからですか?
高橋 コメントは日本語だから。
おだしょー コメントは日本語で。あ、変数は英語のままでコメントは日本語って言うんですよね。
高橋 そうですね。だから変数を読んでなくて実はコメントを読んでるんですよね、変数の時に。
おだしょー あ、そういうことか。
高橋 あれはね、英語話者の話だと思いますよ。
おだしょー そうか。すいません。ちょっとわからなかった。
おだしょー うん。
おだしょー あとこれ多分カード特性の問題なくなったら、あと例えば変数じゃなくて多分MとかDとか使うと、
これメモリー管理もやらないといけないんじゃないかなと思ってますね。
で、例えば私昔AMLONのPLC、本当に有写1年目、2年の時に装置で絶対なんかExcelがついてるじゃないですか。
あのレジスターテーブルみたいな。
だからD0番から10番何使ってるD11なんか全部書いてるExcelがあって、
あれを例えばスキングプログラム追加とか変更する時にちゃんとこれが使ってないのか確認しないといけないとか、
そうやってもう1回プログラムの中に見なきゃいけない、ちゃんと本当に使ってないねという確認なんかやらなきゃいけないんですよね。
で、私から見たら、このメモリーじゃなくて変数使ったら、この悩みが少なくなるんじゃないかなと私は思っています。
これはどう思いますか、高畑さん。
そうですね。僕は特命希望太郎さんが書かれてることが全てだと思ってて、結局のところデバイスの便利さにかなわないって書いてあるじゃないですか。
これが全てだと思うんですよね。要は変数がデバイスに勝てないんじゃなくて、変数の実装が弱いからデバイスに勝てないんだと思います。
メモリ管理の必要性
変数の実装が弱い。
要は例えば、ICで規定されている変数.0、変数.1、変数.2でビットアクセスができますよね。
はい、できますね。
で、それをOmronとかMitsubishi、Mitsubishiは実装してない、Omronは実装してないわけですよ。
MitsubishiできるんですけどOmronできなかったんですね。
そうしたらどうしないといけないかというと、共用型を使ってビットアクセスしないといけないわけですね。
そうですね。
じゃあワードでもらったやつをそのビットにバラすっていうことは非常に面倒なわけです。
それだったら直接メモリもらったほうがいいんじゃないのという感じですね。
メモリだったらできるのに変数だったらできないことっていうのがいっぱいあるわけですね。
だからやっぱりまだ比較できる段階まで来てないわけです、変数が。
デバイスでできることは全て変数でできないといけないわけですね。
それ以上やらなきゃいけないですよね。
それは別にファンクションブロックとか別に命令を使ってバラしても別にいいわけですけど、そのライブラリーも整ってない。
だから基本的に変数とデバイスでできることはまず同じことは基本的にできますよってなったら、
クリスさんの言う変数の利点が最大限活かされて変数がいいよねってなると思います。
じゃあ問題は今そもそも変数とデバイス同じはできてないというのが問題ですよね。
そうですね。だから一言で言うとPLCメーカーのアーキテクチャが悪いんじゃないですか。
そうですね。
これはちょっと僕の本音なんでちょっともうはっきり言おうと思うんですけど、
いわゆるメモリ管理をしないといけないんですよ基本的には。
PLCってメモリ管理をしないといけないんです。
なぜなら一番下のデバイスがメモリごちゃ混ぜて送ってくるからですね。
そうですよね。
下のものがわざわざこれはワードですこれはビットですみたいな感じで送ってこなくて、
この8ビットの中の前4ビットだけデータで残り4ビットは全部ブルー型ですみたいなごちゃ混ぜのデータを送ってくるわけですよ。
そうですね。
行き先あったらこれを分けられますけど、インスタネットアピアは分けられないのでこれを。
そうね、バイトだけで聞いてましたよね。全部バイトだけで聞きましたからね。
だから結局のところメモリを管理しないといけないわけですよそういうのって。
だから全部メモリ管理しなくて家に組めないわけです。物理層があるから、物理的なものがあるから。
なるほど、そもそも聞いてるものが生データ全部バイナリーだから。
そう、バイナリーを扱ってるから無理なんですよねそれが。
そこへのサポートがないとデバイスの方が便利になりますよ。
なるほどね。
これを自由自在でワードをくっついてなったり、バイトでなったりできるんですよね。
そうですね、それに対してこうやったらできるかという回答は一応出してくるんですけど、そんなめんどくさいことなんでせなあかんねんって思うわけです。
そうですね、と言えますね。
だから本当は例えばですけど、じゃあビットに分解するファンクションブロックがあってそれでバラスト一発ですよとか、
そういうことをやっぱりサポートしかなきゃいけないのにもかかわらずそこまで手が回ってないっていうのが今の現状だと思いますね。
変数とデバイスの今後
そういうのが自分で作らなきゃいけないんですよね。
そうですね。
逆に。
それは.Zeroでアクセスとかもあるだろうし、クラスの概念を入れてメソッドでバラすっていう方法もあるだろうし。
でもそういうのが本来は全部メーカーで、メーカー間でいいかな。全部こういう規格をみんな整えてやるべきこと。
そうですね。だから少なくともツインキャット、コデスあたりはたぶんそんなに苦労しないと思います、変数化って。
あそこも統一してるっていうか近いかな近い。
あそこはかなりの実装率があるので変数に関して。そんなめちゃめちゃ苦労するようなことじゃないですけど、いわゆる国産PCっていうところで見ると結構きつい。
でもさっき言われたとおり、言われた確かにAMLOのビットアクセスできないことだけでもかなり痛いですね、あそこ。あれだけでもめどくさいね。
そうですね。やる方法はいっぱいあるんですよ。やる方法はいっぱいあるけどシンプルじゃないんですよね。
めどくさい。
テーマかかるよね、テーマかかる。だからデバイスでいいんじゃうと思っちゃうんですよね。
思っちゃいますよね。
なるほど。
だって要は設計するときに頭の中で思い描いたやつをそのまま書きたいじゃないですか、基本的には。
1ビット目はこれ、2ビット目これ、そこを書きたいですよね。
そうですね。で、高級言語にしていく利点ってそこじゃないですか。頭の中で思い描いたフローがそのまま一文とかで書けていくからいいわけですよね。
でも今の、はい。
それをできないってことは、いわゆるテキスト言語にする良さを殺してるわけですよ。
PS5のアクティスチャーが中途半端になってるから、中途半端でいいからいいですか。ちょっと微妙だから変数も中途半端になっちゃったっていう。
そうです。だからデバイスがいいんじゃなくて変数のサポートが足りないっていうのが多分、僕は回答だと思います。
それはありますね。例えば、なんかもう悪口大会みたいになっちゃうけど大丈夫ですか、ここで。
悪口じゃないです。これは感じてることだから。別にそれを実装してない、別にPLCメーカーが悪いって言ってるわけじゃないですよ。
そうですね。言っちゃったんですけど、例えばGXworksですよね。変数結構よくできたと思うんですよ。でもコンパイルするときによく引っかかるんですよ。
メモリの割り付けを再設定し直してくださいとか。あそこでなんでエンドユーザーに負担かかるの?と思ったんですね。
こういうのは本来はコンパイラーやる仕事じゃないの?と。コンパイラーとIDやる仕事なのに、なんでエンドユーザーに押し付けてるのかなとずっと思ってたんですね。
そうですね。だからやっぱり中途半端なんですよね、そういうところが。
はい。こういう現象で、例えばSiemensさんとかPeckoffさんとか一回も会ったことないんですよね。
彼らコンパイラー全部やるので、アドレス、すごい意識してるんですけど、そこまでコンパイラー引っかかるレベルではないんですよね。
だからこういうところもしっかり、プログラムを作る側の人間の負担を減らさないといけないなと思ったんですね。
これが高橋さんの出た、これを作った人はプログラムを作ってないからっていうところの結論が出てきたんですよね。
僕はそこだけだと思います。だから変数は別に否定する必要ないと思います、別に。
ただ整えてない環境が。
そうですね。あとは別にICのサポートも別にいいわけじゃないんで、例えばリストとかタプルとかないわけですよね。
なるほど。
結局アドレスだとバンチして、いわゆるインデックスリストっていう便利な仕組みがあるわけですよね。
あれを作るのはなかなか難しい。
そうですね。
例えば、バイソンとかそういう言語だったら、アペンドを叩くとリストの後ろにどんどん追加していくことができたりしますけど、できないじゃないですか。
一番最初の変数を100個100個加工して、その中のどれに入れるっていうことしかできないわけですよね。
そうですね。特に国産できないですね。
それを1にするとかできないわけじゃないですか。
できないですね、これは。
国産というか別に海外もできないんですけど、ICに対応してないから。
例えば、ダイナミックのメモリ割り付けだったら最近できたんですね、CODISとか。
終わったら開放、メモリ開放ってできるんですけど、やっぱりそれらへのリスクもあるというところで、使わなくてもいけるんですよね。
やっぱり過渡期だったと思うんですよね。
やっぱり足りない、そもそもこの環境足りないですよね。
足りないというか、それで無理やり今の世の中で、無理やりに変数使いましょう、変数使おうというようになったので、余計に対応類みたいな違和感感じてるんじゃないかなって感じですよね。
そうですね。ただ、変数を使わなくていいって思ってるわけではないんですよね。
変数への移行の必要性
使ったほうがいいんですよ。なんでかって言うと、ポテンシャルは絶対そんなに高いからですね。
今のデバイスが今より良くなることはもう多分ないです。
進化がない。
今の便利さがさらに便利になることは多分ないです、これからも。
なるほど。
となると、どこかのタイミングでは変数に移行するっていうのはもう多分間違いなく発生すると思います。
なぜならデバイスが伸びないからですね。
これ以上進まないっていうか。
これ以上便利になりようがない。だってメモリなんだもん。
メモリなんだもんね。
すごい原始的な形なんで、あれより良くなることはないんですよね。
となると、やっぱりそれ以上のポテンシャルがあるのは変数だと思うので、どこかで乗り換えるフェーズが来る。
それは使ってないと乗り換えられないから。
実際に装置から始めようみたいな感じですね。
僕のオススメとしては修行だと思っていった方がいいです。
何ですか?
修行だと思って、やった方がいいんじゃないかって思いますね。
苦しい修行、大変な修行だと思って少しずつやるしかない。
一部のことを除いたら、そんなに不便することではなくなってきてるので。
慣れ?
慣れというか、基本的にビット周りだけですよ。
ビット?
ブール型の扱いだけですよね、バイト。
あそこ以外は別に何の問題もないんで、基本的に。
ビットが一番問題。
そこだけも覚悟してやるでいいと思います。
なるほど。
小さいアプリから始めたら、少しずつ修行で慣れていただければいいんじゃないという話ですよね。
そうですね。
デバイスとの差がめっちゃ開いてるかっていうと別にそうでもない。
我慢したら別に変数使うこともないみたいなレベルなので。
今後のポテンシャルにかけて変数化していくのがいいんじゃないでしょうかっていうのが私の回答ですかね。
変数使用の課題と経験
なるほど。
というわけで今後は少しずつ変数を使ったほうがいいですね。
それをビットのアクセスの方法を抑えておいて、それで端緒のところも少し我慢すれば使えないものじゃないよということですよね。
そうですね。結局使わないとメーカーも開発しないんで、使ってないからやらなくていいじゃんってなるじゃないですか。
そうですね。
だから成功法は使った上で文句言うっていうのが成功法ですね。
だから高須さんはたくさん使ってます。たくさん文句言ってる。
そうですね。それはやったほうがいいと思ってるんで。
そうです。使う人間いるんだから改善するんですよね。
使ってなくてこれができないんだよねみたいなことを言うと信頼されないんで、使ってるけどこれが困ってますっていうのがやっぱり成功法ですね。
なるほど。どういう感じかな。
ちなみに今日しゃべったことは、もしかしたら私の知らない機能があるかもしれないんで。
特にAMLOのビットアクセスの便利機能があれば教えてください。
私も知らない。私もちょっとアンドをやってるので。
アンドカーターの共用体やってるので、何かいい方があれば教えてください。
共用体なるべく使いたくないですからね。
あれめんどくさくないですか。これは多分わたあさんもう一個。
わたあ提出はめんどくさい。
めんどくさいし、あれのおかげでもイザネットIPが非常に使いづらいんで。
イザネットIP、AMLOもバイト来てるんですよね。バイトできるんですよ。全部。
でもあれワードでくっついたり、くっついていったりがめんどくさいんですか。
これちょっと何度かしてほしいなと思ってるんですよね。
いざSteemanceはバイトアクセスできますけどね。
ワードの中で1バイト目アクセスしたりはできるんですけど、それくらいまでやってほしいなと思うんですね。
そうですね。メモリが残ってれば一旦メモリに移してそれをばらして戻すみたいなのが可能ですけど、メモリないんで。
AMLOは基本変数ですか。デバイス使えないんですか、新しいCPUが。
デバイス使えないですね。
なるほど。
やりようが結構少ない。
やりよう。じゃあNXとか使ったら変数使わないってことですか。
変数使うしかないです。
IC、すごい、そうですね。なるほど。
そういうもんやっつったらそういうもんかもしれないですけど。
そうね。ちょっと我慢して使うしかないかもしれないですね。
これディスってるわけじゃないんですよ。今後の伸びしろだと思った方がいいです。
今後のために今後。これからAMLOのPC使うわけじゃないかもしれないしね。
別物を使ったら、オーシャンを使ったらまだ変数変わるかもしれないし。
わかんないですけど。ちょっとよくなるけど。
別に変数回りを改善するのはそんなに難しい話じゃないですから。
そうですね。でも第一歩は抵抗があるんじゃないですか。
日本語と変数の親和性
多分第一歩の抵抗かもしれないですね。
使ったら何らかなるんじゃないと多分みんな思っていると思いますね。
面倒くさいですね。変数考えるのが。
名前が結構哲学的だと思いません?
いい名前つけるのは。変数は。
そこかなと思ったんですね。
僕、日本語って名前に変数つけてますけどね。
え、マジ?緊急停止みたいな感じですか。そのまま日が明かないで。
緊急停止っていうワードを作ったりしますよ。
いや、ある。でもね、これ思ったんですけどね。
私、昔1回SiemensのPLC見たことがあって、日本人に作ったプロジェクトですけど、中の変数全部日本語ですよ。
僕は全然それ書くことありますよ。国外に出さないんだ。国外に出さないんだったらもうそれ書くことあります。
そう。初めて。緊急停止1、緊急停止2、そのまま変数。
そういうやり方もあるんだなと言ってたんです。
僕でも意外と本読んでるみたいで、悪くないなと思ったんですよ。
日本語のいいとことしては文字数が少ないんで、めちゃめちゃわかりやすく書けるっていうのはあります。
確かに。だから日本語も悪くないですよ。日本語から変数から始めよう。
運転準備って4文字ですからね。
そうですね。運転準備。だって英語だったら、どういえば運転、システムレディ。もう10文字以上あるんですね。
アルファベット。なるほど。
圧縮率が。
という感じです。
という感じで。
この件はこれでいいかなと。
そうですね。
我々は変数推進派なので、特命キーワードを応援してますのでよろしくお願いします。
何があったら高田さんに聞いてください。
そうですね。
私も応援します。
というわけでラジオも終わりに近づいてきましたけど。
とりあえず明日のストックがないので、今日これから編集して明日の1本目を頑張ってあげてから寝るんですけど。
すいませんね。もう1本作るべきだったな。
そうですね。今年年内は何とか毎日投稿したいなと思ってます。
そうですね。これからまたいくつかゲストに行きたいっていうふうなお声もいただいてますので、それもちょっと言いながら進めていければなというふうに思っておりますのでよろしくお願いします。
とりあえず年内は何とか週7投稿頑張って、年上げぐらいからちょっと落とすかもしれないですけど。
はい。
はい。というわけで第9回のFace Studyやってまいります。
はい。
はい。じゃあまた来週いっぱい頑張っていければと思いますので、皆さまとよろしくお願いします。
はい。
それではファクトリーオートメーションラジオのほうは終了したいと思います。皆さんありがとうございました。
ありがとうございます。
22:28
コメント
スクロール