西门子随机数生成函数赏析

已锁定

1Shadow1

  • 帖子

    122
  • 精华

    6
  • 被关注

    54

论坛等级:侠士

注册时间:2013-12-11

钻石 钻石 如何晋级?

西门子随机数生成函数赏析

2924

6

2023-11-08 10:06:17

默认情况下,TIA 没有随机数生成函数,需要下载通用功能库LGF,我把链接放到下面了:

SIMATIC STEP 7 (TIA Portal) 和 SIMATIC S7-1200/S7-1500 的通用功能库 (LGF)

这个函数主要分两部分,第一部分是2个报警,比较常规。遇到error 直接返回:


第二部分是核心。

最妙的一点是利用了系统时间的纳秒,这个数值包含了(10亿-1)种可能性,


使得种子足够大,变化足够快,然后利用UDINT 类型的更大范围(大约42亿)来表示(种子大小没变);


通过交换字节避免的数据的连续;

最后按照上下限值按比例生成;

整体代码整洁规范,巧妙利用了系统函数的特性,值得学习;我觉得大部分人都会想到利用时间,比如利用ms, 但是这个只能提供1000种可能性,如果不交换字节的话,数据都是有规律的(从小到大),可能结果看起来差不多(额外的会利用了cycletime 的不稳定性,形成的额外随机),但内部却是大有不同。共勉;


西门子随机数生成函数赏析 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有9372条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

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