如何读懂s7200STL程序
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 例如第一句为 AN I0.0 • I0.0 现在为0,则STA为0; • 但是执行完毕后RLO为1。
FC/RLO的变化示例:
语句表 实际状态 检测结果 RLO FC
Automation and Drives
说明
0 FC=0:下一条指令开始新逻辑串
A I 0.0
1
AN I 0.1 0
=Q1.0
1
STL指令及其结构:
Automation and Drives
定义要执行的功能
执行该操作所需要的信息
语句指令: 操作码 操作数
A I 0.1 //对输入继电器 I 0.1 进行与操作
L MW10 //将字MW10装入累加器1
有些语句指令不带操作数,它们操作的对象是唯一的。 NOT //对逻辑操作结果(RLO)取反。
位
√I √Q √M
√ DBX √ DIX √L
字节
字
双字
√ IB √ IW √ ID
√ QB √ QW √ QD
√ MB √ MW √ MD
√ PIB √ PIW √ PID
√ PQB √ PQW √ PQD
√ DBB √ DBW √ DBD
√ DIB √ DIW √ DID √ LB √ LW √ LD
MW12
MD12
MB15
实例:
系统及网 络介绍 编程、调 试及故障 排除 现场设备 详细介绍
•数据分配举例
Automation and Drives
数字表示方法:
BYTE: L B#16#10 L byte#16#10
WORD: L 2#1000000000000 L W#16#1000 L word#16#1000
操作数:
操作数: 标识符 标识参数
表示操作数存放区域及操作数 位数(位、字Au节tom、ation字and等Dri)ves
表示操作数在该存储区域 内的具体位置
LMW
10
辅助标识符进一步说明操作数的位数长度 包括有:X(位),B(字节),
W(字——2字节),
D(双字——4字节)
主标识符:表示操作数所在的存储区
数据格式:
系统及网 络介绍
编程、调 试及故障 排除
现场设备 详细介绍
MB10 MB11 MB1Drives
7 6 5 4 3 2 10
10.7 10.6 10.5 10.4 10.3 10.2 10.1 10.0
MD11
MW11
MW10 MD10
系统存储区―存放操作数据(I/O、位存储、定时器等) 物理上是CPU的RAM ,存储区的大小因CPU型号而异。
输入(映像区) I 位存储区 M 定时器 T
计数器 C
工作存储区―①存放CPU运行时,所执行的用户程序单 元逻辑块(OB、FB、FC)、数据块 (DB)的复制件;②存放临时本地数 据,这部分存储区称L堆栈(主要是存 放用户程序的临时变量)
主要有:I(输入映像区),Q(输出映像区), M(位存储区),PI(外部输入),PQ(外部输 出),T(定时器),C(计数器),DB(数 据块),L(本地数据)等
操作数表示:
Automation and Drives
存储区域
输入映像区(I)
输出映像区(Q)
位存储区(M)
外部输入存储区(PI)
外部输出存储区(PQ) 数据块(用“OPN DB”打 开) 数据块(用“OPN DI”打开 ) 临时堆栈(L)
很多时候 需要在线 监视的。
在线监视 的情况如 图,各个 寄存器的 情况详见 下页。
系统的内部寄存器:
S7 CPU的寄存器有(7个): 2个32位累加器***
Automation and Drives
累加器 32位 累加器1 (ACCU1) 主 累加器2 (ACCU2) 辅
2个32位地址寄存器**
定时器(T) 计数器(C) 临时本地数据存储
区(L)
数据块(DB)
存储区 过程输入映像
表 过程输出映像
表
外设输入/输出 中间的变量 定时器 计数器 L堆栈
数据块
存储区功能
每个扫描周期开始,读取过程输入值,记录输入映像表 访问方式:位、字节、字、双A字utomation and Drives 扫描周期结束,输出映像表内容输出端口 访问方式:位、字节、字、双字
1,外设访问(P)不通过映像区;
2,有些变频器等超出了映像区的范围所以,只能使用外设访问(P) ;
3,外设访问(P)在程序执行到此位置时进行读写操作,而普通的输入输出,则在程序开始读入,结 束输出;
状态字:
状态字表示CPU执行指令时所具有的状态,用户程A序uto可mati以on a访nd D问rive和s 检测
状态字,并可以根据状态字中的某些位决定程序的走向和进程。
15
876543210
······ BR CC1 CC0 OS OV OR STA RLO FC
首次检测位 * 逻辑操作结果* 状态位 或位 溢出位 溢出状态保持位 条件码0 条件码1 二进制结果位
逻辑操作结果(RLO):
Automation and Drives
//双字表示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
Result of Logic Operation, RLO
位置:状态字位 “1” 作用:存储位逻辑指令或算术比较指令的结果。
无法判断RLO的数值时,可以查看FC位的情况。 在某行按下F1,就知道该指令是否影响RLO。见下
页
STA
Automation and Drives
• STA表示被操作的数据的当前状态,0或者1; • 仅表示布尔量; • 非布尔量的数值以ACCU累加器表示
DWORD: L DW#16#A21234 L dword#16#A21234
Automation and Drives
INT: L1
D INT : L L#1
REAL: L 1.234567e+13
TIME: L S5T#1H1M50S
寻址方式 :
直接寻址
Automation and Drives
直接寻址:在指令中直接给出操作数的存储单元地址
A I0 . 0 //对输入位I0.0进行“与”逻辑操作 S L20 . 0 //把本地数据位L20.0置1 = M115 . 4 // 将RLO的内容传给位存储区中的位M115.4 L DB1 . DBD 12 //把数据块DB1双字DBD12中的内容传送给累加器1
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] //把地址寄存器内指向起始地址区的数据赋值
在线监视
Automation and Drives
地址寄存器 32位 地址寄存器1 (AR1) 地址寄存器2 (AR2)
2个32位数据块地址寄存器
数据块地址寄存器 32位 共享数据块 DB 背景数据块 DI
1个16位状态字寄存器*
状态字寄存器 16位 状态位
系统存储区:
S7-300 CPU有三个基本存储区:
Automation a外nd设DriIv/eOs 存储区 P 输出(映像区) Q
L IB[DID 4] //将由双字DID 4指出的输入字节装入累加器1,如:DID 4值为 //2#0000 0000 0000 0000 0000 0000 0101 0000表示对IB10操作
OPN DB[MW 2] //打开由字MW2指出的数据块,如MW2为3,则打开DB3
寻址方式 :
寄存器间接寻址(指针)
外设存储区允许直接访问现场设备 访问方式:字节、字、双字(不能访问位)
存放程序运行的中间结果,访问方式:位、字节、字、双字
计时时钟访问该存储区中的计时单元 定时器指令可以访问该存储区和计时单元
计数器指令可以访问该存储区
在FC、OB块运行时,块变量声明表中临时变量存放在该存 储区。
DB块存放数据信息,可被所有逻辑块访问(共享数据块) 或被FB块特定占用(背景数据块使用DI访问)
OPN DB #DBMS //以后所有的DB* 操作均是对应DB4, 而所有的DI*操作均对应DB433
CDB交换数据块内容,例如把 背景数据块里面的内容与共享 数据块交换,可以访问共享数 据块,进行操作处理。
Automation and Drives
L 的对应
好多程序里面直 接使用L变量, 此时你可以上 Temp里面查看, 寻求对应关系, 如果找不到对应 关系也无所谓, 当一个临时变量 使好了,出了这 个块就什么都没 了。
1
1 1 首次检测结果存放RLO,FC置1
1
1
1
检测结果与RLO运算,结果存 RLO
0
RLO赋值给Q1.0,FC清0
I0.0 I0.1
Q1.0
DI 和 DB 的区别
• 访问背景数据块时,使用DI;当然也 可以使用DB访问背景数据块;
• DI的作用体现在:再单个FB里面调用 了除背景数据块外的其他数据块时, 可以用DB进行操作,而背景数据块可 以使用DI进行操作。如右图:可以
物理上是CPU模块的部分RAM
可执行用户程序: ·逻辑块(OB、FB、 FC) ·数据块(DB)
临时本地数据存储区 (L堆栈)
装载存储区――存放用户程序 物理上是CPU的部分RAM、EEPROM、外置FEPROM等
动态装载存储区: 存放用户程序
名称
输入(I)
输出(O) 外设输入(PI) 外设输出(PO) 位存储区(M)
Automation and Drives
寄存器间接寻址 :在S7中有两个地址寄存器(AR1和AR2)
地址寄存器的内容 + 偏移量 = 地址指针
L P#8.6 //将P#8.6装入A 1
LAR1
//将累加器1的内容传送至地址寄存器1
L P#10.0
//将P#10.0装入A1
LAR2
//将累加器1的内容传送至地址寄存器2
寻址方式 :
立即寻址
Automation and Drives
立即寻址:对常数或常量的寻址方式,操作数本身包含在指
令中
SET //把 RLO (Result of Logic Operation)置“1” L 27 //把整数27装人累加器1 L C#0100 //把 BCD码常数0100装入累加器1
Automation and Drives
FC/RLO的变化示例:
语句表 实际状态 检测结果 RLO FC
Automation and Drives
说明
0 FC=0:下一条指令开始新逻辑串
A I 0.0
1
AN I 0.1 0
=Q1.0
1
STL指令及其结构:
Automation and Drives
定义要执行的功能
执行该操作所需要的信息
语句指令: 操作码 操作数
A I 0.1 //对输入继电器 I 0.1 进行与操作
L MW10 //将字MW10装入累加器1
有些语句指令不带操作数,它们操作的对象是唯一的。 NOT //对逻辑操作结果(RLO)取反。
位
√I √Q √M
√ DBX √ DIX √L
字节
字
双字
√ IB √ IW √ ID
√ QB √ QW √ QD
√ MB √ MW √ MD
√ PIB √ PIW √ PID
√ PQB √ PQW √ PQD
√ DBB √ DBW √ DBD
√ DIB √ DIW √ DID √ LB √ LW √ LD
MW12
MD12
MB15
实例:
系统及网 络介绍 编程、调 试及故障 排除 现场设备 详细介绍
•数据分配举例
Automation and Drives
数字表示方法:
BYTE: L B#16#10 L byte#16#10
WORD: L 2#1000000000000 L W#16#1000 L word#16#1000
操作数:
操作数: 标识符 标识参数
表示操作数存放区域及操作数 位数(位、字Au节tom、ation字and等Dri)ves
表示操作数在该存储区域 内的具体位置
LMW
10
辅助标识符进一步说明操作数的位数长度 包括有:X(位),B(字节),
W(字——2字节),
D(双字——4字节)
主标识符:表示操作数所在的存储区
数据格式:
系统及网 络介绍
编程、调 试及故障 排除
现场设备 详细介绍
MB10 MB11 MB1Drives
7 6 5 4 3 2 10
10.7 10.6 10.5 10.4 10.3 10.2 10.1 10.0
MD11
MW11
MW10 MD10
系统存储区―存放操作数据(I/O、位存储、定时器等) 物理上是CPU的RAM ,存储区的大小因CPU型号而异。
输入(映像区) I 位存储区 M 定时器 T
计数器 C
工作存储区―①存放CPU运行时,所执行的用户程序单 元逻辑块(OB、FB、FC)、数据块 (DB)的复制件;②存放临时本地数 据,这部分存储区称L堆栈(主要是存 放用户程序的临时变量)
主要有:I(输入映像区),Q(输出映像区), M(位存储区),PI(外部输入),PQ(外部输 出),T(定时器),C(计数器),DB(数 据块),L(本地数据)等
操作数表示:
Automation and Drives
存储区域
输入映像区(I)
输出映像区(Q)
位存储区(M)
外部输入存储区(PI)
外部输出存储区(PQ) 数据块(用“OPN DB”打 开) 数据块(用“OPN DI”打开 ) 临时堆栈(L)
很多时候 需要在线 监视的。
在线监视 的情况如 图,各个 寄存器的 情况详见 下页。
系统的内部寄存器:
S7 CPU的寄存器有(7个): 2个32位累加器***
Automation and Drives
累加器 32位 累加器1 (ACCU1) 主 累加器2 (ACCU2) 辅
2个32位地址寄存器**
定时器(T) 计数器(C) 临时本地数据存储
区(L)
数据块(DB)
存储区 过程输入映像
表 过程输出映像
表
外设输入/输出 中间的变量 定时器 计数器 L堆栈
数据块
存储区功能
每个扫描周期开始,读取过程输入值,记录输入映像表 访问方式:位、字节、字、双A字utomation and Drives 扫描周期结束,输出映像表内容输出端口 访问方式:位、字节、字、双字
1,外设访问(P)不通过映像区;
2,有些变频器等超出了映像区的范围所以,只能使用外设访问(P) ;
3,外设访问(P)在程序执行到此位置时进行读写操作,而普通的输入输出,则在程序开始读入,结 束输出;
状态字:
状态字表示CPU执行指令时所具有的状态,用户程A序uto可mati以on a访nd D问rive和s 检测
状态字,并可以根据状态字中的某些位决定程序的走向和进程。
15
876543210
······ BR CC1 CC0 OS OV OR STA RLO FC
首次检测位 * 逻辑操作结果* 状态位 或位 溢出位 溢出状态保持位 条件码0 条件码1 二进制结果位
逻辑操作结果(RLO):
Automation and Drives
//双字表示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
Result of Logic Operation, RLO
位置:状态字位 “1” 作用:存储位逻辑指令或算术比较指令的结果。
无法判断RLO的数值时,可以查看FC位的情况。 在某行按下F1,就知道该指令是否影响RLO。见下
页
STA
Automation and Drives
• STA表示被操作的数据的当前状态,0或者1; • 仅表示布尔量; • 非布尔量的数值以ACCU累加器表示
DWORD: L DW#16#A21234 L dword#16#A21234
Automation and Drives
INT: L1
D INT : L L#1
REAL: L 1.234567e+13
TIME: L S5T#1H1M50S
寻址方式 :
直接寻址
Automation and Drives
直接寻址:在指令中直接给出操作数的存储单元地址
A I0 . 0 //对输入位I0.0进行“与”逻辑操作 S L20 . 0 //把本地数据位L20.0置1 = M115 . 4 // 将RLO的内容传给位存储区中的位M115.4 L DB1 . DBD 12 //把数据块DB1双字DBD12中的内容传送给累加器1
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] //把地址寄存器内指向起始地址区的数据赋值
在线监视
Automation and Drives
地址寄存器 32位 地址寄存器1 (AR1) 地址寄存器2 (AR2)
2个32位数据块地址寄存器
数据块地址寄存器 32位 共享数据块 DB 背景数据块 DI
1个16位状态字寄存器*
状态字寄存器 16位 状态位
系统存储区:
S7-300 CPU有三个基本存储区:
Automation a外nd设DriIv/eOs 存储区 P 输出(映像区) Q
L IB[DID 4] //将由双字DID 4指出的输入字节装入累加器1,如:DID 4值为 //2#0000 0000 0000 0000 0000 0000 0101 0000表示对IB10操作
OPN DB[MW 2] //打开由字MW2指出的数据块,如MW2为3,则打开DB3
寻址方式 :
寄存器间接寻址(指针)
外设存储区允许直接访问现场设备 访问方式:字节、字、双字(不能访问位)
存放程序运行的中间结果,访问方式:位、字节、字、双字
计时时钟访问该存储区中的计时单元 定时器指令可以访问该存储区和计时单元
计数器指令可以访问该存储区
在FC、OB块运行时,块变量声明表中临时变量存放在该存 储区。
DB块存放数据信息,可被所有逻辑块访问(共享数据块) 或被FB块特定占用(背景数据块使用DI访问)
OPN DB #DBMS //以后所有的DB* 操作均是对应DB4, 而所有的DI*操作均对应DB433
CDB交换数据块内容,例如把 背景数据块里面的内容与共享 数据块交换,可以访问共享数 据块,进行操作处理。
Automation and Drives
L 的对应
好多程序里面直 接使用L变量, 此时你可以上 Temp里面查看, 寻求对应关系, 如果找不到对应 关系也无所谓, 当一个临时变量 使好了,出了这 个块就什么都没 了。
1
1 1 首次检测结果存放RLO,FC置1
1
1
1
检测结果与RLO运算,结果存 RLO
0
RLO赋值给Q1.0,FC清0
I0.0 I0.1
Q1.0
DI 和 DB 的区别
• 访问背景数据块时,使用DI;当然也 可以使用DB访问背景数据块;
• DI的作用体现在:再单个FB里面调用 了除背景数据块外的其他数据块时, 可以用DB进行操作,而背景数据块可 以使用DI进行操作。如右图:可以
物理上是CPU模块的部分RAM
可执行用户程序: ·逻辑块(OB、FB、 FC) ·数据块(DB)
临时本地数据存储区 (L堆栈)
装载存储区――存放用户程序 物理上是CPU的部分RAM、EEPROM、外置FEPROM等
动态装载存储区: 存放用户程序
名称
输入(I)
输出(O) 外设输入(PI) 外设输出(PO) 位存储区(M)
Automation and Drives
寄存器间接寻址 :在S7中有两个地址寄存器(AR1和AR2)
地址寄存器的内容 + 偏移量 = 地址指针
L P#8.6 //将P#8.6装入A 1
LAR1
//将累加器1的内容传送至地址寄存器1
L P#10.0
//将P#10.0装入A1
LAR2
//将累加器1的内容传送至地址寄存器2
寻址方式 :
立即寻址
Automation and Drives
立即寻址:对常数或常量的寻址方式,操作数本身包含在指
令中
SET //把 RLO (Result of Logic Operation)置“1” L 27 //把整数27装人累加器1 L C#0100 //把 BCD码常数0100装入累加器1
Automation and Drives