如何读 stl 程序:

21

Click here to load reader

Upload: cody-wilkinson

Post on 15-Mar-2016

129 views

Category:

Documents


2 download

DESCRIPTION

如何读 STL 程序:. 如果读程序时发现自己不明白的语言,可以: 1,转换成梯形图:快捷键 ctrl+1 ,当然大多数都转换不过去 ; 2,按下 F1 寻求帮助; 3,下载此程序到模拟器中,单步观察效果,看一看哪些寄存器发生改变。 系统的逻辑错误造成的停机往往是由于提示错误前面的错误引起的。. STL 指令及其结构:. 定义要执行的功能. 执行该操作所需要的信息. 语句指令: 操作码 操作数. A I 0.1 // 对输入继电器 I 0.1 进行与操作. L MW10 // 将字 MW10 装入累加器1. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 如何读 STL 程序:

Automation and Drives

如何读 STL 程序: 如果读程序时发现自己不明白的语言,可以:

1 ,转换成梯形图:快捷键 ctrl + 1 ,当然大多数都转换不过去;2 ,按下 F1 寻求帮助;3 ,下载此程序到模拟器中,单步观察效果,看一看哪些寄存器发生改变。系统的逻辑错误造成的停机往往是由于提示错误前面的错误引起的。

Page 2: 如何读 STL 程序:

Automation and Drives

 STL 指令及其结构:

语句指令: 操作码 操作数执行该操作所需要的信息

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

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

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

定义要执行的功能

Page 3: 如何读 STL 程序:

Automation and Drives

操作数:

操作数: 标识符 标识参数

L M W 10

表示操作数在该存储区域内的具体位置

主标识符:表示操作数所在的存储区 主要有: I (输入映像区), Q (输出映像区), M (位存储区) ,PI (外部输入) ,PQ (外部输出), T (定时器), C(计数器), DB (数据块), L (本地数据)等

辅助标识符进一步说明操作数的位数长度包括有: X (位), B (字节), W (字—— 2 字节), D (双字—— 4 字节)

表示操作数存放区域及操作数位数(位、字节、字等)

Page 4: 如何读 STL 程序:

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

Page 5: 如何读 STL 程序:

Automation and Drives

寻址方式 : 立即寻址立即寻址

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

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

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

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

Page 6: 如何读 STL 程序:

Automation and Drives

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

系统及网络介绍数据格式:

7 6 5 4 3 2 1 010.7 10.6 10.5 10.4 10.3 10.2 10.1 10.0MB10

MB11

MB12

MB13

MB14

MW10

MW12

MW11

MD11

MB15

MD12

MD10

Page 7: 如何读 STL 程序:

Automation and Drives

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

系统及网络介绍实例:

•数据分配举例

Page 8: 如何读 STL 程序:

Automation and Drives

数字表示方法: BYTE : L B#16#10 L byte#16#10WORD : L 2#1000000000000 L W#16#1000 L word#16#1000DWORD : L DW#16#A21234 L dword#16#A21234

INT : L 1D INT : L L#1REAL: L 1.234567e+13 TIME : L S5T#1H1M50S

Page 9: 如何读 STL 程序:

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

// 双字表示 32 位,如浮点数为 32 为双字

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

Page 10: 如何读 STL 程序:

Automation and Drives

寻址方式 :

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

对应该标识参数的值 ( 该值又称为地址指针 )

这种寻址方式能动态改变操作数存储器的地址,常用于程序循环过程中的寻址。 A I[MD 2] // 对由 MD 2 指出的输入位进行“与”逻辑操作,如: MD 2 值为

//2#0000 0000 0000 0000 0000 0000 0101 0110 表示 I 10. 6

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

Page 11: 如何读 STL 程序:

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

A I[AR1,P#1.0] //AR1+ 偏移量 (9.6)

= Q[AR2,P#4.1] //AR1+ 偏移量 (14.1)

LAR1 P##STAT53 // 把指针指向 STAT53 L 0 // 把 0 装入 ACCU1T DIW [AR1,P#0.0] // 把地址寄存器内指向起始地址区的数据赋值

Page 12: 如何读 STL 程序:

Automation and Drives

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

Page 13: 如何读 STL 程序:

Automation and Drives

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

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

地址寄存器 32 位地址寄存器 1 ( AR1 )

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

数据块地址寄存器 32 位共享数据块 DB 背景数据块 DI 2 个 32 位数据块地址寄存器状态字寄存器 16 位状态位 1 个 16 位状态字寄存器

*

Page 14: 如何读 STL 程序:

Automation and Drives

系统存储区: S7 - 300 CPU 有三个基本存储区: 外设 I/O 存储区 P

输出(映像区) Q输入(映像区) I

位存储区 M定时器 T计数器 C

系统存储区系统存储区―存放操作数据( I/O 、位存储、定时器等)物理上是 CPU 的 RAM , 存储区的大小因 CPU 型号而异。

临时本地数据存储区( L 堆栈)

可执行用户程序:· 逻 辑 块( OB 、 FB 、 FC)· 数据块( DB )

工作存储区工作存储区―①存放 CPU 运行时,所执行的用户程序单元逻辑块( OB 、 FB 、 FC )、数据块( DB )的复制件;②存放临时本地数据,这部分存储区称 L 堆栈(主要是存放用户程序的临时变量)物理上是 CPU 模块的部分 RAM

动态装载存储区:存放用户程序装载存储区装载存储区――存放用户程序 物理上是 CPU 的部分 RAM 、 EEPROM 、外置

FEPROM 等

Page 15: 如何读 STL 程序:

Automation and Drives

名 称 存储区 存 储 区 功 能 输入( I ) 过程输入映像表 每个扫描周期开始,读取过程输入值,记录输入映像表

访问方式:位、字节、字、双字 输出( O ) 过程输出映像表 扫描周期结束,输出映像表内容输出端口

访问方式:位、字节、字、双字 外设输入( PI )

外设输出( PO )外设输入 / 输出 外设存储区允许直接访问现场设备

访问方式:字节、字、双字(不能访问位) 位存储区( M ) 中间的变量 存放程序运行的中间结果 ,访问方式:位、字节、字、双字

定时器( T ) 定时器 计时时钟访问该存储区中的计时单元定时器指令可以访问该存储区和计时单元

计数器( C ) 计数器 计数器指令可以访问该存储区 临时本地数据存储区( L ) L 堆栈 在 FC 、 OB 块运行时,块变量声明表中临时变量存放在该存储区。 数据块( DB ) 数据块 DB 块存放数据信息,可被所有逻辑块访问(共享数据块)或被 FB 块特定占用(背景数据块使用 DI访问)

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

Page 16: 如何读 STL 程序:

Automation and Drives

状态字: 15 8 7 6 5 4 3 2 1 0

······ BR CC1 CC0 OS OV OR STA RLO FC

首次检测位首次检测位 **逻辑操作结果逻辑操作结果 ** 状态位状态位 或位或位 溢出位溢出位 溢出状态保持位溢出状态保持位 条件码条件码 00

条件码条件码 11 二进制结果位 二进制结果位

状态字表示 CPU 执行指令时所具有的状态,用户程序可以访问和检测状态字,并可以根据状态字中的某些位决定程序的走向和进程。

Page 17: 如何读 STL 程序:

Automation and Drives

逻辑操作结果 (RLO) :

Result of Logic Operation , RLO

位置:状态字位 “ 1”作用:存储位逻辑指令或算术比较指令的结果。无法判断 RLO 的数值时,可以查看 FC 位的情况。在某行按下 F1 ,就知道该指令是否影响 RLO 。见下页

Page 18: 如何读 STL 程序:

Automation and Drives

STA• STA 表示被操作的数据的当前状态, 0 或者 1 ;• 仅表示布尔量;• 非布尔量的数值以 ACCU 累加器表示• 例如第一句为 AN I0.0• I0.0 现在为 0 ,则 STA 为 0 ;• 但是执行完毕后 RLO 为 1 。

Page 19: 如何读 STL 程序:

Automation and Drives

FC/RLO 的变化示例: 语句表 实际状态 检测结果 RLO FC 说明

0 FC = 0 :下一条指令开始新逻辑串 A I 0.0 1 1 1 1 首次检测结果存放 RLO , FC 置

1

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

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

I0.0I0.1

Q1.0

Page 20: 如何读 STL 程序:

Automation and Drives

DI 和 DB 的区别 • 访问背景数据块时,使用 DI ;当然也可以使用 DB 访问背景数据块;• DI 的作用体现在:再单个 FB 里面调用了除背景数据块外的其他数据块时,可以用

DB 进行操作,而背景数据块可以使用 DI进行操作。如右图:可以OPN DB # DBMS // 以后所有的DB* 操作均是对应 DB4 ,而所有的 DI* 操作均对应 DB433

CDB 交换数据块内容,例如把背景数据块里面的内容与共享数据块交换,可以访问共享数据块,进行操作处理。

Page 21: 如何读 STL 程序:

Automation and Drives

L 的对应 好多程序里面直接使用 L 变量,此时你可以上

Temp 里面查看,寻求对应关系,如果找不到对应关系也无所谓,当一个临时变量使好了,出了这个块就什么都没了。