闲来没事,扒之前的帖子,看到有PN沿,感觉有话要说。
个人觉得,smart的PN脉冲沿指令,有两种运行状态(这与三菱是不同的),一个是执行,二是扫描不执行。
执行分两种情况,A是没有历史状态,此时不输出只生成历史状态,比如首循环时,无论是P或N沿都不会输出;B是有历史状态,此时当前状态与历史状态做比较,更新历史状态并据比较结果给出输出(能流)。
扫描不执行,三菱的沿指令是有不扫描不执行这种运行状态的,但smart并没有,无论是不调用的子程序还是被JMP跳过的程序段中的PN沿,smart全部会进行扫描不执行操作,即清除掉历史状态,使该PN沿进入没有历史状态的状态。
基于上述结论,很容易分析出如下执行情况:
1、首次执行的PN沿没有输出,比如首循环,比如间隔调用的子程序中的沿指令。
2、在同一循环中多次执行的同一个沿,可能只有首次执行时输出能流,但也可能多次输出能流。比如for循环中的沿指令(或被多次调用的子程序),如果for循环体中不改变沿指令的输入能流,那么此沿指令最多在首个循环时输出一次能流,之后循环是不会输出能流的;如果for循环体中有指令会在循环中改变沿指令的输入能流状态,那么只要在执行中出现符合沿指令输出条件的情况,沿指令就会输出能流。