作者 | 主题 |
---|---|
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 的不稳定性,形成的额外随机),但内部却是大有不同。共勉;
谋定而后动,精益求精。
|