西门子STL语言案例
- 格式:docx
- 大小:36.58 KB
- 文档页数:12
STL案例1:数值到位的对应1. LAR1 P##SetValue //#SetValue为输入,WORD型TAR2+AR1A 【AR1,P#】= # //Q_Adress为UDT, OutPut为结构体A 【AR1,P#】= #……………………………………同理,位到数值的对应也是一样的处理方法。
STL案例2:存储区地址指针16位地址指针(应用于T/C/DB/DI/FB/FC 等的号)-L 11T MW20AL S5T#10S SE T[MW20] //T11//用于定时器L MW20L 1+IT MW22A CU C[MW22] //FC12//用于计数器L 12T LW20 UC FC[LW20] //FC12//用于FCOPN DB[LW20] //DB12//用于DBSTL案例3:存储区地址指针32位地址指针OPN DB1 //打开共享数据块OPN DI3 //打开背景数据块,最多同时打开两个DB块-L 4SLD 3T MD20 //L P#T MD24 //L 320T MD28 //L DBW[MD20] //L DBW[MD24] //+IT DIW[MD28] //转换为指针为P# 将指针P#存储在MD24中转换为指针为P#,存在MD28中STL案例4:存储区地址指针32位地址指针,与LOOP指令配合操作,某一DB块中与MW2相等的第一个数的位置L 0T MW100T MD4OPN DB1L 100NEXT: T MW100L MW2L DBW[MD4]==I=AJC m1L MD4L P#+DT MD4L MW100LOOP NEXTm1: FPJNC m2 L MD4 L P# /D+ 1 T MD8STL案例5:寄存器间接寻址32位内部区域指针使用示例OPN DB1LAR1 P#L DBW[AR1,P#]LAR1 MD20L DBW[AR1,P#]+ILAR2 P#T DBW[AR2,P#]STL案例6:寄存器间接寻址32位交叉区域指针使用示例LAR1 P#A [AR1,P#] //注意格式,-=L P# LAR2L W[AR2,P#] //T MW60注意格式STL案例7:Point数据类型指针使用示例Point指针占用48位地址空间,主要用于向被调用的函数FC/FB传递复合数据类型(如ARRAY、STRUCT、UDT等)的实参,在被调用函数的FC/FB内部可以间接访问实参的存储器。
西门子PLC,STL语句指令大全西门子PLC,STL语句指令大全指令(英文全称意思 ) :指令含义1、LD ( Load 装载 ) :动合触点2、LDN ( Load Not 不装载 ) : 动断触点3、A ( And 与动合) : 用于动合触点串联4、AN ( And Not 与动断 ) :用于动断触点串联5、O ( Or 或动合 ) :用于动合触点并联6、ON ( Or Not 或动断 ) : 用于动断触点并联7、= ( Out 输出 ) :用于线圈输出8、OLD ( Or Lode): 块或9、ALD ( And Lode): 块与10、LPS ( Logic Push ) :逻辑入栈11、LRD ( Logic Read ) :逻辑读栈12、LPP ( Logic Pop ) :逻辑出栈13、NOT ( not 并非 ) :非14、NOP ( No Operation Performed ) : 无操作15、AENO ( And ENO ) :指令盒输出端ENO相与16、S ( Set 放置 ) : 置117、R ( Reset 重置,清零 ) :清零18、P ( Positive) :上升沿19、N ( Negative) :下降沿20、TON ( On_Delay Timer ) :接通延时定时器21、TONR ( Retentive On_Delay Timer ) : 有记忆接通延时定时器22、TOF ( Off_ Delay Timer ) :断开延时定时器23、CTU ( Count Up ) : 增计数器24、CTD ( Count Down ) : 减计数器25、CTUD ( Count Up/ Count Down ) :增减计数器26、ADD ( add 加 ) : 加注意//ADD_I (_ I 表示整数)ADD_DI( DI表示双字节整数)ADD-R (R 表示实数)它们都是加运算只是数的大小不同。
前言,目录 位逻辑指令 1 比较指令 2 转换指令 3 计数器指令 4 数据块指令 5 逻辑控制指令 6 整数运算指令 7 浮点数运算指令 8 装载和传送指令 9 程序控制指令 10 移位和循环移位指令 11 定时器指令 12 字逻辑指令 13 累加器指令 14附录所有语句表指令一览 A 编程举例 B 参数传递 CSIMATICS7-300和S7-400 语句表(STL )编程参考手册2006年3月版A5E00706960-01索引安全指南本手册包括应该遵守的注意事项,以保证人身安全及财产损失。
在本手册中,与人身安全有关的注意事项通过安全警告符号突出显示,而只与财产损失有关的注意事项则没有安全警告符号。
这些注意事项根据危险等级显示如下:危险表示若不采取适当的预防措施,将导致死亡或严重的人身伤害。
警告表示若不采取适当的预防措施,将可能导致死亡或严重的人身伤害。
小心带安全警告符号时,表示若不采取适当的预防措施,将导致轻微的人身伤害。
小心不带安全警告符号时,表示若不采取适当的预防措施,将造成财产损失。
注意如果不引起相应的重视,将会导致意外的结果或状态。
当出现多个安全等级时,应该采用最高危险等级的安全提示。
带安全警告符号的人员伤害警告也可能会导致财产损失。
合格人员只有合格人员才允许对设备/系统进行调试和操作。
合格人员规定为根据既定的安全惯例和标准,被授权对设备、系统和电路进行调试、接地和加装标签的人员。
正确使用请注意如下事项:警告该装置及其组件只能用于产品目录或技术说明书中所阐述的应用,并且只能与由西门子公司认可或推荐的第三方厂商提供的设备或组件一起使用。
本产品只有在正确的运输、贮存、设置和安装以及仔细地运行和维护的情况下,才能正确而安全地运行。
商标标有®的所有名称均为西门子公司的注册商标。
本文档中的其它一些标志也是注册商标,如果任何第三方出于个人目的而使用,都会侵犯商标所有者的权利。
郑重声明我们已核对过本手册的内容与所述硬件和软件相符。
西门子S T L语言案例STL案例1:数值到位的对应1. LAR1 P##SetValue //#SetValue为输入,WORD型TAR2+AR1A 【AR1,P#1.0】= #Q_Adress.OutPut.Q_Pos1 //Q_Adress为UDT, OutPut为结构体A 【AR1,P#1.1】= #Q_Adress.OutPut.Q_Pos2……………………………………同理,位到数值的对应也是一样的处理方法。
STL案例2:存储区地址指针16位地址指针(应用于T/C/DB/DI/FB/FC 等的号) -L 11T MW20A I2.1L S5T#10S SE T[MW20] //T11//用于定时器L MW20L 1+IT MW22A I2.2 CU C[MW22] //FC12//用于计数器L 12T LW20 UC FC[LW20] //FC12//用于FCOPN DB[LW20] //DB12//用于DBSTL案例3:存储区地址指针32位地址指针OPN DB1 //打开共享数据块OPN DI3 //打开背景数据块,最多同时打开两个DB块 -L 4SLD 3T MD20 //L P#20.0T MD24 //L 320T MD28 //L DBW[MD20] //DB1.DBW4L DBW[MD24] // DB1.DBW20+IT DIW[MD28] // DB3.DBW40转换为指针为P#4.0 将指针P#20.0存储在MD24中转换为指针为P#40.0,存在MD28中STL案例4:存储区地址指针32位地址指针,与LOOP指令配合操作,某一DB块中与MW2相等的第一个数的位置L 0T MW100T MD4OPN DB1L 100NEXT: T MW100L MW2L DBW[MD4]==I= M10.0A M10.0JC m1L MD4L P#2.0+DT MD4L MW100LOOP NEXTm1: FP M10.0JNC m2 L MD4 L P#2.0 /D+ 1 T MD8STL案例5:寄存器间接寻址32位内部区域指针使用示例OPN DB1LAR1 P#10.0L DBW[AR1,P#12.0]LAR1 MD20L DBW[AR1,P#0.0]+ILAR2 P#40.0T DBW[AR2,P#0.0]STL案例6:寄存器间接寻址32位交叉区域指针使用示例LAR1 P#M20.0A [AR1,P#1.1] //注意格式,M21.1 -= Q1.2L P#I40.0 LAR2L W[AR2,P#0.0] //T MW60注意格式STL案例7:Point数据类型指针使用示例Point指针占用48位地址空间,主要用于向被调用的函数FC/FB传递复合数据类型(如ARRAY、STRUCT、UDT等)的实参,在被调用函数的FC/FB内部可以间接访问实参的存储器。
STL案例1:数值到位的对应1. LAR1 P##SetValue //#SetValue为输入,WORD型TAR2+AR1A 【AR1,P#1.0】= #Q_Adress.OutPut.Q_Pos1 //Q_Adress为UDT, OutPut为结构体A 【AR1,P#1.1】= #Q_Adress.OutPut.Q_Pos2……………………………………同理,位到数值的对应也是一样的处理方法。
STL案例2:存储区地址指针-16位地址指针(应用于T/C/DB/DI/FB/FC等的号)L 11T MW20A I2.1L S5T#10SSE T[MW20] //T11//用于定时器L MW20L 1+IT MW22A I2.2CU C[MW22] //C12//用于计数器L 12T LW20UC FC[LW20] //FC12//用于FCOPN DB[LW20] //DB12//用于DBSTL案例3:存储区地址指针-32位地址指针OPN DB1 //打开共享数据块OPN DI3 //打开背景数据块,最多同时打开两个DB块L 4SLD 3T MD20 //转换为指针为P#4.0L P#20.0T MD24 //将指针P#20.0存储在MD24中L 320T MD28 //转换为指针为P#40.0,存在MD28中L DBW[MD20] //DB1.DBW4L DBW[MD24] // DB1.DBW20+IT DIW[MD28] // DB3.DBW40STL案例4:存储区地址指针-32位地址指针,与LOOP指令配合操作,某一DB块中与MW2相等的第一个数的位置L 0T MW100T MD4OPN DB1L 100NEXT: T MW100L MW2L DBW[MD4]==I= M10.0A M10.0JC m1L MD4L P#2.0+DT MD4L MW100LOOP NEXTm1: FP M10.0JNC m2L MD4 L P#2.0 /D+ 1T MD8OPN DB1LAR1 P#10.0L DBW[AR1,P#12.0] LAR1 MD20L DBW[AR1,P#0.0] +ILAR2 P#40.0T DBW[AR2,P#0.0]LAR1 P#M20.0A [AR1,P#1.1] //注意格式,M21.1 = Q1.2L P#I40.0LAR2L W[AR2,P#0.0] //注意格式T MW60STL案例7:Point数据类型指针使用示例Point指针占用48位地址空间,主要用于向被调用的函数FC/FB 传递复合数据类型(如ARRAY、STRUCT、UDT等)的实参,在被调用函数的FC/FB内部可以间接访问实参的存储器。
西门子PLC位逻辑指令(STL)(六月份第四周自动化讲义韩书峰)一、与指令和与非指令例如: A I0.0AN I0.1二、或指令和或非指令例如:O I.0ON I0.1三、异或指令和异或非指令例如:X 0.0XN 0.1注:两个X指令将组成异或指令,一个X指令与一个XN指令将组成同或指令。
四、位逻辑指令的组合形式1、先与后或PLC执行程序时有先与后或的规律。
例如: A M0.0AN I0.0OA M0.1AN I0.1= Q0.02、与(非)嵌套如果有需要先或、再与的运算,需要把或运算逻辑放在括号内。
例如:A(O M0.0O I0.0)AN M0.03、或(非)嵌套如果有需要优先运算的时候,可以把优先运算部分放在括号内,然后再执行或运算。
例如:O(L 23L MW10>=I)O I0.0= Q0.04、异或(非)嵌套X()XN()5、赋值指令=6、置位指令S7、复位指令R8、对RLO操作指令CLR 用于清除RLO,SET 用于置位RLO ,NOT 用于对RLO取反SA VE 用于把RLO保存到BR9、上升沿指令与下降沿指令FN 检测RLO下降沿指令FP 检测RLO上升沿指令例如: A I0.0FP M0.0= Q0.09、地址上升沿与地址下降沿指令转换为指令表形式:A M0.1A(A I0.0BLD 100FN M0.0)= Q0.0作业:把下面的梯形图转换为指令表A M 0.1 A(A I 0.0 BLD 100FN M 0.0 )A(O I 0.0 O I 0.1 )= L 20.0 A L 20.0 BLD 102= Q 0.0 A L 20.0 A I 0.2 = Q 0.1。
举例:
L #P_SET //装入符号名为#P_Set的变量到ACCU1中
L 1 //将数值1装入ACCU1中,原ACCU1中的数据#P_Set送入ACCU2
-I //ACCU2-ACCU1,结果放在ACCU1中
L 12 //和上面的意思相同
*I //做乘法
//以下代码雷同
L #P_ACT
+I
L 1
-I
L 2
*I //做到这一步时,以上代码相当于执行了表达式:
//[(#P_SET-1)*12+#P_ACT-1]*2
ITD //将结果转换为长整型数据
SLD 3 //左移3位,成为X.X格式,也就是32位指针格式
T #TEMP0 //将转换后的结果送入变量#Temp0中
OPN #DB_NO //打开块号为#DB_NO的数据块
L DBW [#TEMP0] //装入DBW,对于间接寻址来说,地址值必须为32位指针格式~~
T DBW 290 //将寻到的地址中的值送入DBW290中。
如果无STL编程经验,建议认真学习西门子的STL编程手册,并从论坛下载资料后要认真阅读消化!。
西门子PLC使用STL指令的编程方法一、STL/RET 指令STL 指令可以使编程者生成流程和工作与顺序功能图非常接近的程序。
STL 指令的意义为激活某个步(即状态),在梯形图上体现为从主母线上引出的状态接点。
STL 指令有建立子母线的功能,从而使该状态的所有操作均在子母线上进行。
步进返回指令 RET 是指状态流程结束,用于返回主母线。
一般 FX 系列 plc 采用状态器 S 编制顺控程序,并与 STL 指令一起使用。
1. 顺序功能图和步进梯形图之间的转换使用步进梯形指令 STL 和步进返回指令 RET 可以将顺序功能图转换为步进梯形图,其对应关系如下图所示。
( a )顺序功能图( b )梯形图( c )指令表图顺序功能图与梯形图的对应关系ST L 触点驱动的电路块有 3 个功能:①对负载的驱动处理,即在这一步要做什么;②指定转移条件,即满足该条件则退出这一步;③指定转移目标,即下一步状态是什么。
2. 步进梯形图编程规则(1 )初始步可由其它步驱动,但运行开始时必须用其它方法预先作好驱动,否则状态流程不可能向下进行。
(2 )步进梯形图编程顺序为:先进行驱动,后进行转移。
二者的顺序不能颠倒。
( 3 )编程时必须使用 STL 指令对应于每一个顺序功能图上的步。
( 4 )各 STL 触点的驱动电路一般放在一起,最后一个 STL 电路结束时,一定要使用步进返回指令 RET 使其返回主母线。
( 5 ) STL 触点可以直接驱动也可以通过别的触点驱动,如 Y 、M 、 S 、 T 、 C 等元件的线圈和应用指令。
( 6 )驱动负载使用 OUT 指令,当同一负载需要连续多步驱动时可使用多重输出,也可使用SET 指令将负载置位,等到负载不需要驱动时再用 RST 指令将其复位。
( 7 )由于 CPU 只执行活动步对应的电路块,因此使用 STL 指令时允许“双线圈”输出,即不同的STL 触点可以分别驱动同一编程元件的一个线圈。
3.8 INVI 对整数求反码(16 位)格式INVI说明使用对整数求反码指令(INVI),可以对累加器 1 低字中的 16 位数值求反码。
求反码指令为逐位转换,即“0”变为“1”,“1”变为“0”。
其结果保存在累加器 1 的低字中。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - - - - - -举例STL 解释L IW8 INVIT MW10 // 将数值装入累加器 1 低字中。
// 对 16 位数求反码。
// 将结果传送到存储字 MW10。
内容累加器 1 低字位15... .. .. 0INVI 执行之前0110 0011 1010 1110 INVI 执行之后1001 1100 0101 00013.9 INVD 对双整数求反码(32 位)格式INVD说明使用对双整数求反码指令(INVD),可以对累加器 1 中的 32 位数值求反码。
求反码指令为逐位转换,即“0”变为“1”,“1”变为“0”。
其结果保存在累加器 1 中。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - - - - - -举例STL 解释L ID8 INVDT MD10 // 将数值装入累加器 1 中。
// 对 32 位数求反码。
// 将结果传送到存储双字 MD10。
内容累加器 1 高字累加器 1 低字位31... .. .. ...16 15... .. .. 0INVD 执行之前0110 1111 1000 1100 0110 0011 1010 1110 INVD 执行之后1001 0000 0111 0011 1001 1100 0101 00013.10 NEGI 对整数求补码(16 位)格式NEGI说明使用对整数求补码指令(NEGI),可以对累加器 1 低字中的 16 位数值求补码。
求补码指令为逐位转换,即“0”变为“1”,“1”变为“0”;然后对累加器中的内容加“1”。
STL案例 1:数值到位的对应1. LAR1 P##SetValue//#SetValue为输入,WORD型TAR2+AR1A【AR1,P#】=# // Q_Adress为UDT, OutPut为结构体A【AR1,P#】=#同理,位到数值的对应也是一样的处理方法。
STL案例 2:存储区地址指针- 16 位地址指针(应用于T/C/DB/DI/FB/FC 等的号)L 11T MW20AL S5T#10SSE T[MW20]//T11//用于定时器L MW20L 1+IT MW22ACU C[MW22]//C12//用于计数器L 12T LW20UC FC[LW20]//FC12//用于 FCOPN DB[LW20]//DB12//用于 DBSTL案例 3:存储区地址指针- 32 位地址指针OPN DB1 // 打开共享数据块OPN DI3 // 打开背景数据块,最多同时打开两个DB 块L 4SLD 3T MD20 // 转换为指针为 P#L P#T MD24 // 将指针 P#存储在 MD24中L 320T MD28 // 转换为指针为 P#,存在 MD28中L DBW[MD20] //L DBW[MD24] //+IT DIW[MD28] //STL案例 4:存储区地址指针- 32 位地址指针,与 LOOP指令配合操作 , 某一 DB块中与 MW2相等的第一个数的位置L0T MW100T MD4OPN DB1 L100NEXT: T MW100L DBW[MD4]==I=AJC m1L MD4L P# +DL MW100LOOP NEXTm1: FPJNC m2L MD4L P# /D+ 1T MD8STL案例 5:寄存器间接寻址- 32 位内部区域指针使用示例OPN DB1LAR1P#L DBW[AR1 ,P#]LAR1 MD20L DBW[AR1 ,P#] +ILAR2 P#T DBW[AR2,P#]STL案例 6:寄存器间接寻址- 32 位交叉区域指针使用示例LAR1P#A[AR1,P#]//注意格式,=L P#LAR2L W[AR2,P#]//注意格式T MW60STL案例 7:Point 数据类型指针使用示例Point 指针占用 48 位地址空间,主要用于向被调用的函数FC/FB 传递复合数据类型(如ARRAY、STRUCT、UDT等)的实参,在被调用函数的 FC/FB内部可以间接访问实参的存储器。
西门⼦PLC,STL语句指令⼤全,有语句注释,⼀般⼈都收藏备⽤⼤家写PLC程序,尤其⽤到STL语⾔是不是⼀边写代码,⼀边放个巨⼤的PDF,100多页。
⽤到那个翻页半天,罗⾥吧嗦。
今天把西门⼦90⼏个STL语句表,全部整理发给⼤家。
有语句注释,收藏备⽤吧。
指令(英⽂全称意思 ) :指令含义1、LD( Load 装载 ) :动合触点2、LDN( Load Not 不装载 ) : 动断触点3、A ( And 与动合) : ⽤于动合触点串联4、AN ( And Not 与动断 ) :⽤于动断触点串联5、O( Or 或动合 ) :⽤于动合触点并联6、ON( Or Not 或动断 ) : ⽤于动断触点并联7、=( Out 输出 ) :⽤于线圈输出8、OLD( Or Lode): 块或9、ALD( And Lode): 块与10、LPS( Logic Push ) :逻辑⼊栈11、LRD( Logic Read ) :逻辑读栈12、LPP( Logic Pop ) :逻辑出栈13、NOT( not 并⾮ ) :⾮14、NOP( No Operation Performed ) : ⽆操作15、AENO( And ENO ) :指令盒输出端ENO相与16、S ( Set 放置 ) : 置117、R( Reset 重置,清零 ) :清零18、P ( Positive) :上升沿19、N( Negative) :下降沿20、TON( On_Delay Timer ) :接通延时定时器21、TONR( Retentive On_Delay Timer ) : 有记忆接通延时定时器22、TOF( Off_ Delay Timer ) :断开延时定时器23、CTU( Count Up ) : 增计数器24、CTD( Count Down ) : 减计数器25、CTUD( Count Up/ Count Down ) :增减计数器26、ADD( add 加 ) : 加注意//ADD_I (_ I 表⽰整数)ADD_DI( DI表⽰双字节整数)ADD-R (R 表⽰实数)它们都是加运算只是数的⼤⼩不同。
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。