描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302523048丛书名: 零点起飞
产品特色
编辑推荐
由浅入深,循序渐进:本书在内容编排上遵循由浅入深、由易到难的原则,基础知 识与大量实例相结合,读者可边学边练
? 实例丰富,涉及面广:本书全面介绍S7-1200 PLC的硬件、编程语言、编程软件的使用、指令、用户程序结构、程序设计方法、通信和精简面板等知识
? 兼顾原理,注重实用:结合实际工程应用,介绍PLC控制系统设计原则和流程。通过3个综合实训,讲述S7-1200 PLC的硬件组态、编程、下载、调试及故障诊断
? 实例丰富,涉及面广:本书全面介绍S7-1200 PLC的硬件、编程语言、编程软件的使用、指令、用户程序结构、程序设计方法、通信和精简面板等知识
? 兼顾原理,注重实用:结合实际工程应用,介绍PLC控制系统设计原则和流程。通过3个综合实训,讲述S7-1200 PLC的硬件组态、编程、下载、调试及故障诊断
内容简介
《零点起飞学西门子S7-1200 PLC编程》深入浅出地介绍了西门子公司推出的S7-1200 PLC的编程与应用。全书共分为10章,分别介绍了常用的低压电器、电气控制电路、PLC的基础知识、S7-1200 PLC的硬件结构、指令、博途软件的使用、用户程序结构、程序设计方法、通信网络、精简面板。并结合实际工程应用,介绍了PLC控制系统设计原则和流程。*后通过3个综合实训,熟悉博途软件的使用,掌握S7-1200 PLC的硬件组态、编程、下载、调试及故障诊断等,达到具备设计和调试自动化工程的应用能力。
《零点起飞学西门子S7-1200 PLC编程》可供初学者及工程技术人员使用,也可作为高等院校、高职高专相关专业的教材。
《零点起飞学西门子S7-1200 PLC编程》可供初学者及工程技术人员使用,也可作为高等院校、高职高专相关专业的教材。
目 录
目 录
第1章 电气控制基础 1
1.1 常用低压电器 1
1.1.1 基本知识 1
1.1.2 主令电器 2
1.1.3 继电器 7
1.2 电气控制电路 13
1.2.1 电路图图形、文字符号及绘制原则 13
1.2.2 基本控制电路 17
1.2.3 降压启动控制线路 22
1.2.4 制动控制线路 25
1.2.5 电气控制线路的设计方法 28
1.3 习题 31
第2章 S7-1200 PLC概述 33
2.1 PLC概述 33
2.1.1 PLC的产生 33
2.1.2 PLC的发展趋势 34
2.1.3 PLC的用途 35
2.2 PLC的特点、分类及技术指标 36
2.2.1 PLC的特点 36
2.2.2 PLC的分类 37
2.2.3 PLC的技术指标 39
2.3 S7-1200的硬件 41
2.3.1 S7-1200的硬件结构 41
2.3.2 CPU模块 43
2.3.3 信号板与信号模块 46
2.3.4 集成的PROFINET接口 47
2.4 S7-1200 PLC的编程语言 49
2.5 PLC的工作原理与逻辑运算 50
2.5.1 PLC的工作原理 50
2.5.2 逻辑运算 54
2.6 数据类型与系统存储区 55
2.6.1 CPU的存储器 55
2.6.2 数制与数据类型 56
2.6.3 全局数据块与其他数据类型 59
2.6.4 系统存储区 66
2.7 习题 68
第3章 TIA博途软件的使用 70
3.1 TIA博途软件基本操作 70
3.1.1 TIA博途软件常用操作 71
3.1.2 TIA博途软件的窗口 76
3.2 STEP 7博途软件轻松使用 81
3.3 TIA博途软件编程入门 88
3.3.1 创建项目 88
3.3.2 为CPU的输入/输出创建变量 89
3.3.3 在用户程序中创建一个简单程序段 90
3.3.4 使用变量表中的PLC变量对指令进行寻址 91
3.3.5 添加“功能框”指令 92
3.3.6 为复杂数学等式使用CALCULATE指令 93
3.3.7 在项目中添加HMI设备 95
3.3.8 在CPU和HMI设备之间创建网络连接 97
3.3.9 创建HMI连接以共享变量 97
3.3.10 创建HMI画面 97
3.3.11 为HMI元素选择PLC变量 98
3.4 习题 99
第4章 S7-1200的指令 100
4.1 位逻辑指令 100
4.2 定时器与计数器指令 105
4.2.1 定时器指令 105
4.2.2 计数器指令 108
4.3 数据处理指令 111
4.3.1 比较指令 111
4.3.2 使能输入与使能输出指令 112
4.3.3 转换操作指令 113
4.3.4 移动操作指令 116
4.3.5 移位与循环移位指令 117
4.4 数学运算指令 118
4.4.1 数学函数指令 118
4.4.2 字逻辑运算指令 122
4.5 程序控制操作指令 123
4.6 日期和时间指令 127
4.7 字符串与字符指令 130
4.7.1 String数据 130
4.7.2 字符串转换指令 131
4.7.3 字符串操作指令 134
4.8 高速脉冲输出与高速计数器 136
4.8.1 高速脉冲输出 137
4.8.2 高速计数器 140
4.8.3 高速脉冲输出与高速计数器实验 141
4.8.4 用高速计数器测量频率的实验 146
4.9 习题 148
第5章 S7-1200的用户程序结构 149
5.1 用户程序结构 149
5.2 函数与函数块 151
5.2.1 生成与调用函数 151
5.2.2 生成与调用函数块 154
5.2.3 多重背景 156
5.3 数据类型与间接寻址 160
5.3.1 数据类型 160
5.3.2 间接寻址 161
5.4 中断事件与中断指令 164
5.4.1 中断事件与组织块 164
5.4.2 初始化组织块与循环中断组织块 166
5.4.3 时间中断组织块 169
5.4.4 硬件中断组织块 170
5.4.5 中断连接指令与中断分离指令 172
5.4.6 延时中断组织块 174
5.5 习题 176
第6章 数字量控制系统梯形图程序设计方法 177
6.1 梯形图的经验设计法 177
6.1.1 梯形图编程的基本规则 177
6.1.2 常用典型实例 179
6.2 顺序控制设计法与顺序功能图 181
6.2.1 顺序功能图的基本原件 182
6.2.2 顺序功能图的基本结构 183
6.2.3 顺序功能图中转换实现的基本规则 184
6.3 使用置位复位指令的顺序控制梯形图编程实例 185
6.3.1 控制电路的硬件设计 186
6.3.2 软件设计 186
6.4 习题 194
第7章 S7-1200的通信 196
7.1 S7-1200 PLC以太网通信概述 196
7.1.1 支持的协议 196
7.1.2 与编程设备通信 198
7.2 S7-1200 PLC之间的以太网通信 203
7.2.1 组态两个CPU之间的逻辑网络连接 203
7.2.2 组态传送(发送)和接收参数 204
7.2.3 S7-1200与S7-200 PLC的通信 208
7.2.4 S7-1200与S7-300/400PLC的通信 213
7.3 S7-1200 PLC的串口通信 217
7.3.1 自由口通信协议 218
7.3.2 Modbus RTU协议通信 223
7.4 S7-1200与变频器的USS协议通信 230
7.4.1 硬件接线与变频器参数设置 230
7.4.2 S7-1200的组态与编程 231
7.4.3 S7-1200与变频器通信的实验 233
7.5 习题 235
第8章 精简系列面板的组态与应用 236
8.1 精简系列面板 236
8.2 精简系列面板的画面组态 237
8.2.1 使用HMI设备向导生成HMI设备 237
8.2.2 项目设备组态 241
8.2.3 调试运行 246
8.3 习题 247
第9章 S7-1200控制系统设计与应用实例 248
9.1 S7-1200控制系统的设计原则与流程 248
9.1.1 设计原则 248
9.1.2 设计流程 249
9.2 S7-1200控制系统应用实例 249
9.2.1 三相异步电动机的星-三角降压启动实例 249
9.2.2 抢答器设计实例 252
9.2.3 液体混合控制系统设计实例 257
9.2.4 运料小车控制系统设计实例 264
9.2.5 旋转机械控制实例 270
9.3 习题 273
第10章 综合实训 274
10.1 CPU1214C通过以太网控制变频器G120 274
10.2 机械手PLC控制 301
10.3 气缸往复运动PLC控制 309
10.4 小结 314
参考文献 315
第1章 电气控制基础 1
1.1 常用低压电器 1
1.1.1 基本知识 1
1.1.2 主令电器 2
1.1.3 继电器 7
1.2 电气控制电路 13
1.2.1 电路图图形、文字符号及绘制原则 13
1.2.2 基本控制电路 17
1.2.3 降压启动控制线路 22
1.2.4 制动控制线路 25
1.2.5 电气控制线路的设计方法 28
1.3 习题 31
第2章 S7-1200 PLC概述 33
2.1 PLC概述 33
2.1.1 PLC的产生 33
2.1.2 PLC的发展趋势 34
2.1.3 PLC的用途 35
2.2 PLC的特点、分类及技术指标 36
2.2.1 PLC的特点 36
2.2.2 PLC的分类 37
2.2.3 PLC的技术指标 39
2.3 S7-1200的硬件 41
2.3.1 S7-1200的硬件结构 41
2.3.2 CPU模块 43
2.3.3 信号板与信号模块 46
2.3.4 集成的PROFINET接口 47
2.4 S7-1200 PLC的编程语言 49
2.5 PLC的工作原理与逻辑运算 50
2.5.1 PLC的工作原理 50
2.5.2 逻辑运算 54
2.6 数据类型与系统存储区 55
2.6.1 CPU的存储器 55
2.6.2 数制与数据类型 56
2.6.3 全局数据块与其他数据类型 59
2.6.4 系统存储区 66
2.7 习题 68
第3章 TIA博途软件的使用 70
3.1 TIA博途软件基本操作 70
3.1.1 TIA博途软件常用操作 71
3.1.2 TIA博途软件的窗口 76
3.2 STEP 7博途软件轻松使用 81
3.3 TIA博途软件编程入门 88
3.3.1 创建项目 88
3.3.2 为CPU的输入/输出创建变量 89
3.3.3 在用户程序中创建一个简单程序段 90
3.3.4 使用变量表中的PLC变量对指令进行寻址 91
3.3.5 添加“功能框”指令 92
3.3.6 为复杂数学等式使用CALCULATE指令 93
3.3.7 在项目中添加HMI设备 95
3.3.8 在CPU和HMI设备之间创建网络连接 97
3.3.9 创建HMI连接以共享变量 97
3.3.10 创建HMI画面 97
3.3.11 为HMI元素选择PLC变量 98
3.4 习题 99
第4章 S7-1200的指令 100
4.1 位逻辑指令 100
4.2 定时器与计数器指令 105
4.2.1 定时器指令 105
4.2.2 计数器指令 108
4.3 数据处理指令 111
4.3.1 比较指令 111
4.3.2 使能输入与使能输出指令 112
4.3.3 转换操作指令 113
4.3.4 移动操作指令 116
4.3.5 移位与循环移位指令 117
4.4 数学运算指令 118
4.4.1 数学函数指令 118
4.4.2 字逻辑运算指令 122
4.5 程序控制操作指令 123
4.6 日期和时间指令 127
4.7 字符串与字符指令 130
4.7.1 String数据 130
4.7.2 字符串转换指令 131
4.7.3 字符串操作指令 134
4.8 高速脉冲输出与高速计数器 136
4.8.1 高速脉冲输出 137
4.8.2 高速计数器 140
4.8.3 高速脉冲输出与高速计数器实验 141
4.8.4 用高速计数器测量频率的实验 146
4.9 习题 148
第5章 S7-1200的用户程序结构 149
5.1 用户程序结构 149
5.2 函数与函数块 151
5.2.1 生成与调用函数 151
5.2.2 生成与调用函数块 154
5.2.3 多重背景 156
5.3 数据类型与间接寻址 160
5.3.1 数据类型 160
5.3.2 间接寻址 161
5.4 中断事件与中断指令 164
5.4.1 中断事件与组织块 164
5.4.2 初始化组织块与循环中断组织块 166
5.4.3 时间中断组织块 169
5.4.4 硬件中断组织块 170
5.4.5 中断连接指令与中断分离指令 172
5.4.6 延时中断组织块 174
5.5 习题 176
第6章 数字量控制系统梯形图程序设计方法 177
6.1 梯形图的经验设计法 177
6.1.1 梯形图编程的基本规则 177
6.1.2 常用典型实例 179
6.2 顺序控制设计法与顺序功能图 181
6.2.1 顺序功能图的基本原件 182
6.2.2 顺序功能图的基本结构 183
6.2.3 顺序功能图中转换实现的基本规则 184
6.3 使用置位复位指令的顺序控制梯形图编程实例 185
6.3.1 控制电路的硬件设计 186
6.3.2 软件设计 186
6.4 习题 194
第7章 S7-1200的通信 196
7.1 S7-1200 PLC以太网通信概述 196
7.1.1 支持的协议 196
7.1.2 与编程设备通信 198
7.2 S7-1200 PLC之间的以太网通信 203
7.2.1 组态两个CPU之间的逻辑网络连接 203
7.2.2 组态传送(发送)和接收参数 204
7.2.3 S7-1200与S7-200 PLC的通信 208
7.2.4 S7-1200与S7-300/400PLC的通信 213
7.3 S7-1200 PLC的串口通信 217
7.3.1 自由口通信协议 218
7.3.2 Modbus RTU协议通信 223
7.4 S7-1200与变频器的USS协议通信 230
7.4.1 硬件接线与变频器参数设置 230
7.4.2 S7-1200的组态与编程 231
7.4.3 S7-1200与变频器通信的实验 233
7.5 习题 235
第8章 精简系列面板的组态与应用 236
8.1 精简系列面板 236
8.2 精简系列面板的画面组态 237
8.2.1 使用HMI设备向导生成HMI设备 237
8.2.2 项目设备组态 241
8.2.3 调试运行 246
8.3 习题 247
第9章 S7-1200控制系统设计与应用实例 248
9.1 S7-1200控制系统的设计原则与流程 248
9.1.1 设计原则 248
9.1.2 设计流程 249
9.2 S7-1200控制系统应用实例 249
9.2.1 三相异步电动机的星-三角降压启动实例 249
9.2.2 抢答器设计实例 252
9.2.3 液体混合控制系统设计实例 257
9.2.4 运料小车控制系统设计实例 264
9.2.5 旋转机械控制实例 270
9.3 习题 273
第10章 综合实训 274
10.1 CPU1214C通过以太网控制变频器G120 274
10.2 机械手PLC控制 301
10.3 气缸往复运动PLC控制 309
10.4 小结 314
参考文献 315
前 言
前 言
随着计算机技术的发展,可编程控制器作为通用的工业控制计算机,是存储逻辑在工业领域应用的代表性成果。自从1969年第一台可编程控制器研制成功,应用到汽车制造自动装配生产线上以来,可编程控制器不断更新换代,特别是近20年来,发展迅速,功能日益强大,在生产过程中应用十分广泛,作为工业自动化技术的三大支柱之一在经济领域发挥着越来越重要的作用。
西门子是欧洲最大的电子和电气设备制造商,生产的SIMATIC可编程控制器在欧洲处于领先地位。其第一代PLC产品最早是1975年投放市场的SIMATIC S3,50年来,SIMATIC控制器从S3系列发展到S7系列,已经成为中国自动化用户最为信赖和熟知的 品牌。
西门子的PLC产品包括LOGO、S7-200、S7-300、S7-400、S7-1200/1500、工业网络、HMI人机界面、工业软件等。
S7-1200 PLC是一款可编程逻辑控制器(Programmable Logic Controller,PLC),可以控制各种自动化应用。S7-1200设计紧凑、成本低廉且具有功能强大的指令集,这些特点使它成为控制各种应用的完美解决方案。
本书是从零基础开始全面介绍S7-1200 PLC的书籍,全面介绍了S7-1200 PLC的硬件、编程语言、编程软件的使用、指令、用户程序结构、程序设计方法、通信和精简面板。通过应用实例,介绍了S7-1200控制系统的设计。最后通过综合实训,加强读者对全书知识的理解,提高读者的PLC的综合应用和创新实践能力。
本书由佳木斯大学赵化启主编,佳木斯大学徐斌山、崔继仁、窦艳芳、杜旭、张明强共同编写。赵化启编写了第5章以及第4章的2~3节,徐斌山编写了第2、10章,崔继仁编写了第3、6、9章,窦艳芳编写了第1章以及第4章的第4~5节,杜旭编写了第7章,张明强编写了第8章以及第4章的第1节、第6~9节。参加编写工作的老师还有宋一兵、管殿柱、王献红、李文秋,在此一并感谢。
因作者水平有限,书中难免有欠妥和疏忽之处,恳请读者批评指正。
随着计算机技术的发展,可编程控制器作为通用的工业控制计算机,是存储逻辑在工业领域应用的代表性成果。自从1969年第一台可编程控制器研制成功,应用到汽车制造自动装配生产线上以来,可编程控制器不断更新换代,特别是近20年来,发展迅速,功能日益强大,在生产过程中应用十分广泛,作为工业自动化技术的三大支柱之一在经济领域发挥着越来越重要的作用。
西门子是欧洲最大的电子和电气设备制造商,生产的SIMATIC可编程控制器在欧洲处于领先地位。其第一代PLC产品最早是1975年投放市场的SIMATIC S3,50年来,SIMATIC控制器从S3系列发展到S7系列,已经成为中国自动化用户最为信赖和熟知的 品牌。
西门子的PLC产品包括LOGO、S7-200、S7-300、S7-400、S7-1200/1500、工业网络、HMI人机界面、工业软件等。
S7-1200 PLC是一款可编程逻辑控制器(Programmable Logic Controller,PLC),可以控制各种自动化应用。S7-1200设计紧凑、成本低廉且具有功能强大的指令集,这些特点使它成为控制各种应用的完美解决方案。
本书是从零基础开始全面介绍S7-1200 PLC的书籍,全面介绍了S7-1200 PLC的硬件、编程语言、编程软件的使用、指令、用户程序结构、程序设计方法、通信和精简面板。通过应用实例,介绍了S7-1200控制系统的设计。最后通过综合实训,加强读者对全书知识的理解,提高读者的PLC的综合应用和创新实践能力。
本书由佳木斯大学赵化启主编,佳木斯大学徐斌山、崔继仁、窦艳芳、杜旭、张明强共同编写。赵化启编写了第5章以及第4章的2~3节,徐斌山编写了第2、10章,崔继仁编写了第3、6、9章,窦艳芳编写了第1章以及第4章的第4~5节,杜旭编写了第7章,张明强编写了第8章以及第4章的第1节、第6~9节。参加编写工作的老师还有宋一兵、管殿柱、王献红、李文秋,在此一并感谢。
因作者水平有限,书中难免有欠妥和疏忽之处,恳请读者批评指正。
免费在线读
第5章 S7-1200的用户程序结构
创建处理自动化任务的用户程序时,需要将程序指令插入代码块(OB、FB或FC)中。OB是用于构建和组织用户程序的代码块。FB、FC是从另一个代码块(OB、FB或FC)进行调用时执行的子例程。根据实际应用要求,可选择线性结构或模块化结构来创建用户程序。本章主要介绍用户程序结构、函数与函数块、数据类型与间接寻址、中断事件与中断指令。
5.1 用户程序结构
目前的工业自动化项目控制任务比较复杂,控制设备多样,所以S7-1200通常采用模块化编程。S7-1200与S7-300/400的用户程序结构基本相同。
1.模块化编程
模块化编程能够将复杂的控制任务划分为对应不同控制功能与技术要求的较小的子任务,实现每个子任务的子程序称为“块”。各种块的简要说明如表5-1所示,组织块(OB)、函数块(FB)、函数(FC)都包含程序,统称为代码块。代码块的个数没有限制,但是受到存储器容量的限制。
表5-1 用户程序中的块
块
简 要 描 述
组织块(OB)
操作系统与用户程序的接口,决定用户程序的结构
函数块(FB)
用户编写的包含常用功能的子程序,有专用的背景数据块
函数(FC)
用户编写的包含常用功能的子程序,没有专用的背景数据块
背景数据块(DB)
用于保存FB的输入、输出参数和静态变量,其数据在编译时自动生成
全局数据块(DB)
存储用户数据的数据区域,供所有的代码块共享
可以通过块与块之间的相互调用来组织程序。在块调用中,调用者可以是各种代码块,被调用的块是OB之外的代码块。调用函数块时需要为它指定一个背景数据块。
被调用的代码块又可以调用别的代码块,这种调用称为嵌套调用。从程序循环OB或启动OB开始,嵌套深度为16;从中断OB开始,嵌套深度为6。
2.组织块
组织块OB控制用户程序的执行。CPU中的特定事件将触发组织块的执行。OB无法互相调用或通过FC或FB调用。只有诊断中断或时间间隔这类事件才能启动OB的执行。CPU按优先等级处理OB,即先执行优先级较高的OB,然后执行优先级较低的OB。最低优先等级为1(对应主程序循环),最高优先等级为26。
组织块包括程序循环OB、启动OB、延时中断OB。
1)程序循环OB
程序循环OB在CPU处于RUN模式时循环执行。主程序块是程序循环OB。用户在其中放置控制程序的指令,并调用其他用户块。可以拥有多个程序循环OB,CPU将按编号顺序执行这些OB。程序循环OB默认为Main(OB1)。
程序循环事件在每个程序循环(扫描)期间发生一次。在程序循环期间,CPU写入输出、读取输入和执行程序循环OB。程序循环事件是必需的,并且一直启用。可以不为程序循环事件选择任何程序循环OB,也可以选择多个OB。程序循环事件发生后,CPU将执行编号最小的程序循环OB(通常为MainOB1)。在程序循环中,CPU会依次(按编号顺序)执行其他程序循环OB。程序循环执行,将在以下时刻发生程序循环事件:
* 上一个启动OB执行结束。
* 上一个程序循环OB执行结束。
2)启动OB
启动OB在CPU的操作模式从STOP切换到RUN时执行一次,包括处于RUN模式时和执行STOP到RUN切换命令时上电。之后将开始执行主“程序循环”OB。
启动事件在从STOP切换到RUN模式时发生一次,并触发CPU执行启动OB。可为启动事件组态多个OB。启动OB按编号顺序执行。
3)延时中断OB
将延时中断事件组态为在经过一个指定的延时后发生。延迟时间可通过SRT_DINT指令分配。延时事件将中断程序循环以执行相应的延时中断OB。只能将一个延时中断OB连接到一个延时事件。CPU支持4个延时事件。
循环中断OB以指定的时间间隔执行。最多可组态4个循环中断事件,每个循环中断事件对应一个OB。
用户可通过循环中断事件组态中断OB在组态的周期时间执行。创建循环中断OB时即可组态初始周期时间。循环事件负责中断程序循环并执行相应的循环中断OB。
请注意,循环中断事件的优先级比程序循环事件更高。一个循环事件只可连接一个循环中断OB。可为每一个循环中断分配一个相移,从而使循环中断彼此错开一定的相移量执行。例如,如果有1ms 的循环事件和2ms的循环事件,并且这两个事件每2ms同时发生一次。如果将1ms的事件相移500 ?s,将2ms的事件相移0 ?s,则这两个事件不再会同时发生。默认相移为0。要更改初始相移,或更改循环事件的初始循环时间,请单击项目树中的循环中断OB,在上下文菜单中选择“属性”,然后单击“循环中断”并输入新的初始值。还可以用Query 循环中断(QRY_CINT)和Set循环中断(SET_CINT)指令在程序中查询并更改扫描时间和相移。SET_CINT指令设置的扫描时间和相移不会在上电循环或切换到STOP模式的过程中保持不变;扫描时间和相移值会在上电循环或切换到STOP模式后重新变为初始值。CPU共支持4个循环中断事件。
3.函数
函数(FC)又称为功能,是用于对一组输入值执行特定运算的代码块。FC将此运算结果存储在指定的存储器位置。FC可以在程序中的不同位置多次调用。FC不具有相关的背景数据块(DB)。对于用于计算该运算的临时数据,FC采用局部数据堆栈。不保存临时数据,要长期存储数据,可将输出值赋给全局存储器位置。
4.函数块
函数块(FB)又称为功能块,是使用背景数据块保存其参数和静态数据的代码块。FB具有位于数据块(DB)或“背景”DB中的变量存储器。通过使一个代码块对FB和背景DB进行调用,可以构建程序。
CPU执行该FB中的程序代码,将块参数和静态局部数据存储在背景DB中。FB执行完成后,CPU会返回到调用该FB的代码块中。背景DB保留该FB实例的值。随后在同一扫描周期或其他扫描周期中调用该功能块时可使用这些值。
5.数据块
在用户程序中,通过创建数据块(DB)来存储代码块的数据。用户程序中的所有程序块都可访问全局DB中的数据,而背景DB仅存储特定功能块 (FB)的数据。相关代码块执行完成后,DB中存储的数据不会被删除。有两种类型的DB。
* 全局DB:存储程序中代码块的数据。任何OB、FB或FC都可访问全局DB中的数据。
* 背景DB:存储特定FB的数据。 背景DB中数据的结构反映了FB的参数(Input、Output和InOut)和静态数据。FB的临时存储器不存储在背景DB中。
?说明:尽管背景DB反映特定FB的数据,然而任何代码块都可访问背景数据块DB中的数据。
创建处理自动化任务的用户程序时,需要将程序指令插入代码块(OB、FB或FC)中。OB是用于构建和组织用户程序的代码块。FB、FC是从另一个代码块(OB、FB或FC)进行调用时执行的子例程。根据实际应用要求,可选择线性结构或模块化结构来创建用户程序。本章主要介绍用户程序结构、函数与函数块、数据类型与间接寻址、中断事件与中断指令。
5.1 用户程序结构
目前的工业自动化项目控制任务比较复杂,控制设备多样,所以S7-1200通常采用模块化编程。S7-1200与S7-300/400的用户程序结构基本相同。
1.模块化编程
模块化编程能够将复杂的控制任务划分为对应不同控制功能与技术要求的较小的子任务,实现每个子任务的子程序称为“块”。各种块的简要说明如表5-1所示,组织块(OB)、函数块(FB)、函数(FC)都包含程序,统称为代码块。代码块的个数没有限制,但是受到存储器容量的限制。
表5-1 用户程序中的块
块
简 要 描 述
组织块(OB)
操作系统与用户程序的接口,决定用户程序的结构
函数块(FB)
用户编写的包含常用功能的子程序,有专用的背景数据块
函数(FC)
用户编写的包含常用功能的子程序,没有专用的背景数据块
背景数据块(DB)
用于保存FB的输入、输出参数和静态变量,其数据在编译时自动生成
全局数据块(DB)
存储用户数据的数据区域,供所有的代码块共享
可以通过块与块之间的相互调用来组织程序。在块调用中,调用者可以是各种代码块,被调用的块是OB之外的代码块。调用函数块时需要为它指定一个背景数据块。
被调用的代码块又可以调用别的代码块,这种调用称为嵌套调用。从程序循环OB或启动OB开始,嵌套深度为16;从中断OB开始,嵌套深度为6。
2.组织块
组织块OB控制用户程序的执行。CPU中的特定事件将触发组织块的执行。OB无法互相调用或通过FC或FB调用。只有诊断中断或时间间隔这类事件才能启动OB的执行。CPU按优先等级处理OB,即先执行优先级较高的OB,然后执行优先级较低的OB。最低优先等级为1(对应主程序循环),最高优先等级为26。
组织块包括程序循环OB、启动OB、延时中断OB。
1)程序循环OB
程序循环OB在CPU处于RUN模式时循环执行。主程序块是程序循环OB。用户在其中放置控制程序的指令,并调用其他用户块。可以拥有多个程序循环OB,CPU将按编号顺序执行这些OB。程序循环OB默认为Main(OB1)。
程序循环事件在每个程序循环(扫描)期间发生一次。在程序循环期间,CPU写入输出、读取输入和执行程序循环OB。程序循环事件是必需的,并且一直启用。可以不为程序循环事件选择任何程序循环OB,也可以选择多个OB。程序循环事件发生后,CPU将执行编号最小的程序循环OB(通常为MainOB1)。在程序循环中,CPU会依次(按编号顺序)执行其他程序循环OB。程序循环执行,将在以下时刻发生程序循环事件:
* 上一个启动OB执行结束。
* 上一个程序循环OB执行结束。
2)启动OB
启动OB在CPU的操作模式从STOP切换到RUN时执行一次,包括处于RUN模式时和执行STOP到RUN切换命令时上电。之后将开始执行主“程序循环”OB。
启动事件在从STOP切换到RUN模式时发生一次,并触发CPU执行启动OB。可为启动事件组态多个OB。启动OB按编号顺序执行。
3)延时中断OB
将延时中断事件组态为在经过一个指定的延时后发生。延迟时间可通过SRT_DINT指令分配。延时事件将中断程序循环以执行相应的延时中断OB。只能将一个延时中断OB连接到一个延时事件。CPU支持4个延时事件。
循环中断OB以指定的时间间隔执行。最多可组态4个循环中断事件,每个循环中断事件对应一个OB。
用户可通过循环中断事件组态中断OB在组态的周期时间执行。创建循环中断OB时即可组态初始周期时间。循环事件负责中断程序循环并执行相应的循环中断OB。
请注意,循环中断事件的优先级比程序循环事件更高。一个循环事件只可连接一个循环中断OB。可为每一个循环中断分配一个相移,从而使循环中断彼此错开一定的相移量执行。例如,如果有1ms 的循环事件和2ms的循环事件,并且这两个事件每2ms同时发生一次。如果将1ms的事件相移500 ?s,将2ms的事件相移0 ?s,则这两个事件不再会同时发生。默认相移为0。要更改初始相移,或更改循环事件的初始循环时间,请单击项目树中的循环中断OB,在上下文菜单中选择“属性”,然后单击“循环中断”并输入新的初始值。还可以用Query 循环中断(QRY_CINT)和Set循环中断(SET_CINT)指令在程序中查询并更改扫描时间和相移。SET_CINT指令设置的扫描时间和相移不会在上电循环或切换到STOP模式的过程中保持不变;扫描时间和相移值会在上电循环或切换到STOP模式后重新变为初始值。CPU共支持4个循环中断事件。
3.函数
函数(FC)又称为功能,是用于对一组输入值执行特定运算的代码块。FC将此运算结果存储在指定的存储器位置。FC可以在程序中的不同位置多次调用。FC不具有相关的背景数据块(DB)。对于用于计算该运算的临时数据,FC采用局部数据堆栈。不保存临时数据,要长期存储数据,可将输出值赋给全局存储器位置。
4.函数块
函数块(FB)又称为功能块,是使用背景数据块保存其参数和静态数据的代码块。FB具有位于数据块(DB)或“背景”DB中的变量存储器。通过使一个代码块对FB和背景DB进行调用,可以构建程序。
CPU执行该FB中的程序代码,将块参数和静态局部数据存储在背景DB中。FB执行完成后,CPU会返回到调用该FB的代码块中。背景DB保留该FB实例的值。随后在同一扫描周期或其他扫描周期中调用该功能块时可使用这些值。
5.数据块
在用户程序中,通过创建数据块(DB)来存储代码块的数据。用户程序中的所有程序块都可访问全局DB中的数据,而背景DB仅存储特定功能块 (FB)的数据。相关代码块执行完成后,DB中存储的数据不会被删除。有两种类型的DB。
* 全局DB:存储程序中代码块的数据。任何OB、FB或FC都可访问全局DB中的数据。
* 背景DB:存储特定FB的数据。 背景DB中数据的结构反映了FB的参数(Input、Output和InOut)和静态数据。FB的临时存储器不存储在背景DB中。
?说明:尽管背景DB反映特定FB的数据,然而任何代码块都可访问背景数据块DB中的数据。
评论
还没有评论。