西门子STL语言案例Word格式文档下载.docx
《西门子STL语言案例Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《西门子STL语言案例Word格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。
TMW20
AI2.1
LS5T#10S
SET[MW20]//T11
//用于定时器
LMW20
L1
+I
TMW22
AI2.2
CUC[MW22]//C12
//用于计数器
L12
TLW20
UCFC[LW20]//FC12
//用于FC
OPNDB[LW20]//DB12
//用于DB
STL案例3:
存储区地址指针-32位地址指针
OPNDB1//打开共享数据块
OPNDI3//打开背景数据块,最多同时打开两个DB块
L4
SLD3
TMD20//转换为指针为P#4.0
LP#20.0
TMD24//将指针P#20.0存储在MD24中
L320
TMD28//转换为指针为P#40.0,存在MD28中
LDBW[MD20]//DB1.DBW4
LDBW[MD24]//DB1.DBW20
TDIW[MD28]//DB3.DBW40
STL案例4:
存储区地址指针-32位地址指针,与LOOP指令配合操作,某一DB块中与MW2相等的第一个数的位置
L0
TMW100
TMD4
OPNDB1
L100
NEXT:
TMW100
LMW2
LDBW[MD4]
==I
=M10.0
AM10.0
JCm1
LMD4
LP#2.0
+D
LMW100
LOOPNEXT
m1:
FPM10.0
JNCm2
/D
+1
TMD8
STL案例5:
寄存器间接寻址-32位内部区域指针使用示例
LAR1P#10.0
LDBW[AR1,P#12.0]
LAR1MD20
LDBW[AR1,P#0.0]
LAR2P#40.0
TDBW[AR2,P#0.0]
STL案例6:
寄存器间接寻址-32位交叉区域指针使用示例
LAR1P#M20.0
A[AR1,P#1.1]//注意格式,M21.1
=Q1.2
LP#I40.0
LAR2
LW[AR2,P#0.0]//注意格式
TMW60
STL案例7:
Point数据类型指针使用示例
Point指针占用48位地址空间,主要用于向被调用的函数FC/FB传递复合数据类型(如ARRAY、STRUCT、UDT等)的实参,在被调用函数的FC/FB内部可以间接访问实参的存储器。
输入首地址,求多个浮点数的平均值。
CALLFC3
In_Data:
=P#M100.0//Point型
NO:
=4//Int型
OUT_VAL:
=MD20
内部程序如下
T#ADD_TEMP//临时变量清零
LAR1P##In_Data//或LP##In_Data;
LAR1
LW[AR1,P#0.0]//DB块号或0
==I//判断是否是DB块数据
JCM1
T#BLOCK_NO
OPNDB[#BLOCK_NO]
M1:
LD[AR1,P#2.0]//第一个数据的起始地址
LAR1
L0
L#NO
==I
JCEND
NO:
T#NO_TEMP
LD[AR1,P#0.0]
L#ADD_TEMP
+D
T#ADD_TEMP
L#NO_TEMP
LOOPNO
DTR
/R
T#OUT_VAL
END:
NOP0
多背景调用时注意地址偏移
STL案例8:
Any数据类型指针使用示例
与Point指针相比,Any类型指针可以表示一段长度的数据,例如:
P#DB1.DBX0.0BOOL16,也可以选择直接赋值,如DB1.DBW0。
输入Any指针地址,求多个浮点数的平均值。
CALLFC13
=P#DB1.DBX0.0REAL8
OUT_VAL:
T#ADD_TEMP
LP##In_Data
LAR1
LB[AR1,P#1.0]//若数据类型不是REAL,则跳转到END
LB#16#8//代表REAL数据类型的代号
<
>
D
JCEND
LW[AR1,P#4.0]//Any指针DB号或0
JCM1
OPNDB[#BLOCK_NO]
M1:
LW[AR1,P#2.0]//Any指针数据长度
T#Data_LEN
LD[AR1,P#6.0]//Any指针第一个数据起始地址
L#Data_LEN
NO:
T#DATA_NO
LADD_TEMP
+R
TADD_TEMP
+AR1P#4.0
L#DATA_NO
L#Data_LEN
ITD