西门子PLC学习笔记十九-(FB编程)

FB块可被OB1调用多次,功能的所有形参和静态数据都存储在一个单独的、被指定给该功能块的数据块(DB)中,该数据块被称为背景数据块。当调用FB时,该背景数据块会自动打开,实际参数的值被存储在背景数据块中;当块退出时,背景数据块中的数据仍然保持。

下面通过案例设计介绍FB如何编写吧。

案例:目前有3个贮水箱,每个水箱有2个液位传感器,UH1、UH2、UH3为高液位传感器,"1" 有效;UL1、UL2、UL3为低液位传感器,“0”有效。Y1、Y2、Y3分别为3个贮水水箱进水电磁阀;Y4、Y5、Y6分别为3个贮水水箱放水电磁阀。SB1、SB2、SB3分别为3个贮水水箱放水电磁阀手动开启按钮;SB4、SB5、SB6分别为3个贮水箱放水电磁阀手动关闭按钮。现需实现如下控制:SB1、SB2、SB3在PLC外部操作设定,通过人为的方式,按随机的顺序将水箱放空。只要检测到水箱“空”的信号,系统就自动地向水箱注水,直到检测到水箱“满”信号为止。水箱注水的顺序要与水箱放空的顺序相同,每次只能对一个水箱进行注水操作。控制系统如下图:

程序设计如下:

1.符号表

2.程序模块总图

3.FB

FB参数设置图:

FB程序图:

4.OB100(程序启动前初始化功能)

本模块实现的功能是 当SB1、SB2、SB3只要有一个被按下,那么水箱阀的控制则变成自动控制,各个水箱阀复位

5.OB1

下图只例举了1水箱调用图,2、3水箱调用该FB1的方式一样,只是背景数据块需要变为DB2、DB3

程序代码可在此下载

时间: 2024-11-05 16:01:27

西门子PLC学习笔记十九-(FB编程)的相关文章

西门子PLC学习笔记十五-(数据块及数据访问方式)

一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的. 数据块分共享数据块.背景数据块.用户自定义数据块,下面分别介绍. 1.共享数据块(全局数据块) 其用于存储全局数据,所有逻辑块(OB.FC.FB)都可以访问共享数据块中的数据. 2.背景数据块(私有存储区) 其用做功能块(FB)的"存储器".FB的参数和静态变量安排在它的背景数据块中.

西门子PLC学习笔记十八-(带参数FC编程)

带参数FC,指编辑功能时,在局部变量声明表中定义形式参数,在功能(FC)中使用虚拟的符号地址完成程序的编写. 下面将例举简单的示例说明如何编写带参FC功能. 本示例完成一数学公式的编程:Y = ( X + 5 ) * 11 / 5; 程序如下: FC数学公式编写如下(内部定义了输入参数变量:X和输出参数变量Y) 本程序代码可以在此下载.

西门子PLC学习笔记十八-(带参数FC编程二)

本篇仍是对带参数的FC编程的练习,本次实现功能: 一共有4台电机,每台电机都要求Y-△降压启动.启动时,按下启动按钮,M1电机启动,然后每隔10s启动一台,最后M1到M4四台电机全部启动.当按下停止按钮时,M4先停止,过10s后M3在停止,再过10s后M2停止,再过10sM1电机停止.同时任一台电机启动时,控制电源的接触器和Y形接法的接触器接通电源6s后,Y形接触器断开,1s后△接触器动作接通. 本需求程序实现代码如下: 1.符号表 2.功能块编写代码如下 3.主程序编写如下 本程序代码可在此下

西门子PLC学习笔记十四-(用户程序结构及执行)

PLC用户程序的总体结构如下图: 1.组织块(OB):操作系统与用户程序的接口,决定用户程序的结构. 组织块是由操作系统调用的,用于控制扫描循环和中断程序的执行,PLC的启动和错误处理,不同的CPU可以使用的组织块不都一致. 常用OB块和其对应的优先级 上表中的OB1是循环扫描的主程序,其优先级最低.处理OB90不能中断OB1的执行外,其余的OB块均可以.OB100~OB102为启动组织块,分别代表CPU的三种启动方式,即暖启动.热启动.冷启动.OB100为暖启动组织块.OB101为热启动组织块

西门子PLC学习笔记十六-(逻辑块的结构)

逻辑块包括:功能(FC).功能块(FB).组织块(OB),它们都是由变量声明表.代码段及其属性等组成. 1.局部变量声明表 每个逻辑块的前面都有一个变量声明表,其称为局部变量声明表. 局部数据包括参数.局部变量. 局部变量包括静态变量.临时变量. 1)功能(FC)变量介绍 FC没有背景数据块,即FC不能使用静态变量,可以使用临时变量.输入.输出.I/O参数以指向实参的指针形式存储在操作系统为参数传递而保留的额外空间中. 2)功能块(FB)变量介绍 FB除了临时变量外,所有参数的存储空间都在背景数

西门子PLC学习笔记十-(计数器)

S7-300/400的计数器一般占两个字节,是16位的.CPU最多可以使用64~512个计数器,计数器地址编号为C0~C511 1.S_CUD(加减计数器) 加减计数器波形图: 2.S_CU(加计数器) 3.S_CD(减计数器) 4.三种计数器对应的线圈表示 1)基本线圈指令 2)加计数指令的实现 3)减计数指令实现: 4)加减计数指令实现: 5.计数器应用小例子 下面程序实现的是:当按下按钮3此,输出高电平:当按下7次,输出低电平

angular学习笔记(十九)

本篇主要介绍angular使用指令修改DOM: 使用angular指令可以自己扩展html语法,还可以做很多自定义的事情.在后面会专门讲解这一块的知识,这一篇只是起到了解入门的作用. 与控制器,过滤器,服务,一样,可以通过模块实例的directive的方法来创建指令: var someModule = angular.module('SomeModule',[]); someModule.directive('directiveName',function(){ return { link: f

西门子PLC学习笔记二-(工作记录)

今天师傅给讲了讲做自己主动化控制的总体的思路,特进行一下记录,做个备忘. 1.需求分析 本次的项目是对楼宇循环供水的控制,整个项目须要完毕压力.压差.温度等的获取及显示.同一时候完毕电机的控制. 2.设计 使用西门子的Step7工具进行梯形图编程,完毕自己主动化控制. 使用西门子的WinCC5.5进行自己主动化人机界面的设计实现. 3.Step7进行编程的步骤 1)进行硬件组态 因为西门子的设备型号已经选定好,故依据实物的型号,先进行硬件组态,组态结果图例如以下: 注: 1.本图需和现场的实物连

西门子PLC学习笔记十三-(算术运算指令与控制指令)

今天在写一篇PLC的学习笔记,本篇将介绍PLC最基本的运算指令与控制指令,本篇将直接上截图. 1.基本算数运算指令 1)整数运算 2)长整数运算 3)实数运算 . STL编程示例(16位整数的算术运算) L IW10 //将输入字IW10装入累加器1的低字 L MW12 //将累加器1低字中的内容装入到累加器2的低字 //将存储字MW12装入累加器1的低字 +I //将累加器2低字和累加器1低字相加,结果保存到累加器1的低字中 +68 //将累加器1的低字中的内容加上常数68,结果保存到累加器1