PLCのラダーのあれこれ
セクション9:疑似乱数発生プログラム
最近PLCの命令も増えて、高機能命令が増えたため昔自作していた
グレーコード変換や乱数発生もPLCの持つ命令で実行出来る様になりましたが、
動作の勉強をかねて昔作った疑似乱数発生ラダーを備忘録として残す。
1.初期値の設定
static unsigned long x=123456789;//(D200)
y=362436069;//(D202)
z=521288629;//(D204)
w=88675123; //(D206)
2.SEEDを日時から生成する
w=seed;
x=seed<<16+seed>>16;
y=w+x;
z=x^y;
3.乱数発生
unsigned long t;
t=x^(x<<11);
x=y;y=z;z=w;
return(w=w^(w>>19))^(t^(t>>8));
M10がONでSEEDが設定され、M20がONしたらD206に乱数値が符号無し整数で格納されます。