西门子plc 的STL语言求解

L DB1.DBD 4
T #TEMP3
CALL "TIME_TCK"
RET_VAL:=DB1.DBD4
L DB1.DBD 4
L #TEMP3
-D
L T#0MS
<D
JC M003
TAK
T DB1.DBW 8
DTR
L 1.000000e+003
/R
T DB1.DBD 10
M003: NOP 0

第1个回答  2018-11-01
读取:DB1.DBD4
赋值给:#TEMP3(这个是临时变量,只在该块有效,且无法跳转)
调用:"TIME_TCK"
RET_VAL:=DB1.DBD4 (意思就是"TIME_TCK" 块有个引脚是RET_VAL,把DB1.DBD4赋值给这个引脚,这个块可以使系统块,也可以是自己写的)
读取:DB1.DBD 4
读取: #TEMP3
执行双整数相减指令(就是DB1.DBD 4减去 #TEMP3 )
读取:T#0MS
<D (执行双整数小于比较指令)
JC M003(如果上一步的结果是1,执行跳转指令跳转到标签M003处,如果不是1,继续往下走)
TAK (前边两个读取结果分别赋值给了两个寄存器,执行数据互换)
T DB1.DBW 8(赋值给DB1.DBW8)
DTR (双整转换为实数,也叫浮点数)
L 1.000000e+003(读取常量1000.0)
/R (执行实数相除指令)
T DB1.DBD 10(赋值给DB1.DBD 10)
M003: NOP 0(JC M003那一步如果执行了的话就跳到这里,然后这一步的命令是啥也不执行)追问

L后的DB数据是手动生成的还是使用装载这个指令生成的?
系统块那个返回值是什么?
T#0ms的数据是0吗?
有推荐的stl教程吗?

追答

- -!
老兄啊,DB块的建立还要多学学啊,这个和是不是STL编程已经没有关系了
如果我用FB块,可以自动生成背景数据块也可以调用共享数据块,但是装载指令怎么能生成DB块呢?它只是个指令
如果是FC,不能自动生成DB块,只能调用共享数据块
数据块的数据可以手动写,也可以提前做好UDT直接快速生成
你这问的前言不搭后语啊

追问

小于D这个的比较的是T#0MS和谁的呢?

本回答被提问者和网友采纳
相似回答