西门子STL语言案例.docSTL案例 1:数值到位的对应
1. LAR1 P##SetValue //#SetValue 为输入, WORD型
TAR2
+AR1
A 【AR1,P#】
# // DB块中与 MW2 相等的第一个数的位置
L 0
T MW100
T MD4
OPN DB1
L 100
NEXT: T MW100
L MW2
L DBW[MD4]
==I
=
A
JC m1
L MD4
L P#
+D
T MD4
L MW100
LOOP NEXT
m1: FP
JNC m2
L MD4
L P#
/D
+ 1
T MD8
STL案例 5:寄存器间接寻址 -32 位内部区域指针 使用示例
OPN
DB1
LAR1
P#
L
DBW[AR1,P#]
LAR1
MD20
L
DBW[AR1,P#]
+I
LAR2
T
P#
DBW[AR2,P#]
STL案例 6:寄存器间接寻址 -32 位交叉区域指针 使用示例
LAR1
P#
A
[AR1,P#]
// 注意格式,
=
L
LAR2
P#
L
T
W[AR2,P#]
MW60
// 注意格式
STL案例 7:Point 数据类型指针使用示例
Point 指针占用 48 位地址空间,主要用于向被调用的函数 FC/FB传
递复合数据类型(如 ARRAY、STRUCT、UDT等)的实参,在被调
用函数的 FC/FB内部可以间接访问实参的存储器。
输入首地址,求多个浮点数的平均值。
CALL
FC3
In_Data:=P#
//Point
型
NO
:=4
//Int
型
OUT_VAL :=MD20
内部程序如下
L
0
T
#ADD_TEMP
// 临时变量清零
LAR1
P##In_Data
// 或 L P##In_Data ; LAR1
L
0
L
W[AR1,P#]
//DB 块号或 0
==I
// 判断是否是 DB 块数据
JC
M1
T
#BLOCK_NO
OPN
DB[#BLOCK_NO]
M1:
L
D[AR1,P#] // 第一个数据的起始地址
LAR1
L
0
L #NO
==I
JC END
NO: T #NO_TEMP
L D[AR1,P#]
L #ADD_TEMP
+D
T #ADD_TEMP
L #NO_TEMP
LOOP NO
#ADD_TEMP L #NO
DTR
/R
#OUT_VAL
END: NOP 0
多背景调用时注意地址偏移
STL案例 8:Any 数据类型指针使用示例
与 Point 指针相比,Any 类型指针可以表示一段长度的数据, 例如:
P# BOOL 16,也可以选择直接赋值,如。
输入 Any 指针地址,求多个浮点数的平均值。
CALL FC13
In_Data:=P# REAL 8
OUT_VAL:=MD20
内部程序如下
L
T
L
LAR1
0
#ADD_TEMP
P##In_Data
L
B[AR1,P#]
// 若数据类型不是
西门子STL语言案例 来自淘豆网www.taodocs.com转载请标明出处.