【上級編】KEYENCE(キーエンス)製PLC(シーケンサ)のKVスクリプトによる乱数生成方法(線形合同法)

乱数ということばをご存じですか?

乱数とは、ゲームとかでよく使う確率のようなものであり、擬似的にランダムな数値を生成することができるものです。

当然、PLC(シーケンサ)でも乱数の命令RNDがありますが、乱数生成は行ったことがないので自分で計算して算出したいと思います。

ですので、今回は線形合同法を使用して乱数をPLC(シーケンサ)で生成したいと思います。

【目次】

広告



線形合同法とは

線形合同法 - Wikipedia

正直よくわかりませんが、X_1 = ( A × X_0 + B ) + mod Cの公式で乱数を生成することができます。
また、周期はCに依存するということですが、全く問題ないという判断です。

RND命令

f:id:vv_6ong_3ka_cp:20181108001350j:plain

参考にPLCのRND命令を記載しておきます。

プログラム

f:id:vv_6ong_3ka_cp:20181105124133j:plain

A、B、Cは任意で決めるものですが、色々な条件があるため、数値を変えては確認を行いました。

動作確認 初期値1

f:id:vv_6ong_3ka_cp:20181105124151j:plain

DM10000に1を代入した際にDM200~DM251で乱数が生成できているのが確認できると思います。

動作確認 初期値2

f:id:vv_6ong_3ka_cp:20181105124206j:plain

つぎにDM10000に2を代入した際に値がDM10000=1と異なるようになっているのがわかると思います。
これによって、乱数を生成することができることを確認することができました。

終わりに

通常のFA制御では絶対にしようしないと私は思います。
しかし、このような知識を持っているかどうかは重要であり、今後のゲーム作成に役立つと思います。

広告


www.niwakafa.com

www.niwakafa.com