ものづくりニュース by aperza

シーケンス制御講座「浮動小数点」

シーケンス制御講座「浮動小数点」

基礎からはじめるシーケンス制御講座

中級:浮動小数点

浮動小数点という言葉をきいたことがあるでしょうか? シーケンサで計算すると、小数点が使用できません。

割り算を行うと整数部分しか計算されず、変わりに余りが計算されます。

しかし細かい計算がしたいこともあります。そんなときは浮動小数点を使用してみましょう。

 

浮動小数点は名前は難しいですが、とても簡単に使用できます。浮動小数点とはデータレジスタを2個(2ワード)使い、小数点が使える実数として扱うことができるのです。

説明よりも実際に使いながら説明してみましょう。

スクリーンショット 2017-04-04 17.44.09

まず最初に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
図解入門よくわかる最新シーケンス制御と回路図の基本 (How‐nual Visual Guide Book)
武永 行正
秀和システム
売り上げランキング: 31,176

1977年、広島県福山市生まれ。武永制御 代表。「基礎からはじめるシーケンス制御講座」管理人。◎福山職業能力開発短期大学校(制御科)を卒業。某電機会社にて設備エンジニアを務めた後、武永制御を創業。◎著作に『図解入門よくわかる最新シーケンス制御と回路図の基本』(2013年 秀和システム)、『これだけ!シーケンス制御』(2014年 秀和システム これだけ!シリーズ)がある。◎基礎からはじめるシーケンス講座 http://plckouza.com/index.html