模块三之任务一 编程基础知识

76
1 模模模模模模模模模模模模 模模模模模模模模模模 模模模模 : 模模模

Upload: gamada

Post on 15-Jan-2016

108 views

Category:

Documents


0 download

DESCRIPTION

模块三之任务一 编程基础知识. 包头轻工职业技术学院 任课教师 : 张晓晖. 编程基础知识. 学习目标: 学会 PLC 的编程语言与程序结构 数据在存储器中存取方式 CPU 的存储区域 指令寻址方式. 一、 PLC 的编程语言与程序结构. 1 PLC 的编程语言 2 S7-200 的程序结构 3 编程的一般规约. 1 编程语言. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 模块三之任务一 编程基础知识

1

模块三之任务一编程基础知识

包头轻工职业技术学院

任课教师 :张晓晖

Page 2: 模块三之任务一 编程基础知识

2

编程基础知识

学习目标:学会 PLC 的编程语言与程序结构 数据在存储器中存取方式 CPU 的存储区域 指令寻址方式

Page 3: 模块三之任务一 编程基础知识

3

一、 PLC 的编程语言与程序结构

1 PLC的编程语言 2 S7-200的程序结构 3 编程的一般规约

Page 4: 模块三之任务一 编程基础知识

4

1 编程语言PLC 中的程序由两部分组成,一是操作系统;

二是应用程序。操作系统由 PLC 的生产厂家提供;用户程序是用户为完成特定的控制任务而编写的应用程序。

要开发应用程序,就要用到 PLC 操作系统提供的编程语言, STEP 7 标准软件包是西门子公司为 S7-200 系列 PLC 开发的系统程序。他提供了非常丰富编程语言,有十几种,我们主要讲其中三种常用的语言, LD(梯形图语言 )、 STL( 语句表语言 )、FDB (功能图语言)。

Page 5: 模块三之任务一 编程基础知识

5

1 )梯形图 (LD) 语言 梯形图程序设计语言是最常用的一种程序设计语言。它来源于继电器逻辑控制系统的描述。在工业过程控制领域,电气技术人员对继电器逻辑控制技术较为熟悉,因此,由这种逻辑控制技术发展而来的梯形图受到了欢迎,并得到了广泛的应用。梯形图与操作原理图相对应,具有直观性和对应性;与原有的继电器逻辑控制技术的不同点是,梯形图中的能流(Power Fl№ow)不是实际意义的电流,内部的继电器也不是实际存在的继电器,因此,应用时,需与原有继电器逻辑控制技术的有关概念区别对待。

Page 6: 模块三之任务一 编程基础知识

6

类似于电器控制图的一种图形语言。它沿用了继电器、触点、串并联等术评语,使用的图形符号 ,也类似于电器控制符号。通常各厂家都把梯形图语言作为各型号 PLC 的第一语言。

电器控制图 PLC 梯形图

Page 7: 模块三之任务一 编程基础知识

7

PLC 梯形图语言的编程原则 1 、梯形图由多个梯级组成,每个线圈可构成一个梯级, 每个梯级有多条支路,每个梯级代表一个逻辑方程; 2 、梯形图中的继电器继电器、接点、线圈不是物理的, 是 PLC 存储器中的位 (1=ON ; 0=OFF) ;编程时常开 / 常闭接点可无限次引用,线圈输出只能是一次; 3 、梯形图中流过的不是物理电流而是“概念电流”,只 能从左向右流; 4 、用户程序的运算是根据 PLC 的输入 / 输出映象寄存器

中 的内容,逻辑运算结果可以立即被后面的程序使用; 5 、 PLC 的内部继电器不能做控制用,只能存放逻辑控制 的中间状态; 6 、输出线圈不能直接驱动现场的执行元件,通过 I/O 模 块上的功率器件来驱动。

Page 8: 模块三之任务一 编程基础知识

8

Page 9: 模块三之任务一 编程基础知识

9

2 )语句表( STL )语言 是用助记符来表达 PLC 控制功能的一种语言。它类是于计算机的汇编语言,但比汇编语言直观、易懂、易编程。一般与梯形图配合使用,互为补充。目前大多数 PLC 都有语句表功能,不过不同厂家生产的 PLC 语句表所用的助记符互不相同。

PLC 梯形图语句表

Page 10: 模块三之任务一 编程基础知识

10

3 )功能块图( FBD )语言

是用数字电路的逻辑框图来表达 PLC 控制功能的一种语言。框图的符号与连接关系表达了 PLC 的功能。

PLC 梯形图功能块图语言

Page 11: 模块三之任务一 编程基础知识

11

功能块图程序设计语言是采用逻辑门电路的编程语言,有数字电路基础的人很容易掌握。功能块图指令由输入、输出段及逻辑关系函数组成。用 STEP7-Micro/Win32 编程软件将梯形图转换为 FBD 程序,方框的左侧为逻辑运算的输入变量,右侧为输出变量,输入输出端的小圆圈表示“非”运算,信号自左向右流动。

Page 12: 模块三之任务一 编程基础知识

12

Page 13: 模块三之任务一 编程基础知识

13

4 ) 顺序功能流程图( Sequential Function Chart )

顺序功能流程图程序设计是近年来发展起来的一种程序设计。采用顺序功能流程图的描述,控制系统被分为若干个子系统,从功能入手,使系统的操作具有明确的含义,便于设计人员和操作人员设计思想的沟通,便于程序的分工设计和检查调试。顺序功能流程图的主要元素是步、转移、转移条件和动作。

Page 14: 模块三之任务一 编程基础知识

14

顺序功能流程图程序设计的特点是 以功能为主线,条理清楚, 便于对程序操作的理解和沟通

对大型的程序,可分工设计,采

用较为灵活的程序结构,可节省程序设计时间和调试时间

常用于系统的规模校大,程序关系较复杂的场合

只有在活动步的命令和操作被 执行后,才对活动步后的转换 进行扫描,因此,整个程序的 扫描时间要大大缩短

Page 15: 模块三之任务一 编程基础知识

15

5) 结构文本 (ST)

结构文本 (ST) 是为 IECll31—3 标准创建的一种专用的高级编程语言。与梯形图相比,它能实现复杂的数学运算,编写的程序非常简洁和紧凑。

Page 16: 模块三之任务一 编程基础知识

16

2 S7-200 的程序结构 S7-200CPU 的控制程序包括三部分:主程序 : OB1 是程序的主体,每个项目必须有只 且有一个。可调用子程序和终中断程序

子程序 :一个可选指令的集合,在被其他程序调 用时执行中断程序 :指令的一个可选集合,中断事件发生 时被操作系统调用

Page 17: 模块三之任务一 编程基础知识

17

3 编程的一般规约1 )网络 在梯形图 (LAD) 中,程序被分成称为网络的一些程序段。每个梯形图网络是由一个或多个梯级组成。

功能块图 (FBD) 中,使用网络概念给程序分段。 语句表 (STL) 程序中,使用“ NETWORK'’这个关键词对程序分段。

对梯形图、功能块图、语句表程序分段后,就可通过编程软件实现它们之间的相互转换。

Page 18: 模块三之任务一 编程基础知识

18

2 )梯形图 (LAD)/功能块图 (FBD) 梯形图中左、右垂直线称为左、右母线。 STEP7-Micro/ WIN32 梯形图编辑器在绘图时,通常将右母线省略。在左、右母线之间是由触点、线圈或功能框组合的有序排列。梯形图的输入总是在图形的左边,输出总是在图形的右边,因而触点与左母线相连,线圈或功能框终止右母线,从而构成一个梯级。在一个梯级中,左、右母线之间是一个完整的“电路”,不允许“短路”、“开路”,也不允许“能流”反向流动。

功能块图中输入总是在框图的左边,输出总是在框图的右边。

Page 19: 模块三之任务一 编程基础知识

19

3 )允许输入端、允许输出端 在梯形图(LAD)、功能块图(FBD)中,功能框的EN端是允许输入端,功能框的允许输入端必须存在“能流”,才能执行该功能框的功能。

在语句表(STL)程序中没有EN允许输入端,但是允许执行STL指令的条件是栈顶的值必须是“1”。

在梯形图(LAD)、功能块图(FBD)中,功能框的ENO端是允许输出端,允许功能框的布尔量输出。用于指令的级联。

如果功能框允许输入端(EN)存在“能流”,且功能框准确无误地执行了其功能,那么允许输出端(ENO)将把“能流”传到下一个功能框,此时,ENO=I。如果执行过程中存在错误,那么“能流”就在出现错误的功能框终止,即 ENO=0。

在语句表(STL)程序中用AENO(ANDENO) 指令访问,可以产生与功能框的允许输出端(ENO)相同的效果。

Page 20: 模块三之任务一 编程基础知识

20

4 )条件输入、无条件输入

条件输入:在梯形图(LAD) 、功能块图 (FBD) 中,与“能 流”有关的功能框或线圈不直接与左母线连 接。 无条件输入:在梯形图(LAD) 、功能块图 (FBD) 中,与 “能流”无关的线圈或功能框直接与左母 线连接。例如 LBL 、 NEXT 、 SCR、 SCRE 等。

Page 21: 模块三之任务一 编程基础知识

21

5 )无允许输出端的指令

在梯形图 (LAD) 、功能块图 (FBD) 中,无允许输出端 (ENO) 的指令方框,不能用于级联。如 CALLSBR N(N1 ,… ) 子程序调用指令和 LBL 、 SCR等。

Page 22: 模块三之任务一 编程基础知识

22

二、数据在存储器中存取方式

1 、数据长度 在计算机中使用的都是二进制数,其最基本的存储单位是位 (bit) , 8 位二进制数组成 1个字节(Byte) ,其中的第 0位为最低位 (LSB) ,第 7位为最高位 (MSB) ,两个字节( 16 位)组成 1个字 (Word) ,两个字( 32位)组成 1个双字( Double word),把位、字节、字和双字占用的连续位数称为长度。

Page 23: 模块三之任务一 编程基础知识

23

2 存储器的数据类型

S7-200系列 PLC 的数据类型可以是字符串、布尔型( 0或 1)、整数型和实数型(浮点数)。布尔型数据指字节型无符号整数;整数型数包括 16 位符号整数( INT )和 32位符号整数( DINT )。实数型数据采用 32位单精度数来表示。数据类型、长度及数据范围如表 2-7所示。

Page 24: 模块三之任务一 编程基础知识

24

表 2-7 数据类型、长度及数据范围

数据的长度、类型

无符号整数范围 符号整数范围

十进制 十六进制 十进制 十六进制

字节 B ( 8位) 0 ~ 255 0 ~ FF -128 ~ 127 80 ~ 7F

字 W ( 16位) 0 ~ 65 535 0 ~ FFFF -32 768 ~ 32

767 8000 ~ 7FFF

双字 D ( 32 位)

0 ~ 4 294 967 295

0 ~ FFFFFFFF

-2 147 483 648 ~

2 147 483 647

80000000 ~ 7FFFFFFF

位( BOOL ) 0 、 1

实数 -1038 ~ 1038

字符串 每个字符串以字节形式存储,最大长度为 255 个字节,第一个字节中定义该字符串的长度

Page 25: 模块三之任务一 编程基础知识

25

3 用一位二进制数表示开关量

二进制数的“位”只有 0 和 1 两种的取值,开关量 ( 或数字量 ) 也只有两种不同的状态,如触点的断开和接通,线圈的失电和得电等。在 S7-200梯型图中,可用“位”描述它们,如果该位为 1 则表示对应的线圈为得电状态,触点为转换状态 ( 常开触点闭合、常闭触点断开 ) ;如果该位为 0 ,则表示对应线圈,触点的状态与前者相反。

Page 26: 模块三之任务一 编程基础知识

26

4 多位二进制数

可以用多位二进制数表示数据。 二进制数遵循“逢 2 进 1” 的运算规则,

每一位都有一个固定的权值,从右往左的第n 位(最低位为 0 位)的权值为 2n ,第 3 位至第 0 位的权值分别为 8 , 4 , 2 , 1 ,所以二进制数又称为 8421 码。

Page 27: 模块三之任务一 编程基础知识

27

5 十六进制数

十六进制数的 16 位数字分别用 0-9 和 A-F来表示,遵循“逢 16 进 1” 的运算规则,每一位都有一个固定的权值,从右往左的第 n位(最低位为 0 位)的权值为 16n ,十六进制数可以用数字后面加“ H” 来表示。例 2FH 。

Page 28: 模块三之任务一 编程基础知识

28

6 常数 在编程中经常会使用常数。常数数据长度可为字节、字和双字,在机器内部的数据都以二进制存储,但常数的书写可以用二进制、十进制、十六进制、 ASCII 码或浮点数(实数)等多种形式。几种常数形式分别如表 3.9 所示。

Page 29: 模块三之任务一 编程基础知识

29

7 负数

PLC 一般用二进制补码来表示有符号数,其最高位为符号位,最高位为 0时为正数,为 1时为负数,最大的 16 位正数为 16#7FFF (即 32 767 )。正数的补码是它本身,将正数的补码逐位取反后加1 ,得到绝对值与它相同的负数的补码。将负数的补码的各位求反后加 1 ,便得到了它的绝对值。例如十进制数 35对应的二进制补码为 0010 0011 ,十进制数 -35 对应的二进制数补码为 1101 1101 。

Page 30: 模块三之任务一 编程基础知识

30

8 BCD码

BCD 是二进制编码的十进制数的缩写。 BCD码用 4位二进制数的组合来表示一位十进制数。 BCD码常用于输入输出设备。

Page 31: 模块三之任务一 编程基础知识

31

三、 CPU 的存储区域 PLC 存储区域分三个区:程序区、系统区、数据区。程序区:存放应用程序,存储器为 EEPROM。系统区:存放 PLC 配置结构的参数,如 PLC 主机及

扩展机的 I/O 配置和地址等,存储器为 EEPROM。

数据区:存放应用程序执行过程中所需的数据,存储器为 EEPROM和 RAM, RAM是 EEPROM的备份。数据区又根据存放的数据类型分为若干存储区域。如下:常用数据区域。

Page 32: 模块三之任务一 编程基础知识

32

1常用数据存储区 S7-200系列 PLC 的数据存储区按存储数据的长短可划分为字节存储器、

字存储器和双字存储器 3 大类。 字节存储器有 7个: I 输入映像寄存器区 Q 输出映像寄存器区 V 变量存储器区 M 内部标位寄存器区 SM 特殊标志位存储区 S 顺序控制继电器存区 L 局部存储器区 字存储器有 4个: T 定时器存储器区 C 计数器存储器区 AI 模拟量存储器区 AQ 模拟量存储器区 双字存储器有 2个: AC 累加器存储器区 HC 高速计数器存储器区

Page 33: 模块三之任务一 编程基础知识

33

2 S7-200 数据存储区及元件的功能1 )输入映像寄存器 I(输入继电器) ( 1)输入映像寄存器的工作原理 输入继电器是 PLC 用来接收用户设备输入信号的接口。 PLC 中的“继电器”与继电器控制系统中的继电器有本质性的差别,是“软继电器”,它实质是存储单元。每一个“输入继电器”线圈都与相应的 PLC 输入端相连(如“输入继电器” I0.0的线圈与 PLC 的输入端子 0.0 相连),当外部开关信号闭合,则“输入继电器的线圈”得电,在程序中其常开触点闭合,常闭触点断开。由于存储单元可以无限次的读取,所以有无数对常开、常闭触点供编程时使用。编程时应注意,“输入继电器”的线圈只能有外部信号来驱动,不能在程序内部用指令来驱动,因此,在用户编制的梯形图中只应出现“输入继电器”的触点,而不应出现“输入继电器”的线圈。

Page 34: 模块三之任务一 编程基础知识

34

( 2)输入映像寄存器的地址分配

S7-200输入映像寄存器区域有 IB0 ~ IB15共 16个字节的存储单元。系统对输入映像寄存器是以字节( 8 位)为单位进行地址分配的。输入映像寄存器可以按位进行操作,每一位对应一个数字量的输入点。如 CPU224 的基本单元输入为 14点,需占用 2×8=16 位,即占用 IB0和 IB1两个字节。而 I1.6、 I1.7 因没有实际输入而未使用,用户程序中不可使用。但如果整个字节未使用如 IB3~ IB15 ,则可作为内部标志位( M)使用。

输入继电器可采用位,字节,字或双字来存取。输入继电器位存取的地址编号范围为 I0.0 ~ I15.7 。

Page 35: 模块三之任务一 编程基础知识

35

2 )输出映像寄存器 (1)工作原理 “ 输出继电器”是用来将输出信号传送到负载的接口,每一个“输出继电器”线圈都与相应的PLC 输出相连,并有无数对常开和常闭触点供编程时使用。除此之外,还有一对常开触点与相应 PLC输出端相连(如输出继电器 Q0.0有一对常开触点与 PLC输出端子 0.0 相连)用于驱动负载。输出继电器线圈的通断状态只能在程序内部用指令驱动。

Page 36: 模块三之任务一 编程基础知识

36

( 2)输出映像寄存器的地址分配

S7-200输出映像寄存器区域有 QB0 ~ QB15共 16个字节的存储单元。系统对输出映像寄存器也是以字节( 8 位)为单位进行地址分配的。输出映像寄存器可以按位进行操作,每一位对应一个数字量的输出点。如 CPU224 的基本单元输出为 10 点,需占用 2×8=16 位,即占用 QB0和 QB1两个字节。但未使用的位和字节均可在用户程序中作为内部标志位使用。

输出继电器可采用位,字节,字或双字来存取。输出继电器位存取的地址编号范围为 Q0.0~Q15.7 。

Page 37: 模块三之任务一 编程基础知识

37

以上介绍的两种软继电器都是和用户有联系的 ,因而是 PLC 与外部联系的窗口 。下面所介绍的则是与外部设备没有联系的内部软继电器。它们既不能用来接收用户信号,也不能用来驱动外部负载,只能用于编制程序,即线圈和接点都只能出现在梯形图中。

Page 38: 模块三之任务一 编程基础知识

38

变量存储器主要用于存储变量。用以存储用户程序执行过程中控制逻辑操作运算的中间结果,也可以用来保存与工序或任务有关的其他数据。在进行数据处理时,变量存储器会被经常使用。

变量存储器可以是位寻址,也可按字节、字、双字为单位寻址,其位存取的编号范围根据 CPU的型号有所不同, CPU221/222 为 V0.0~V2047.7共 2KB存储容量, CPU224/226为 V0.0~V5119.7共 5KB存储容量。

变量存储器 V的变化范围根据 CPU 的信号不同而不同。 CPU 224 有 VB0.0~VB5119.7 的 5K存储字节。可按位、字节、字或双字使用。

3 )变量存储器 V

Page 39: 模块三之任务一 编程基础知识

39

4 )内部标志位( M)存储区 内部标志位存储器,用来保存控制继电器的中间操作状态,其作用相当于继电器控制中的中间继电器,内部标志位存储器在PLC中没有输入/输出端与之对应,其线圈的通断状态只能在程序内部用指令驱动,其触点不能直接驱动外部负载,只能在程序内部驱动输出继电器的线圈,再用输出继电器的触点去驱动外部负载。

内部标志位存储器可采用位、字节、字或双字来存取。内部标志位存储器位存取的地址编号范围为M0.0~M31.7共 32个字节。

Page 40: 模块三之任务一 编程基础知识

40

5 )特殊标志位( SM )存储器

PLC 中还有若干特殊标志位存储器 , 特殊标志位存储器位提供大量的状态和控制功能,用来在 CPU和用户程序之间交换信息,特殊标志位存储器能以位、字节、字或双字来存取, CPU224 的 SM 的位地址编号范围为 SM0.0~SM179.7共 180个字节。其中 SM0.0 ~ SM29.7 的 30个字节为只读型区域。

Page 41: 模块三之任务一 编程基础知识

41

① SMB0为状态位字节,在每次扫描循环结尾由 S7-200 CPU 更新,定义如下:

SM0.0 运行监视, PLC运行 RUN状态,该位始终为 1 PLC 在运行时利用其触点驱动输出继电器。

SM0.1 初始化脉冲。仅在执行用户程序的第一个 扫描周期时为1。SM0.2 当 RAM 中数据丢失时,导通一个扫描周期,用 于出错处理。SM0.3 PLC上电进入RUN 方式,ON一个扫描周期。

Page 42: 模块三之任务一 编程基础知识

42

SM0.4 分脉冲,该位输出一个占空比为 50 %的分时钟 脉冲。用作时间基准或简易延时。 SM0.5 秒脉冲,该位输出一个占空比为 50 %的秒时钟 脉冲。可用作时间基准。SM0.6 扫描时钟,一个扫描周期为 ON(高电平),另 一为 OFF(低电平)循环交替。 SM0.7 工作方式开关位置指示, 0为 TERM位置,可同 编程设备通讯。 1 为 RUN位置。为 1 时,使自由

端口通讯方式有效。

Page 43: 模块三之任务一 编程基础知识

43

② SMB1 为指令状态位字节,常用于表及数学操作,提供不同指令的错误提示。部分位定义如下:

SM1.0 零标志,运算结果为 0时,该位置 1 。SM1.1 溢出标志,运算结果溢出或查出非法数值 时,该位置 1 。 SM1.2 负数标志,数学运算结果为负时,该位为 1 。

Page 44: 模块三之任务一 编程基础知识

44

6) 局部变量存储器( L) 局部变量存储器 L 用来存放局部变量,局部变量存储器

L 和变量存储器 V十分相似,主要区别在于全局变量是全局有效,即同一个变量可以被任何程序(主程序、子程序和中断程序)访问。而局部变量只是局部有效,即变量只和特定的程序相关联。

S7-200有 64 个字节的局部变量存储器,其中 60个字节可以作为暂时存储器,或给子程序传递参数。后 4个字节作为系统的保留字节。 PLC 在运行时,根据需要动态地分配局部变量存储器,在执行主程序时, 64 个字节的局部变量存储器分配给主程序,当调用子程序或出现中断时,局部变量存储器分配给子程序或中断程序。

局部存储器可以按位、字节、字、双字直接寻址,其位存取的地址编号范围为 L0.0~L63.7 。

L 可以作为地址指针。

Page 45: 模块三之任务一 编程基础知识

45

7 )高速计数器 HC

一般计数器的计数频率受扫描周期的影响,不能太高。而高速计数器可用来累计比 CPU 的扫描速度更快的事件。高速计数器的当前值是一个双字长( 32位)的整数,且为只读值。

高速计数器的地址编号范围根据 CPU的型号有所不同, CPU221/222各有 4个高速计数器, CPU224/226 各有 6个高速计数器,编号为 HC0~HC5 。

Page 46: 模块三之任务一 编程基础知识

46

8)累加器 AC 累加器是用来暂存数据的寄存器,它可以用来存放运算数据、中间数据和结果。 CPU 提供了 4个 32位的累加器,其地址编号为 AC0~AC3 。累加器的可用长度为 32位,可采用字节、字、双字的存取方式,按字节、字只能存取累加器的低 8位或低 16 位,双字可以存取累加器全部的 32 位。

Page 47: 模块三之任务一 编程基础知识

47

PLC所提供的定时器作用相当于继电器控制系统中的时间继电器。每个定时器可提供无数对常开和常闭触点供编程使用。其设定时间由程序设置。

每个定时器有一个 16 位的当前值寄存器,用于存储定时器累计的时基增量值 (1~32767) ,另有一个状态位表示定时器的状态。若当前值寄存器累计的时基增量值大于等于设定值时,定时器的状态位被置“ 1”,该定时器的常开触点闭合。

9 )定时器(相当于时间继电器)

Page 48: 模块三之任务一 编程基础知识

48

定时器的定时精度分别为 1ms 、 10ms和 100ms三种, CPU222 、 CPU224 及 CPU226的定时器地址编号范围为 T0~T225 ,它们分辨率、定时范围并不相同,用户应根据所用 CPU型号及时基,正确选用定时器的编号。

S7-200 CPU中的定时器是对内部时钟累计时间增量的设备,用于时间控制。编址范围 T0~T255( 22X); T0~T127(21X) 。

Page 49: 模块三之任务一 编程基础知识

49

10 )计数器

计数器用于累计计数输入端接收到的由断开到接通的脉冲个数。计数器可提供无数对常开和常闭触点供编程使用,其设定值由程序赋予。

计数器的结构与定时器基本相同,每个计数器有一个 16 位的当前值寄存器用于存储计数器累计的脉冲数,另有一个状态位表示计数器的状态,若当前值寄存器累计的脉冲数大于等于设定值时,计数器的状态位被置“ 1”,该计数器的常开触点闭合。计数器的地址编号范围为 C0~C255 。

Page 50: 模块三之任务一 编程基础知识

50

11 )模拟量输入 /输出映像寄存器( AI/AQ)

S7-200的模拟量输入电路是将外部输入的模拟量信号转换成1个字长的数字量存入模拟量输入映像寄存器区域,区域标志符为AI。

模拟量输出电路是将模拟量输出映像寄存器区域的1个字长(16位)数值转换为模拟电流或电压输出,区域标志符为AQ。

在 PLC内的数字量字长为16位,即两个字节,故其地址均以偶数表示,如 AIW0、AIW2…..; AQW0、AQW2…..。

Page 51: 模块三之任务一 编程基础知识

51

对模拟量输入/输出是以2个字(W)为单位分配地址,每路模拟量输入/输出占用1个字(2个字节)。如有3路模拟量输入,需分配 4个字(AIW0、AIW2、 AIW4、AIW6),其中没有被使用的字AIW6,不可被占用或分配给后续模块。如果有1路模拟量输出,需分配 2个字(AQW0、AQW2),其中没有被使用的字AQW2,不可被占用或分配给后续模块。

模拟量输入/输出的地址编号范围根据 CPU的型号的不同有所不同,CPU222为 AIW0~ AIW30/AQW0~ AQW30;CPU224/226为AIW0~ AIW62/AQW0~ AQW62。

Page 52: 模块三之任务一 编程基础知识

52

12 )顺序控制继电器 S (状态元件)

顺序控制继电器是使用步进顺序控制指令编程时的重要状态元件,通常与步进指令一起使用以实现顺序功能流程图的编程。

顺序控制继电器的地址编号范围为S0.0~S31.7。

Page 53: 模块三之任务一 编程基础知识

53

存储区的功能、访问单位、及标识符区域名称 区域功能 访问时的

操作单位标识符

输入过程映像区 (I)

在循环扫描的开始,操作系统从过程中读取输入信号存入本区域,供程序使用。

输入位输入字节输入字输入双字

IIBIWID

输出过程映像区 (Q)

在循环扫描周期间,程序运算得到的输出值存入本区域,在循环扫描的末尾,操作系统从中读取值,并将其送至输出模块。

输出位输出字节输出字输出双字

QQBQWQD

Page 54: 模块三之任务一 编程基础知识

54

内部标志位 存储区 (M)

本区域提供的存储器用于存储程序运算的中间结果。

存储器位存储器字节存储器字存储器双字

MMBMWMD

外设输入存储区( PI )

通过本区域,用户程序能够直接访问输入和输出模块(即外部输入输出信号)。不经过 I/O 映像区。

输入字节输入字输入双字

PIBPIWPID

外设输出存储区( PQ )

输出字节输出字输出双字

PQBPQWPQD

定时器( T )

为定时器提供存储区,当它访问本区域时可得到定时剩余时间。

定时器( T ) T

Page 55: 模块三之任务一 编程基础知识

55

计数器(C)

为计数器提供存储区,当它访问本区域可得到当前计数值

计数器 (C) C

数据块 (DB)

本区域包含所有数据块的数据,如果需要同时打开两个不同的数据块,可用 OPN DB 打开一个,再用 OPN DI打开另一个。用指令 LDBWi 和 LDIWi 进一步确定被访问数据块的数据再用 OPN DI 打开一个数据时,打开的是与功能块 (FBS) 和系统功能块 (SFBS) 相关联的背景数据块。

用 OPN DB 打开的块数据位数据字节数据字数据双字用 OPN DI 打开的块数据位数据字节数据字数据双字

DBXDBBDBWDBD

DIXDIBDIWDID

Page 56: 模块三之任务一 编程基础知识

56

变量存储器(v)

存放程序执行过程中的中间结果

存储器位存储器字节存储器字存储器双字

VVBVWVD

本地数据(L)

本区域存放逻辑块 (OB ,FB或 FC) 中使用的临时数据,也称为动态本地数据。一般用作中间暂存器。当逻辑块结速时,数据丢失,因为这些数据是存储在本地数据堆栈 (L堆栈 )中的。

临时本地数据位临时本地数据字节临时本地数据字临时本地数据双字

LLBLWLD

Page 57: 模块三之任务一 编程基础知识

57

四、 指令寻址方式 1 编址方式 计算机中使用的数据均为二进制数,二进制数的基本单位是 1个二进制位, 8个二进制位组成一个字节, 2个字节组成一个字, 2个字组成一个双字。

存储器的单位可以是位( bit )、字节( Byte )、字( Word)、双字( Double Word),那么编址方式也可以分为位、字节、字、双字编址。存储单元的地址由区域标示符、字节地址和位地址组成。

Page 58: 模块三之任务一 编程基础知识

58

1 )位编址的指定方式为

根据这个地址就能找到操作数,操作数是一位。

如: I3.3

存储器区域标识符 字节地址 位地址.

1

               

               

               

               

               

               

               

               

               

               

               

               

0123-------

15

7 6 5 4 3 2 1 0I 存储区

Page 59: 模块三之任务一 编程基础知识

59

I3. 2

Page 60: 模块三之任务一 编程基础知识

60

2 )字节、字、双字编址的指定方式为 若要存取存储器中某一字节、字、双字的信息,就必须指出该字节、字、双字的地址。字节、字、双字地址格式

把 105、 106、 107 、108 字节组成的双字展开后,如图:

V 存储区 7 6 5 4 3 2 1 0

---

100101102103104105106107108

-

               

               

               

               

               

               

               

               

               

               

               

               

               

最低位 0

最低位 0最高位 15

最低位 0最高位 7

最高位 31

|||||||||||||||||||||||||||||||

展开

区域标识符 数据大小 起始字节地址

V B 100V W 102V D 105

如 :

Page 61: 模块三之任务一 编程基础知识

61

Page 62: 模块三之任务一 编程基础知识

62

3 )其它地址格式 数据存储区域中,还包括定时器 (T)存储区、计数器 (C)存储区、累加器 (AC)存储区、高速计数器 (HC)存储区等。要存取它们的数据也要指定地址。指定地址格式:

存储区域标识符 元件号

如: T24 时间继电器存储区 C3 计数器存储区 AC0 累加器存储区 HC0 高速计数器存储区

Page 63: 模块三之任务一 编程基础知识

63

Date: 2005-9-25File No.: SSP1_03C.26

SIMATIC S7SiemensAG 2000. All rights reserved.

Information and Training CenterKnowledge for Automation

STEP 7 的可能寻址范围设计的地址区 访问区域 缩写 加在一起的最大区域过程映象I/Q 输入/输出位 I / Q 0.0 ---65,535.7

输入/输出字节 I / QB 0 ---65,535

输入/输出字 IW / QW 0 ---65,534

输入/输出双字 ID / QD 0 ---65,532

存储器标志 存储器位 M 0.0 ---255.7

存储器字节 MB 0 ---255

存储器字 MW 0 ---254

存储器双字 MD 0 ---252

I/Q 外部输入/输出 I/Q 字节, 外设 PIB / PQB 0 ---65,535

I/Q 字, 外设 PIW/PQW 0 ---65,534

I/Q 双字, 外设 PID/PQD 0 ---65,532

定时器 定时器(T) T 0 ---255

计数器 计数器(C) C 0 ---255

数据块 数据块(DB) DB 1 ---65,532

数据块 用OPN DB打开位, 字节, 字, 双字 DBX,DBB

DBW,DBD0 ---65,532

用OPN DI打开位, 字节, 字, 双字 DIX,DIB

DIW,DID0 ---65,532

注意 CPU 的型号不同,最大的地址可能小于上表的数据。

Page 64: 模块三之任务一 编程基础知识

64

S7-200CPU 输入输出操作过程

.

.

.

.

.

.

1 1 I0.0 I0.3 Q0.4

Q0.4

Q0.4 Q0.7

               

               

               

               

               

               

               

               

               

               

               

               

               

               

               

               

               

               

               

               

1 1

76543210 765432100.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

m

0

1

2

3

.

.

.

.

.

.

0

1

2

3

0.0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

L

1 1

输入存储区 输出存储区

Page 65: 模块三之任务一 编程基础知识

65

Date: 2005-9-26File No.: SSP1_03C.16

SIMATIC S7SiemensAG 2000. All rights reserved.

Information and Training CenterKnowledge for Automation

过程映象

字节0字节1字节2:::

CPU 存储器区

字节0字节1字节2:::

PII PIQ

用户程序

CPU 存储器区

::

A I 2.0= Q 4.3

::::

1

1

I2.0 Q4.3

Page 66: 模块三之任务一 编程基础知识

66

五、寻址方式 在编写 PLC 程序时,我们会用到存储器的某一位或某一个字节或某一个字或某一个双字,怎样能让指令能正确找到我们所需要的位、字节、字、双字的数据信息?这就要求我们正确了解位、字节、字、双字的寻址方法,以便在编写程序时,使用正确的指令规则。 S7-200的指令格式为:

操作码 [操作数 1][操作数 2]。 操作码用以指定 CPU 完成什么样的操作,操作数指定要操作的对象。指令中如何提供操作数或操作数的地址称寻址方式。 S7-200系列 PLC 指令系统的数据寻址方式有立即数寻址、直接寻址和间接寻址三大类。

Page 67: 模块三之任务一 编程基础知识

67

1 )立即寻址 对立即数直接进行读写操作的寻址称为立即数寻址。立即数寻址的数据在指令以常数形式出现。取指令的同时就取出了操作数。

Page 68: 模块三之任务一 编程基础知识

68

2 )直接寻址方式 直接寻址方式指令中直接使用存储器或寄存器的地址编号,直接到指定的区域读取或写入数据。如 VW790 、 VBl00 。

Page 69: 模块三之任务一 编程基础知识

69

3 )间接寻址

在一条指令中,如果操作码后面的操作数是一个数据所在地的地址形式出现的,这种指令是寻址方式就叫做间接寻址。

S7-200 CPU以 V、 L或 AC 的内容值为地址进行间接寻址。可间接寻址的存储器区域有: I、 Q、 V、M、 S、 T(仅当前值)、 C(仅当前值)。不可以对独立的位( Bit)值或模拟量进行间接寻址。

Page 70: 模块三之任务一 编程基础知识

70

间接寻址方式是,数据存放在存储器或寄存器中,在指令中只出现所需数据所在单元的内存地址的地址。存储单元地址的地址又称为地址指针。这种间接寻址方式与计算机的间接寻址方式相同。间接寻址在处理内存连续地址中的数据时非常方便,而且可以缩短程序所生成的代码的长度,使编程更加灵活。

用间接寻址方式存取数据需要作的工作有 3种:建立指针、间接存取和修改指针。

Page 71: 模块三之任务一 编程基础知识

71

( 1)建立指针 建立指针必须用双字传送指令( MOVD ),将存储器所要访问的单元的地址装入用来作为指针的存储器单元或寄存器,装入的是地址而不是数据本身,格式如下:例: MOVD &VB200,VD302 MOVD &MB10,AC2 MOVD &C2,LD14

注意:建立指针用 MOVD 指令。

Page 72: 模块三之任务一 编程基础知识

72

只能用 V、 L或 ACl 、 AC2 和 AC3 作指针。例如: MOVD & VB200 , AC1 MOVD & C3 , VD6 MOVD & MB4, LD8 其中, &为地址符号,它与单元编号结合使用表示所对应单元的 32位物理地址; C3 只是一个直接地址编号,并不是它的物理地址。指令中的第二个地址数据必须是双字长,如 VD 、 LD 、 AC 等。

Page 73: 模块三之任务一 编程基础知识

73

( 2)间接存取

指令中在操作数的前面加“ *”表示该操作数为一个指针。下面两条指令是建立指针和间接存取的应用方法: MOVD &VB200, AC0 MOVW *AC0, AC1

若存储区的地址及单元中所存的数据如下所示

Page 74: 模块三之任务一 编程基础知识

74

用指针来存取数据

Page 75: 模块三之任务一 编程基础知识

75

3 )修改指针 连续存取指针所指数据时,因为指针是 32位数据,应使用双字节的指令来修改指针值。例: MOVD AC1 INCD AC1 将指针增加两次,指向下一个字 MOVW *AC1,AC0 将 AC1 所指向的字的数值送 AC0

Page 76: 模块三之任务一 编程基础知识

76

下面的两条指令可以修改指针的用法:INCD AC0INCD AC0MOVW *AC0, AC1

返回本节