西门子STL语言案例.docx

上传人:b****9 文档编号:25427676 上传时间:2023-06-08 格式:DOCX 页数:7 大小:15.44KB
下载 相关 举报
西门子STL语言案例.docx_第1页
第1页 / 共7页
西门子STL语言案例.docx_第2页
第2页 / 共7页
西门子STL语言案例.docx_第3页
第3页 / 共7页
西门子STL语言案例.docx_第4页
第4页 / 共7页
西门子STL语言案例.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

西门子STL语言案例.docx

《西门子STL语言案例.docx》由会员分享,可在线阅读,更多相关《西门子STL语言案例.docx(7页珍藏版)》请在冰豆网上搜索。

西门子STL语言案例.docx

西门子STL语言案例

STL案例1:

数值到位的对应

1.LAR1P##SetValue//#SetValue为输入,WORD型

TAR2

+AR1

A【AR1,P#】

=#//Q_Adress为UDT,OutPut为结构体

A【AR1,P#】

=#……………………………………

同理,位到数值的对应也是一样的处理方法。

 

STL案例2:

存储区地址指针-16位地址指针(应用于T/C/DB/DI/FB/FC等的号)

L11

TMW20

A

LS5T#10S

SET[MW20]//T11

//用于定时器

LMW20

L1

+I

TMW22

A

CUC[MW22]//C12

//用于计数器

L12

TLW20

UCFC[LW20]//FC12

//用于FC

OPNDB[LW20]//DB12

//用于DB

STL案例3:

存储区地址指针-32位地址指针

OPNDB1//打开共享数据块

OPNDI3//打开背景数据块,最多同时打开两个DB块

L4

SLD3

TMD20//转换为指针为P#

LP#

TMD24//将指针P#存储在MD24中

L320

TMD28//转换为指针为P#,存在MD28中

LDBW[MD20]//

LDBW[MD24]//

+I

TDIW[MD28]//

 

STL案例4:

存储区地址指针-32位地址指针,与LOOP指令配合操作,某一DB块中与MW2相等的第一个数的位置

L0

TMW100

TMD4

OPNDB1

L100

NEXT:

TMW100

LMW2

LDBW[MD4]

==I

=

A

JCm1

LMD4

LP#

+D

TMD4

LMW100

LOOPNEXT

m1:

FP

JNCm2

LMD4

LP#

/D

+1

TMD8

 

STL案例5:

寄存器间接寻址-32位内部区域指针使用示例

OPNDB1

LAR1P#

LDBW[AR1,P#]

LAR1MD20

LDBW[AR1,P#]

+I

LAR2P#

TDBW[AR2,P#]

 

STL案例6:

寄存器间接寻址-32位交叉区域指针使用示例

LAR1P#

A[AR1,P#]//注意格式,

=

LP#

LAR2

LW[AR2,P#]//注意格式

TMW60

 

STL案例7:

Point数据类型指针使用示例

Point指针占用48位地址空间,主要用于向被调用的函数FC/FB传递复合数据类型(如ARRAY、STRUCT、UDT等)的实参,在被调用函数的FC/FB内部可以间接访问实参的存储器。

输入首地址,求多个浮点数的平均值。

CALLFC3

In_Data:

=P#//Point型

NO:

=4//Int型

OUT_VAL:

=MD20

内部程序如下

L0

T#ADD_TEMP//临时变量清零

LAR1P##In_Data//或LP##In_Data;LAR1

L0

LW[AR1,P#]//DB块号或0

==I//判断是否是DB块数据

JCM1

T#BLOCK_NO

OPNDB[#BLOCK_NO]

M1:

LD[AR1,P#]//第一个数据的起始地址

LAR1

L0

L#NO

==I

JCEND

NO:

T#NO_TEMP

LD[AR1,P#]

L#ADD_TEMP

+D

T#ADD_TEMP

L#NO_TEMP

LOOPNO

L#ADD_TEMP

L#NO

DTR

/R

T#OUT_VAL

END:

NOP0

多背景调用时注意地址偏移

 

STL案例8:

Any数据类型指针使用示例

与Point指针相比,Any类型指针可以表示一段长度的数据,例如:

P#BOOL16,也可以选择直接赋值,如。

输入Any指针地址,求多个浮点数的平均值。

CALLFC13

In_Data:

=P#REAL8

OUT_VAL:

=MD20

内部程序如下

L0

T#ADD_TEMP

LP##In_Data

LAR1

LB[AR1,P#]//若数据类型不是REAL,则跳转到END

LB#16#8//代表REAL数据类型的代号

<>D

JCEND

L0

LW[AR1,P#]//Any指针DB号或0

==I

JCM1

T#BLOCK_NO

OPNDB[#BLOCK_NO]

M1:

LW[AR1,P#]//Any指针数据长度

T#Data_LEN

LD[AR1,P#]//Any指针第一个数据起始地址

LAR1

L#Data_LEN

NO:

T#DATA_NO

LD[AR1,P#]

LADD_TEMP

+R

TADD_TEMP

+AR1P#

L#DATA_NO

LOOPNO

L#ADD_TEMP

L#Data_LEN

ITD

DTR

/R

T#OUT_VAL

END:

NOP0

多背景调用时注意地址偏移

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1