回复:如何编写随机数程序

已锁定

zhaizq

西门子1847工业学习平台

  • 帖子

    158
  • 精华

    0
  • 被关注

    3

论坛等级:侠士

注册时间:2017-08-21

普通 普通 如何晋级?

发布于 2021-12-13 08:30:56

2楼

之前看到过的一个随机数的样例,可以给你参考一下:


//Set "No current job" status

#error := false;

#statusID := #ERROR_IN_THIS_BLOCK;

#status := #NO_CURRENT_JOBS;


//Check if the maximal Value is less than the minimal value

IF (#minValue > #maxValue) THEN

    #error := true;

    #statusID := #ERROR_IN_THIS_BLOCK;

    #status := #MAX_LESS_MIN;

    #LGF_RandomReal := 0;

    RETURN;

END_IF;


//Read system time

#tempTimeStatus := RD_SYS_T(#tempTime);


IF (#tempTimeStatus <> 0) THEN

    #error := true;

    #statusID := #ERROR_RD_SYS_T;

    #status := INT_TO_WORD(#tempTimeStatus);

    #LGF_RandomReal := 0;

    RETURN;

END_IF;


//Callculate a random-start-value depending on the time

#tempRandomValue.%B3 := #tempTime.NANOSECOND.%B0;

#tempRandomValue.%B2 := #tempTime.NANOSECOND.%B1;

#tempRandomValue.%B1 := #tempTime.NANOSECOND.%B2;

#tempRandomValue.%B0 := #tempTime.NANOSECOND.%B3;


//adapt the calculated random number to the given number span

#tempNormReal := NORM_X(MIN := #MIN_UDINT, VALUE := #tempRandomValue, MAX := #MAX_UDINT);

#LGF_RandomReal := SCALE_X(MIN := #minValue, VALUE := #tempNormReal, MAX := #maxValue);

"DB_分期".随机数 := #LGF_RandomReal;

#status := #NO_ERROR;


工控永无止境,努力学习
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15709条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。