零点起飞学西门子S7-1200PLC编程

零点起飞学西门子S7-1200PLC编程
作者: 编者:赵化启//徐斌山//崔继仁
出版社: 清华大学
原售价: 79.80
折扣价: 56.70
折扣购买: 零点起飞学西门子S7-1200PLC编程
ISBN: 9787302523048

作者简介

内容简介

第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(通常为Mai***)。在程序循环中,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的参数(I**ut、Output和InOut)和静态数据。FB的临时存储器不存储在背景DB中。 ?说明:尽管背景DB反映特定FB的数据,然而任何代码块都可访问背景数据块DB中的数据。 由浅入深,循序渐进:本书在内容编排上遵循由浅入深、由易到难的原则,基础知 识与大量实例相结合,读者可边学边练 实例丰富,涉及面广:本书全面介绍S7-1200 PLC的硬件、编程语言、编程软件的使用、指令、用户程序结构、程序设计方法、通信和精简面板等知识 兼顾原理,注重实用:结合实际工程应用,介绍PLC控制系统设计原则和流程。通过3个综合实训,讲述S7-1200 PLC的硬件组态、编程、下载、调试及故障诊断1200 PLC的硬件组态、编程、下载、调试及故障诊断