PLC实用教程(西门子)第3章STEP 7的编程.ppt_第1页
PLC实用教程(西门子)第3章STEP 7的编程.ppt_第2页
PLC实用教程(西门子)第3章STEP 7的编程.ppt_第3页
PLC实用教程(西门子)第3章STEP 7的编程.ppt_第4页
PLC实用教程(西门子)第3章STEP 7的编程.ppt_第5页
免费预览已结束,剩余218页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章STEP7的编程 3 1STEP7编程基础 3 2STEP7数据类型和寻址方式 3 3指令系统 3 4STEP7结构化程序设计 3 1STEP7编程基础 3 1 1STEP7的组成1 SIMATIC管理器STEP7专业集成软件包提供的主要应用工具如图3 1所示 还可以用一系列可选软件包进行扩展 图3 1STEP7标准软件包 3 1 1STEP7的组成 双击SIMATICManager的图标即可启动SIMATIC管理器 在SIMATIC管理器窗口内可以同时打开多个项目 所打开的每个项目都用一个项目窗口进行管理 项目窗口类似于Windows的资源管理器 分为左右两个视窗 左边是项目结构视窗 显示项目的层次结构 右边是项目对象视窗 显示左边项目结构对应项的内容 在右视窗内双击对象图标可以打开与对象相关联的属性窗口 如图3 2所示 图3 2SIMATIC管理器窗口 3 1 1STEP7的组成 2 STEP7的项目结构在文件的组织和管理上 STEP7使用的是 项目 Project 分层结构体系 数据以对象形式存储 项目中的对象按项目结构层次 树形结构 组织 如图3 3所示 图3 3项目结构层次 3 1 1STEP7的组成 1 项目STEP7以 项目 作为第一层 每个项目代表和项目存储有关的一个数据结构 项目包含了整个自动化任务的所有程序和数据 包括 模块硬件结构及模块参数的组态数据 用于网络通信的组态数据和用于可编程模块的程序 在SIMATIC管理器中创建项目 选中菜单中的 文件 新建项目 或者单击图标就可以打开新建项目的对话框 如图3 4所示 也可以使用新建项目向导 图3 4创建项目 3 1 1STEP7的组成 2 站站和MPI网络节点是STEP7的项目结构层次的第二层 在PLC网络系统中 将可以进行数据通信 连接外部输入 输出的物理设备称为站 Station 站是用于存放硬件组态和模块参数等信息的 它是硬件组态的起点 在SIMATIC管理器中创建 站 选中 插入 站点 SIMATIC300站点 命令 或者用鼠标右键单击项目名称 如图3 5所示 图3 5创建站点 3 1 1STEP7的组成 3 PLC硬件PLC硬件是STEP7的项目结构层次的第3层 是PLC站的基本组成 第3层以及其他层与其上一层对象类型有关 4 其他层在其他层中 主要包括S7程序和连接的其他对象 S7程序就是PLC的用户程序 连接的其他对象是指在PLC系统中连接的其他单元 3 1 2STEP7的程序类型 1 编程语言 1 指令表IL InstructionList Siemens称为语句表STL StatementList 语句表STL是一种类似于计算机汇编语言的文本编程语言 语句表包含STEP7指令 由多条语句组成一个程序段 又称为网络 Network 语句表可供喜欢用汇编语言编程的人员使用 语句表的输入快 可以在每条语句后面加上注释 2 结构文本ST StructuredText Siemens称为结构化控制语言SCL StructuredControlLanguage 结构化控制语言SCL类似于计算机高级语言 符合IEC61131 3标准 SCL适合于复杂的公式计算 复杂的计算任务和最优化算法或管理大量的数据等 3 1 2STEP7的程序类型 3 梯形图LD LadderDiagram Siemens简称为LAD 梯形图与继电器控制电路的表达极为相似 采用诸如触点和线圈的符号 特别适合于数字量逻辑控制 能流 Powerflow 与程序执行的方向一致 这种编程语言针对熟悉接触器控制的技术人员 4 功能块图FBD FunctionBlockDiagram 标准中文名称为功能方框图语言 功能块图FBD使用类似于布尔代数的图形逻辑符号来表示控制逻辑 比较适合于有数字电路基础的程序员使用 5 顺序功能图SFC SequentialFunctionChart 对应于Siemens的S7Graph 顺序功能图类似于顺序控制的流程图 着眼于表示类型 S7Graph表达复杂的顺序控制非常清晰 特别适合于熟悉生产工艺的编程人员使用 3 1 2STEP7的程序类型 2 编程语言的选用与相互转换STEP7的编程语言各有特色 其中梯形图 语句表和功能块图是3种基本的编程语言 最为常用 且编程语言之间可以相互转换 如图3 6所示 图3 6编程语言之间的转换 3 1 2STEP7的程序类型 3 程序循环执行当PLC上电或从STOP模式切换到RUN模式时 CPU执行一次全启动 使用OB100 在全启动期间 操作系统先清除非保持位存储器 定时器和计数器 删除中断堆栈和块堆栈 然后复位所有保存的硬件中断和诊断中断 启动循环扫描监视计时 CPU的循环扫描包括三个主要部分 1 CPU检查输入信号的状态并刷新过程映像输入表 2 执行用户程序 调用组织块OB1 所以 OB1其实就是用户主程序 3 把过程输出映像输出表的值写到输出模块 3 1 2STEP7的程序类型 4 过程映像在每个扫描周期 CPU检查输入和输出的状态 有特定的存储器区保存模块的二进制数据 PII和PIQ 处理程序访问的是这些寄存器 而不直接查询数字信号模块的信号状态 这一特定的存储器区就是过程映像 PII ProcessImageInput 过程映像输入表建立在CPU存储器区 所有输入模块的信号状态存放在这里 PII以字节队列的格式分配存储区 每个字节对应一个8位的输入信号 PIQ ProcessImageOutput 过程映像输出表包含程序执行的结果输出值 这些输出值在扫描结束传送到实际输出模块上 3 1 2STEP7的程序类型 在用户程序检查输入 例如 AI2 0 时 使用PII的最后的状态 这样就保证在一个扫描周期内使用相同的信号状态 如图3 7所示 图3 7过程映像 3 1 3STEP7的程序结构 STEP7为设计程序提供三种方法 线性化编程 模块化编程和结构化编程 用户可以选择最适合的应用程序设计方法 如图3 8所示 图3 8三种程序结构图 3 1 3STEP7的程序结构 1 线性化编程线性化编程具有不带分支的简单结构 一个简单的程序块包含系统的所有指令 线性编程类似于硬接线的继电器逻辑 对于线性化编程 当设计一个控制过程时 步骤如下 1 描述过程的具体任务 2 把任务分解成输入任务和输出任务 3 对每个任务确定输入和输出 4 对每个任务编制程序 直到所有的任务都完成 3 1 3STEP7的程序结构 2 模块化编程模块化编程是把程序分成若干个程序块 每个程序块含有一些设备和任务的逻辑指令 在组织块 OB1 中的指令决定控制程序的模块的执行 模块化编程功能 FC 或功能块 FB 控制着不同的过程任务 这些块相当于主循环程序的子程序 在模块化编程中 在主循环程序和被调用的块之间仍没有数据的交换 但是 每个功能区被分成不同的块 这样就易于几个人同时编程 而相互之间没有冲突 3 1 3STEP7的程序结构 监视一个慢速变化的过程不需要每次都进行扫描 如果每隔一定时间或根据需要进行处理 程序将更有效 例如液位监视 功能描述如图3 9所示 图3 9模块化编程实例图 3 1 3STEP7的程序结构 液位监视程序设计如下 1 确定液位监视的组成部分和它们的关系 2 为了可以对程序进行结构化处理 易于简化后面的编程 对程序块的每个段加上文字注释和标题 做好文档资料的管理 3 设计完成所要求控制任务的功能 4 规划从OB中调用块以完成功能的程序执行过程 解决方案 先建立一个功能FC 它可以监视和控制任务 再建立一个OB 其中每隔一定时间就调用块 功能 在这个时间间隔执行液位监视 3 1 3STEP7的程序结构 3 结构化编程结构化编程把过程要求类似或相关的功能进行分类 并提供这一类的通用解决方案 以参数形式向指令块提供有关的信息 以完成同一类不同的任务 结构化程序能够重复利用这些通用模块 以减少模块的重复 为支持结构化编程 STEP7用户程序通常由组织块 OB 功能块 FB 或功能 FC 这三种类型的逻辑块和数据块 DB 组成 以组成结构化的用户程序 3 1 3STEP7的程序结构 结构化程序设计如下 1 确定哪些部件和操作可以应用于所有的罐和相关的控制 2 建立功能或功能块 完成所要求的控制 3 建立块的变量定义表 以便于对要操作的罐和控制进行地址分配 4 设计一个程序 根据选择开关调用功能或功能块 结构化编程如图3 10所示 图3 10结构化编程实例图 3 1 3STEP7的程序结构 解决方案 1 建立一个功能块或功能控制罐的流出量 如果使用FB 还必须建立背景数据块DB 如果使用FC 就不需要建立背景数据块DB 2 为相关的块建立变量定义表 注意参数的设计和地址 3 建立一个OB块来根据选择开关调用功能或功能块 在结构化编程中 调用功能的处理与在模块化编程中一样 3 2STEP7数据类型和寻址方式 3 2 1STEP7数据类型单个的十进制数需要用4位二进制数进行编码 为了用BCD码表示十进制数的0 9 使用与二进制数的相同表示方法 如图3 11所示 图3 11数据格式 3 2 1STEP7数据类型 STEP7的数据类型分为以下三种 基本数据类型 复合数据类型和参数类型 如图3 12所示 图3 12数据类型 3 2 1STEP7数据类型 1 基本数据类型基本数据类型定义不超过32位的数据 符合IEC1131 3的规定 基本数据类型在PLC存储器中有固定的长度 可以利用STEP7的基本指令处理 装入S7处理器的累加器中 STEP7基本数据类型共有12种 1 位 bit 常称为BOOL 布尔型 只有两个值 0或1 如 I0 0 Q0 1 M0 0 V0 1等 2 字节 Byte 一个字节 Byte 等于8位 bit 其中0位为最低位 7位为最高位 如 IB0 包括I0 0 I0 7位 QB0 包括Q0 0 Q0 7位 MB0 VB0等 范围 00 FF 十进制的0 255 3 2 1STEP7数据类型 3 字 Word 相邻的两字节 Byte 组成一个字 Word 来表示一个无符号数 因此 字为16位 需要注意的是 字的起始字节必须都是偶数 字的范围为十六进制的0000 FFFF 即十进制的0 65536 4 双字 DoubleWord 相邻的两个字 Word 组成一个双字 来表示一个无符号数 因此 双字为32位 需要注意的是 双字的起始字节和字一样 必须是偶数 双字的范围为十六进制的00000000 FFFFFFFF 即十进制的0 4294967295 在编程时要注意 如果已经用了MD100 如再用MW100或MW102要特别小心 3 2 1STEP7数据类型 5 整数 INT Integer 整数为有符号数 16位 最高位 第15位 为符号位 表示所处理的是正数还是负数 0表示正数 1表示负数 范围为 32768 32767 整数占用存储器的一个字 用二进制表示 一个整数的负数用其正数的补码表示 所有的位取反加 1 可以得到正数的补码 6 长整数 DINT DoubleInteger 32位整数和16位整数一样 为有符号数 最高位为符号位 1表示负数 0表示正数 范围为 2147483648 2147483647 3 2 1STEP7数据类型 7 浮点数 R Real 浮点数为32位 按照IEEE标准表示 可以用来表示小数 为了表示10的乘方次数 可以用幂的形式表示实数 浮点数可以为 1 m 2e 其存储结构如图3 13所示 图3 13浮点数存储结构图 3 2 1STEP7数据类型 8 字符 CHAR 字长为8位 可以使用ASCII码 9 时间 TIME 字长为32位 IEC标准 单位 1ms 10 日期 DATE 字长为16位 IEC标准 单位 天 11 每天时间 TIME OF DAY 字长为32位 小时 0 23 分 0 59 秒 0 59 毫秒 0 999 12 S5时间格式 S5TIME 字长为16位 从0H 0M 0S 0MS到2H 46M 30S 0MS 3 2 1STEP7数据类型 常数可以是字节 字或双字 CPU以二进制方式存储 可以用十进制 十六进制ASCII码或浮点数形式来表示 如表3 1所示 表3 1常数的表示方法举例 3 2 1STEP7数据类型 说明 1 S5T 格式为 S5T aD bH cM dS eMS 其中a b c d e分别是日 小时 分 秒和毫秒的数值 输入时可以省掉下画线 2 D 取值范围为 D 1990 1 1 D 2168 12 31 STEP7基本数据类型常数举例如表3 2所示 表3 2基本数据类型 3 2 1STEP7数据类型 2 复合数据类型STEP7的指令不能一次处理复合数据类型 因为大于32位 但是可以一次处理复合数据类型中的一个元素 STEP7支持的复合数据类型包括以下几种 1 字符串 STRING 字符串是由最多254个字符组成的一维数组 2 日期和时间 DATE AND TIME 用于存储年 月 日 时 分 秒 毫秒和星期的数据 占用8个字节 BCD编码 星期天代码为1 星期一至星期六代码分别是2 7 3 数组 ARRAY 将一组同一类型的数据组合在一起组成一个单位就是数组 数组的维数最大可以达到6维 数组中的元素可以是基本数据类型或复合数据类型中的任一数据类型 但数组 ARRAY 类型除外 即数组类型不可以嵌套 数组中的每一维的下标取值范围是 32768 32767 要求下标的下限必须小于下标的上限 定义数组时必须指明数组元素的类型 维数及每一维的下标范围 ARRAY和OF是数组的关键字 3 2 1STEP7数据类型 4 结构 STRUCT 将一组不同类型的数据组合在一起组成一个单位就是结构 访问结构中的元素需要包含结构的名称 这样可使程序易读 结构举例如图3 14所示 图3 14结构类型举例 3 2 1STEP7数据类型 5 用户定义的数据类型 UDT User DefinedDataTypes 由用户将基本数据类型和复合数据类型组合在一起形成的数据类型 可以在数据块DB和变量声明表中定义用户定义数据类型 UDT和结构类型是有区别的 UDT必须在UDT的特殊结构块内单独定义 且单独存放在一个数据块中 而结构是在数据块的声明表中或逻辑块的变量声明表中与其他变量一起定义的 UDT可以作为基本数据类型用于其他变量的定义 而结构是不可以的 3 2 1STEP7数据类型 3 参数类型在结构化编程时 为了使得功能块能够成为可以在同一PLC循环内多次调用的通用功能块 功能块中所使用的数据不可以使用绝对地址 而只能以符号地址的形式出现 参数是指在S7系列PLC中的逻辑块之间相互传递的数据 S7的参数分为 形式参数 和 实际参数 两类 被调用的功能块中所使用的符号称为形参 FormalParameter 形式参数 而在调用块中对符号所赋予的实际地址称为实参 ActualParameter 实际参数 3 2 1STEP7数据类型 参数类型是为在逻辑块之间传递参数的形参而定义的数据类型 S7中可以使用的参数类型有以下几种 表3 3参数类型 3 2 2STEP7寻址方式 1 绝对寻址和符号寻址所谓寻址方式就是产生有效地址的方法 寻址方式是指令系统的一部分 它与PLC的硬件结构紧密相关 STEP7的寻址方式分为绝对寻址和符号寻址两种 两种寻址方式如图3 15所示 图3 15寻址方式 3 2 2STEP7寻址方式 对绝对寻址和符号寻址举例进行比较 如图3 16所示 图3 16绝对寻址和符号寻址举例 3 2 2STEP7寻址方式 2 全局变量和局部变量符号寻址中的符号分为全局变量和局部变量两种 全局变量 在符号编辑器中定义的全局变量是在全局符号表或全局数据块中声明的 可以在所有的程序块中使用 在符号表中的符号必须是唯一的 局部变量 它是在块的变量声明表定义的 只能在所定义的块中使用 局部变量不能作为不同程序块之间的数据接口 3 2 2STEP7寻址方式 符号寻址如图3 17所示 图3 17符号寻址 3 2 2STEP7寻址方式 局部数据分为参数和局部变量两大类 局部变量又包括静态变量和临时变量 暂态变量 两种 临时变量是一种在块执行时用来暂时存储数据的变量 这些临时数据存储在L stack 局部数据堆栈 中 L stack是CPU中单独的存储器区 程序退出后 要把这些数据内存归还给操作系统 临时变量可以被用于所有的块中 OB FC FB 在一个块中使用临时变量之前 必须在块的变量声明表中定义 在 temp 行中输入变量名和数据类型 临时变量不能被赋予初值 当完成一个 temp 行后 按 回车 键 一个新的 temp 行将被添加在其后 L stack的绝对地址由系统赋值并在 Address 栏中显示 3 2 2STEP7寻址方式 图3 18为一个用符号地址访问临时变量的例子 图3 18临时变量 3 2 2STEP7寻址方式 局部数据堆栈的占用情况 是看每个程序的处理级 例如OB1和它的所有嵌套的块 占用L stack的特定区域 这个区域是有容量限制的 如图3 19所示 图3 19局部数据堆栈大小 3 2 2STEP7寻址方式 S7 300中共有8个优先级 同时激活的优先级不能超过6个 L堆栈的大小影响到程序调用时嵌套的深度 如图3 20所示 图3 20程序运行中L堆栈的分配情况 3 2 2STEP7寻址方式 注意 在程序执行过程中 如果所使用的局部数据超出了最大限额 则CPU进入STOP模式 并将错误信息记入诊断缓冲区 DiagnosticsBuffer 中 可以查阅块所需要的局部数据区的长度 如图3 21所示 图3 21查阅块所需要的局部数据区的长度 3 2 2STEP7寻址方式 3 符号表 1 打开符号表每个 S7程序 有其自己的符号表 在SIMATIC管理器中 选中 S7程序 在右边的窗口中会出现图标 双击该图标 就可以打开符号表 也可以通过选择LAD STL FBD编辑器中的菜单选项 符号表命令打开符号表 在符号表中 每个变量一行 在各列输入变量的符号名 地址 数据类型和注释 定义一个新符号 在符号表结尾会自动添加一个空行 符号表如图3 22所示 图3 22符号表 3 2 2STEP7寻址方式 状态 栏无效的符号定义标注如下 指在符号表中符号名或地址与另一个相同 指符号不完整 缺少符号名或地址 注意 符号表一旦生成 可以被不同的工具使用 例如LAD STL FBD编辑器 HW Config 和Monitor ModifyVariables 在符号表里 符号与地址必须唯一 2 查找和替换对符号表可以进行编辑 如图3 23所示查找并替换操作 图3 23查找和替换 3 2 2STEP7寻址方式 在当前窗口中 有下列选项 查找 输入要查找的文本 替换为 输入替换的文本 从光标向下 在符号表中向下查找到最后一行 从光标向上 在符号表中向上查找到第一行 全部 从光标位置查遍整个符号表 部分 仅查找所选的符号行 当查找地址时 应该在地址表示符后插入一个通配符 否则不能发现地址 有两种通配符可用 星号 用于无字符或若干个位置连续的 不确定的字符 问号 用于单个不确定的字符 3 2 2STEP7寻址方式 3 符号表的过滤使用符号表的过滤器功能 可以缩小符号表的显示范围 以便查找 在表的编辑窗口中 选中 视图 过滤器 就可以打开过滤器对话框 如图3 24所示 图3 24过滤器 3 2 2STEP7寻址方式 4 符号表的导入和导出要把其他类型的文件导入到符号表中 可选择 符号表 导入 命令 然后在 导入 对话窗中选择文件格式 在 查找范围 列表框中选择目录路径 在 文件名 框中输入文件名 再用 打开 确认 可以导入如下的文件格式 记事本或Word可以打开的ASCII文本格式 ASC Excel可以打开数据交换格式 DIF Access可以打开系统数据格式 SDF 用STEP5符号表打开的顺序分配符号表格式 SEQ 3 2 2STEP7寻址方式 符号表的导入如图3 25所示 图3 25符号表导入 3 2 2STEP7寻址方式 同样 可以通过选择 符号表 导出 命令把符号表导出到其他类型的文件中 可以用不同的文件格式存储符号表 以便在其他程序中使用 选择的文件格式和导入符号表的文件类型应相同 如图3 26所示 图3 26符号表导出 3 2 2STEP7寻址方式 编辑符号功能可以随后把符号名赋值给绝对地址 所分配的符号名会自动加入到符号表中 在LAD STL FBD编辑器中使用 编辑符号 命令 选中地址域 单击鼠标右键选择 编辑符号 输入赋值给该地址的符号名 数据类型和注释 然后单击 确定 如图3 27所示 图3 27在编辑器中编辑符号 3 2 2STEP7寻址方式 4 符号优先在SIMATIC管理器中 用鼠标右键选择S7程序的 块 选择 对象属性 然后选择 地址优先级 标签 选择绝对地址具有优先级或者符号具有优先级 如图3 28所示 图3 28地址优先级 3 2 2STEP7寻址方式 5 STL的堆栈执行机制栈 Stack 是一种数据结构 由PLC中顺序相连的若干个位存储单元组成 它采用后进先出 LastInFirstOut 的数据存取方式 铁路调度站车箱入库和出库就是一种堆栈机制 如图3 29所示 图3 29 a 栈的示意图 b 用铁路调度站表示栈的结构 3 2 2STEP7寻址方式 栈中的数据都是从栈顶 压入 的 进栈时 栈内原有的数据依次向下移动一层 数据出栈时 栈顶数据 弹出 出栈后 栈内的原有的数据依次向上移动一层 堆栈主要用于存放用户程序执行过程中的中间数据 STL的堆栈执行机制通过下例说明 如图3 30所示 图3 30堆栈执行机制示例 3 2 2STEP7寻址方式 上述梯形图对应的STL语句如下所示 LDI0 0 将I0 0压入栈顶S1 当前栈指针下移一层LDI0 1 将I0 1压入栈顶S1 当前栈指针下移一层LDI2 1 将I2 1压入栈顶S1 当前栈指针下移一层AI2 2 将栈顶值I2 1和I2 2进行与运算 结果存入栈顶OLD 将栈顶值S1和第2个栈S2进行或运算 当前栈指针上移一层 结果存入栈顶S1ALD 将栈顶值S1和第2个栈S2进行与运算 当前栈指针上移一层 结果存入栈顶S1 Q5 0 栈顶值存入Q5 0 3 3指令系统 3 3 1位逻辑指令1 基本逻辑指令 1 常开触点和常闭触点在梯形图中 常开触点 的符号检查信号的 1 状态 常闭触点 的符号检查信号的 0 状态 过程信号的 1 状态由动作的常开触点提供 或由不动作的常闭触点提供是没有区别的 图3 31常开触点和常闭触点 例如 如果机器中的常闭触点不动作 过程映像表中的信号将为 1 LAD中用 常开触点 符号检查信号的 1 状态 当信号状态为 0 时 常闭触点 的符号提供检查结果 1 如图3 31所示 3 3 1位逻辑指令 2 基本位逻辑指令位逻辑指令的运算规则 先与后或 先括号内 后括号外 可以用括号将需先运算的部分括起来 如图3 32所示 图3 32逻辑与 逻辑或指令 3 3 1位逻辑指令 语句表STL表示的基本位逻辑指令如表3 4所示 表3 4STL表示的基本位逻辑指令 表3 4STL表示的基本位逻辑指令 3 3 1位逻辑指令 梯形图LAD表示的基本位逻辑指令如表3 5所示 表3 5LAD表示的基本位逻辑指令 3 3 1位逻辑指令 3 逻辑与 和 逻辑或 的嵌套表达式当控制逻辑是串联和并联的复杂组合时 CPU的扫描顺序是先 与 后 或 在用语句表编写程序时要特别注意这种嵌套表达式 先串联后并联的程序结构如图3 33所示 先串联后并联的特点是触点组先串联 再将整个触点组和其他触点或触点组并联 图3 33先串联后并联 3 3 1位逻辑指令 先并联后串联的程序结构如图3 34所示 先并联后串联的特点它与先串联后并联的次序正好相反 图3 34先并联后串联 3 3 1位逻辑指令 4 逻辑异或指令当两个输入信号的其中一个为 1 另一个为 0 时 输出信号为 1 当两个输入信号都为 1 或都为 0 时 输出信号为 0 如图3 35所示 图3 35逻辑异或指令 3 3 1位逻辑指令 2 赋值 置位 复位指令赋值 置位 复位指令属于输出类指令 其中 赋值指令 将逻辑运算结果写入指定的地址位 置位指令S Set 置位或置1 指令将指定的地址位置位 变为l并保持 复位指令R Reset 复位或置0 指令将指定的地址位复位 变为0并保持 如果图3 36中I0 1的常开触点接通 Q4 3变为1并保持该状态 即使I0 1的常开触点断开 它也仍然保持1状态 I0 3的常开触点闭合时 Q4 3变为0并保持该状态 即使I0 3的常开触点断开 它也仍然保持0状态 图3 36置位与复位 3 3 1位逻辑指令 3 RS和SR触发器STEP7有两种触发器 RS触发器和SR触发器 1 RS触发器RS触发器是 置位优先 型触发器 当R和S输入型号同时为1状态时 触发器输出为置位状态 如图3 36左边所示 左边的R输入I0 4为1且S输入I0 6为0 RS触发器被复位 M0 0与Q4 1均为0状态 如果S输入I0 6为l且R输入I0 4为0 则被置位 M0 0与Q4 1均为1状态 如果两个输入信号的状态均为1 因为先执行复位指令 后执行置位指令 执行完后RS触发器被置位 M0 0与Q4 1均为l状态 2 SR触发器SR触发器是 复位优先 型触发器 当R和S输入型号同时为1状态时 触发器输出为复位状态 3 3 1位逻辑指令 如图3 37右边所示 S输入I0 2为1且R输入I0 5为0 SR触发器被置位 M0 1与Q4 3均为1状态 如果R输入I0 5为l且S输入I0 2为0 则触发器被复位 M0 1与Q4 3均为0状态 如果两个输入均为l 因为先执行置位指令 后执行复位指令 执行完后SR触发器被复位 M0 1与Q4 3均为0状态 图3 37RS触发器与SR触发器 3 3 1位逻辑指令 4 RLO边沿检测指令如图3 38中所示 I0 3和I0 0组成的串联电路由断开变为接通时 中间标有 P 的上升沿检测线圈左边的RLO 逻辑运算结果 由0变为1 即波形的上升沿 检测到一次正跳变 能流将在一个扫描周期内流过检测元件 Q4 5的线圈仅在这一个扫描周期内通电 检测元件的地址 如图中的M0 0和M0 1为边沿存储位 用来储存上一次循环的RLO 在波形图中 用高电平表示1状态 图3 38上升沿与下降沿检测 3 3 1位逻辑指令 5 程序设计举例 例3 1 设计带保持的启动停止PLC控制电路 带保持的启动停止PLC控制电路最大的特点是有 记忆 功能 如图3 39所示 图3 39带保持的启动停止控制电路 3 3 1位逻辑指令 图中 当输入信号I0 1的常开接点闭合 而输入信号I0 2的常闭接点也闭合时 输出接点Q0 1得电 当输入信号I0 1的常开接点断开 Q0 1仍得电时 这就是所谓的 带保持 或 自锁 功能 当输入信号I0 2的常闭接点断开 Q0 1失电时 即使I0 2的常闭接点闭合 Q0 1仍然为失电 LDI0 1 控制电路启动OQ0 1 自锁 电路保持ANI0 2 控制电路停止 Q0 1 输出 例3 2 设计PLC互锁逻辑控制电路 3 3 1位逻辑指令 在工业生产实践中 PLC互锁逻辑控制电路有着广泛的应用 图3 40所示为互锁逻辑控制电路 图3 40互锁逻辑控制电路 3 3 1位逻辑指令 图中 输入信号为I0 1和I0 2 如果I0 1先接通 Q0 1输出且保持 即自锁 同时 Q0 1常闭接点断开 这时 即使I0 2接通 Q0 2也不能动作 如果先接通I0 2 则情况相反 LDI0 1OQ0 1 自锁 电路保持ANQ0 2 互锁 保证同时只有一个回路接通 Q0 1 输出LDI0 2OQ0 2 自锁 电路保持ANQ0 1 互锁 保证同时只有一个回路接通 Q0 2 输出 3 3 2定时器指令 1 定时器的分类和功能定时器相当于继电器电路中的时间继电器 S7 300的定时器分为脉冲定时器 SP 扩展脉冲定时器 SE 接通延时定时器 SD 保持型接通延时定时器 SS 和断开延时定时器 SF 各种定时器的关系如图3 41所示 图3 41定时器功能 3 3 2定时器指令 定时器的字用来存放它当前的定时时间值 如图3 42所示 定时器触点的状态由它的位的状态来决定 用定时器地址 例如T2 来存取它的时间值和定时器位 带位操作数的指令存取定时器位 带字操作数的指令存取定时器的时间值 不同的CPU支持32 512个定时器 图3 42定时器字 3 3 2定时器指令 1 以二进制形式装载时间值在PLC的系统数据区中 时间值是以二进制形式存储在定时器字中的 当以二进制形式向累加器中装载时间值时 时基值没有装载到累加器中 而是以 0 值填充在相应的位上 2 以BCD码的形式装载时间值以二进制形式存储在定时器字中的时间值也可以BCD码的形式向累加器中装载 这时 时基值也以BCD码的形式随同BCD码的时间值一同被装载 如图3 43所示 图3 43使用定时器 3 3 2定时器指令 PLC的操作系统检测定时器的触点状态是 0 还是 1 并将该信息存储在一个状态位 Tn 中 在程序中用 ATn 语句来扫描触点状态 注意 如果定时器的触点在一个周期内被多次扫描 则可能会得到不同的扫描结果 对程序的正确执行不利 解决方法 将定时器的触点输出 Q 的信号状态赋值给标志位 该标志位在程序中可被反复扫描 例如 一个定时器如图3 44所示 图3 44定时器 3 3 2定时器指令 设置定时时间和启动定时器 TV端用于设置定时时间 当 0 到 1 的信号变化作用在启动输入端 S 时 定时器启动 用STL编程时 在对启动条件的扫描操作 如 AI0 7 后 设置定时时间 如 LS5T 35S 和启动定时器 如 SDT4 定时器复位 在复位输入端 R 的信号 1 有效时 定时器停止 当前时间被置为 0 定时器的触点输出端 Q 被复位 时间值输出 定时器的实际时间值可分别从两个数字输出端BI 二进制数 和BCD 十进制数 上读出 触点输出 定时器的触点输出端 Q 的信号状态 0 或 1 取决于定时器的种类及当前的工作状态 3 3 2定时器指令 2 定时器字的表示方法在CPU内部 时间值以二进制格式存放 占定时器字的0 9位 定时器的运行时间设定值由TV端输入 该值可以是常数 如 S5T 45S 也可以通过扫描输入字 如 拨轮开关IW2 来获得 或者通过处理输出字 标志字或数据字来确定 可以按下列的形式将时间预置值装入累加器的低位字 1 十六进制数W 16 wxyz 其中的w是时间基准 xyz是BCD码形式的时间值 2 S5T aH bM cS dMS 其中H表示小时 M表示分钟 S表示秒 a b c d为用户设置的值 例如S5T 18S表示18秒 3 3 2定时器指令 以常数形式输入定时时间 只需在字符串 S5T 后以小时 h 分钟 m 秒 s 或毫秒 ms 为单位写入时间值即可 而若以其他形式提供定时时间 就必须了解定时器字的数据格式 定时器字的长度是16位 从该字的右端起 头12位是时间值的BCD码 每四位表示一位十进制数 其表达范围为 0 999 随后的两位用来表示时间的基准 0 3 最后两位在设定时间值时没有意义 时间基准定义一个单位代表的时间间隔 当时间用常数 S5T 表示时 时间基准自动由系统自动分配 如图3 45所示 图3 45设置定时器 3 3 2定时器指令 3 时基定时器字的第12位和第13位用于时基 即时间基准 也称为定时精度 是定时器中能够区分的最小时间增量 S7中的定时时间为时基乘以定时值 时基代码为二进制数00 01 10和11时 对应的时基分别为10ms 100ms 1s和10s 实际的定时器时间等于时间值乘以时基值 时基反映了定时器的分辨率 时基越小分辨率越高 定时的时间越短 时基越大分辨率越低 定时的时间越长 4 定时器指令常用的定时器指令如表3 6所示 表3 6常用的定时器指令表 3 3 2定时器指令 S7系列PLC可以使用的定时器总数取决于所选用的CPU模块 以下是几种常用的定时器 1 接通延时型定时器 SD 当接通延时型定时器的 S 输入端的RLO从 0 变到 1 时 定时器启动 只要输入S 1 定时器定时起作用 当到达指定的TV值时定时器启动 当复位输入R的RLO 1 时 就清除定时器中的定时值 而且输出Q复位 当前时间值可以在BI输出端以二进制数读出 在BCD输出端以BCD码的形式读出 当前时间值是TV的初值减定时器启动以来的经过时间 3 3 2定时器指令 当定时器时间到达 没有错误而且输入S 1 时 输出 Q 的信号变为 1 如果在定时时间到达前输入端S从 1 变到 0 定时器停止运行 这时输出Q 0 如图3 46所示 图3 46接通延时型定时器 SD 3 3 2定时器指令 时序图如图3 47所示 图3 47接通延时型定时器 SD 时序图 3 3 2定时器指令 当复位输入R的RLO 1时 就清除定时器中的定时值 而且输出Q复位 当定时器时间到达而且没有错误 输出 Q 的信号变为 1 和输入端S的信号无关 如图3 48所示 图3 48保持型接通延时定时器 SS 3 3 2定时器指令 时序图如图3 49所示 图3 49保持型接通延时定时器 SS 时序图 3 3 2定时器指令 3 断开延时定时器 SF 当断开延时定时器的S输入端的RLO从 1 变到 0 时 定时器启动 当时间到达时 输出信号Q 0 当定时器运行时 如果输入S的状态从 0 变到 1 定时器停止运行 下次当S从 1 变到 0 时 它重新启动 断开延时定时器的启动信号断开后 延时触点保持规定时间后才断开 启动信号第2次输入 将以第2次信号断开点作为延时起点 重新执行延时动作 当复位输入R的RLO 1时 就清除定时器中的定时值 而且输出Q复位 如果两个输入 S和R 都有信号 1 不置位输出Q 直到优先级高的复位取消为止 3 3 2定时器指令 当输入端S处的RLO从 0 变到 1 时 输出Q 1 如果输入S取消 输出Q继续保持 1 直到设定的时间到达 如图3 50所示 图3 50断开延时定时器 SF 3 3 2定时器指令 时序图如图3 51所示 图3 51断开延时定时器 SF 时序图 3 3 2定时器指令 4 脉冲延时定时器 SP 当脉冲延时定时器的 S 输入端从 0 变到 1 时 启动定时器 输出 Q 也置为 1 脉冲延时定时器的触点与启动信号同时接通 但在规定的时间内断开 当定时器定时时间到达 或启动信号从 1 变到 0 或复位输入 R 有信号 1 时输出 Q 复位 如图3 52所示 图3 52脉冲延时定时器 SP 3 3 2定时器指令 时序图如图3 53所示 图3 53脉冲延时定时器 SP 时序图 3 3 2定时器指令 5 保持型脉冲延时定时器 SE 当保持型脉冲延时定时器的S输入端的RLO从 0 变到 1 时 定时器启动 输出Q被置位 1 即使S输入变到 0 输出Q仍保持 1 当定时器正在运行时 如果启动输入信号从 0 变到 1 定时器被再次启动 保持型脉冲延时定时器的触点与启动信号同时接通 并在规定的时间到达后才断开 而且 即使启动信号的保持时间小于定时值 定时器的触点也能同时保持到规定的时间才断开 3 3 2定时器指令 当定时器时间到达 或复位输入 R 有信号 1 时 输出 Q 被复位 如图3 54所示 图3 54保持型脉冲延时定时器 SE 3 3 2定时器指令 时序图如图3 55所示 图3 55保持型脉冲延时定时器 SE 时序图 3 3 2定时器指令 定时器延时类型如图3 56所示 图3 56定时器延时类型 3 3 2定时器指令 5 程序设计举例 例3 3 用SiemensS7系列PLC设计自来水厂电机的顺序启动控制 控制系统由3台电机组成 控制要求如下 1 3台电机顺序启动 2 按下按键SB1 电机M1先启动 3 电机M1启动30s后 电机M2启动 4 电机M2启动50s后 电机M3启动 根据以上要求 PLC的程序可以按照如下步骤进行设计 1 I O地址的确定为了实现以上的控制要求 系统中至少应有1个输入和3个输出 如表3 7所示 表3 7I O地址表 3 3 2定时器指令 2 程序设计电机M1 电机M2 电机M3分别受Q0 1 Q0 2 Q0 3控制 Network1 M1先启动 延时30s 图3 57梯形图 3 3 2定时器指令 Network2 延时30s后 M2再启动 并延时50s 图3 58梯形图 Network3 延时50s后 M3再启动 实现电机顺序启动控制 图3 59梯形图 3 3 2定时器指令 Network1 LDI0 0 Q0 1 电机M1启动TONT20 30 定时30sNetwork2 LDT20 延时30s Q0 2 电机M2启动TONT21 50 定时50sNetwork3 LDT21 延时50s Q0 3 电机M3启动 3 3 3计数器指令 1 计数值计数器字的0 11位是计数值的BCD码 计数值的范围为0 999 BCD码127时 计数器单元中的各位如图3 60所示 用格式C 127表示BCD码127 二进制格式的计数值只占用计数器字的0 9位 图3 60计数器字 3 3 3计数器指令 2 计数器指令表常用的计数器指令如表3 8所示 表3 8常用计数器指令表 3 3 3计数器指令 以下是几种常用的计数器 1 加计数器 S CU 加计数器 UpCounter 如图3 61所示 端子说明为 S为加计数器的设置输入端 PV为预设值输入端 CU为加计数脉冲输入端 R为复位输入端 Q为计数器输出端 CV输出十六进制格式的当前计数值 CV BCD输出当前计数值的BCD码 图3 61加计数器 3 3 3计数器指令 2 减计数器 S CD 减计数器 DownCounter 如图3 62所示 在设置输入S的上升沿 用PV指定的值预置减计数器 在减计数输入信号CD的上升沿 如果计数值大于0 计数值减1 复位输入R为1时 计数器被复位 计数值被清0 计数值大于0时计数器的输出Q为1 计数值为0时 Q也为0 图3 62减计数器 3 3 3计数器指令 3 加减计数器 S CUD 加减计数器 UpDownCounter 是可逆计数器 如图3 63所示 在设置输入S的上升沿 用PV指定的预设值设置计数器 复位输入R为1时 计数器被复位 计数值被清0 在加计数器输入信号CU的上升沿 如果计数器小于999 计数器加1 在减计数器输入信号CD的上升沿 如果计数器大于0 计数器减1 图3 63加减计数器 3 3 3计数器指令 3 程序设计举例 例3 4 抢答竞赛裁判系统 分组描述 参赛者需抢先按下桌上的按钮 抢答主持人所提问题 参赛的选手都是大学生 分为3组 每组2名选手 国外的大学生在HL1组 国内大学理科生在HL2组 国内大学文科生在HL3组 比赛规则 对于HL1组 只要按下SB11和SBl2中任一个按钮 灯HL1都亮 对于HL3组 只有SB31和SB32都按下时 灯HL3才亮 若在主持人按下 开始 按钮S后10s内有抢答按钮压下 则屏幕显示指示器YC得电 显示字幕 欢迎答题 以示竞赛者得到一次答题的机会 如果定时到 仍未有抢答 则禁止继续抢答 指示灯亮后 需主持人按下 复位 键R后才熄灯 3 3 3计数器指令 抢答显示系统的端子配置如图3 64所示 图3 64端子配置图 3 3 3计数器指令 I O分配如表3 9所示 表3 9I O分配表 3 3 3计数器指令 控制程序 该系统比较简单 可采用线性编程方式将整个程序放在OB1内 系统梯形图控制程序由6个网络 Network1 Network6 构成 各部分的工作情况如下 Network1 建立允许抢答标志M4 1 如图所示 使用复位优先型RS触发器 当按下开始按键S的瞬间 设置允许抢答标志M4 1 置 1 当按下复位按键R时 清除允许抢答标志M4 1 如图3 65所示 图3 65设置允许抢答标志 3 3 3计数器指令 Network2 建立禁止抢答标志M4 2 如图3 66所示 如果定时到仍没有人抢答 则设置禁止继续抢答标志M4 2 图3 66设置禁止抢答标志 3 3 3计数器指令 Network3 设置抢答定时器T1 如图3 67所示 采用脉冲定时器 当按下开始按键S 建立起允许抢答标志M4 1后 则启动定时器T1 当按下复位按钮R时 则关闭定时器T1 图3 67设置抢答定时器 3 3 3计数器指令 Network4 国外大学生组抢答控制如图3 68所示 采用复位优先型SR触发器实现 置位信号由抢答定时器T1 国内理科生和国内文科生 HL2 和 HL3 及该组抢答按键 SB11 和 SB12 控制 只有在定时时间内抢答才可能有效 如果有其他组的指示灯之前被点亮 则该组的SR触发器不能置位 由于 SB11 和 SB12 为逻辑 或 的关系 所以 在满足抢答条件的情况下 这两个按键只有一个按键被按下 则该组抢答有效 图3 68国外大学生组抢答控制 3 3 3计数器指令 Network5 国内理科生抢答控制如图3 69所示 在满足抢答条件的情况下 只要按键SB2被按下 则该组抢答有效 图3 69国内理科生组抢答控制 3 3 3计数器指令 Network6 国内文科生抢答控制如图3 70所示 由于该组的抢答按键 SB31 和 SB32 为逻辑 与 的关系 所以 在满足抢答条件的情况下 只有 SB31 和 SB32 同时被按下 该组抢答才能有效 图3 70国内文科生组抢答控制 3 3 3计数器指令 例3 5 用SiemensS7系列PLC设计电厂启动泵控制 控制系统由3台启动泵组成 利用指示灯进行报警显示 控制要求如下 1 当系统中有2台以上启动泵工作时 指示灯保持连续发光 2 当系统中没有启动泵工作时 指示灯以2Hz频率闪烁报警 3 当系统中只有1台启动泵工作时 指示灯以0 5Hz频率闪烁报警 根据以上要求 PLC的程序可以按照如下步骤进行设计 1 I O地址的确定为了实现以上的控制要求 系统中至少应有3个输入和1个输出 如表3 10所示 表3 10I O地址表 3 3 3计数器指令 2 程序设计采取的是分步编制方法 即按照控制的要求分段设计 这样便于功能理解和实现 也方便程序的查错和调试 设计报警信号指示灯闪烁程序在大多数PLC中 一般都有特定频率的闪烁信号 当闪烁频率与系统信号一致时 可以直接使用系统信号 在本系统控制要求中 信号指示灯使用2Hz和0 5Hz频率闪烁报警 信号指示灯闪烁生成程序如图3 71所示 图3 71闪烁信号生成程序 3 3 3计数器指令 Network1 LDM0 1ANT34TONT33 25Network2 LDT33TONT34 25 M0 2Network3 LDM0 3ANT36TONT35 100Network4 LDT35TONT36 100 M0 4 3 3 3计数器指令 启动泵工作状态检测程序启动泵工作状态检测程序可根据已知条件以及I O地址表 分别对2台以上启动泵运行 没有启动泵运行 只有1台启动泵运行三种情况分别进行

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论