目录

  • 1 课程介绍
    • 1.1 课程标准
    • 1.2 课程思政安排
  • 2 前期课程回顾:电气控制电路
    • 2.1 知识准备
    • 2.2 基本电气原理图接线与排故
    • 2.3 Z3040机床电气电路排故
    • 2.4 X62W型万能铣床控制电路分析与排故
    • 2.5 小结
    • 2.6 虚拟拆装(电动机)
  • 3 起保停电路(FB、FC、OB)
    • 3.1 可编程控制器与S7-1200的硬件结构认知
    • 3.2 博图TIA V16软件安装与使用
    • 3.3 位逻辑指令(常开、常闭、线圈)
    • 3.4 虚拟拆装(PLC)
    • 3.5 项目任务
  • 4 正反转控制电路(置位和复位)
    • 4.1 数据类型与存储区
    • 4.2 位逻辑指令(置位、复位)
    • 4.3 梯形图编程规则
    • 4.4 项目任务
  • 5 8路抢答器
    • 5.1 系统和时钟存储器
    • 5.2 梯形图程序设计方法
    • 5.3 项目任务
  • 6 星-三角降压启动
    • 6.1 调试:交叉引用、监视表格、序列和强制
    • 6.2 脉冲定时器指令TP
    • 6.3 接通延时定时器指令TON
    • 6.4 断开延时定时器指令TOF
    • 6.5 保持型接通延时定时器指令TONR
    • 6.6 项目任务(时序逻辑设计)
  • 7 运料小车往返控制
    • 7.1 顺序控制设计法
    • 7.2 计数器指令
    • 7.3 项目任务(顺序控制)
  • 8 十字路口交通信号灯的控制
    • 8.1 函数块FB、函数FC和数据块DB
    • 8.2 数据指令(比较、移位、传送、转换)
    • 8.3 项目任务
  • 9 触摸屏控制的液体混合系统
    • 9.1 两种液体混合控制
    • 9.2 自动洗衣机
    • 9.3 扩展任务1 三种液体混合控制
    • 9.4 扩展任务2 三级物料传送系统控制
    • 9.5 测试
  • 10 G120变频器控制电动机
    • 10.1 通过G120变频器控制电机
    • 10.2 用高速计数器测量电机的转速
    • 10.3 控制步进电机
    • 10.4 扩展任务 电机定时搅拌控制
  • 11 S7-1200PLC的以太网通信技术
    • 11.1 S7-1200/1500 之间的TCP通信
    • 11.2 两台S7-1500 之间S7通信
    • 11.3 远程IO模组FR8210的使用
    • 11.4 扩展任务 两台1500PLC简单通信
  • 12 Factory IO虚拟工厂的控制
    • 12.1 传送带控制系统
    • 12.2 液位PID控制系统
    • 12.3 视觉分拣系统
    • 12.4 扩展任务 机械臂装配控制系统
  • 13 企业生产案例与技能大赛
    • 13.1 企业生产
    • 13.2 技能大赛
      • 13.2.1 世界技能大赛-机电一体化
      • 13.2.2 全国职业技能大赛-机器人系统集成应用技术
      • 13.2.3 世界技能大赛“机器人系统集成”赛项
    • 13.3 软件下载
  • 14 项目实践
    • 14.1 多种液体混合控制项目实践
    • 14.2 装配流水线控制
    • 14.3 交通灯电路仿真实践
    • 14.4 机械手动作模拟项目仿真实践
    • 14.5 天塔之光
函数块FB、函数FC和数据块DB
  • 1 1  知识...
  • 2 2  案例...
  • 3 3  拓展

    • 函数块FB、函数FC和数据块

    • 顺序控制系统简易设计法的设计思路

    • 举例说明



注:视频讲解面向对象程序设计,PLC程序结构和程序框架



一、函数块FB


定义

函数块是一种代码块,它将输入、输出和输入/输出参数永久地存储在背景数据块中,从而在执行块之后,这些值依然有效、。 所以函数块也称为“有存储器”的块。

函数块也可以使用临时变量。 临时变量并不存储在背景数据块中,而用于一个循环。

应用

函数块包含总是在其它代码块调用该函数块时执行的子例程。 可以在程序中的不同位置多次调用同一个函数块。 因此,函数块简化了对重复发生的函数的编程。

函数块的实例

函数块的调用称为实例。 函数块的每个实例都需要一个背景数据块;其中包含函数块中所声明的形参的实例特定值。 

函数块可以将实例特定的数据存储在自己的背景数据块中,也可以存储在调用块的背景数据块中。 

访问模式

S7-1200 提供两种不同的背景数据块访问选项,可在调用函数块时分配给函数块: 

    • 可优化访问的数据块

可优化访问的数据块无固定定义的存储器结构。 在声明中,数据元素仅包含一个符号名,因此在块中没有固定的地址。

    • 可一般访问的数据块

可一般访问的数据块具有固定的存储器结构。 声明元素在声明中包含一个符号名,并且在块中有固定地址。


二、函数(FC)



定义 

函数 (根据 IEC 1131-3 标准,函数 (FC) 是不含存储区的代码块。通过函数可在用户程序中传送参数。 因此,函数特别适合取代频繁出现的复杂结构,如计算等。 ) (FC) 是不带存储器的代码块。 由于没有可以存储块参数值的数据存储器。 因此,调用函数时,必须给所有形参分配实参。 

函数可以使用全局数据块 (数据块用于存储用户数据。 数据块分为可由所有代码块访问的全局数据块,以及分配给特定功能块调用的背景数据块。) 永久性存储数据。

应用

函数包含一个程序,在其它代码块调用该函数时将执行此程序。 例如,可以将函数用于下列目的:

将函数值返回给调用块,例如,数学函数

执行工艺功能,例如,通过位逻辑运算进行单个的控制

可以在程序中的不同位置多次调用同一个函数。 因此,函数块简化了对重复发生的函数的编程。

说明 

调用函数时的参数传送

为了避免在使用函数时出错,请参见“块调用时的参数传递”章节中的信息。


三、全局数据块 (DB) 


定义 

数据块用于存储程序数据。因此,数据块包含由用户程序使用的变量数据。全局数据块存储所有其它块都可使用的数据。

数据块的最大大小因 CPU 的不同而各异。可以以自己喜欢的方式定义全局数据块的结构。

还可以选择使用 PLC 数据类型 (UDT) 作为创建全局数据块的模板。

用户程序中的全局数据块

每个函数块、函数或组织块都可以从全局数据块中读取数据或向其中写入数据。即使在退出数据块后,这些数据仍然会保存在其中。可以同时打开一个全局数据块和一个背景数据块。 

下图所示为不同的数据块访问:

 

访问模式

S7-1200 提供两种不同的全局数据块访问选项: 

    • 可优化访问的数据块

可优化访问的数据块没有固定的定义结构。在声明中,仅为数据元素分配一个符号名称,而不分配在块中的固定地址。

    • 可标准访问的数据块

可标准访问的数据块具有固定的结构。数据元素在声明中分配了一个符号名,并且在块中有固定地址。

四、组织块(OB)


启动 OB (S7-1200)

可以确定 CPU 启动特性的边界条件,例如,“RUN”对应的初始值。 为此,请编写启动程序。 启动程序包括一个或多个启动 OB(OB 编号为 100 或大于等于 123)。 

启动程序在从“STOP”模式切换到“RUN”模式期间执行一次。 输入过程映像中的当前值对于启动程序不可用,也不能设置这些值。

启动 OB 执行完毕后,将读入输入过程映像并启动循环程序。

启动例程的执行没有时间限制。 因此,未激活扫描循环监视时间。 不能使用时间驱动或中断驱动的组织块。 

启动信息

启动 OB 具有以下启动信息:



循环 OB (S7-1200)

简介 

要启动程序执行,项目中至少要有一个程序循环 OB。 操作系统每个周期调用该程序循环 OB 一次,从而启动用户程序的执行。 可以使用多个 OB(OB 编号大于等于 123)。 使用多个程序循环 OB 时,将按照 OB 编号依次调用。 首先调用 OB 编号最低的程序循环 OB。

程序循环 OB 的优先等级为 1。这对应于所有 OB 的最低优先级。 任何其它事件类别的事件都可以中断循环程序。 

对循环程序执行进行编程

可通过在循环 OB 以及所调用的块中编写用户程序对循环程序执行进行编程。

一旦成功执行启动程序后,就会开始第一次循环程序执行。 每次循环程序执行结束后,循环重新开始。

循环程序执行的顺序

一个程序执行周期包括以下步骤:

  1. 操作系统启动最大循环时间。

  2. 操作系统将输出过程映像中的值写到输出模块。

  3. 操作系统读取输入模块的输入状态,并更新输入过程映像。

  4. 操作系统处理用户程序并执行程序中包含的运算。

  5. 在循环结束时,操作系统执行所有未决的任务,例如加载和删除块,或调用其它循环 OB。

  6. 最后,CPU 返回到循环起点,并重新启动扫描循环监视时间。


中断选项

循环程序执行可被以下事件中断:

    • 中断

    • 以下情况触发的 STOP 命令

    编程设备的运行

    “STP”指令

    • 电源故障

    • 发生设备故障或程序出错


启动信息

    • 优化启动信息



用于中断驱动程序执行的组织块 (S7-1200)

时间中断 OB (S7-1200)

状态中断 OB (S7-1200)

更新中断 OB (S7-1200)

供应商或配置文件特定的中断 OB (S7-1200)

延时中断 OB (S7-1200)

循环中断 OB (S7-1200)

硬件中断 OB (S7-1200)

时间错误 OB (S7-1200)

诊断中断 OB (S7-1200)

插拔中断 OB (S7-1200)

机架错误 OB (S7-1200)

MC 伺服 OB (S7-1200)

MC-PreServo OB (S7-1200)

MC-PostServo OB (S7-1200)

MC 插补器 OB (S7-1200)


组织块的块参数 (S7-1200)

块参数的基本知识 (S7-1200)

时间中断 OB 的参数分配 (S7-1200)

给循环中断 OB 分配参数 (S7-1200)

为硬件中断 OB 分配参数 (S7-1200)

分配 MC 伺服 OB 参数 (S7-1200)


小结:程序与程序块的区别

(1)功能的调用不需要生成背景数据块,而功能块的调用 需要生成背景数据块,在本实例中,调用FB1生成的背景数据块与FB1的接口参数相比,背景数据块中包含的接口参数有输入参数、输出参数、输入输出参数和静态参数,不包含临时参数。

(2)同一项目中的其他程序块或HMI,不能访问功能中的接口参数,但可以通过背景数据块访问功能块中的接口参数。

(3)在程序的接口参数中不能定义静态参数,但在程序块的接口参数中可以定义静态参数,该静态参数可以设置初始值,并保存在其背景数据块中。

(4)调用程序后,如果需要保存数据,则必须使用全局数据区(一般是位存储器或全局数据块)来保存;调用程序块后,数据保存在背景数据块中。因此,如果被调用后需要保存数据,则应使用函数块。

(5)程序的接口参数没有默认值,而程序的接口参数除静态参数以外都有默认值。因此,在调用程序时,可以不设置有些接口参数的实参,而采用默认值或前一次执行后的值。

                                                  程序块



                                                程序