程序员开发实例大全宝库

网站首页 > 编程文章 正文

西门子 STL代码解读:JM跳转功能_西门子s-ltr指令

zazugpt 2025-02-21 16:10:51 编程文章 22 ℃ 0 评论

JM:当为负时跳转,执行后并不断开二进制逻辑链

JM并不是根据累加器1的值来进行判断跳转,他是根据CC0和CC1这2个状态位的状态来进行的跳转。当程序执行逻辑运算时会根据运算结果,改变这2个状态位的值。比如执行过0-2运算时,累加器1结果为-2,CC0=TRUE,CC1=FALSE,此时跳转条件成立。如果将-2直接载入累加器1,虽然累加器1结果也为-2,此时CC0和CC1没有改变,跳转条件不成立。

STL代码


逐行解读:

1、A #in1

检查IN1的状态是否为TRUE,将/FC置为true,IN1状态保存到RLO。

2、L #int1

3、L #int2

4、-I

5、JM _001

执行IN1-IN2之后,系统会根据数学运算结果,改变CC0和CC1的状态,当CC0为1,CC1为0时跳转。

6、A #in2

7、= #OUT1

8、JU _002

当结果大于零不执行跳转时,从第6行继续执行程序扫描,二进制逻辑链为A #in1——>A#in2

等于赋值指令,将RLO状态赋值到OUT1,就相当于输出线圈;

跳转到_002结尾处。

9、_001: AN #in2

10、= #OUT2

当第4行运算结果小于零时,JM跳转到此处。二进制逻辑链为A #in1——>AN #in2,将RLO状态赋值到OUT2。

11、_002: NOP 0

空操作指令

SCL代码



总结:JC,JNB等指令执行过后,就会将/FC状态位置1,会开始新的二进制逻辑,JM/JP/JZ/JMP/JMZ之类的条状不会影响状态位,只是对程序的扫描顺序。大家在进行STL代码解读的时候一定要注意。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表