1、河南理工大学电气学院河南理工大学电气学院119:47本章主要内容1.S7-1200PLC 工作模式 (掌握)三种运行模式2.存储器及其寻址 (掌握)存储器代码,两种寻址方式,强制输入/输出,保持性3.数据格式及数据类型 (理解)把握常见数据格式特点及所占空间 4.编程方法 (重点)三种结构模式5.程序结构 (重点)OB,FC,FB,各自特点及区别 第第3章章 S7-1200 程序设计基础程序设计基础 19:472第3章 S7-1200 PLC程序设计基础3.1 S7-1200PLC 工作模式 (掌握)3.2 存储器及其寻址 (掌握)3.3 数据格式及数据类型 (理解)3.4 编程方法 (重点)
2、3.5 程序结构 (重点)第第3章章 S7-1200 程序设计基础程序设计基础 19:4733.1 CPU的工作模式的工作模式 CPU 有三种工作模式:有三种工作模式:l 在在 STOP 模式下模式下,CPU 不执行任何程序,而用户可以下载项目。不执行任何程序,而用户可以下载项目。l在在 STARTUP 模式模式下,执行一次启动下,执行一次启动OB(如果存在如果存在)。l在在RUN模式模式下,重复执行扫描周期。下,重复执行扫描周期。中断事件可能会在程序循环阶段的任何点发生并进行处理。中断事件可能会在程序循环阶段的任何点发生并进行处理。处于处于RUN模式下时,无法下载任何项目。模式下时,无法下载
3、任何项目。在在RUN 模式的启动阶段,不处理任何中断事件。模式的启动阶段,不处理任何中断事件。第第3章章 S7-1200 程序设计基础程序设计基础 19:474在在 STOP 模式下模式下:CPU 处理所有通信请求(如果适用)并处理所有通信请求(如果适用)并 执行自诊断。执行自诊断。CPU不执行用户程序,过程映像也不会自动更新。不执行用户程序,过程映像也不会自动更新。3.1 CPU的工作模式的工作模式 第第3章章 S7-1200 程序设计基础程序设计基础 19:475 上电后上电后CPU进入进入STARTUP模式,进行上电诊断和系统初始化,检查到某模式,进行上电诊断和系统初始化,检查到某些错误
4、时,将禁止些错误时,将禁止CPU进入进入RUN模式,保持在模式,保持在STOP。A 复位复位I 存储区存储区 B 使用上一次使用上一次RUN模式最后的值或替换值初始化输出模式最后的值或替换值初始化输出 C 执行启动执行启动 OB D 将物理输入的状态复制到将物理输入的状态复制到 I 存储器存储器 E 将所有中断事件存储到要在将所有中断事件存储到要在 RUN模式下处理的队列中模式下处理的队列中 F 将过程映像输出区将过程映像输出区(Q区区)的值写到物理输出的值写到物理输出 3.1 CPU的工作模式的工作模式 第第3章章 S7-1200 程序设计基础程序设计基础 19:476启动阶段结束后,进入启
5、动阶段结束后,进入 RUN 模式,模式,CPU 执行下图所示的任务:执行下图所示的任务:RUN 将过程映像输出区将过程映像输出区(Q区区)的值写到物理输出的值写到物理输出 将物理输入的状态复制到将物理输入的状态复制到 I 存储器存储器 执行程序循环执行程序循环 OB 处理通信请求和进行自诊断处理通信请求和进行自诊断 在扫描周期的任何阶段处理中断和通信在扫描周期的任何阶段处理中断和通信 3.1 CPU的工作模式的工作模式 第第3章章 S7-1200 程序设计基础程序设计基础 19:477PLC使用的物理存储器类型:使用的物理存储器类型:RAM,ROM,Flash EPROM(简称为简称为FEPR
6、OM)用户存储器:用户存储器:非易失性的存储区,用于保存用户程序(项目等)、数据和非易失性的存储区,用于保存用户程序(项目等)、数据和组态信息。所有的组态信息。所有的CPU都有内部的装载存储器,都有内部的装载存储器,CPU插入存储卡后,用存储卡插入存储卡后,用存储卡做装载存储器。类似于计算机的硬盘,具有断电保持功能。做装载存储器。类似于计算机的硬盘,具有断电保持功能。工作存储器:工作存储器:易失性,易失性,集成在集成在CPU中的高速存取的中的高速存取的RAM。用于在执行用户用于在执行用户程序时存储用户项目的某些内容。程序时存储用户项目的某些内容。CPU也会将一些项目内容从装载存储器复制也会将一
7、些项目内容从装载存储器复制到工作存储器中。到工作存储器中。类似于计算机的内存,断电时内容丢失,而在恢复供电时由类似于计算机的内存,断电时内容丢失,而在恢复供电时由CPU恢复。恢复。系统存储器:系统存储器:用来存储用户程序的操作数据,被划分为若干个地址区域,用来存储用户程序的操作数据,被划分为若干个地址区域,如过程映像输入如过程映像输入/输出,位存储器,数据块,局部数据,输出,位存储器,数据块,局部数据,I/O输入输出区域和诊输入输出区域和诊断缓冲区等。使用指令可以在相应的地址区域内对数据直接进行寻址。断缓冲区等。使用指令可以在相应的地址区域内对数据直接进行寻址。用来防止在电源关闭时丢失数据,可
8、以用不同方法设置变量的断电保持功能。用来防止在电源关闭时丢失数据,可以用不同方法设置变量的断电保持功能。3.2 存储器及其寻址存储器及其寻址第第3章章 S7-1200 程序设计基础程序设计基础 19:478第第3章章 S7-1200 程序设计基础程序设计基础 19:4793.2 存储器及其寻址存储器及其寻址地址区地址区说明说明输入过程映像I每一位对应一个数字量输入点数字量输入点。在每个扫描周期的开始阶段,CPU对输入点进行采样,并将采样值存于输入映像寄存器中。CPU在本周期内不再改变本区数据。输出过程映像Q每一位对应一个数字量输出点数字量输出点。在每个扫描周期的最开始,CPU将输出过程映像区的
9、数据传送给输出模块,并驱动外部负载。位存储区M用来保存控制继电器的中间操作状态或其他控制信息。数据块DB在程序执行过程中存放中间结果,或用来保存于工序或任务有关的其他数据。需要定义:全局数据块(所有程序可访问),背景数据块(制定的FB或SFB)局部数据L暂时存储器或给子程序传递参数,局部变量只能在本单元有效。I/O输入区域可以直接访问集中式和分布式输入模块I/O输出区域可以直接访问集中式和分布式输入模块第第3章章 S7-1200 程序设计基础程序设计基础 19:4710 不管使用变量变量(例如,“Start”或“Stop”)还是绝对地址(例如,“I0.3”或“Q1.7”),对输入(I)或输出(
10、Q)存储区的引用都会访问过访问过程映像程映像而非物理输出。要立即访问或强制用户程序中的物理(外围设备)输入或输出,请在引用后面添加“:P”例如,“Stop:P”或“Q0.3:P”)。局部数据L:只要调用代码块,CPU 就会分配要在执行块期间使用的临时或本地存储器(L)。代码块执行完毕后,CPU 将重新分配本地存储器,以用于执行其它代码块。3.2 存储器及其寻址存储器及其寻址第第3章章 S7-1200 程序设计基础程序设计基础 19:4711存储区存储区描述描述强制强制保持保持过程映像输入过程映像输入(I)在扫描循环开始时,从物理输入复制的输入值NoNo物理输入物理输入(I_:P)通过该区域立即
11、读取物理输入YesNo过程映像出过程映像出(Q)在扫描循环开始时,将输出值写入物理输出NoNo物理输出物理输出(Q_:P)通过该区域立即写物理输出YesNo位存储器位存储器(M)用于存储用户程序的中间运算结果或标志位NoYes临时局部存储器临时局部存储器(L)块的临时局部数据,只能供块内部使用,只可以通过符合方式来访问NoNo数据块数据块(DB)数据存储器与FB的参数存储器NoYes3.2 存储器及其寻址存储器及其寻址第第3章章 S7-1200 程序设计基础程序设计基础 19:4712“字节字节.位位”寻址方式寻址方式:如如 I3.2,首位字母表示存储器标识符,首位字母表示存储器标识符,I表示
12、输入过程映像区表示输入过程映像区8位二进制数组成位二进制数组成1个字节个字节(Byte):3.2 存储器及其寻址存储器及其寻址S7CPU可以按照位、字节、字和双字对存储单元寻址。可以按照位、字节、字和双字对存储单元寻址。第第3章章 S7-1200 程序设计基础程序设计基础 19:4713以起始字节的地址作为字和双字的地址。以起始字节的地址作为字和双字的地址。起始字节为最高位的字节。起始字节为最高位的字节。MW100MD1003.2 存储器及其寻址存储器及其寻址存储器寻址方式第第3章章 S7-1200 程序设计基础程序设计基础 19:47143.3 系统存储区与数据类型系统存储区与数据类型基本数
13、据类型基本数据类型变量类型符号位数取值范围常数举例位Bool11,0TRUE,FALSE或1,0字节Byte816#0016#FF16#12,16#AB字Word1616#000016#FFFF16#ABCD,16#0001双字DWord3216#0000000016#FFFFFFFF16#02468ACE字符Char816#0016#FFA,t,有符号字节SInt8-128127123,-123整数Int16-3276832767123,-123双整数Dint32-21474836482147483647123,-123无符号字节USInt80255123无符号整数UInt160655351
14、23无符号双整数UDInt3204294967295123浮点数(实数)Real321.17549510-383.402823 103812.45,-3.4,-1.2E+3双精度浮点数LReal642.2250738585072020 10-308 1.7976931348623157 1030812345.12345-1,2E+40时间Time321T#-24d20h31m23s648ms T#24d20h31m23s648msT#1d_2h_15m_30s_45ms第第3章章 S7-1200 程序设计基础程序设计基础 19:47153.4 程序结构程序结构 创建用于自动化任务的用户程序时,
15、需要将程序的指令插入代码块中:第第3章章 S7-1200 程序设计基础程序设计基础 19:4716 创建用于自动化任务的用户程序时,需要将程序的指令插入代码块中:组织块(OB)对应于 CPU 中的特定事件,并可中断用户程序的执行。用于循环执行用户程序的默认组织块(OB 1)为用户程序提供基本结构,是唯一一个用户必需的代码块。如果程序中包括其它 OB,这些 OB 会中断 OB 1 的执行。其它 OB 可执行特定功能,如用于启动任务、用于处理中断和错误或者用于按特定的时间间隔执行特定的程序代码。功能块(FB)是从另一个代码块(OB、FB 或 FC)进行调用时执行的子例程。调用块将参数传递到 FB,
16、并标识可存储特定调用数据或该 FB 实例的特定数据块(DB)。更改背景 DB 可使通用 FB 控制一组设备的运行。例如,借助包含每个泵或阀门的特定运行参数的不同背景 DB,一个 FB 可控制多个泵或阀。功能(FC)是从另一个代码块(OB、FB 或 FC)进行调用时执行的子例程。FC 不具有相关的背景 DB。调用块将参数传递给 FC。FC 中的输出值必须写入存储器地址或全局 DB 中。3.4 程序结构程序结构第第3章章 S7-1200 程序设计基础程序设计基础 19:4717 功能块(FB)与 功能(FC)检验FC、FB重要指标是可移植性(可重用性)。如果内部全部 使用局部变量,不用全局变量,不
17、作任何修改,就可以将它们移植到其他项目,通过调用与被调用的关系,可以迅速生成新的项目程序。把相同功能的工作编制成FB,然后在FC里调用,程序修改起来方便。例子:有10台电机,编制启动,停止逻辑,报 警,复位逻辑。FB+FC:FB+背景数据块+FC调用(把这些电机对应的I/O点添到 FB的管脚上)FC:1)要写10遍,2)如果你用粘贴和复制的话,有可能有的 I/O点忘记修改或其他一些错误,3)程序的结构性不强,维护起来浪费时间。如果子程序的任务不能在一个扫描周期完成,需要在两次调用之间保存某些变量的值,则应选用FB,而不是FC。因为这种情况下FC需要用全局变量(例如共享数据块和M区)来保存这些变
18、量的值,但是这样会影响FC的可移植性。如果块的内部使用了全局变量,在移植时需要考虑每个块使用的全局变量是否会 与别的块产生地址冲突(同一地址重复使用)。如果这样的FC很多,移植是附加的工作量将会很大,也很容易出错。3.4 程序结构程序结构第第3章章 S7-1200 程序设计基础程序设计基础 19:4718 创建用于自动化任务的用户程序时,需要将程序的指令插入代码块中:组织块(OB)功能块(FB)功能(FC)数据块(数据块(DB)用于存放执行用户程序时所需的变量数据的数据区。用户程序中除了逻辑程序外,还需要对存储过程状态和信号信息的数据进行处理,数据是以变量的形式存储,通过存储地址和数据类型来确
19、定数据的唯一性。3.4 程序结构程序结构第第3章章 S7-1200 程序设计基础程序设计基础 19:47193.5 编程方法编程方法l 线性化编程l 模块化编程l 结构化编程第第3章章 S7-1200 程序设计基础程序设计基础 19:47203.5 编程方法编程方法根据实际应用要求,可选择线性,模块化或结构化用于创建用户程序:线性程序按顺序逐条执行用于自动化任务的所有指令。通常,线性程序将所有程序指令都放入用于循环执行程序的 OB(OB 1)中。第第3章章 S7-1200 程序设计基础程序设计基础 19:47213.5 编程方法编程方法线性化编程l 结构简单,不带分支,一个程序包含了所有结构简
20、单,不带分支,一个程序包含了所有指令指令。所有的指令都在所有的指令都在OB1中中-每个扫描周期都要每个扫描周期都要扫描执行所有的指令,不断循环执行。即使扫描执行所有的指令,不断循环执行。即使某些不用的部分代码也需要执行。因此某些不用的部分代码也需要执行。因此CPU效率低,没有充分利用效率低,没有充分利用。需要多次执行相同或类似的操作,需要需要多次执行相同或类似的操作,需要重复重复编写相同或类似的程序编写相同或类似的程序。程序程序结构不清晰结构不清晰-管理和测试不便管理和测试不便 大型程序编写时避免采用线性化编程大型程序编写时避免采用线性化编程第第3章章 S7-1200 程序设计基础程序设计基础
21、 19:47223.5 编程方法编程方法根据实际应用要求,可选择线性,模块化或结构化用于创建用户程序:线性程序 模块化程序调用可执行特定任务的特定代码块。要创建模块化结构,需要将复杂的自动化任务划分为与过程的工艺功能相对应的更小的次级任务。每个代码块都为每个次级任务提供程序段。通过从另一个块中调用其中一个代码块来构建程序。第第3章章 S7-1200 程序设计基础程序设计基础 19:47233.5 编程方法编程方法模块化程序 根据功能分为不同的逻辑块。根据功能分为不同的逻辑块。在在OB1中可根据条件决定块的调用和执行;中可根据条件决定块的调用和执行;特点是控制任务被分成不同的块,易于团队特点是控
22、制任务被分成不同的块,易于团队分工合作同时编程,分工合作同时编程,调试方便调试方便;不同的程序块只有在需要时不同的程序块只有在需要时OB1才去调用,才去调用,因此每次循环中不是所有的块都执行,因此每次循环中不是所有的块都执行,CPU利用效率高利用效率高。模块化编程中,被调用快和调用快之间模块化编程中,被调用快和调用快之间没有没有数据交换数据交换。第第3章章 S7-1200 程序设计基础程序设计基础 19:47243.5 编程方法编程方法根据实际应用要求,可选择线性,模块化或结构化用于创建用户程序:线性程序 模块化程序 结构化编程是通过抽象的方式抽象的方式将复杂的任务分解成一些能够反映过程的工艺
23、、功能或可以反复使用的可单独解决的小任务,这些任务由相应的程序块(或称逻辑快)来表示,程序运行时所需的大量数据和变量存储在数据块中。某些程序块可以用来实现相同或者相似的功能,相互是独立的,且被OB1或其他程序块调用。第第3章章 S7-1200 程序设计基础程序设计基础 19:47253.5 编程方法编程方法 结构化编程 将过程要求类似的或相关的任务归类,形将过程要求类似的或相关的任务归类,形成通用的解决方案,在相应的程序块中解成通用的解决方案,在相应的程序块中解决。可以在决。可以在OB1中或其他程序块中调用;中或其他程序块中调用;该程序块编程时采用该程序块编程时采用形式参数形式参数,可以通过,
24、可以通过不用的实际参数调用相同的程序块。不用的实际参数调用相同的程序块。被调用快和调用块之间有被调用快和调用块之间有数据交换数据交换,需要,需要对数据进行管理。对数据进行管理。结构化编程必须对系统功能进行合理的分结构化编程必须对系统功能进行合理的分析、分解和综合,对编程设计人员的要求析、分解和综合,对编程设计人员的要求较高。较高。第第3章章 S7-1200 程序设计基础程序设计基础 19:4726编程软件界面介绍Portal 视图第第3章章 S7-1200 程序设计基础程序设计基础 19:4727本章主要内容1.S7-1200PLC 工作模式 (掌握)三种运行模式2.存储器及其寻址 (掌握)存储器代码,两种寻址方式,强制输入/输出,保持性3.数据格式及数据类型 (理解)把握常见数据格式特点及所占空间 4.编程方法 (重点)三种结构模式5.程序结构 (重点)OB,FC,FB,各自特点及区别