- 締切済み
三菱PLC(FX3U)の浮動小数点転送と比較について
- 三菱PLC(FX3U)の浮動小数点のデータ転送方法や比較方法について詳しく教えてください。
- 浮動小数点データを転送する際には、EMOVやDEMOVを使用する必要がありますが、なぜMOVやDMOVではダメなのでしょうか?また、浮動小数点の比較についても詳しく説明してください。
- 初歩的な質問かもしれませんが、三菱PLC(FX3U)の浮動小数点データの転送方法や比較方法についてお知りになりたいです。MOVやDMOVでの転送は問題ないのか、ECMPや不等号の使用方法についても教えてください。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- lumiheart
- ベストアンサー率47% (1147/2425)
>なぜ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/
- TIGANS
- ベストアンサー率35% (245/681)
CPUでの一般論だと、32ビットデータをどう転送しても良さそうですが PLCなどのデータレジスタが特殊な役割を持っている場合にはダメですね。 例えばアドレスレジスタやカウンタレジスタに、浮動小数点データを転送するのは意味がありますか? バグである可能性が高いと思いませんか? 命令を分けておく事でバグの検出がしやすくなると思いませんか? また演算レジスタに転送するときにも、フラグの関係で分ける必要がありますね。 比較命令は、INTEGERとFLOATではそもそもレジスタ内の割付フォーマットが違うので同じ命令では比較出来ません。FLOATデータをINTEGER命令で操作した場合には正しい演算結果は期待できないです。
補足
回答ありがとうございます。 比較の件は、もちろんFLTとINTで大小の比較出来ないことは理解していますが、単純にビット状態が同じか比較するだけであれば、入っているデータがFLTであっても〈〉で比較して、確認出来るかなと思っただけです。 整数ではよくそうやって値の更新のフラグに使っているので、よくよく考えたら別に整数以外でも使えるよね?って思ったので。 バグの件はご最もだと思いました。 でもマニュアルにMOVでも大丈夫ですよと書いて欲しいです。マニュアルのEMOV命令使用例でFLTのレジスタ同士の転送が載っていたので、あたかもそれじゃないとダメみたいな感じだったので、質問させていただきました。
お礼
回答ありがとうございます。 転送は問題ないのですね。すっきりしました。 自分はPLCとかしかやらないのでFORTRANの話はよく分かりません。