技术论坛

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

返回主题列表
作者 主题
1Shadow1
侠士

经验值:1130
发帖数:81
精华帖:4
楼主    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亿),通过交换字节使得达成2个优势,1是扩大了范围,2是避免的数据的连续;最后按照上下限值按比例生成;

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


谋定而后动,精益求精。
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。