本文へ移動
サポートシェアリングソリューション
OKWAVE Plus

このQ&Aは役に立ちましたか?

締切済み
※ ChatGPTを利用し、要約された質問です(原文:三菱PLC(FX3U)の浮動小数点転送について)

三菱PLC(FX3U)の浮動小数点転送と比較について

2023/10/20 19:41

このQ&Aのポイント
  • 三菱PLC(FX3U)の浮動小数点のデータ転送方法や比較方法について詳しく教えてください。
  • 浮動小数点データを転送する際には、EMOVやDEMOVを使用する必要がありますが、なぜMOVやDMOVではダメなのでしょうか?また、浮動小数点の比較についても詳しく説明してください。
  • 初歩的な質問かもしれませんが、三菱PLC(FX3U)の浮動小数点データの転送方法や比較方法についてお知りになりたいです。MOVやDMOVでの転送は問題ないのか、ECMPや不等号の使用方法についても教えてください。
※ 以下は、質問の原文です

三菱PLC(FX3U)の浮動小数点転送について

2021/07/16 20:10

お世話になります。

三菱PLC(FX3U)の浮動小数点の命令について教えてください。

初歩的な事で申し訳ありませんが、浮動小数点データを転送する場合に、定数を転送する場合はEMOVやDEMOVでやらなければならないのはわかるのですが、浮動小数点データが入っているデータレジスタからデータレジスタに転送(コピー)する場合、MOVやDMOVで転送しても、各ビットがそのままコピーされるのであれば、問題ない気がするのですが、なぜEMOVやDEMOVで転送する必要があるのですか?

またFX3Uですと浮動小数点データの比較をしたいときに,不等号で比較が出来ないので、ECMPなど使わなければならなくて、とても面倒くさいです。値の大小関係なく一緒かどうか見るだけであれば[<> D0 D2]みたいに書いても良いでしょうか?

初歩的な質問で申し訳ございませんが、ご教示ください。
よろしくお願い致します。

回答 (2件中 1~2件目)

2021/07/16 22:18
回答No.2

>なぜEMOVやDEMOVで転送する必要があるのですか?
ただ単にIEC 61131-3と整合性を取る為ダケ
https://www.fa.omron.co.jp/product/special/sysmac/plcopen/
現時点ではMOVやDMOVで転送して問題有りません

問題が出るとすれば近い将来にFX5シリーズにソフト移植する時でしょうね
もしかしたらFX7とかFX9、FX11になったら使用不能となるかも?
いずれ、C言語と同等なデータ型の扱いになるでしょう
http://www9.plala.or.jp/sgwr-t/c/sec13.html

MS-DOS時代にFORTRANで書いたソフトをWin10に移植したいとか
そんな愚を犯さなさないようにね
https://www.nag-j.co.jp/fortran/

お礼

2021/07/17 00:45

回答ありがとうございます。

転送は問題ないのですね。すっきりしました。
自分はPLCとかしかやらないのでFORTRANの話はよく分かりません。

質問者

このQ&Aは役に立ちましたか?

この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。

質問する
2021/07/16 21:24
回答No.1

CPUでの一般論だと、32ビットデータをどう転送しても良さそうですが
PLCなどのデータレジスタが特殊な役割を持っている場合にはダメですね。
例えばアドレスレジスタやカウンタレジスタに、浮動小数点データを転送するのは意味がありますか? バグである可能性が高いと思いませんか?
命令を分けておく事でバグの検出がしやすくなると思いませんか?
また演算レジスタに転送するときにも、フラグの関係で分ける必要がありますね。

比較命令は、INTEGERとFLOATではそもそもレジスタ内の割付フォーマットが違うので同じ命令では比較出来ません。FLOATデータをINTEGER命令で操作した場合には正しい演算結果は期待できないです。

補足

2021/07/16 23:35

回答ありがとうございます。

比較の件は、もちろんFLTとINTで大小の比較出来ないことは理解していますが、単純にビット状態が同じか比較するだけであれば、入っているデータがFLTであっても〈〉で比較して、確認出来るかなと思っただけです。
整数ではよくそうやって値の更新のフラグに使っているので、よくよく考えたら別に整数以外でも使えるよね?って思ったので。

バグの件はご最もだと思いました。

でもマニュアルにMOVでも大丈夫ですよと書いて欲しいです。マニュアルのEMOV命令使用例でFLTのレジスタ同士の転送が載っていたので、あたかもそれじゃないとダメみたいな感じだったので、質問させていただきました。

質問者

お礼をおくりました

さらに、この回答をベストアンサーに選びますか?

ベストアンサーを選ぶと質問が締切られます。
なおベストアンサーを選びなおすことはできません。