PLC 西门子 培训教程
西门子PLC培训教程 第一章 西门子PLC简单概述 第二章 PLC系统特性及硬件介绍 第三章 使用STEP7创建一个工程 第四章 西门子编程语言学习 第五章 西门子的程序设计 第六章 利用WinCC flexible软件创建工程系统
§1.1 PLC的产生 §1.2 PLC的定义和分类 §1.3 PLC的功能和特点 §1.4 PLC的结构与工作过程
§1.1 PLC的产生 传统的生产机械自动控制装置→继电器控制系统 优点→结构简单、价格低廉、容易操作 。 缺点→体积庞大、生产周期长、接线复杂、故障率高、可靠性及灵活性差 。 应用→比较适用于工作模式固定,控制逻辑简单等工业应用场合。
用户迫切需要一种先进的自动控制装置 继电器控制系统 先进自动控制系统
可编程序逻辑控制器的产生 美国数字设备公司(DEC)根据这一设想,于1969年研制成功了第一台可编程序控制器。由于当时主要用于顺序控制,只能进行逻辑运算,故称为可编程序逻辑控制器(Programmable Logic Controller,PLC)。
§1.2 PLC的定义和分类 PLC的定义 经历:可编程逻辑控制器(PLC)→可编程控制器(PC) 通用叫法:可编程序控制器(Programmable Controller,PC),是一台专为工业环境应用而设计制造的计算机。它具有丰富的输入/输出接口,并且具有较强的驱动能力。但由于PC容易和个人计算机(Personal Computer)混淆,所以人们还沿用PLC作为可编程控制器的英文缩写。
国际电工委员会(IEC)对可编程控制器的定义: “可编程控制器是一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟式输入/输出控制各种类型的机械或生产过程。”
PLC的分类 一体化紧凑型PLC :电源、CPU中央处理系统、I/O接口都集成在一个机壳内。如西门子S7-200系列。
标准模块式结构化PLC :各种模块相互独立,并安装在固定的机架(导轨)上,构成一个完整的PLC应用系统。如:西门子S7-300、S7-400系列。 PS (电源模块) CPU IM (接口模块) SM: DI SM: DO SM: AI SM: AO CP: - 点-到-点 - PROFIBUS - 工业以太网
§1.3 PLC的功能和特点 PLC的功能 控制功能 逻辑控制 定时控制 计数控制 顺序控制
PLC的功能 数据采集、存储与处理功能 数学运算功能 数据处理 模拟数据处理
PLC的功能 输入/输出接口调理功能 具有A/D、D/A转换功能,通过I/O模块完成对模拟量的控制和调节。
PLC的功能 通信、联网功能 PROFIBUS DP PROFIBUS PA (Ex) PROFIBUS PA
PLC的功能 人机界面功能
PLC的功能 编程、调试等 STEP7 ProTool 使用复杂程度不同的手持、便携和桌面式编程器、工作站和操作屏,进行编程、调试、监视、试验和记录,并通过打印机打印出程序文件。 MPI cable 有MPI接口的PG 或PC
PLC的特点 高可靠性 丰富的I/O接口模块 采用模块化结构 运行速度快 功能完善 编程简单,易于使用 系统设计、安装、调试方便 维修方便,维修工作量小 总价格低
§1.4 PLC的结构和工作过程 PLC的基本结构
PLC的工作过程
PLC的扫描过程
PLC的中断处理过程 响应问题: 一般微机系统的CPU,在每一条指令执行结束时都要查询有无中断申请。而PLC对中断的响应则是在相关的程序块结束后查询有无中断申请,或者在执行用户程序时查询有无中断申请,如有中断申请,则转入执行中断服务程序。如果用户程序以块式结构组成,则在每块结束或执行块调用时处理中断。
第二章 西门子PLC系统特性及硬件介绍
第2章 S7-300系统特性及硬件介绍 §2.1 SIMATIC S7-300系统结构 §2.2 S7-300 CPU模块 §2.3 信号模块 (SM) §2.4 电源模块 (PS) §2.5 接口模块(IM) §2.6 其他模块(IM) §2.7 SIMATIC S7-300的硬件组态
§2.1 S7-300系统组成 §2.1.1 中央处理单元 (CPU) §2.1.2 电源单元 (PS) §2.1.3 信号模板 (SM) §2.1.4 接口模板 (IM) §2.1.5 功能模板 (FM) §2.1.6 通讯模板 (CP) §2.1.7 特殊模板 (SM 374仿真器)
导轨 PS 电源模块 CPU IM 接口模块 SM: DI SM: DO SM: AI SM: AO FM: - 计数 - 定位 - 闭环控制 CP: - 点-到-点 - PROFIBUS - 工业以太网 导轨
导轨(机架) 系统背版总线 S7-300模块
信号 模块 信号模块的前连接器 电源模块 (选项) CPU模块 MMC存储卡 (CPU313以上) CPU状态及故障指示灯 CPU工作模式选择开关 24V DC连接器 后备电池 (CPU313以上) MPI 多点接口 前门
S7-300系统结构 典型系统结构
§2.2 S7-300 CPU模块 §2.2.1 S7-300 CPU模块的分类 §2.2.2 S7-300 CPU模块操作
§2.2.1 S7-300 CPU模块的分类 紧凑型CPU(6种) 标准型CPU(5种) 革新型CPU(5种) 户外型CPU(3种)
1.紧凑型CPU(1/2) CPU 312C:带有集成的数字量输入和输出,并具有与过程相关的功能,比较适用于具有较高要求的小型应用。CPU运 行时需要微存储卡(MMC)。 CPU 313C:带有集成的数字量和模拟量的输入和输出,并具有与过程相关的功能,能够满足对处理能力和响应时间 要求较高的场合。CPU运行时需要微存储卡(MMC)。 CPU 313C-2PtP:带有集成的数字量输入和输出及一个 RS422/485串口,并具有与过程相关的功 能,能够满足处理量大、响应时间高的 场合。CPU运行时需要微存储卡(MMC)。
1.紧凑型CPU(2/2) CPU 313C-2DP:带有集成的数字量输入和输出,以及PROFIBUS DP主/从接口,并具有与过程相关的功能,可以完成具有特殊功能的任务,可以连接标准I/O设备。CPU运行时需要 微存储卡MMC。 CPU 314C-2PtP:带有集成的数字量和模拟量I/O及一个RS422/485串口,并具有与过程相关的功能,能够满足对处理能 力和响应时间要求较高的场合。CPU运行时需要微存储卡MMC。 CPU 314C-2DP:带有集成的数字量和模拟量的输入和输 出,以及PROFIBUS DP主/从接口,并具有 与过程相关的功能,可以完成具有特殊功 能的任务,可以连接单独的I/O设备。CPU 运行时需要微存储卡MMC。
2.标准型CPU CPU 313:具有扩展程序存储区的低成本的CPU,比较适用于需 要高速处理的小型设备。 CPU 314:可以进行高速处理以及中等规模的I/O配置,用于安 装中等规模的程序以及中等指令执行速度的程序。 CPU 315:具有中到大容量程序存储器,比较适用于大规模的 I/O配置。 CPU 315-2DP:具有中到大容量程序存储器和PROFIBUS DP主/ 接口,比较适用于大规模的I/O配置或建立分布式I/O系统。 CPU 316-2DP:具有大容量程序存储器和PROFIBUS DP主/从 接,可进行大规模的I/O配置,比较适用于 具有分布式或集中式I/O配置的工厂应用。
3.革新型CPU(1/2) CPU 312(新型):是一款全集成自动化(TIA)的CPU,比较适用于对处理速度中等要求的小规模应用。CPU运行时需 要微存储卡MMC。 CPU 314(新型):对二进制和浮点数运算具有较高的处理性能,比较适用于对程序量中等要求的应用。CPU运行时需 CPU 315-2DP(新型):具有中、大规模的程序存储容量和数据结构,如果需要可以使用SIMATIC功能工具;对二进制和浮点数运算具有较高的处理性能;具有PROFIBUS DP主/从 接口。可用于大规模的I/O配置或建立分布 式I/O结构。CPU运行时需要微存储卡MMC。
3.革新型CPU(2/2) CPU 317-2DP:具有大容量程序存储器,可用于要求很高的应用;能够满足系列化机床、特殊机床以及车间应用的多任务自动化系统;与集中式I/O和分布式I/O一起,可用作生产线上的中央控制器;对二进制和浮点数运算具有较高的处理能力;具有PROFIBUS DP主/从接口,可用于大规模的I/O配置,可用于建立分布式I/O结构;可选用SIMATIC工程工具,能够在基于组件的自动化中实现分布式智能系统。CPU运行时需要微 存储卡MMC。 CPU 318-2DP:具有大容量程序存储器和PROFIBUS DP主/从接口,可进行大规模的I/O配置,比较 适用于分布式I/O结构。
4.户外型CPU CPU 312 IFM:具有紧凑式结构的户外型产品。内部带有集成的数字量I/O,具有特殊功能和特殊功能的特殊输入。比较适用于恶劣环境下的小系统。 CPU 314 IFM:具有紧凑式结构的户外型产品。内部带有集成的数字量I/O,并具有扩展的特殊功能,具有特殊功能和特殊功能的特殊输入。比较适用于恶劣环境下且对响应时间和特殊功能有较高要求的系统。 CPU 314(户外型):具有高速处理时间和中等规模I/O配置的CPU。比较适用于恶劣环境下,要 求中等规模的程序量和中等规模的指令 执行时间的系统。
5.故障安全型CPU(1/3) CPU 315F:基于SIMATIC CPU S7-300C,集成有PROFIBUS DP主/从接口,可以组态为一个故障安全型系统,满足安全运行的需要。使用带有PROFIBUS协议的PROFIBUS DP可实现与安全相关的通讯;CPU运行时需要微存储卡MMC。
5.故障安全型CPU(2/3) CPU 315F-2DP:基于SIMATIC CPU 315-2DP,集成有一个MPI接口、一个DP/MPI接口,可以组态为一个故障安全型自动化系统,满足安全运行的需要。使用带有PROFIsafe协议的PROFIBUS DP可实现与安全无关的通讯;标准模块的集中式和分布式使用,可满足与故障安全无关的应用。CPU运 行时需要微存储卡MMC。
5.故障安全型CPU(3/3) CPU 317F-2DP:具有大容量程序存储器、一个PROFIBUS DP主/从接口、一个DP主/从MPI接口,两个接口可用于集成故障安全模块,可以组态为一个故障安全型自动化系统,可满足安全运行的需要。可以与故障安全型ET200M I/O模块进行集中式和分布式连接;与故障安全型ET200S PROFIsafe I/O模块可进行分布式连接;标准模块的集中式和分布式使用,可满足与故障安全无关的应用。CPU运行时需要微存储卡 MMC。
6.特种型CPU(1/2) CPU 317T-2DP:除具有CPU 317-2DP的全部功能外,增加了智能技术/运动控制功能,能够满足系列化机床、特殊机床以及车间应用的多任务自动化系统,特别适用于同步运动序列(如与虚拟/实际主设备的耦合、减速器同步、凸轮盘或印刷点修正等);增加了本机I/O,可实现快速技术功能(如凸轮切换、参考点探测等);增加了PROFBUS DP(DRIVE)接口,可用来实现驱动部件的等时连接。与集中式I/O和分布式 I/O一起,可用作生产线上的中央控制器; 在PROFIBUS DP上,可实现基于组件的自 动化分布式智能系统。
6.特种型CPU(2/2) CPU 317-2 PN/DP:具有大容量程序存储器,可用于要求很高的应用;能够在PROFInet上实现基于组件的自动化分布式智能系统;借助PROFInet代理,可用于基于部件的自动化(CBA)中的PROFIBUS DP智能设备;借助集成的PROFInet I/O控制器,可用在PROFInet上运行分布式I/O;能够满足系列化机床、特殊机床以及车间应用的多任务自动化系统;与集中式I/O和分布式I/O一起,可用作生产线上的中央控制器;可用于大规模的I/O配置、建立分布式I/O结构;对二进 制和浮点数运算具有较高的处理能力; 组合了MPI/PROFIBUS DP主/从接口; 可选用SIMATIC工程工具。CPU运行 时需要微存储卡MMC。
§2.2.2 S7-300 CPU模块操作 1.模式选择开关(1/1) RUN-P:可编程运行模式。在此模式下,CPU不仅可以执行用户程序,在运行的同时,还可以通过编程设备(如装有 STEP 7的PG、装有STEP 7的计算机等)读 出、修改、监控用户程序。 RUN:运行模式。在此模式下,CPU执 行用户程序,还可以通过编程设备读出、 监控用户程序,但不能修改用户程序。
1.模式选择开关(2/2) STOP:停机模式。在此模式下,CPU不执行用户程序,但可以通过编程设备(如装有STEP 7的PG、装有STEP 7的计算机等)从CPU中读出或修改用户程序。在此位置可以拔出钥 匙。 MRES:存储器复位模式。该位置不能保持,当开关在此位置释放时将自动返回到STOP位置。将钥匙从STOP模式切换到MRES模式时,可复位存储器,使CPU回到 初始状态。
2.状态及故障显示(1/2) SF(红色):系统出错/故障指示灯。CPU硬件或软 件错误时亮。 BATF(红色):电池故障指示灯(只有CPU313和314配 备)。当电池失效或未装入时,指示灯亮。 DC5V(绿色):+5V电源指示灯。CPU和S7-300总线的5V 电源正常时亮。 FRCE(黄色):强制作业有效指示灯。至少有一个I/O被 强制状态时亮。 RUN(绿色):运行状态指示灯。CPU处于“RUN”状态时亮;LED在“Startup”状态以2Hz频率闪烁;在“HOLD”状态以 0.5Hz频率闪烁。
2.状态及故障显示(2/2) STOP(黄色):停止状态指示灯。CPU处于“STOP”或 “HOLD”或“Startup”状态时亮;在存储器复位时LED以0.5 Hz频率闪烁;在存储器置位时LED以2Hz频率闪烁。 BUS DF(BF)(红色):总线出错指示灯(只适用于带 有DP接口的CPU)。出错时亮。 SF DP:DP接口错误指示灯(只适用于带有DP接口的 CPU)。当DP接口故障时亮。
§2.3 信号模块 (SM) §2.3.1 数字量信号模块 §2.3.2 模拟量信号模块 §2.3.3 传感器与AI的连接 §2.3.6 电压输出型模块的连接 §2.3.7 电流输出型模块的连接
§2.3.1 数字量信号模块 SM321数字量输入模块(DI) SM322数字量输出模块(DO) SM323/SM327数字量输入/输出模块(DI/DO) SM374仿真模块
直流32点数字量输入模块的内部电路及外部端子接线图 1.数字量输入模块(DI)(1/2) 直流32点数字量输入模块的内部电路及外部端子接线图
交流32点数字量输入模块的内部电路及外部端子接线图 1.数字量输入模块(DI)(2/2) 交流32点数字量输入模块的内部电路及外部端子接线图
32点数字量晶体管输出模块的内部电路及外部端子接线图 2.数字量输出模块(DO)(1/3) 32点数字量晶体管输出模块的内部电路及外部端子接线图
32点数字量晶闸管输出模块的内部电路及外部端子接线图 2.数字量输出模块(DO)(2/3) 32点数字量晶闸管输出模块的内部电路及外部端子接线图
16点数字量继电器输出模块的内部电路及外部端子接线图 2.数字量输出模块(DO)(3/3) 16点数字量继电器输出模块的内部电路及外部端子接线图
3.数字量输入/输出模块(DI/DO)(1/2) SM323 DI 16/DO 16×24 VDC/0.5A 内部电路及外部端子接线图
3.数字量输入/输出模块(DI/DO)(2/2) SM327 DI 8/DX 8内部电路及外部端子接线图
§2.3.2 模拟量信号模块 SM331模拟量输入模块(AI) SM332模拟量输出模块(AO) SM334模拟量输入/输出模块(AI/AO)
1.模拟量输入模块(AI) AI 8×13位模拟量输入模块
2.模拟量输出模块(AO) AO 4×12位模拟量输出模块
SM334 AI 4/AO 2×8/8Bit的模拟量输入/输出模块
§2.3.3 传感器与AI的连接 隔离传感器连接带隔离的AI 隔离传感器连接不带隔离的AI 非隔离的传感器连接带隔离的AI 连接从L+供电的2线变送器至带隔离的AI 连接4线变送器至带隔离的AI
1.隔离传感器连接带隔离的AI
2.隔离传感器连接不带隔离的AI
3.非隔离的传感器连接带隔离的AI
4.非隔离的传感器连接不带隔离的AI
5.连接电压传感器至带隔离的AI
6.连接2线变送器至带隔离的AI
7.连接从L+供电的2线变送器至带隔离的AI
8.连接4线变送器至带隔离的AI
§2.3.4 热敏电阻与AI的连接 热敏电阻与隔离AI之间的2线连接 热敏电阻与隔离AI之间的3线连接 热敏电阻与AI8×RTD之间的3线连接 热敏电阻与隔离AI之间的4线连接 热敏电阻与AI8×13位之间的2线连接 热敏电阻与AI8×13位之间的3线连接 热敏电阻与AI8×13位之间的4线连接
1.热敏电阻与隔离AI之间的2线连接
2.热敏电阻与隔离AI之间的3线连接
3.热敏电阻与AI8×RTD之间的3线连接
4.热敏电阻与隔离AI之间的4线连接
5.热敏电阻与AI8×13位之间的2线连接
6.热敏电阻与AI8×13位之间的3线连接
7.热敏电阻与AI8×13位之间的4线连接
§2.3.5 热电偶与AI的连接 使用内部补偿的热电偶连接带隔离的AI 通过补偿盒将热电偶连接到带隔离的AI 通过参考结将热电偶连接到AI8xTC 使用热敏电阻连接带外部补偿的热电偶
1.使用内部补偿的热电偶连接带隔离的AI
2.通过补偿盒将热电偶连接到带隔离的AI
§2.3.6 电压输出型模块的连接 电压输出型隔离模块的4线制连接 电压输出型非隔离模块的2线制连接
1.电压输出型隔离模块的4线制连接
2.电压输出型非隔离模块的2线制连接
§2.3.7 电流输出型模块的连接 电流输出型隔离模块的2线制连接 电流输出型非隔离模块的2线制连接
1.电流输出型隔离模块的2线制连接
2.电流输出型非隔离模块的2线制连接
§2.4 电源模块 (PS) PS 305户外型电源模块 PS307标准电源模块 采用直流供电,输出为24V直流。 PS307(2A) 365 - 0BA01- 0AA0 X 2 3 4 PS307 5A DC 5V VOLTAGE SELECTOR ON OFF 50mm PS 307 5A 307 - 1BA00- 0AA0 PS307 5A X 2 3 4 DC 5V VOLTAGE SELECTOR ON OFF 80mm 307 - 1BA00- 0AA0 PS307 5A X 2 3 4 DC 5V VOLTAGE SELECTOR ON OFF PS 307 10A 200mm PS 307 2A 307 - 1BA00- 0AA0 PS307 5A X 2 3 4 DC 5V VOLTAGE SELECTOR ON OFF 80mm
§2.5 接口模块(IM) 双机架接口模块IM365 多机架接口模块 IM365发送模块 IM365接收模块。 IM360:用于发送数据 365 - 0BA01- 0AA0 IM 365 RECEIVE X 2 3 4 365 - 0BA01- 0AA0 IM 365 RECEIVE X 2 3 4 双机架接口模块IM365 IM365发送模块 IM365接收模块。 多机架接口模块 IM360:用于发送数据 IM361:用于接收数据 360 - 3CA01- 0AA0 IM 360 X 2 3 4 SF DC 5V 360 - 3CA01- 0AA0 IM 360 X 2 3 4 SF DC 5V
§2.6 其他模块(IM) 通信处理器模块(CP) CP340:用于点对点连接的通讯模板 CP341:用于点对点连接的通讯模板 CP343-2:用于AS接口的通讯模板 CP342-5:用于PROFIBUS DP 的通讯模板 CP343-5:用于连接 PROFIBUS FMS的通讯模板
特殊功能模块(FM) FM 350-1, FM 350-2计数器模板 FM 351用于快速/慢速驱动的定位模板 SM 338 超声波位置探测模板 SM 338 SSI 位置探测模板 FM 352电子凸轮控制器 FM 352-5高速布尔运算处理器 FM 355 PID模板 FM 355-2温度PID控制模板
§2.7 SIMATIC S7-300的硬件组态 S7-300机架安装形式 单机架组态 多机架组态 S7-300数字量模块地址的确定
1.S7-300机架安装形式
2.单机架组态
3.多机架组态
4.S7-300数字量模块地址的确定
5.S7-300模拟量模块地址的确定
6.S7-300数字量模块位地址的确定
第三章使用STEP7创建工程
第3章 使用STEP7创建工程 §3.1 STEP 7软件安装 §3.2 SIMATIC管理器 §3.3 STEP 7快速入门 §3.4 下载和调试程序
§3.1 STEP 7软件安装 §3.1.1 STEP 7操作系统需求 §3.1.2 STEP 7硬件需求 §3.1.3 STEP 7的安装
§3.1.1 STEP 7操作系统需求 或
§3.1.2 STEP 7硬件需求 能运行Windows 2000或Windows XP的PG或PC机: CPU主频至少为600MHz; 内存至少为256MB; 硬盘剩余空间在600MB以上; 具备CD-ROM驱动器和软盘驱动器; 显示器支持32位、1024×768分辨率; 具有PC适配器、CP5611或MPI接口卡。 PC PG740
§3.1.3 STEP 7的安装(1/8) 选择安装语言及安装程序
§3.1.3 STEP 7的安装(2/8) 自定义安装方式
§3.1.3 STEP 7的安装(3/8) 提示安装授权
§3.1.3 STEP 7的安装(4/8) PG/PC接口设置 存储卡参数设置
§3.1.3 STEP 7的安装(5/8) 授权管理 安装完成后,在Windows的开始菜单中找到【SIMATIC】→【License Management】→【Automation License Manager】,启动Automation License Manager 。
§3.1.3 STEP 7的安装(6/8) 已经安装的STEP7软件
§3.1.3 STEP 7的安装(7/8) 已经授权的STEP7软件
§3.1.3 STEP 7的安装(8/8) STEP7硬件目录更新设置
§3.2 SIMATIC管理器 启动SIMATIC管理器 SIMATIC管理器界面 STEP 7项目结构 PG/PC接口设置
1.启动SIMATIC管理器 启动SIMATIC管理器
2.SIMATIC管理器界面
3. STEP 7项目结构 第1层:项目 项目代表了自动化解决方案中的所有数据和程序的整体,它位于对象体系的最上层。 第1层:项目 项目代表了自动化解决方案中的所有数据和程序的整体,它位于对象体系的最上层。 第2层:子网、站 SIMATIC 300/400站用于存放硬件组态和模块参数等信息,站是组态硬件的起点。 第3层和其他层:与上一层对象类型有关。
4. SIMATIC 管理器自定义选项设置(1/2) 设置常规选项
4. SIMATIC 管理器自定义选项设置(2/2) 设置语言
5. PG/PC接口设置(1/3) 启动设置界面 设置选项
5. PG/PC接口设置(2/3) 设置接口属性
5. PG/PC接口设置(3/3) 安装/卸载接口
§3.3 STEP 7快速入门 §3.3.1 设计流程 §3.3.2 简单设计示例
§3.3.1 设计流程
§3.3.2 简单设计示例:电动机起停控制 PLC端子接线图 使用向导创建STEP 7项目 手动创建STEP 7项目 插入S7-300工作站 硬件组态 编辑符号表 程序编辑窗口 在OB1中编辑LAD程序 在OB1中编辑STL程序 在OB1中编辑FBD程序
1.PLC端子接线 传统继电器控制电路 PLC端子接线图
2.使用项目向导创建STEP 7项目(1/4) 项目向导1/4
2.使用项目向导创建STEP 7项目(2/4) 项目向导2/4
2.使用项目向导创建STEP 7项目(3/4) 项目向导3、4
2.使用项目向导创建STEP 7项目(4/4) 完成项目创建,项目名:My_Prj1
3.手动创建STEP 7项目(1/2) 新建项目窗口
3.手动创建STEP 7项目(2/2) 所创建的项目,项目名:My_Prj2
在My_Prj2项目内插入S7-300工作站:SIMATIC 300(1)
5.硬件组态(1/6) 硬件组态窗口
5.硬件组态(2/6) 插入0号导轨:(0)UR
5.硬件组态(3/6) 插入各种S7-300模块
5.硬件组态(4/6) 设置CPU属性
5.硬件组态(5/6) 设置数字量模块属性
5.硬件组态(6/6) 编译硬件组态(完成后的窗口) 系统自动创建程序文件夹 包含一个循环组织块OB1
方法1:从LAD/STL/FBD编辑器打开符号表 6.编辑符号表(1/2) 方法1:从LAD/STL/FBD编辑器打开符号表
6.编辑符号表(2/2) 方法2:从SIMATIC管理器打开符号表
7.程序编辑窗口
8.在OB1中编辑LAD程序(1/2) 设置组织块(OB)属性为LAD方式
8.在OB1中编辑LAD程序(2/2) 编写梯形图(LAD)程序
9.在OB1中编辑STL程序 编写语句表(STL)程序
10.在OB1中编辑FBD程序 编写功能块图(FBD)程序
§3.4 下载和调试程序 为了测试前面我们所完成的PLC设计项目,必须将程序和模块信息下载到PLC的CPU模块。要实现编程设备与PLC之间的数据传送,首先应正确安装PLC硬件模块,然后用编程电缆(如USB-MPI电缆、PROFIBUS总线电缆)将PLC与PG/PC连接起 来,并打开PS307电源开关。 下载程序及模块信息
1.下载程序及模块信息(1/2) 具体步骤如下: ①启动SIMATIC Manager,并打开My_prj2项目; ②单击仿真工具按钮 ,启动S7-PLCSIM仿真程序; ③将CPU工作模式开关切换到STOP模式; ④在项目窗口内选中要下载的工作站 ; ⑤执行菜单命令【PLC】→【Download】,或单击鼠标右键执行快捷菜单命令【PLC】→【Download】将整个S7-300站下载到PLC。
1.下载程序及模块信息(2/2) 启动仿真工具S7-PLCSIM
第4章 S7-300编程语言学习
第4章 S7-300编程语言学习 §4.1 STEP 7编程语言 §4.2 数据类型 §4.3 S7-300指令基础 §4.4 位逻辑指令 §4.2 数据类型 §4.3 S7-300指令基础 §4.4 位逻辑指令 §4.5 定时器与计数器指令 §4.6 数字指令 §4.7 控制指令
§4.1 STEP 7编程语言 STEP 7是S7-300/400系列PLC应用设计软件包,所支持的PLC编程语言非常丰富。该软件的标准版支持STL(语句表)、LAD(梯形图)及FBD(功能块图)3种基本编程语言,并且在STEP 7中可以相互转换。专业版附加对GRAPH(顺序功能图)、SCL(结构化控制语言)、HiGraph(图形编程语言)、CFC(连续功能图)等编程语言的支持。不同的编程语言可供 不同知识背景的人员采用。
STL(语句表) STL(语句表)是一种类似于计算机汇编语言的一种文本编程语言,由多条语句组成一个程序段。语句表可供习惯汇编语言的用户使用,在运行时间和要求的存储空间方面最优。在设计通信、数学运算等高级应用程序时建议使用语句表。
LAD(梯形图) LAD(梯形图)是一种图形语言,比较形象直观,容易掌握,用得最多,堪称用户第一编程语言。梯形图与继电器控制电路图的表达方式极为相似,适合于熟悉继电器控制电路的用户使用,特别适用于数字量逻辑控制。
FBD(功能块图) FBD(功能块图)使用类似于布尔代数的图形逻辑符号来表示控制逻辑,一些复杂的功能用指令框表示。FBD比较适合于有数字电路基础的编程人员使用。
GRAPH(顺序控制) GRAPH类似于解决问题的流程图,适用于顺序控制的编程。利用S7-GRAPH编程语言,可以清楚快速地组织和编写S7 PLC系统的顺序控制程序。它根据功能将控制任务分解为若干步,其顺序用图形方式显示出来并且可形成图形和文本方式的 文件。
HiGraph(图形编程语言) S7-Higraph允许用状态图描述生产过程,将自动控制下的机器或系统分成若干个功能单元,并为每个单元生成状态图,然后利用信息通讯将功能单元组合在一起形成完整的系统。
SCL(结构化控制语言) S7-SCL(Structured Control Language:结构控制语言)是一种类似于PASCAL的高级文本编辑语言,用于S7-300/400和C7的编程,可以简化数学计算、数据管理和组织工作。S7-SCL具有PLC公开的基本标准认证,符合IEC 1131-3 (结构化文 本)标准。
§4.2 数据类型 数据类型决定数据的属性,在STEP 7中,数据类 型分为三大类: §4.2.1 基本数据类型 §4.2.2 复杂数据类型 §4.2 数据类型 数据类型决定数据的属性,在STEP 7中,数据类 型分为三大类: §4.2.1 基本数据类型 §4.2.2 复杂数据类型 §4.2.3 参数类型
§4.2.1 基本数据类型
§4.2.2 复杂数据类型 数组(ARRAY) 结构(STRUCT) 字符串(STRING) 日期和时间(DATE_AND_TIME) 用户定义的数据类型(UDT) 功能块类型(FB、SFB)
1.数组(ARRAY) 数组是由一组同一类型的数据组合在一起而形成的复杂数据类型。数组的维数最大可以到6维;数组中的元素可以是基本数据类型或者复杂数据类型中的任一数据类型(Array类型除外,即数组类型不可以嵌套);数组中每一维的下标取值范围是-32768~32767,要求下标的下限 必须小于下标的上限。
2.结构(STRUCT) 结构是由一组不同类型(结构的元素可以是基本的或复杂的数据类型)的数据组合在一起而形成的复杂数据类型。结构通常用来定义一组相关的数据,例如电机的一组 数据可以按如下方式定义:
3.字符串(STRING) 字符串是最多有254个字符(CHAR)的一维数组,最大长度为256个字节(其中前两个字节用来存储字符串的长度信息)。字符串常量用单引号括起来,例如:
4.日期和时间(DATE_AND_TIME) 用于存储年、月、日、时、分、秒、毫秒和星期,占用8个字节,用BCD格式保存。星期天的代码为1,1~6的 代码为2~7。例如:
5.用户定义的数据类型(UDT) 6.功能块类型(FB、SFB) 用户定义数据类型表示自定义的结构,存放在UDT块中(UDT1~UDT65535),在另一个数据类型中作为一个数据类型“模板”。当输入数据块时,如果需要输入几个相同的结构,利用UDT可以节省输入时间。 6.功能块类型(FB、SFB) 这种数据类型仅可以在FB的静态变量区定义,用于实现多背景DB。
§4.2.3 参数数据类型 参数类型是一种用于逻辑块(FB、FC)之间传递参数 的数据类型,主要有以下几种: §4.2.3 参数数据类型 参数类型是一种用于逻辑块(FB、FC)之间传递参数 的数据类型,主要有以下几种: (1)TIMER(定时器)和COUNTER(计数器)。 (2)BLOCK(块):指定一个块用作输入和输出,实 参应为同类型的块。 (3)POINTER(指针):6字节指针类型,用来传递DB 的块号和数据地址。 (3)ANY:10字节指针类型,用来传递DB块号、数据 地址、数据数量以及数据类型。
§4.3 S7-300指令基础 指令是程序的最小独立单位,用户程序是由若干条顺序排列的指令构成。指令一般由操作码和操作数组成,其中的操作码代表指令所要完成的具体操作(功能),操作数则是该指令操作或运算的对象。 §4.3.1 PLC用户存储区的分类及功能 §4.3.2 指令操作数 §4.3.3 寻址方式 §4.3.4 状态字
§4.3.1 PLC用户存储区的分类及功能(1/2)
§4.3.1 PLC用户存储区的分类及功能(2/2)
§4.3.2 指令操作数 指令操作数(又称编程元件)一般在用户存储区中,操作数由操作标识符和参数组成。操作标识符由主标识符和辅助标识符组成,主标识符用来指定操作数所使用的存储区类型,辅助标识符则用来指定操作数的单位(如:位、字节、字、双字等)。 主标识符有:I(输入过程映像寄存器、Q(输出过程映像寄存器)、M(位存储器)、PI(外部输入寄存器)、PQ(外部输出寄存器)、T(定时器)、C(计数器)、DB(数据块寄存器)和L(本地数据寄存器); 辅助标识符有:X(位)、B(字节)、W(字或2B)、D(2DW或4B)。
§4.3.3 寻址方式 所谓寻址方式就是指令执行时获取操作数的方式,可以直接或间接方式给出操作数。S7-300有4种寻址方式: 立即寻址 存储器直接寻址 存储器间接寻址 寄存器间接寻址
1.立即寻址 立即寻址是对常数或常量的寻址方式,其特点是操作数直接表示在指令中,或以惟一形式隐含在指令中。下面各条指令操作数均采用了立即寻址方式,其中“//”后面的内容为指令的注释部分,对指令没有任何影响。
2.存储器直接寻址 存储器直接寻址,简称直接寻址。该寻址方式在指令中直接给出操作数的存储单元地址。存储单元地址可用符号地址(如SB1、KM等)或绝对地址(如I0.0、Q4.1等)。下面各 条指令操作数均采用了直接寻址方式。
3.存储器间接寻址(1/3) 存储器间接寻址,简称间接寻址。该寻址方式在指令中以存储器的形式给出操作数所在存储器单元的地址,也就是说该存储器的内容是操作数所在存储器单元的地址。该存储器一般称为地址指针,在指令中需写在方括号“[]”内。地址指针可以是字或双字,对于地址范围小于65535的存储器可以 用字指针;对于其他存储器则要使用双字指针。
4.存储器间接寻址(2/3) 【例4-3-1】 存储器间接寻址的单字格式的指针寻址。
4.存储器间接寻址(3/3) 存储器间接寻址的双字指针的格式如图所示。 【例4-3-2】 存储器间接寻址的双字格式的指针寻址。
5.寄存器间接寻址(1/4) 寄存器间接寻址,简称寄存器寻址。该寻址方式在指令中通过地址寄存器和偏移量间接获取操作数,其中的地址寄存器及偏移量必须写在方括号“[]”内。在S7-300中有两个地址寄存器AR1和AR2,用地址寄存器的内容加上偏移量形成地址指针,并指向操作数所在的存储器单元。地址寄存器的地址指针有两种格式,其长度均为双字,指针格式如图所示。
5.寄存器间接寻址(2/4) 第一种地址指针格式适用于在确定的存储区内寻址,即 区内寄存器间接寻址。 【例4-3-3】 区内寄存器间接寻址。
5.寄存器间接寻址(3/4) 第二种地址指针格式适用于区域间寄存器间接寻址。 【例4-3-4】 区域间寄存器间接寻址。
5.寄存器间接寻址(4/4) 第一种地址指针格式包括被寻址数据所在存储单元地址的字节编号和位编号,至于对哪个存储区寻址,则必须在指令中明确给出。这种格式适用于在确定的存储区内寻址,即 区内寄存器间接寻址。 第二种地址指针格式包含了数据所在存储区的说明位(存储区域标识位),可通过改变标识位实现跨区域寻址,区域标识由位26~24确定。这种指针格式适用于区域间寄存 器间接寻址。
§4.4 位逻辑指令 位逻辑指令处理的对象为二进制位信号。位逻辑指令扫描信号状态“1”和“0”位,并根据布尔逻辑对它们进行组合,所产生的结果(“1”或“0”)称为逻辑运算结果,存储在状态字的“RLO”中。 §4.4.1 触点与线圈 §4.4.2 基本逻辑指令 §4.4.3 置位和复位指令 §4.4.4 RS和SR触发器 §4.4.5 跳变沿检测指令
§4.4.1 触点与线圈 在LAD(梯形图)程序中,通常使用类似继电器控制电路中的触点符号及线圈符号来表示PLC的位元件,被扫描的操作数(用绝对地址或符号地址表示)则标注在触点符号的上 方,如图所示。
1.常开触点 对于常开触点(动合触点),则对“1”扫描相应操作数。在PLC中规定:若操作数是“1”则常开触点“动作”,即认为是“闭合”的;若操作数是“0”,则常开触点“复位”,即触点仍处 于打开的状态。 常开触点所使用的操作数是:I、Q、M、L、D、T、C。
2.常闭触点 常闭触点(动断触点)则对“0”扫描相应操作数。在PLC中规定:若操作数是“1”则常闭触点“动作”,即触点“断开”;若操作数是“0”,则常闭触点“复位”,即触点仍保持闭合。 常闭触点所使用的操作数是:I、Q、M、L、D、T、C。
3.输出线圈(赋值指令) 输出线圈与继电器控制电路中的线圈一样,如果有电流(信号流)流过线圈(RLO=“1”),则被驱动的操作数置“1”;如果没有电流流过线圈(RLO=“0”),则被驱动的操作数复位(置“0”)。输出线圈只能出现在梯形图逻辑串的最右 边。 输出线圈等同于STL程序中的赋值指令(用等于号“=”表 示),所使用的操作数可以是:Q、M、L、D。
4.中间输出 在梯形图设计时,如果一个逻辑串很长不便于编辑时,可以将逻辑串分成几个段,前一段的逻辑运算结果(RLO)可作为中间输出,存储在位存储器(I、Q、M、L或D)中,该存储位可以当作一个触点出现在其他逻辑串中。中间输出只能放在梯形图逻辑串的中间,而不能出现在最左 端或最右端。 与下面程序等效
§4.4.2 基本逻辑指令 基本逻辑指令包括: “与”指令 “与非”指令 “或”指令 “或非”指令 “异或”指令 “异或非”指令 逻辑块的操作 信号流取反指令
1.逻辑“与” 指令 逻辑“与” 指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻辑 “与” 运算。
2.逻辑 “与非”指令 逻辑 “与非”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻 辑 “与非”运算。
3.逻辑 “或”指令 逻辑 “或”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻 辑 “或”运算。
4.逻辑 “或非”指令 逻辑 “或非”指令使用的操作数可以是:I、Q、M、L、D、T、C。有2种指令形式(STL和FBD),用LAD也可以实现逻 辑 “或非”运算。
5.逻辑 “异或”指令
6.逻辑 “异或非”指令
7.逻辑块的操作
8.信号流取反指令 信号流取反指令的作用就是对逻辑串的RLO值进行取反。指令格式及示例见表4-13。当输入位I0.0和I0.1同时动作时,Q4.0信号状态为“0”;否则,Q4.0信号状态为“1”。
§4.4.3 置位和复位指令 置位(S)和复位(R)指令根据RLO的值来决定操作数的信号状态是否改变,对于置位指令,一旦RLO为“1”,则操作数的状态置“1”,即使RLO又变为“0”,输出仍保持为“1”;若RLO为“0”,则操作数的信号状态保持不变。对于复位操作,一旦RLO为“1”,则操作数的状态置“0”,即使RLO又变为“0”,输出仍保持为“0”;若RLO为“0”,则操作数的信号状态保持不变。这一特性又被称为静态的置位和复位,相应地,赋值指 令被称为动态赋值。
§4.4.4 RS和SR触发器 RS触发器为“置位优先”型触发器(当R和S驱动信号同 时为“1”时,触发器最终为置位状态); 为“1”时,触发器最终为复位状态)。 RS触发器和SR触发器的“位地址”、置位(S)、复(S) 及输出(Q)所使用的操作数可以是:I、Q、M、L、D。
1.RS触发器
2.SR触发器
3.RS触发器和SR触发器的工作时序 工作时序 示例梯形图程序
§4.4.5 跳变沿检测指令 STEP 7中有2类跳变沿检测指令,一种是对RLO的跳变沿检测的指令,另一种是对触点的跳变沿直接检测的梯形图方块指 令。 RLO上升沿检测指令 RLO下降沿检测指令 触点信号上升沿检测指令 触点信号下降沿检测指令 【例4-4-2】 边沿检测指令的应用
1.RLO上升沿检测指令
2.RLO下降沿检测指令
3.RLO边沿检测指令的工作时序 工作时序 示例程序
4.触点信号上升沿检测指令
5.触点信号下降沿检测指令
6.触点信号边沿检测指令的工作时序 工作时序 示例程序
§4.5 定时器与计数器指令 §4.5.1 定时器指令 §4.5.2 计数器指令 §4.5.3 CPU时钟存储器
§4.5.1 定时器指令 S_PULSE(脉冲S5定时器) S_PEXT(扩展脉冲S5定时器) S_ODT(接通延时S5定时器) §4.5.1 定时器指令 S_PULSE(脉冲S5定时器) S_PEXT(扩展脉冲S5定时器) S_ODT(接通延时S5定时器) S_ODTS(保持型接通延时S5定时器) S_OFFDT(断电延时S5定时器)
1. S_PULSE(脉冲S5定时器)(1/3) 脉冲定时器的梯形图及功能块图指令
1. S_PULSE(脉冲S5定时器)(2/3) 脉冲定时器的线圈指令
1. S_PULSE(脉冲S5定时器)(3/3) 工作时序 示例程序
【例4-5-1】 脉冲定时器应用:优先抢答器设计。
【例4-5-1】 设计说明: 参赛者要抢答主持人所提问题时,需抢先按下桌上的按钮;指示灯亮后需待主持人按下“复位”键R后才熄灯;对初中班学生照顾,只要按下SB11和SB12中任一个按钮灯HL1都亮;对高三班学生限制,只有SB31和SB32都按下时灯HL3才亮;若在主持人按下“开始”按钮S后10s内有抢答按钮压下,则电磁铁YC得电,使彩球摇动,以示竞赛者得到一次幸运的机会;如果定时到仍未有抢答,则禁止继续 抢答。
【例4-5-1】 端子接线图
【例4-5-1】 I/O地址分配表
【例4-5-1】 控制程序:建立允许抢答和禁止抢答标志
【例4-5-1】 设置抢答定时器 初中组抢答控制
【例4-5-1】 高一组抢答控制 高三组抢答控制
2. S_PEXT(扩展脉冲S5定时器)(1/3) 扩据脉冲S5定时器LAD及FBD指令
2. S_PEXT(扩展脉冲S5定时器)(2/3) 扩据脉冲S5定时器线圈指令
2. S_PEXT(扩展脉冲S5定时器)(3/3) 工作波形 示例程序
【例4-5-2】 扩展脉冲定时器应用——电动机延时自动关闭控制。 控制要求:按动起动按钮S1(I0.0),电动机M(Q4.0)立即起动,延时5分钟以后自动关闭。起动后按动停止按钮 S2(I0.1),电动机立即停机。
【例4-5-2】 控制程序(STL) 控制程序(LAD)
3. S_ODT(接通延时S5定时器)(1/3) 接通延时S5定时器LAD及FBD指令
3. S_ODT(接通延时S5定时器)(2/3) 接通延时S5定时器线圈指令
3. S_ODT(接通延时S5定时器)(3/3) 工作波形 示例程序
【例4-5-3】 接通延时定时器和脉冲定时器应用——用定时器构成一脉冲发生器,当满足一定条件时,能够输出一定频率和一定占空比的脉冲信号。 工艺要求:当按钮S1(I0.0)按下时,输出指示灯H1(Q4.0)以灭2s,亮1s规律交替进行。
【例4-5-3】 控制程序 (使用接通延时定时器) 控制程序 (使用脉冲定时器)
4. S_ODTS(保持型接通延时S5定时器)(1/3) 保持型接通延时S5定时器LAD及FBD指令
4. S_ODTS(保持型接通延时S5定时器)(2/3)
4. S_ODTS(保持型接通延时S5定时器)(3/3) 工作波形 示例程序
5. S_OFFDT(断电延时S5定时器)(1/3) 断电延时S5定时器LAD及FBD指令
5. S_OFFDT(断电延时S5定时器)(2/3)
5. S_OFFDT(断电延时S5定时器)(3/3) 工作波形 示例程序
§4.5.2 计数器指令 S7-300的计数器都是16位的,因此每个计数器占用该区域2个字节空间,用来存储计数值。不同的CPU模板,用于计数器的存储区域也不同,最多允许使用64~512个计数器。计数器的地址编号:C0~C511。 S_CUD(加/减计数器) S_CU(加计数器) S_CD(减计数器) 计数器线圈指令
1. S_CUD(加/减计数器)块图指令
2. S_CU(加计数器)块图指令
3. S_CD(减计数器)块图指令
4. 计数器的线圈指令 除了前面介绍的块图形式的计数器指令以外,S7-300系统还为用户准备了LAD环境下的线圈形式的计数器。这些指令有计数器初值预置指令SC、加计数器指令CU和减计数器指令CD。
加计数器线圈指令应用示例 初值预置SC指令若与CU指令配合可实现S_CU指令的功能。
减计数器线圈指令应用示例 SC指令若与CD指令配合可实现S_CD指令的功能。
加/减计数器线圈指令应用示例 SC指令若与CU和CD配合可实现S_CUD的功能。
§4.5.3 访问CPU的时钟存储器 要使用该功能,在硬件配置时需要设置CPU的属性,其中有一个选项为Clock Memory,选中选择框就可激活该功能。
设置CPU的时钟存储器 在Memory Byte区域输入想为该项功能设置的MB的地址,如需要使用MB10,则直接输入10。Clock Memory的功能是对所定义的MB的各个位周期性地改变其二进制的值(占空比为1:1)。Clock Memory的各位的周期及频率见 表。
【例4-5-5】 时钟存储器与计数器的应用。 当定时器不够用时,可以将计数器扩展为定时器。图中分别给出了用减计数器扩展定时器的控制程序,程序中使用了CPU的时钟存储器,设置MB10为时钟存储器,由表4-39可知M10.0的变化周期为0.1s。
§4.6 数字指令 §4.6.1 装入与传送指令 §4.6.2 转换指令 §4.6.3 比较指令 §4.6.4 算数运算指令 §4.6 数字指令 §4.6.1 装入与传送指令 §4.6.2 转换指令 §4.6.3 比较指令 §4.6.4 算数运算指令 §4.6.5 字逻辑运算指令 §4.6.6 移位指令 §4.6.7 数字指令综合应用
§4.6.1 装入和传送指令 装入指令(L)和传送指令(T),可以对输入或输出模块与存储区之间的信息交换进行编程。 对累加器1的装入指令 §4.6.1 装入和传送指令 装入指令(L)和传送指令(T),可以对输入或输出模块与存储区之间的信息交换进行编程。 对累加器1的装入指令 对累加器1的传送指令 状态字与累加器1之间的装入和传送指令 与地址寄存器有关的装入和传送指令 LC(定时器/计数器装载指令) MOVE指令
1. 对累加器1的装入指令
2. 对累加器1的传送指令 T指令可以将累加器1的内容复制到被寻址的操作数,所复制的字节数取决于目标地址的类型(字节、字或 双字),指令格式如下: T 操作数 其中的操作数可以为直接I/O区(存储类型为PQ)、数据存储区或过程映像输出表的相应地址(存储类型为Q)。
3. 状态字与累加器1之间的装入和传送指令 L STW(将状态字装入累加器1) 将状态字装入累加器1中,指令的执行与状态位无关,而且对状态字没有任何影响。指令格式如下: L STW T STW(将累加器1的内容传送到状态字) 使用T STW指令可以将累加器1的位0~8传送到状态字的相应位,指令的执行与状态位无关,指令格式如下: T STW
4.与地址寄存器有关的装入和传送指令(1/4) LAR1(将操作数的内容装入地址寄存器AR1)
4.与地址寄存器有关的装入和传送指令(2/4) LAR2(将操作数的内容装入地址寄存器2) 使用LAR2指令可以将操作数的内容(32位指针)装入地址寄存器AR2,指令格式同LAR1,其中的操作数可以是累加器1、指针型常数(P#)、存储双字(MD)、本地数据双字(LD)、数据双字(DBD)或背景数据双字(DID),但 不能用AR1。
4.与地址寄存器有关的装入和传送指令(3/4) TAR1(将地址寄存器1的内容传送到操作数)
4.与地址寄存器有关的装入和传送指令(4/4) TAR2(将地址寄存器2的内容传送到操作数) 使用TAR2指令可以将地址寄存器AR1的内容(32位指针)传送给被寻址的操作数,指令格式同TAR1。其中的操作数可以是累加器1、存储双字(MD)、本地数据双字(LD)、数据双字(DBD)、背景数据双字(DID),但不 能用AR1。 CAR(交换地址寄存器1和地址寄存器2的内容) 使用CAR指令可以交换地址寄存器AR1和地址寄存器AR2的内容,指令不需要指定操作数。指令的执行与状态位无 关,而且对状态字没有任何影响。
5. LC(定时器/计数器装载指令 使用LC指令可以在累加器1的内容保存到累加器2中之后,将指定定时器字中当前时间值和时基以BCD码(0~999)格式装入到累加器1中,或将指定计数器的当前计数值以BCD码(0~999)格式装入到累加器1中。指令格式如下: LC <定时器/计数器>
6. MOVE指令 MOVE指令为功能框形式的传送指令,能够复制字节、字或双字数据对象。应用中IN和OUT端操作数可以是常数、I、Q、M、D、L等类型,但必须在宽度上匹配。
§4.6.2 转换指令 转换指令是将累加器1中的数据进行数据类型转换,转换结果仍放在累加器1中。在STEP 7中,可以实现BCD码与整数、整数与长整数、长整数与实数、整数的反码、整 数的补码、实数求反等数据转换操作。 BCD码和整数到其他类型转换指令 整数和实数的码型变换指令 实数取整指令 累加器1调整指令
1. BCD码和整数到其他类型转换指令(1/3) STL形式的指令(1)
1. BCD码和整数到其他类型转换指令(2/3) STL形式的指令(2)
1. BCD码和整数到其他类型转换指令(3/3) LAD和FBD形式的指令
2.整数和实数的码型变换指令(1/2) STL形式的指令
2.整数和实数的码型变换指令(2/2) LAD和FBD形式的指令
3.实数取整指令(1/2) STL形式的指令
3.实数取整指令(2/2) LAD和FBD形式的指令
4.累加器1调整指令
§4.6.3 比较指令 比较指令可完成整数、长整数或32位浮点数(实数)的相等、不等、大于、小于、大于或等于、小于或等于等 比较 。 §4.6.3 比较指令 比较指令可完成整数、长整数或32位浮点数(实数)的相等、不等、大于、小于、大于或等于、小于或等于等 比较 。 整数比较指令 长整数比较指令 实数比较指令
1.整数比较指令
1.整数比较指令(示例)
2.长整数比较指令
2.长整数比较指令(示例)
3.实数比较指令
3.实数比较指令(示例)
§4.6.4 算数运算指令 算术运算指令可完成整数、长整数及实数的加、减、乘、除、求余、求绝对值等基本算数运算;以及32位浮点数的平方、平方根、自然对数、基于e的指数运算及三角 函数等扩展算数运算。 基本算术运算指令 扩展算术运算指令
1. 基本算数运算指令(整数运算)
1. 基本算数运算指令(长整数运算)
1. 基本算数运算指令(实数运算)
【例4-6-1】 16位整数的算术运算指令应用。
【例4-6-1】 16位整数的算术运算指令应用。 【例4-6-2】求输入双字ID10的内容与常数32相除的余数,结果保存到MD20中。
2. 扩展算数运算指令
§4.6.5 字逻辑运算指令 字逻辑运算指令可对两个16位(WORD)或32位(DWORD)的二进制数据,逐位进行逻辑与、逻辑或、逻 §4.6.5 字逻辑运算指令 字逻辑运算指令可对两个16位(WORD)或32位(DWORD)的二进制数据,逐位进行逻辑与、逻辑或、逻 辑异或运算。 对于STL形式的字逻辑运算指令,可对累加器1和累加器2中的字或双字数据进行逻辑运算,结果保存在累加器1中,若结果不为0,则对状态标志位CC1置“1”,否则对CC1置“0”。 对于LAD和FBD形式的字逻辑运算指令,由参数IN1和IN2提供参与运算的两个数据,运算结果保存在由OUT指定的存储区中。
字逻辑运算指令格式
§4.6.6 移位指令 移位指令有2种类型:基本移位指令可对无符号整数、有符号长整数、字或双字数据进行移位操作;循环移位指令可对双字数据进行循环移位和累加器1带CC1的循环 移位操作。 有符号右移指令 字移位指令 双字移位指令 双字循环移位指令 带累加器循环移位指令
1.有符号右移指令格式
2.字移位指令格式
3.双字移位指令格式
4.双字循环移位指令格式
5.带累加器循环移位指令格式
§4.7 控制指令 控制指令可控制程序的执行顺序,使得CPU能根据不同的情况执行不同的程序。控制指令有3类: §4.7.1 逻辑控制指令 §4.7 控制指令 控制指令可控制程序的执行顺序,使得CPU能根据不同的情况执行不同的程序。控制指令有3类: §4.7.1 逻辑控制指令 §4.7.2 程序控制指令 §4.7.3 主控继电器指令
§4.7.1 逻辑控制指令 逻辑控制指令是指逻辑块内的跳转和循环指令,这些指令可以中断原有的线性程序扫描,并跳转到目标地址处重新执行线性程序扫描。目标地址由跳转指令后面的标号指定,该地址标号指出程序要跳往何处,可向前跳转,也可以向后跳转,最大跳转距离为-32768或32767字。 无条件跳转指令 多分支跳转指令 条件跳转指令 循环指令
1. 无条件跳转指令 无条件跳转指令JU执行时,将直接中断当前的线性程序扫描,并跳转到由指令后面的标号所指定的目标地址处重新执行线性程序扫描。
【例4-7-1】 无条件跳转指令的使用。 当程序执行到无条件跳转指令时,将直接跳转到L1处执行。
2. 多分支跳转指令 多分支跳转指令JL的指令格式如下: JL <标号> 如果累加器1低字中低字节的内容小于JL指令和由JL指令所指定的标号之间的JU指令的数量,JL指令就会跳转到其中一条JU处执行,并由JU指令进一步跳转到目标地址;如果累加器1低字中低字节的内容为0,则直接执行JL指令下面的第一条JU指令;如果累加器1低字中低字节的内容为1,则直接执行JL指令下面的第二条JU指令;如果跳转的目的地的数量太大,则JL指令跳转到目的地列表中 最后一个JU指令之后的第一个指令。
【例4-7-2】 多分支跳转指令的使用。
3. 条件跳转指令
【例4-7-3】 条件跳转指令的使用。 程序示例如图4-44所示。当I0. 0与I0 【例4-7-3】 条件跳转指令的使用。 程序示例如图4-44所示。当I0.0与I0.1同时为“1”时,则跳转到L2处执行;否则,到L1处执行(顺序执行)。
4. 循环指令 循环指令的格式如下: LOOP <标号> 使用循环指令(LOOP)可以多次重复执行特定的程序段,由累加器1确定重复执行的次数,即以累加器1的低字为循环计数器。LOOP指令执行时,将累加器1低字中的值减1,如果不为0,则继续循环过程,否则执行LOOP指令后面的指令。循环体是指循环标号和LOOP指令间的程序段。
【例4-7-4】 循环指令的使用。 利用循环指令可以完成有规律的重复计算过程,下面是求阶乘“8!”的示例程序:
§4.7.2 程序控制指令 程序控制指令是指功能块(FB、FC、SFB、SFC)调用指令和逻辑块(OB,FB,FC)结束指令。调用块或结束块可以是有条件的或是无条件的。 基本控制指令 子程序调用指令 CALL指令可以调用用户编写的功能块或操作系统提供的功能块,CALL指令的操作数是功能块类型及其编号,当调用的功能块是FB块时还要提供相应的背景数据块DB。使用CALL指令可以为被调用功能块中的形参赋以实际参数,调用时应保证实参与形参的数据类型一致。
1. 基本控制指令
2. 子程序调用指令
§4.7.3 主控继电器指令 主控继电器(MCR)是一种继电器梯形图逻辑的主开关,用于控制电流(能流)的通断。
第5章 S7程序结构与程序设计 §5.1 S7 CPU中的程序 §5.2 数据块中的数据存储 §5.3 逻辑块(FC和FB)的结构及编程 §5.2 数据块中的数据存储 §5.3 逻辑块(FC和FB)的结构及编程 §5.4 编辑并调用无参功能(FC)——分部程序设计 §5.5 编辑并调用有参功能(FC)——结构化程序设计 §5.6 编辑并调用无静态参数的功能块(FB) §5.7 编辑并调用有静态参数的功能块(FB) §5.8 使用多重背景——结构化程序设计
§5.1 S7 CPU中的程序 §5.1.1 用户程序中的块结构 §5.1.2 用户程序结构 §5.1.3 I/O过程映像 §5.1.4 程序循环执行
§5.1.1 用户程序中的块结构
§5.1.2 用户程序结构 线性程序(线性编程) 分部式程序(分部编程、分块编程) 结构化程序(结构化编程或模块化编程)
1. 线性程序(线性编程) 所谓线性程序结构,就是将整个用户程序连续放置在一个循环程序块(OB1)中,块中的程序按顺序执行,CPU通过反复执行OB1来实现自动化控制任务。这种结构和PLC所代替的硬接线继电器控制类似,CPU逐条地处理指令。事实上所有的程序都可以用线性结构实现,不过,线性结构 一般适用于相对简单的程序编写。
2.分部式程序(分部编程、分块编程) 所谓分部程序,就是将整个程序按任务分成若干个部分,并分别放置在不同的功能(FC)、功能块(FB)及组织块中,在一个块中可以进一步分解成段。在组织块OB1中 包含按顺序调用其他块的指令,并控制程序执行。 在分部程序中,既无数据交换,也不存在重复利用的程序代码。功能(FC)和功能块(FB)不传递也不接收参数,分部程序结构的编程效率比线性程序有所提高,程序测试也较方便,对程序员的要求也不太高。对不太复杂的 控制程序可考虑采用这种程序结构。
3. 结构化程序(结构化编程或模块化编程) 所谓结构化程序,就是处理复杂自动化控制任务的过程中,为了使任务更易于控制,常把过程要求类似或相关的功能进行分类,分割为可用于几个任务的通用解决方案的小任务,这些小任务以相应的程序段表示,称为块(FC或FB)。OB1通过调用这些程序块来完成整个自动化控制任 务。 结构化程序的特点是每个块(FC或FB)在OB1中可能会被多次调用,以完成具有相同过程工艺要求的不同控制对象。这种结构可简化程序设计过程、减小代码长度、提高 编程效率,比较适合于较复杂自动化控制任务的设计。
§5.1.3 I/O过程映像
§5.1.4 程序循环执行
§5.2 数据块中的数据存储 §5.2.1 数据存储区 §5.2.2 数据块 §5.2.3 数据块的数据结构 §5.2.4 建立数据块 §5.2 数据块中的数据存储 §5.2.1 数据存储区 §5.2.2 数据块 §5.2.3 数据块的数据结构 §5.2.4 建立数据块 §5.2.5 访问数据块
§5.2.1 数据存储区 数据以用户程序变量的形式存储,且具有唯一性。数据可以存储在输入过程映像存储器(PII)、输出过程映像存储器(PIQ)、位存储器(M)、局部数据堆栈(L堆栈)及数据块(DB)中。可以采用基本数据类型、复杂数据类 型或参数类型。 根据访问方式的不同,这些数据可以在全局符号表或共享数据块中声明,称为全局变量;也可以在OB、FC和FB的变量声明表中声明,称为局部变量。当块被执行时,变量将固定地存储在过程映像区(PII或PIQ)、位存储器区 (M)、数据块(DB)或局部堆栈(L)中。
§5.2.2 数据块 数据块定义在S7 CPU的存储器中,用户可在存储器中建立一个或多个数据块。每个数据块可大可小,但CPU对数据块数量及数据总量有限制。 数据块(DB)可用来存储用户程序中逻辑块的变量数据(如:数值)。与临时数据不同,当逻辑块执行结束或 数据块关闭时,数据块中的数据保持不变。 用户程序可以位、字节、字或双字操作访问数据块中 的数据,可以使用符号或绝对地址。
1.数据块的分类 共享数据块又称全局数据块。用于存储全局数据,所有逻辑块(OB、FC、FB)都可以访问共享数据块存储的 信。 背景数据块用作“私有存储器区”,即用作功能块(FB)的“存储器”。FB的参数和静态变量安排在它的背景数据块中。背景数据块不是由用户编辑的,而是由编辑器 生成的。 用户定义数据块(DB of Type)是以UDT为模板所生成的数据块。创建用户定义数据块(DB of Type)之前,必须先创建一个用户定义数据类型,如UDT1,并在 LAD/STL/FBD S7程序编辑器内定义。
2.数据块寄存器 CPU有两个数据块寄存器:DB和DI寄存器。这样,可以 同时打开两个数据块。
§5.2.3 数据块的数据结构 在STEP 7中数据块的数据类型可以采用基本数据类 型、复杂数据类型或用户定义数据类型(UDT)。 §5.2.3 数据块的数据结构 在STEP 7中数据块的数据类型可以采用基本数据类 型、复杂数据类型或用户定义数据类型(UDT)。 基本数据类型 复杂数据类型 用户定义数据类型
基本数据类型 根据IEC1131-3定义,长度不超过32位,可利用STEP 7基本指令处理,能完全装入S7处理器的累加器中。基本数 据类型包括: 位数据类型:BOOL、BYTE、WORD、DWORD、CHAR 数字数据类型:INT、DINT、REAL 定时器类型:S5TIME、TIME、DATE、TIME_OF_DAY
复杂数据类型 复杂数据类型只能结合共享数据块的变量声明使用。复杂数据类型可大于32位,用装入指令不能把复杂数据类型完全装入累加器,一般利用库中的标准块(“IEC”S7程序)处理复杂数据类型。复杂数据类型包括: 时间(DATE_AND_TIME)类型 矩阵(ARRAY)类型 结构(STRUCT)类型 字符串(STRING)类型
用户定义数据类型(UDT) STEP 7允许利用数据块编辑器,将基本数据类型和复杂数据类型组合成长度大于32位用户定义数据类型(UDT:User-Defined dataType)。用户定义数据类型不能存储在PLC中,只能存放在硬盘上的UDT块中。可以用用户定义数据类型作“模板”建立数据块,以节省录入时间。可用于建立结构化数据块、建立包含几个相同单元的 矩阵、在带有给定结构的FC和FB中建立局部变量。
【5-2-1】 创建用户定义数据类型:UDT1。 创建一个名称为UDT1的用户定义数据类型,数据结构如下,则可按以下几个步骤完成。
【5-2-1】 创建 用户定义数据类型
【5-2-1】 编辑UDT1
§5.2.4 建立数据块 在STEP 7中,为了避免出现系统错误,在使用数据块之前,必须先建立数据块,并在块中定义变量(包括变量符号名、数据类型以及初始值等)。数据块中变量的顺序及类型决定了数据块的数据结构,变量的数量决定了数据块的大小。数据块建立后,还必须同程序块一起下载到CPU中,才能被程序块访问。 建立数据块 定义变量并下载数据块
方法1:用SIMATIC Manager创建数据块。
方法2:用LAD/STL/FBD S7程序编辑器创建数据块。
新DB类型选择窗口
编辑数据块(变量定义) 变量定义完成后,应单击保存按钮保存并编译(测试)。如果没有错误则需要单击下载按钮,像逻辑块一样,将数据块下载 到CPU。
§5.2.5 访问数据块 在用户程序中可能存在多个数据块,而每个数据块的数据结构并不完全相同,因此在访问数据块时,必须指明数据块的编号、数据类型与位置。如果访问不存在的数据单元或数据块,而且没有编写错误处理OB块,CPU将进入STOP模式。 寻址数据块 访问数据块 直接访问数据块
寻址数据块
访问数据块 在STEP 7中可以采用传统访问方式,即先打开后访问;也可以采用完全表示的直接访问方式。 【例5-2-2】 打开并访问共享数据块。
访问数据块 用指令“OPN DB...”打开共享数据块(自动关闭之前打开的共享数据块),如果DB已经打开,则可用装入(L)或 传送(T)指令访问数据块。 【例5-2-3】 打开并访问背景数据块。
直接访问数据块 所谓直接访问数据块,就是在指令中同时给出数据块的编号和数据在数据块中的地址。可以用绝对地址,也可以用符号地址直接访问数据块。 用绝对地址直接访问数据块,如: 用符号地址直接访问数据块 ,如:
§5.3 逻辑块(FC和FB)的结构及编程 功能(FC)、功能块(FB)和组织块(OB)统称为逻辑块(或程序块)。功能块(FB)有一个数据结构与该功能块的参数完全相同的数据块,称为背景数据块,背景数据块依附于功能块,它随着功能块的调用而打开,随着功能块的结束而关闭。存放在背景数据块中的数据在功能块结束时继续保持。而功能(FC)则不需要背景数据块,功能调用结束后数据不能保持。组织块(OB)是由操作系统直接调用的逻辑 块。 §5.3.1 逻辑块(FC和FB)的结构 §5.3.1 逻辑块(FC和FB)的编程
§5.3.1 逻辑块(FC和FB)的结构 逻辑块(OB、FB、FC)由变量声明表、代码段及其属性等几部分组成。 局部变量声明表(局部数据) 逻辑块局部变量的数据类型 逻辑块的调用过程及内存分配
1. 局部变量声明表 每个逻辑块前部都有一个变量声明表,称为局部变量声明表。 局部数据分为参数和局部变量两大类,局部变量又包括静态变量和临时变量(暂态变量)两种。
对于功能块(FB),操作系统为参数及静态变量分配的存储空间是背景数据块。这样参数变量在背景数据块中留有运行结果备份。在调用FB时,若没有提供实参,则功能块使用背景数据块中的数值。操作系统在L堆栈中给FB的临时变量分配存储空间。 对于功能(FC),操作系统在L堆栈中给FC的临时变量分配存储空间。由于没有背景数据块,因而FC不能使用静态变量。输入、输出、I/O参数以指向实参的指针形式存储在操作系统为参数传递而保留的额外空间中。 对于组织块(OB)来说,其调用是由操作系统管理的,用户不能参与。因此,OB只有定义在L堆栈中的临时变量。
2.逻辑块局部变量的数据类型 局部变量可以是基本数据类型或复式数据类型,也可以是专门用于参数传递的所谓的“参数类型”。参数类型包括定时器、计数器、块的地址或指针等。
3.逻辑块的调用过程及内存分配 CPU提供块堆栈(B堆栈)来存储与处理被中断块的有关信息。
用户程序使用的堆栈 局部数据堆栈简称L堆栈,是CPU中单独的存储器区,可用来存储逻辑块的局部变量(包括OB的起始信息)、调用功能(FC)时要传递的实际参数、梯形图程序中的中间逻辑结果等。可以按位、字节、字和双字来存取。 块堆栈简称B堆栈,是CPU系统内存中的一部分,用来存储被中断的块的类型、编号、优先级和返回地址;中断时打开的共享数据块和背景数据块的编号;临时变量的指针(被中断块的L堆栈地址)。 中断堆栈简称I堆栈,用来存储当前累加器和地址寄存器的内容、数据块寄存器DB和DI的内容、局域数据的指针、状态字、MCR(主控继电器)寄存器和B堆栈的指针。
调用功能块(FB)时的堆栈操作 当调用功能块(FB)时,会有以下事件发生: ①调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈;②数据块DB寄存器内容与DI寄存器内容交换;③新的数据块地址装入DI寄存器;④被调用块的实参装入DB和L堆栈上部;⑤当功能块FB结束时,先前块的现场信息从块堆栈中弹 出,临时变量弹出L堆栈;⑥DB和DI寄存器内容交换。 当调用功能块(FB)时,STEP 7并不一定要求给FB形参赋予实参,除非参数是复式数据类型的I/O形参或参数类型形参。如果没有给FB的形参赋予实参,则功能块(FB)就调用背景数据块内的数值,该数值是在功能块(FB)的变量声明表或背景数据块内 为形参所设置初始数值。
调用功能(FC)时的堆栈操作 当调用功能(FC)时会有以下事件发生: 功能(FC)实参的指针存到调用块的L堆栈;调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈;功能(FC)存储临时变量的L堆栈区被推入L堆栈上部;当被调用功能(FC)结束时,先前块的信息存储在块堆栈 中,临时变量弹出L堆栈。 因为功能(FC)不用背景数据块,不能分配初始数值给 功能(FC)的局部数据,所以必须给功能(FC)提供实参。
调用功能(FC)时的堆栈操作 以功能(FC)调用为例,L堆栈操 作示意如图所示。
§5.3.2 逻辑块(FC和FB)的编程 对逻辑块编程时必须编辑下列三个部分: 变量声明:分别定义形参、静态变量和临时变量(FC块中不包括静态变量);确定各变量的声明类型(Decl.)、变量名(Name)和数据类型(Data Type),还要为变量设置初始值(Initial Value)。如果需要还可为变量注释(Comment)。在增量编程模式下,STEP 7将自动产生局部 变量地址(Address)。 代码段:对将要由PLC进行处理的块代码进行编程。 块属性:块属性包含了其它附加的信息,例如由系统输入的时间标志或路径。此外,也可输入相关详细资料。
1.临时变量的定义和使用
2.查看局部数据堆栈的占用
3.查看块所需字节数
4.定义形式参数
5.编写控制程序 编写逻辑块(FC和FB)程序时,可以用以下两种方式使用局部变量: ①使用变量名,此时变量名前加前缀“#”,以区别于在符号表中定义的符号地址。增量方式下,前缀会自动产生。 ②直接使用局部变量的地址,这种方式只对背景数据块和L堆栈有效。 在调用FB块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。
§5.4 编辑并调用无参功能(FC) ——分部程序设计 所谓无参功能(FC),是指在编辑功能(FC)时,在局部变量声明表不进行形式参数的定义,在功能(FC)中直接使用绝对地址完成控制程序的编程。这种方式一般应用于分部式结构的程序编写,每个功能(FC)实现整个控制任务的一部分,不重复调用。 §5.4.1 编辑无参功能(FC) §5.4.2 在OB1中调用无参功能(FC)
【例5-4-1】 搅拌控制系统程序设计——使用开关量。
控制说明 如图所示为一搅拌控制系统,由3个开关量液位传感器,分别检测液位的高、中和低。现要求对A、B两种液体原 料按等比例混合,请编写控制程序。 要求:按起动按钮后系统自动运行,首先打开进料泵1,开始加入液料A→中液位传感器动作后,则关闭进料泵1,打开进料泵2,开始加入液料B→高液位传感器动作后,关闭进料泵2,起动搅拌器→搅拌10s后,关闭搅拌器,开启放料泵→当低液位传感器动作后,延时5s后关闭放料泵。按 停止按钮,系统应立即停止运行。
§5.4.1 编辑无参功能(FC) 1.创建S7项目 按照第3章所介绍的方法,创建S7项目,并命名为“无参FC”,项目包含组织块OB1和OB100。 2.硬件配置 在 “无参FC”项目内打开“SIMATIC 300 Station”文件夹,打开硬件配置窗口,并完成硬件配置。
3.编辑符号表
4.规划程序结构
5.编辑功能(FC ) 在“无参FC”项目内选择“Blocks”文件夹,然后反复执行菜单命令【Insert】→【S7 Block】→【Function】,分别创建4个功能(FC):FC1、FC2、FC3和FC4。由于在符号表内已经为FC1~FC4定义了符号名,因此在创建FC的属性对话 框内系统会自动添加符号名。 FC1控制程序 FC2控制程序 FC3控制程序 FC4控制程序 OB100控制程序
FC1的控制程序 FC2的控制程序
FC3的控制程序
FC4的控制程序
OB100的控制程序
§5.4.2 在OB1中调用无参功能(FC)
OB1的控制程序
§5.5 编辑并调用有参功能(FC) ——结构化程序设计 所谓有参功能(FC),是指编辑功能(FC)时,在局部变量声明表内定义了形式参数,在功能(FC)中使用了虚拟的符号地址完成控制程序的编程,以便在其他块中能重复调 用有参功能(FC)。这种方式一般应用于结构化程序编写。 §5.5.1 编辑有参功能(FC) §5.5.2 在OB1中调用有参功能(FC)
【例5-5-1】 多级分频器控制程序设计。 本例拟在功能FC1中编写二分频器控制程序,然后在OB1中通过调用FC1实现多级分频器的功能。多级分频器的时序关系如图所示。其中I0.0为多级分频器的脉冲输入端;Q4.0~Q4.3分别为2、4、8、16分频的脉冲输出端;Q4.4~ Q4.7分别为2、4、8、16分频指示灯驱动输出端。
§5.5.1 编辑有参功能(FC) 创建多级分频器的S7项目 硬件配置 编写符号表 规划程序结构 创建有参功能FC1
1.创建多级分频器的S7项目 使用菜单【File】→【“New Project”Wizard】创建多 级分频器的S7项目,并命名为“有参FC”。 2.硬件配置 打开“SIMATIC 300 Station”文件夹,双击硬件配置图 标打开硬件配置窗口,并按图所示完成硬件配置。
3. 编写符号表
4. 规划程序结构
5. 创建有参FC1 选择“有参FC”项目的“Blocks”文件夹,然后执行菜单命令【Insert】→【S7 Block】→【Function】,在块文件夹 内创建一个功能,并命名为“FC1”。 编辑FC1的变量声明表 在FC1的变量声明表内,声明4个参数,见下表。
编辑FC1的控制程序 二分频器的时序如图所示。分析二分频器的时序图可以看到,输入信号每出现一个上升沿,输出便改变一次状 态,据此可采用上跳沿检测指令实现。 如果输入信号S_IN出现上升沿,则对S_OUT取反,然后将S_OUT的信号状态送LED显示;否则,程序直接跳转到LP1,将S_OUT的信号状态送LED显示。
FC1的控制程序
§5.5.2 在OB1中调用有参功能(FC) 使用符号地址 使用绝对地址
§5.6 编辑无静参的功能块(FB ) 功能块(FB)在程序的体系结构中位于组织块之下。它包含程序的一部分,这部分程序在OB1中可以多次调用。功能块的所有形参和静态数据都存储在一个单独的、被指定给该功能块的数据块(DB)中,该数据块被称为背景数据块。当调用FB时,该背景数据块会自动打开,实际参数的值被存储在背景数据块中;当块退出时,背景数据块中的数据仍然 保持。 §5.6.1 编辑无静态参数的功能块(FB) §5.6.2 在OB1中调用无静态参数的功能块(FB)
【例5-6-1】 水箱水位控制系统程序设计。
【例5-6-1】 系统有3个贮水箱,每个水箱有2个液位传感器,UH1,UH2,UH3为高液位传感器,“1”有效;UL1,UL2,UL3为低液位传感器,“0”有效。Y1、Y3、Y5分别为3个贮水水箱进水电磁阀;Y2、Y4、Y6分别为3个贮水水箱放水电磁阀。SB1、SB3、SB5分别为3个贮水水箱放水电磁阀手动开启按钮;SB2、SB4、SB6分别为3个贮水箱放水电磁阀手动关闭按钮。 控制要求:SB1、SB3、SB5在PLC外部操作设定,通过人为的方式,按随机的顺序将水箱放空。只要检测到水箱“空”的信号,系统就自动地向水箱注水,直到检测到水箱“满”信号为止。水箱注水的顺序要与水箱放空的顺序相同,每次只 能对一个水箱进行注水操作。
§5.6.1 编辑无静态参数的功能块(FB) 创建S7项目 硬件配置 编写符号表 规划程序结构 编辑功能块(FB) 建立背景数据块(DI) 编辑启动组织块OB100
1.创建S7项目 使用菜单【File】→【“New Project”Wizard】创建水箱水位控制系统的S7项目,并命名为“无静参FB”。项目包含 组织块OB1和OB100。 2.硬件配置 在“无静参FB”项目内打开“SIMATIC 300 Station”文件夹,打开硬件配置窗口,并按图所示完成硬件配置。
3.编写符号表
4.规划程序结构
5.编辑功能(FB1) 在“无静参FB”项目内选择“Blocks”文件夹,执行菜单命令【Insert】→【S7 Block】→【Function Block】,创建功能块FB1。由于在符号表内已经为FB1定义了符号名,因此 在FB1的属性对话框内系统会自动添加符号名“水箱控制”。 定义局部变量声明表 编写程序代码
定义局部变量声明表 与功能(FC)不同,在功能块(FB)参数表内还有扩展地址(Exclusion address)和结束地址(Termination address)选项。
编写程序代码
6.建立背景数据块DB1、DB2、DB3
7.编辑启动组织块OB100
§5.6.2 在OB1中调用无静态参数的功能块(FB)
OB1控制程序
【例5-6-2】 搅拌控制系统程序设计——使用模拟量。
上图所示为一搅拌控制系统,由一个模拟量液位传感器-变送器来检测液位的高低,并进行液位显示。现要求对A、B两种液体原料按等比例混合,请编写控制程序,控制要求如下: 按起动按钮后系统自动运行,首先打开进料泵1,开始加入液料A→当液位达到50%后,则关闭进料泵1,打开进料泵2,开始加入液料B→当液位达到100%后,则关闭进料泵2,起动搅拌器→搅拌10s后,关闭搅拌器,开启放料泵→当液料放空后,延时5s后关闭放料泵。按停止按钮,系统应立即停止运行。
1.创建S7项目 使用菜单【File】→【“New Project”Wizard】创建搅 拌控制系统的S7项目,并命名为“FC与FB”。 2.硬件配置 在“FC与FB”项目内打开“SIMATIC 300 Station”文件 夹,打开硬件配置窗口,并按图下完成硬件配置。
修改模块的模拟量输入通道和输出通道的起始地址均为256。
3.编辑符号表
4.规划程序结构 OB1为主循环组织块;OB100为启动组织块;FC1实现搅拌控制;FC2实现放料控制;FB1通过调用DB1和DB2实现液料A和液料B的进料控制;DB1和DB2为液料A和液料B进料控制的背景数据块,在调用FB1时为FB1提供实际参数,并保存过程结 果。
5.创建无参功能(FC1、FC2)(1/2) FC1控制程序
5.创建无参功能(FC1、FC2)(2/2) FC2控制程序
6.创建无静态参数的功能块(FB1 ) 定义FB1的局部变量声明表 编写FB1控制程序
7.建立背景数据块(DB1、DB2) 在“FC与FB”项目内选择“Blocks”文件夹,执行菜单命令【Insert】→【S7 Block】→【Data Block】,创建与FB1相关联的背景数据块DB1和DB2。STEP 7自动为DB1和DB2构建 了与FB1完全相同的数据结构,如下图所示。
8.在OB1中调用FC1、FC2和FB1 OB1的控制程序
OB1的控制程序
OB1的控制程序
9.编写启动组织块OB100的控制程序
§5.7 编辑并调用有静态参数的功能块 在编辑功能块(FB)时,如果程序中需要特定数据的参数,可以考虑将该特定数据定义为静态参数,并在FB的声明表内STAT处声明。 下面以交通信号灯控制系统的设计为例,介绍如何编辑和调用有静态参数的功能块。 §5.7.1 编辑有静态参数的功能块(FB) §5.7.2 在OB1中调用有静态参数的功能块(FB)
【例5-7-1】 交通信号灯控制系统程序设计。
上图所示为双干道交通信号灯设置示意图。信号灯的动作受开关总体控制,按一下起动按钮,信号灯系统开始工作,并周而复始地循环动作;按一下停止按钮,所有信号灯都熄灭。信号灯控制的具体要求见下表,试编写信号灯控制程序。
根据十字路口交通信号灯的控制要求,可画出信号灯的控制时序图。
§5.7.1 编辑有静态参数的功能块(FB) 创建S7项目 硬件配置 编写符号表 规划程序结构 编辑功能块(FB) 建立背景数据块(DI) 编辑启动组织块OB100
1.创建S7项目 使用菜单【File】→【“New Project”Wizard】创建交通信号灯控制系统的S7项目,并命名为“有静参FB”。项目包 含组织块OB1和OB100。 2.硬件配置 在“有静参FB”项目内打开“SIMATIC 300 Station”文件夹,打开硬件配置窗口,并按下图所示完成硬件配置。
3.编写符号表
4.规划程序结构 OB1为主循环组织块、OB100初始化程序、FB1为单向红绿灯控制程序、DB1为东西数据块、DB2为南北数据块。
5.编辑功能块(FB) 定义局部变量声明表
编写程序代码
6. 建立背景数据块(DI) 由于在创建DB1和DB2之前,已经完成了FB1的变量声明,建立了相应的数据结构,所以在创建与FB1相关联的DB1和DB2时,STEP 7自动完成了数据块的数据结构。
7.编辑启动组织块OB100
§5.7.2 在OB1中调用有静态参数的功能块(FB)
§5.8 使用多重背景——结构化程序设计 使用多重背景可以有效地减少数据块的数量,其编程思想是创建一个比FB1级别更高的功能块,如FB10,将未作任何修改的FB1作为一个“局部背景”,在FB10中调用。对于FB1 的每一个调用,都将数据存储在FB10的背景数据块DB10中。 §5.8.1 创建多重背景的S7项目 §5.8.2 编辑功能(FC) §5.8.3 编辑共享数据块 §5.8.4 编辑功能块(FB) §5.8.5 生成多重背景数据块DB10 §5.8.6 在OB1中调用功能(FC)及上层功能块(FB)
§5.8.1 创建多重背景的S7项目 【例5-8-1】 发动机组控制系统设计——使用多重背景。 【例5-8-1】 发动机组控制系统设计——使用多重背景。 设某发动机组由1台汽油发动机和1台柴油发动机组成,现要求用PLC控制发动机组,使各台发动机的转速稳定在设定的速度上,并控制散热风扇的起动和延时关闭。每台发动 机均设置一个起动按钮和一个停止按钮。 创建S7项目 硬件配置 编写符号表 规划程序结构
1. 创建S7项目 使用菜单【File】→【“New Project”Wizard】创建发动机组控制系统的S7项目,并命名为“多重背景”。CPU选择CPU 315-2DP,项目包含组织块OB1。 2. 硬件配置 在“多重背景”项目内打开“SIMATIC 300 Station”文件夹,打开硬件配置窗口,并按下图所示完成硬件配置。
3.编辑符号表
4.规划程序结构 FB10为上层功能块,它把FB1作为其“局部实例”,通过二次调用本地实例,分别实现对汽油机和柴油机的控制。这种调用不占用数据块DB1和DB2,它将每次调用(对于每个调用实例)的数据存储到体系的上层功能块FB10的背景数据块DB10 中。
§5.8.2 编辑功能(FC) 1.定义局部变量声明表 FC1用来实现发动机(汽油机或柴油机)的风扇控制,按照控制要求,当发动机起动时,风扇应立即起动;当发动机停机后,风扇应延时关闭。因此FC1需要一个发动机起动 信号、一个风扇控制信号和一个延时定时器。
2.编辑FC1的控制程序 FC1所实现的控制要求:发动机起动时风扇起动,当发动机再次关闭后,风扇继续运行4s,然后停止。定时器采用 断电延时定时器,控制程序如下图所示。
§5.8.3 编辑共享数据块 共享数据块DB3可为FB10保存发动机(汽油机和柴油机)的实际转速,当发动机转速都达到预设速度时,还可以 §5.8.3 编辑共享数据块 共享数据块DB3可为FB10保存发动机(汽油机和柴油机)的实际转速,当发动机转速都达到预设速度时,还可以 保存该状态的标志数据。
§5.8.4 编辑功能块(FB) 在该系统的程序结构内,有2个功能块:FB1和FB10。FB1为底层功能块,所以应首先创建并编辑;FB10为上层功 能块,可以调用FB1。 编辑底层功能块FB1 编辑上层功能块FB10
1.编辑底层功能块FB1 在“多重背景”项目内创建FB1,符号名“Engine”。 定义功能块FB1的变量声明表
编写功能块FB1的控制程序 FB1主要实现发动机的起停控制及速度监视功能,其控制程序如下图所示。
2. 编辑上层功能块FB10 在“多重背景”项目内创建FB10,符号名“Engines”。在FB10的属性对话框内激活“Multi-instance capable”选项。
定义功能块FB10的变量声明表 要将FB1作为FB10的一个“局部背景”调用,需要在FB10的变量声明表中为FB1的调用声明不同名称的静态变量,数据类型为FB1(或使用符号名“Engine”)。
编写功能块FB10的控制程序 在变量声明表内完成FB1类型的局部实例:“Petrol_Engine”和“Diesel_Engine”的声明以后,在程序元素目录的“Multiple Instances”目录中就会出现所声明的多重实例,如图所示。接 下来可在FB10的代码区,调用FB1的“局部 实例”。
编写功能块FB10的控制程序 调用FB1局部实例时,不再使用独立的背景数据块,FB1的实例数据位于FB10的实例数据块DB10中。发动机的实际转速可直接从共享数据块中得到,如DB3.DBW2 (符号地址为, S_Data".PE_Actual_Speed)。
§5.8.5 生成多重背景数据块DB10 在“多重背景”项目内创建一个与FB10相关联的多重背 景数据块DB10,符号名“Engine_Data”。
§5.8.6 在OB1中调用功能(FC)及上层功能块(FB)