西门子STL语言案例
西门子STL语言案例

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内部可以间接访问实参的存储器。
西门子300PLC的PID例子STL

4.0
OB35_RESERVED_2 Byte
5.0
OB35_PHASE_OFFSET Word
6.0
OB35_RESERVED_3 Int
8.0
OB35_EXC_FREQ
Int
10.0
OB35_DATE_TIME Date_And_Time 12.0
注释
Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) 16#36 (OB 35 has started) Priority of OB Execution 35 (Organization block 35, OB35) Reserved for system Reserved for system Phase offset (msec) Reserved for system Frequency of execution (msec) Date and time OB35 started
块: OB35 "Cyclic Interrupt"
程序段: 1
实验选择
AN DB1.DBX 0.0 JNB sy1 AN DB1.DBX 0.1 JNB sy2 AN DB1.DBX 0.2 JNB sy3 AN DB1.DBX 0.3 JNB sy4 AN DB1.DBX 0.4 JNB sy5 AN DB1.DBX 0.5 JNB sy6 AN DB1.DBX 0.6 JNB sy7 AN DB1.DBX 0.7 JNB sy8 AN DB1.DBX 1.0 JNB sy9 AN DB1.DBX 1.1 JNB sy10 AN DB1.DBX 1.2 JNB sy11
QLMN_HLM:=
西门子PLC,STL语句指令大全

西门子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 表示实数)它们都是加运算只是数的大小不同。
西门子 S7-300和S7-400语句表(STL)编程 说明书

前言,目录 位逻辑指令 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索引安全指南本手册包括应该遵守的注意事项,以保证人身安全及财产损失。
在本手册中,与人身安全有关的注意事项通过安全警告符号突出显示,而只与财产损失有关的注意事项则没有安全警告符号。
这些注意事项根据危险等级显示如下:危险表示若不采取适当的预防措施,将导致死亡或严重的人身伤害。
警告表示若不采取适当的预防措施,将可能导致死亡或严重的人身伤害。
小心带安全警告符号时,表示若不采取适当的预防措施,将导致轻微的人身伤害。
小心不带安全警告符号时,表示若不采取适当的预防措施,将造成财产损失。
注意如果不引起相应的重视,将会导致意外的结果或状态。
当出现多个安全等级时,应该采用最高危险等级的安全提示。
带安全警告符号的人员伤害警告也可能会导致财产损失。
合格人员只有合格人员才允许对设备/系统进行调试和操作。
合格人员规定为根据既定的安全惯例和标准,被授权对设备、系统和电路进行调试、接地和加装标签的人员。
正确使用请注意如下事项:警告该装置及其组件只能用于产品目录或技术说明书中所阐述的应用,并且只能与由西门子公司认可或推荐的第三方厂商提供的设备或组件一起使用。
本产品只有在正确的运输、贮存、设置和安装以及仔细地运行和维护的情况下,才能正确而安全地运行。
商标标有®的所有名称均为西门子公司的注册商标。
本文档中的其它一些标志也是注册商标,如果任何第三方出于个人目的而使用,都会侵犯商标所有者的权利。
郑重声明我们已核对过本手册的内容与所述硬件和软件相符。
西门子STL语言案例教程文件

西门子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语言案例

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内部可以间接访问实参的存储器。
西门子STEP7使用STL源文件快速创建洁净窄调程序的方法

整套设备对空气进行处理,并不断送入室内,又不 程序和应用程序,系统程序一般在出厂前已经初始
断从室内排出一部分出来,这一整套设备就构成了 化完毕, 而应用程序则是在系统程序运行的条件
洁净空调系统。
下,由用户根据自己的需要自行编辑,目的是用来
药厂的洁净空调系统控制一般通过使用可编 满足不同的自动化生产要求[3]。
采用梯形图逻辑(LAD)、功能块图(FBD)和语句表 那么可能需要为10个电机都建立这些变量,如果是
(STL)等方式进行编程操作[1-3]。
单独建立, 就需要建立10×5=50个变量; 如果用
UDT来处理,那就简单多了,先定义一个名为motor
2 在STEP7中编制洁净空调PLC程序
的UDT变量,里面添加上面所说的2个bool变量和3
关键词:西门子;PLC程序;STEP7;STL源文件;VB脚本;洁净空调
Create a PLC Program by Uusing SIMATIC STEP7 STL Source File
Zeng Tianxiang
(Shanghai Macroprocess Lustration Technology Co., Ltd., Shanghai 201100)
Abstract:Current automation field need us to create Siemens PLC program as quickly as possible, a new method
. AltlhatRcianghgetnseratReeSsieemrevnsedPL.C program by redefined template from I/O list and instrument list automatically is
西门子PLC位逻辑指令(STL)

西门子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。
西门子STL的解释精华

举例:
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编程手册,并从论坛下载资料后要认真阅读消化!。
S7-300_400编程语句表(STL)参考手册

手册应用范围 本手册适用于 STEP 7 编程软件包 5.5 版本。
符合的标准
STL 符合国际电工技术委员会 IEC 1131-3 标准所定义的“指令表”语言,但在操作方面有很大的不同。 欲知更多资料,请参见 STEP 7 文件 NORM_TBL.RTF 中的标准表。
用于 S7-300 和 S7-400 编程的语句表 (STL)
位逻辑指令
1
比较指令
2
SIMATIC
转换指令
3
计数器指令
4
用于 S7-300 和 S7-400 编程的
数据块指令
5
语句表 (STL)
逻辑控制指令
6
参考手册
整数运算指令
7
浮点型数学运算指令
8
装载和传送指令
9
程序控制指令
10
移位和循环指令
11
定时器指令
12
字逻辑指令
13
累加器指令
14
所有 STL 指令概述
5
前言
技术支持 您可访问“技术支持”来了解所有的工业自动化和驱动技术产品 通过网站请求支持 /automation/support-request 关于技术支持的更多信息请参见 Internet 网页/automation/service
1.7
XN 同或运算...........................................................................................................................20
1.8
O 先与运算后或运算 ..............................................................................................................21
西门子PLC编程举例

32
1.2 或 34.5E-12
TIME
32
DATE
16
TIME_OF_DAY
32
T#2D_1H_3M_45S_12MS D#1993-01-20 TOD#12:23:45
用户定义的变量或常数可以为以上基本数据类型
五、S7-300PLC的特殊功能寄存器
累计器1 ACCU1
32位
累计器2 ACCU2
关键字
BOOL BYTE WORD DWORD CHAR
S5TIME
长度 位
1 8 16 32 8
16
该类型的常数举例
True 或 False 1 或0 B#16#A9 W#16#12AF DW#16#ADAC1EF5 'w'
S5T#5s_200ms
INT DINT REAL
16
123
32
L#65539
· BCD_DI BCD 码转换为双整 数
32位
地址寄存器1 AR1 32位
地址寄存器2 AR2 32位
数据块地址寄存器DB 共享数据块 32位
数据块地址寄存器DI 背景数据块 32位
状态寄存器 16位
状态字
状态字用于表示CPU执行指令时 所具有的状态。某些指令可否执行 或以何种方式执行可能取决于状态 字中的某些位,指令执行时也可能 改变状态字中的某些位,可以用位 逻辑指令或字逻辑指令访问并检测 状态字。
2.输出继电器Q
输出映像寄存器区Q
3.辅助继电器M
位存储区M
4.外部输入寄存器 PI 外部输入寄存器区PI
5.外部输出寄存器PQ 外部输出寄存器区PQ
6.定时器T 共5种
定时器区T
如何读STL程序(西门子)

操作数表示:
Automation and Drives
存储区域
输入映像区(I) 输出映像区(Q) 位存储区(M) 外部输入存储区(PI) 外部输出存储区(PQ) 数据块(用“OPN DB”打开 ) 数据块(用“OPN DI”打开 ) 临时堆栈(L)
//双字表示32位,如浮点数为32为双字
寻址方式 :
Automation and Drives
存储器间接寻址 :标识参数由一个存储器给出,存储器的内容
对应该标识参数的值(该值又称为地址指针) 这种寻址方式能动态改变操作数存储器的地址,常用于程序循环过程中
的寻址。
A I[MD 2] //对由MD 2指出的输入位进行“与”逻辑操作,如: MD 2值为 //2#0000 0000 0000 0000 0000 0000 0101 0110表示I 10. 6
0 溢
逻辑操作结果(RLO):
Result of Logic Operation, RLO
“溢”
Automation and Drives
无法判断RLO的数值时,可以查看FC位的情况。 在某行按下F1,就知道该指令是否影响RLO。见下
页
数据格式:
Automation and Drives
系统及网
络介绍
MB10
编程、调
MB11
试及故障
排除
MB12
现场设备 MB13
详细介绍
MB14
S7-300 S7-400语句表(STL)编程手册200-247

13-3
字逻辑指令
举例 1
STL L IW20 L IW22 OW T MW8 解 释 // 将输入字 IW20 的内容装入累加器 1 低字。 // 将累加器 1 中的内容装入累加器 2 中。将输入字 IW22 的内容装入累加 器 1 低字中。 // 将累加器 1 低字中的内容与累加器 2 低字中的内容进行“或”运算;结 果保存到累加器 1 低字中。 // 将结果传送到存储字 MW8。
举例 1
STL L IW20 L IW22 AW T MW 8 解 释 // 将输入字 IW20 的内容装入累加器 1 低字。 // 将累加器 1 中的内容装入累加器 2 中。将输入字 IW22 的内容装入累加器 1 低字中。 // 将累加器 1 低字中的内容与累加器 2 低字中的内容进行“与”运算;结果 保存到累加器 1 低字中。 // 将结果传送到存储字 MW8。
13.4
格式
XOW 字“异或” (16位)
XOW XOW <常数>
地 址 <常数> 数据类型 WORD, 16 位常数 说 明 要与累加器 1 低字内容通过“异或”运 算进行结合的位模式
指令说明 使用该指令,可以根据布尔逻辑运算“异或”,将累加器 1 的低字内容与累加器 2 的低字内容或一个 16 位常数逐位进行逻辑运算。只有进行逻辑运算的两个字 中只有一个的相应位为“1”,结果字的位才为“ 1 ”。结果被存放在累加器 1 的 低字中。累加器 1 的高字和累加器 2 保持不变。状态位 CC 1 被置为运算结果 (如果结果不等于“ 0 ”,则 CC 1 = 1)。状态字位 CC 0 和 OV 被置为“ 0”。 你也可以连续几次使用“异或”指令。如果有不成对被检地址的信号状态为“ 1”, 则逻辑运算结果为“1 ”。 XOW:累加器 1 低字与累加器 2 低字进行逻辑运算。 XOW <常数> :累加器 1 低字与 16 位常数进行逻辑运算。
西门子PLC使用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 触点可以分别驱动同一编程元件的一个线圈。
S7-300 S7-400语句表(STL)编程手册51-100

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语言案例.doc

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语句指令⼤全,有语句注释,⼀般⼈都收藏备⽤⼤家写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 表⽰实数)它们都是加运算只是数的⼤⼩不同。
S7-300 S7-400语句表(STL)编程手册151-200

10.7 调用功能格式CALL FC n 注意如果使用的是语句表编辑器(STL Editor),“n”必须指向现有有效块。
在使用之前,还必须定义符号名。
说明使用该指令,可调用功能(FC)。
调用指令能够调用你作为地址输入的功能(FC),与 RLO 或其它条件无关。
在处理完被调用块后,调用块程序继续处理。
逻辑块的地址可以绝对指定,也可相对指定。
传送参数(增量编辑方式)调用块可通过一个变量表与被调用的块交换参数。
当你输入一个有效的调用语句时,语句表程序中的变量表可自动扩展。
如果调用一个功能,并且调用块的变量声明表中有 IN、OUT 和 IN_OUT 声明,则这些变量作为一个形式参数表被添加到用于调用块的程序中。
在调用功能时,必须在调用逻辑块中为声明的形式参数赋值实际参数。
IN 参数可作为常数、绝对地址或符号地址定义。
OUT 和 IN_OUT 参数必须作为绝对地址或符号地址定义。
必须保证所有地址和常数与要传送的数据类型相符。
调用指令可将返回地址(选择符和相对地址)、两个当前数据块的选择符以及 MA位保存在B(块)堆栈中。
除此之外,调用指令还可去活 MCR 的相关性,然后生成被调用块的本地数据范围。
状态字BR CC 1 CC 0 OV OS OR STA RLO /FC 写:- - - - 0 0 1 - 0例如:为 FC6 调用赋值参数CALL FC6 形式参数NO OF TOOL TIME OUT FOUND ERROR 实际参数:= MW100 := MW110 := Q0.1:= Q100.0 10.8 调用系统功能块格式CALL SFB n1,DB n2 说明使用该指令,可调用由西门子公司提供的标准功能块(SFB)。
调用指令能够调用你作为地址输入的系统功能块(SFB),与 RLO 或其它条件无关。
如果使用调用指令调用一个系统功能块,必须为它提供一个背景数据块。
在处理完被调用块后,调用块程序继续处理。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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。