恭喜,你发布的帖子
发布于 2024-05-01 09:19:05
18楼
大佬,西门子 S7-300 里面没有系统时钟,也就是没有官方的 FirstScan 可以直接用。
我看有人在 OB100 里面这样定义:
IF NOT "FirstScan" THEN
"FirstScan" := TRUE;
END_IF;
然后在 OB1 中的最后一段,将 "FirstScan" 复位掉。
----------------------------------------------------
这样做与文档中的“在 启动 OB 完成后 第一个扫描周期该位置位为 1,之后的扫描周期复位为 0”不一致。这样写有没有潜在的“风险”?
想知道以前的老 300 PLC,大家是怎么写 FirstScan 的?怎么写会符合规范呢?
这个做法和我的用法一摸一样。
主要用于模块初始化,不用采用系统的firstScan,因为系统的firstScan只在上电时有用,而很多时候我们是在运行中添加FB的,所以就不会有系统firstScan可用。
一般我这样写:
btFirstScanRP := Not bFirstScan;
bFirstScan := True;
这里btFirstScanRP是个temp,而bFirstScan是个static,初值为false.
请填写推广理由:
分享
只看
楼主