STL案例1:数值到位的对应
1. LAR1 P##SetValue 〃#SetValue 为输入,WOR型
TAR2
+AR1
A 【AR1,P#1.0】
=#Q_Adress.OutPut.Q_Pos1 II Q_Adress为UDT, OutPut 为结构体
A 【AR1,P#1.1】
=#Q_Adress.OutPut.Q_Pos2
同理,位到数值的对应也是一样的处理方法。
L 11
T MW20
A I2.1
L S5T#10S
SE T[MW20]
//T11 //用于定时器
L MW20
L 1
+I
T MW22
A I2.2
CU C[MW22]
//C12 //用于计数器
L 12 T LW20
UC FC[LW20]
//FC12 OPN DB[LW20]
//用于D
B //DB12
STL案例3:存储区地址指针-32位地址指针
OP
DB1 // 打开共享数据块
N
OP
DI3 // 打开背景数据块,最多同时打开两个DB块N
L 4
SLD 3
T MD20 // 转换为指针为P#4.0
L P#20.0
T MD24 // 将指针P#20.0存储在MD24中L 320
T MD28 // 转换为指针为P#40.0,存在MD28中
L DBW[MD20] //DB1.DBW4
L DBW[MD24] // DB1.DBW20
+1
T DIW[MD28] // DB3.DBW40
STL案例4:存储区地址指针-32位地址指针,与LOOP指令配合操作,某一DB块中与MW2相等的第一个数的位置
L 0
T MW100
T MD4
OPN DB1
L 100
NEXT: T MW100
L MW2
L DBW[MD4]
==I
= M10.0
A M10.0
JC ml
L MD4
L P#2.0
+D
T MD4
L MW100
LOOP NEXT m1: FP M10.0
JNC m2
L MD4
L P#2.0 /D
+ 1
T MD8
STL案例5:寄存器间接寻址-32位内部区域指针使用示例OPN DB1
LAR1 P#10.0
L DBW[AR1 ,P#12.0]
LAR1 MD20
L DBW[AR1 ,P#0.0]
+1
LAR2 P#40.0
T DBW[AR2,P#0.0]
STL案例6:寄存器间接寻址-32位交叉区域指针使用示例LAR1 P#M20.0
M21.1 A [AR1,P#1.1] II注意格式,
= Q1.2
L P#I4O.O
LAR2
L W[AR2,P#0.0] II 注意格式
T MW60
STL 案例7: Point 数据类型指针使用示例
Point 指针占用48位地址空间,主要用于向被调用的函数 FC/FB 传递复合数据类型(如 ARRAY STRUCT UDT 等)的实参,在被调 用函数的FC/FB 内部可以间接访问实参的存储器。
输入首地址,求多个浮点数的平均值。
CALL FC3
ln_Data:二P#M100.0 NO :=4 OUT_VAL :=MD20
L 0
T #ADD_TEMP LAR1 P##In_Data L 0
L W[AR1,P#0.0] ==I // JC M1
T #BLOCK_NO
OPN DB[#BLOCK_NO]
M1: L D[AR1,P#2.0] // LAR1
〃lnt
// // //DB //Poi nt 型
型
临时变量清零
或 L P##In_Data ; LAR1
块号或0
判断是否是DB 块数据
第一个数据的起始地址
#N0
==I
JC END
NO: T #NO_TEMP L D[AR1,P#0.0]
L #ADD_TEMP
+D
T #ADD_TEMP
L #NO_TEMP
LOOP NO
L #ADD_TEMP
L #NO
DTR
/R
T #OUT_VAL END: NOP 0
STL 案例8 Any 数据类型指针使用示例
输入Any 指针地址,求多个浮点数的平均值
CALL FC13
ln_Data:二P#DB1.DBX0.0 REAL 8
OUT_VAL:二MD20
L 0
T #ADD_TEMP
L P##In_Data
若数据类型不是REAL 则跳转到END 代表REAL 数据类型的代号
<>D
JC END
L 0
L W[AR1 ,P#4.0] //Any 指针 DB 号或 0 JC M1
T #BLOCK_NO
LAR1
L B[AR1,P#1.0]
// L B#16#8
//
STL案例8 Any数据类型指针使用示例
OPN DB[#BLOCK_NO]
欢迎下载11
M1: L W[AR1,P#2.0] //Any 指针数据长度
T #Data_LEN
L D[AR1,P#6.0] //Any 指针第一个数据起始地址
LAR1
L # Data_LEN
NO: T #DATA_NO
L D[AR1,P#0.0]
L ADD_TEMP
+R
T ADD_TEMP
+AR1 P#4.0
L #DATA_NO
LOOP NO
L #ADD_TEMP
L #Data_LEN
ITD
DTR
/R
T #OUT_VAL
END: NOP 0
欢迎下载12。