You are on page 1of 21

www.plcworld.

cn

如何读STL程序:
Automation and Drives

如果读程序时发现自己不明白的语言,
如果读程序时发现自己不明白的语言,可以:可以:
1,
,转换成梯形图: +1,
转换成梯形图:快捷键ctrl+
快捷键 ,当然大多数
都转换不过去;
都转换不过去;
2,
,按下F1寻求帮助
按下 寻求帮助;
寻求帮助;
3,
,下载此程序到模拟器中,
下载此程序到模拟器中,单步观察效果,
单步观察效果,看
一看哪些寄存器发生改变。
一看哪些寄存器发生改变。

系统的逻辑错误造成的停机往往是由于提示错
误前面的错误引起的。
误前面的错误引起的。
www.plcworld.cn

STL指令及其结构:
Automation and Drives

定义要执行的功能

执行该操作所需要的信息

语句指令:
语句指令: 操作码 操作数

A I 0.1 //对输入继电器
对输入继电器 I 0.1 进行与操作

L MW10 //将字
将字MW10装入累加器
将字 装入累加器1
装入累加器

♠ 有些语句指令不带操作数,
有些语句指令不带操作数,它们操作的对象是唯一的。
它们操作的对象是唯一的。
NOT //对逻辑操作结果
对逻辑操作结果(RLO)
对逻辑操作结果( )取反。
取反。
www.plcworld.cn

操作数: 表示操作数存放区域及操作数
Automation and Drives
位数(
位数(位、字节、
字节、字等) 字等)
表示操作数在该存储区域
内的具体位置
操作数: 标识符 标识参数

LMW 10 辅助标识符进一步说明操作数的位数长度
包括有:X(位),B(字节),
W(字——2字节),
D(双字——4字节)
主标识符:
主标识符:表示操作数所在的存储区
主要有:I(输入映像区),Q(输出映像
区),M(位存储区),PI(外部输入),PQ
(外部输出),T(定时器),C(计数器),
DB(数据块),L(本地数据)等
www.plcworld.cn

操作数表示:
Automation and Drives

存储区域 位 字节 字 双字
输入映像区(I)
输入映像区( ) √ I √ IB √ IW √ ID
输出映像区(Q)
输出映像区( ) √ Q √ QB √ QW √ QD
位存储区(M)
位存储区( ) √ M √ MB √ MW √ MD
外部输入存储区(PI)
外部输入存储区( ) √ PIB √ PIW √ PID
外部输出存储区(PQ)
外部输出存储区( ) √ PQB √ PQW √ PQD
数据块(用“OPN DB”打开
数据块( 打开
√ DBX √ DBB √ DBW √ DBD

数据块(用“OPN DI”打开
数据块( 打开
√ DIX √ DIB √ DIW √ DID

临时堆栈(L)
临时堆栈( ) √ L √ LB √ LW √ LD
www.plcworld.cn

寻址方式 :
Automation and Drives

立即寻址:对常数或常量的寻址方式
对常数或常量的寻址方式,
对常数或常量的寻址方式,操作数本身包含在指
令中

SET //把
把 RLO (Result of Logic Operation)
)置“1”

L 27 //把整数
把整数27装人累加器
把整数 装人累加器1
装人累加器

L C#0100 //把
把 BCD码常数
码常数0100装入累加器
码常数 装入累加器1
装入累加器
www.plcworld.cn

数据格式:
Automation and Drives

系统及网 7 6 5 4 3 2 1 0
络介绍
MB10 10.7 10.6 10.5 10.4 10.3 10.2 10.1 10.0
编程、
编程、调 MW10
MB11
试及故障 MW11 MD10
排除 MB12
MD11 MW12
现场设备 MB13
详细介绍 MD12
MB14

MB15
www.plcworld.cn

实例:
Automation and Drives

系统及网
络介绍
编程、
编程、调
试及故障
排除
现场设备
详细介绍


www.plcworld.cn

数字表示方法:
Automation and Drives

BYTE:
L B#16#10 INT:
L byte#16#10 L 1
WORD: D INT :
L 2#1000000000000 L L#1
L W#16#1000 REAL:
L word#16#1000 L 1.234567e+13
DWORD: TIME:
L DW#16#A21234 L S5T#1H1M50S
L dword#16#A21234
www.plcworld.cn

寻址方式 :
Automation and Drives

直接寻址:在指令中直接给出操作数的存储单元地址
在指令中直接给出操作数的存储单元地址

A I0 . 0 //对输入位 进行 与”逻辑操作
对输入位I0.0进行
对输入位 进行“与 逻辑操作

S L20 . 0 //把本地数据位 置1
把本地数据位L20.0置
把本地数据位

= M115 . 4 // 将RLO的内容传给位存储区中的位
的内容传给位存储区中的位M115.4
的内容传给位存储区中的位

L DB1 . DBD 12 //把数据块


把数据块DB1双字
把数据块 双字DBD12中的内容传送给累加器
双字 中的内容传送给累加器1
中的内容传送给累加器

//双字表示
双字表示32位
双字表示 位,如浮点数为32为双字
如浮点数为 为双字
www.plcworld.cn

寻址方式 :
Automation and Drives

存储器间接寻址 :标识参数由一个存储器给出
标识参数由一个存储器给出,
标识参数由一个存储器给出,存储器的内容

对应该标识参数的值(该值又称为地址指针
对应该标识参数的值 该值又称为地址指针)
该值又称为地址指针
这种寻址方式能动态改变操作数存储器的地址,
这种寻址方式能动态改变操作数存储器的地址,常用于程序循环过程中
的寻址。
的寻址。

A I[MD 2] //对由
对由MD
对由 2指出的输入位进行
指出的输入位进行 与”逻辑操作
指出的输入位进行“与 逻辑操作,如: MD 2值为
逻辑操作, 值为

//2#0000 0000 0000 0000 0000 0000 0101 0110表示


表示 10. 6
表示I

L IB[DID 4] //将由双字
将由双字DID
将由双字 4指出的输入字节装入累加器
指出的输入字节装入累加器 ,如:DID 4值为
指出的输入字节装入累加器1, 值为

//2#0000 0000 0000 0000 0000 0000 0101 0000表示对


表示对IB10操作
表示对 操作

OPN DB[MW 2] //打开由字 指出的数据块,如MW2为


打开由字MW2指出的数据块
打开由字 指出的数据块, 为3,
,则打开DB3
则打开
www.plcworld.cn

寻址方式 :
立 ) Automation and Drives

寄存器间接寻址 :在
在S7中有两个地址寄存器
中有两个地址寄存器(AR1和
中有两个地址寄存器( 和AR2)

地址寄存器的内容 + 偏移量 = 地址指针

L P#8.6 //将
将P#8.6装入
装入 1
装入A
LAR1 //将累加器
将累加器1的内容传送至地址寄存器
将累加器 的内容传送至地址寄存器1
的内容传送至地址寄存器
L P#10.0 //将
将P#10.0装入
装入A1
装入
LAR2 //将累加器
将累加器1的内容传送至地址寄存器
将累加器 的内容传送至地址寄存器2
的内容传送至地址寄存器
A I[AR1,P#1.0] //AR1+偏移量
偏移量(9.6)
偏移量
= Q[AR2,P#4.1] //AR1+偏移量
偏移量(14.1)
偏移量
LAR1 P##STAT53 // 把指针指向STAT53
L 0 // 把0装入
装入ACCU1
装入
T DIW [AR1,P#0.0] //把地址寄存器内指向起始地址区的数据赋值
把地址寄存器内指向起始地址区的数据赋值
www.plcworld.cn

在线监视
Automation and Drives

很多时候
需要在线
监视的。
在线监视
的情况如
图,各个
寄存器的
情况详见
下页。
www.plcworld.cn

系统的内部寄存器:
Automation and Drives
S7 CPU的寄存器有
的寄存器有(7个
的寄存器有( 个):
累加器 32位

累加器1
累加器 (ACCU1)
) 主
2个
个32位累加器
位累加器***
位累加器
累加器2
累加器 (ACCU2)
) 辅

地址寄存器 32位

地址寄存器 (AR1)
地址寄存器1 )
2个
个32位地址寄存器
位地址寄存器**
位地址寄存器
地址寄存器 (AR2)
地址寄存器2 )

数据块地址寄存器 32位

共享数据块 DB
2个
个32位数据块地址寄存器
位数据块地址寄存器
背景数据块 DI

状态字寄存器 16位

1个
个16位状态字寄存器
位状态字寄存器*
位状态字寄存器 状态位
www.plcworld.cn

系统存储区:
Automation and Drives
外设I/O存储区 P
S算 状比比 CPU
输出(映像区) Q
输入(映像区) I
系统存储区―存放操作数据(I/O、
系统存储区―存放操作数据( 、位存储、
位存储、定时器
位存储区 M
等)
定时器 T
物理上是 的RAM ,存储区的大小因
物理上是CPU的 存储区的大小因CPU型号而异
存储区的大小因 型号而异。
型号而异。
计数器 C
工作存储区―①
工作存储区―①存放
―①存放CPU运行时
存放 运行时,
运行时,所执行的用户程序单 可执行用户程序:
元逻辑块(OB、
元逻辑块( 、FB、
、FC)、
)、数据块
)、数据块 ·逻辑块(OB、FB、
(DB)
)的复制件;
的复制件;②存放临时本地数 FC)
据,这部分存储区称L堆栈
这部分存储区称 堆栈(
堆栈(主要是存 ·数据块(DB)
放用户程序的临时变量)
放用户程序的临时变量) 临时本地数据存储区
(L堆栈)
物理上是CPU模块的部分
物理上是 模块的部分RAM
模块的部分
装载存储区――
装载存储区――存放用户程序
――存放用户程序 动态装载存储区:
物理上是CPU的部分
物理上是 的部分 、EEPROM、
的部分RAM、 、外置FEPROM等
外置 等 存放用户程序
www.plcworld.cn

名 称 存储区 存储区功能
过程输入映像 每个扫描周期开始,
每个扫描周期开始,读取过程输入值,
读取过程输入值,记录输入映像表
输入(I)
输入( )
表 访问方式:
访问方式:位、字节、
字节、字、双字
Automation and Drives
过程输出映像 扫描周期结束,输出映像表内容⇒输出端口
扫描周期结束,输出映像表内容⇒
输出(O)
输出( )
表 访问方式:
访问方式:位、字节、
字节、字、双字
外设输入(PI)
外设输入( ) 外设存储区允许直接访问现场设备
外设输入/输出
外设输入 输出
外设输出(PO)
外设输出( ) 访问方式:
访问方式:字节、
字节、字、双字(
双字(不能访问位)
不能访问位)
位存储区(M)
位存储区( ) 中间的变量 存放程序运行的中间结果,访问方式
存放程序运行的中间结果 访问方式:
访问方式:位、字节、
字节、字、双字
计时时钟访问该存储区中的计时单元
定时器(T)
定时器( ) 定时器
定时器指令可以访问该存储区和计时单元
计数器(C)
计数器( ) 计数器 计数器指令可以访问该存储区
临时本地数据存储 在FC、
、OB块运行时
块运行时,
块运行时,块变量声明表中临时变量存放在该存
L堆栈
堆栈
区(L)
) 储区。
储区。
DB块存放数据信息
块存放数据信息,
块存放数据信息,可被所有逻辑块访问(
可被所有逻辑块访问(共享数据块)
共享数据块)
数据块(DB)
数据块( ) 数据块 或被FB块特定占用
或被 块特定占用(
块特定占用(背景数据块使用DI访问
背景数据块使用 访问)
访问)

1,外设访问 不通过映像区;
,外设访问(P)不通过

2,
,有些变频器等超出了映像区的范围所以,
的范围所以,只能使用外设访问(P)
只能使用外设访问 ;
3,
,外设访问(P)在程序执行到此位置时进行读写操作
外设访问 在程序执行到此位置时进行读写操作,
在程序执行到此位置时进行读写操作,而普通的输入输出,则在程序开始读入
而普通的输入输出 则在程序开始读入,
则在程序开始读入,结
束输出;
束输出;
www.plcworld.cn

状态字:
Automation and Drives
状态字表示CPU
状态字表示CPU执行指令时所具有的状态
CPU执行指令时所具有的状态,
执行指令时所具有的状态,用户程序可以访问和检测
状态字,
状态字,并可以根据状态字中的某些位决定程序的走向和进程。
并可以根据状态字中的某些位决定程序的走向和进程。
15 8 7 6 5 4 3 2 1 0
—————— BR CC1 CC0 OS OV OR STA RLO FC

*
*

0

www.plcworld.cn

逻辑操作结果(RLO):
Automation and Drives

, RLO
Result of Logic Operation,

“溢
溢”

无法判断RLO的数值时
无法判断 的数值时,
的数值时,可以查看FC位的情况
可以查看 位的情况。
位的情况。
在某行按下F1,
在某行按下 ,就知道该指令是否影响RLO。
就知道该指令是否影响 。见下

www.plcworld.cn

STA
Automation and Drives

• STA表示被操作的数据的当前状态
表示被操作的数据的当前状态,0或者
表示被操作的数据的当前状态, 或者1;
或者 ;
• 仅表示布尔量
仅表示布尔量;;
• 非布尔量的数值以ACCU累加器表示
非布尔量的数值以 累加器表示

• 例如第一句为 AN I0.0
• I0.0 现在为0,
现在为 ,则STA为
为0;

• 但是执行完毕后RLO为
但是执行完毕后 为1。。
www.plcworld.cn

FC/RLO的变化示例:
Automation and Drives

语句表 实际状态 检测结果 RLO FC 说明

0 FC=
=0:
:下一条指令开始新逻辑串

A I 0.0 1 1 1 1 ,FC置
首次检测结果存放RLO,
首次检测结果存放 置1

检测结果与RLO运算
检测结果与 运算,
运算,结果存
AN I 0.1 0 1 1 1
RLO

=Q1.0 1 0 RLO赋值给 ,FC清


赋值给Q1.0,
赋值给 清0

I0.0 Q1.0
I0.1
www.plcworld.cn

DI 和 DB 的区别
Automation and Drives

• 访问背景数据块时,使用DI;当然也
可以使用DB访问背景数据块;
• DI的作用体现在:再单个FB里面调用
了除背景数据块外的其他数据块时,
可以用DB进行操作,而背景数据块可
以使用DI进行操作。如右图:可以
OPN DB #DBMS //以后所有的DB*
操作均是对应DB4,
而所有的DI*操作均对应DB433
CDB交换数据块内容,例如把
背景数据块里面的内容与共享
数据块交换,可以访问共享数
据块,进行操作处理。
www.plcworld.cn

L 的对应
Automation and Drives

好多程序里面直
接使用L变量,
此时你可以上
Temp里面查看
,寻求对应关系
,如果找不到对
应关系也无所谓
,当一个临时变
量使好了,出了
这个块就什么都
没了。

You might also like