シーケンス制御講座「浮動小数点」
基礎からはじめるシーケンス制御講座
中級:浮動小数点
浮動小数点という言葉をきいたことがあるでしょうか? シーケンサで計算すると、小数点が使用できません。
割り算を行うと整数部分しか計算されず、変わりに余りが計算されます。
しかし細かい計算がしたいこともあります。そんなときは浮動小数点を使用してみましょう。
浮動小数点は名前は難しいですが、とても簡単に使用できます。浮動小数点とはデータレジスタを2個(2ワード)使い、小数点が使える実数として扱うことができるのです。
説明よりも実際に使いながら説明してみましょう。
まず最初に30と言う整数をD20に入れます。これはとりあえず30を入れているだけなので、実際はBCDなどから取込んだ値を入れればいいと思います。
次に[FLT D20 D22]と書いてあります。これが浮動小数点表示への変換になります。
D22とD23の2ワードにまたがって30を整数でなく実数で表示しています。表示のみなので、実際のD22には別の整数が入っています。
次が計算部分です。先頭にEがついています。実はD22とD23は浮動小数点表示では30と入っていますが、16ビット整数では30ではありません。
つまりそのまま計算すると違う答えが計算されます。 そこで計算式の先頭にEをつけることで、「この計算は浮動小数点で行なってください。」と指定しているのです。
キーボードの「F3」キーを押してモニタすればよく分かります。モニタ表示に小数点がついているはずです。
ここでは100をかけていますが、これもE100と浮動小数点で指定する必要があります。そして計算結果のD24とD25も浮動小数点で書き込まれます。
次の割り算も同じで浮動小数点で計算します。
このまま浮動小数点で値を管理するのもいいのですが、小数部分が必要なかったり、桁が少ないようでしたら16ビット整数に戻したほうが管理が楽になります。データレジスタも1ワードで良いですし。
そこで「INT」命令で戻すのですが、その前に浮動小数点での値が16ビット整数の範囲内か確認する必要があります。
最後の行のように、D26の値が-32768〜32767の範囲である場合は実行してください。それ以外で行うとエラーになります。
[E< = E-32768 D26] と書いてありますが、これはD26の値が-32768以上のときにONする接点です。この場合も先頭にEをつけて、浮動小数点として扱っています。 D28には少数部分を除いた数値が入ってきます。 これで16ビットに戻す作業は完了です。浮動小数点も一度使ってしまえば特に難しくないはずです。 ここまで回路を作ってしまえば、後はD20に値を入れればD28に答えが返ってくるだけです。 文字列などの扱いも同じです。この値をなにとして扱うかを指定してあげるのです。実際のデータレジスタの中身は整数(さらに細かく言えば16個のビット)なので、浮動小数点で扱う値と実際の整数の値は違います。 しかし、回路作成作業をしていても特に気にする必要はないと思います。ポイントはなにを扱うかだけで、文字列で扱えば、文字列で扱うようにプログラムを作成すればいいのです。 そのときの整数の値は気にすることはないのです。 出典:『基礎からはじめる シーケンス制御講座』
参考書
秀和システム
売り上げランキング: 70,884
秀和システム
売り上げランキング: 31,176