PLC_博图系列☞FBD

news2025/1/11 2:44:53
头图

PLC_博图系列☞FBD

文章目录

  • PLC_博图系列☞FBD
    • 背景介绍
    • FBD
      • 优势
      • 局限性
    • FBD 元素

关键字: PLC西门子博图Siemens FBD

背景介绍

这是一篇关于PLC编程的文章,特别是关于西门子的博图软件。我并不是专业的PLC编程人员,也不懂电路,所以如果你希望从这里学习PLC编程技术,可能会有些失望。然而,因为工作需要,我开始了解PLC编程,特别是西门子的博图软件,并记录了这些经验。随着我国工业4.0的推进,相信会有更多的人从事类似的工作。如果这篇文章能对你有所帮助,欢迎点赞关注我❥(^_-)。

FBD

功能区块图(Function Block Diagram,简称FBD)是可用于可编程逻辑控制器(Programmable Logic Controller,简称PLC)设计的图形语言。它可以用函数的输入及输出来描述函数。函数是由许多基本模组集合而成,在图上会以一区块表示,各函数的输入及输出是由区块之间的连接线来连接。

FBD将各种功能块进行连接,实现所需的控制功能,它是一种图形化的高级编程语言,程序组织的本体表示为功能块之间的链接。FBD采用过程元素(功能块)和连线代表数据的信号流,类似电子线路图,图形化符号(box)代表函数或功能块,通过图形化的 I/O 连接线段来给它分配输入输出信号的布尔变量值。

FBD的编程类似于现代面向对象编程的结构化特点,符合代码反复使用的要求,可以广泛的使用在以PLC为基础的各种控制系统之中。由于FBD语言是一种受限制的图形化面向机器语言表示形式,这就表示一些IL编程语言可以由 FBD 来表示。

总的来说,FBD是一种非常直观且逻辑清晰的编程语言,被广泛应用在电气控制的闭环系统中。在PLC编程中,如果你想将程序和数据打包在一起使用,那就可以选择使用FBD。

优势

在PLC控制系统中,功能块图(Function Block Diagram,简称FBD)具有以下优势:

  • 直观性:FBD是一种图形化的编程语言,通过连接各种功能块来实现所需的控制功能。这种方式使得程序的结构和数据流非常直观,便于理解和调试。
  • 易学性:FBD的学习和使用相对简单,因为它的设计理念是将复杂的控制逻辑分解为一系列简单的功能块。
  • 可重用性:在FBD中,一旦定义了一个功能块,就可以在多个地方重复使用,这大大提高了代码的可重用性。这也使得代码的维护和修改变得更加容易。
  • 模块化:FBD支持模块化编程,可以将复杂的控制逻辑分解为一系列独立的功能块。这种方式不仅使得程序结构更清晰,也有利于团队协作。
  • 标准化:FBD是IEC 61131-3标准中定义的五种PLC编程语言之一。这意味着使用FBD编写的程序具有良好的可移植性,可以在符合IEC 61131-3标准的各种PLC系统中运行。
  • 适应性:FBD非常适合描述复杂的控制逻辑,特别是那些涉及到大量并行和顺序控制的系统。此外,FBD也非常适合实现批处理控制概念。

总的来说,FBD在PLC控制系统中的优势主要体现在其直观性、易学性、可重用性、模块化、标准化和适应性等方面。

局限性

  • 存储空间:每种功能块都需要占用程序存储空间。这可能会在资源有限的系统中成为问题,特别是当使用大量功能块时。
  • 程序执行周期:每个功能块的执行都会增加程序的执行周期。这可能会影响到系统的实时性能,特别是在需要快速响应的应用中。
  • 复杂性:虽然FBD可以使复杂的控制逻辑更易于理解和管理,但是在非常复杂的系统中,FBD可能会变得难以管理和理解。
  • 学习曲线:虽然FBD相对直观,但是对于没有电气或控制背景的人来说,学习和理解FBD可能需要一些时间。
  • 依赖性:FBD通常依赖于特定的PLC系统和编程环境。这可能会限制代码的可移植性,特别是在需要在不同的PLC系统之间共享代码的情况下。

FBD 元素

FBD 程序由通过二进制信号流链接的各个元素组成。 必须给多数程序元素提供变量。

从左到右对 FBD 程序段进行编程。

例如,下图所示为一个 FBD 程序段的元素:

image-20240215205102641

  1. 二进制函数
  2. 标准函数框
  3. 复杂函数框

二进制函数

可以使用二进制函数查询二进制操作数和组合这些操作数的信号状态。 下列运算是二进制函数的示例: “AND”(与运算)、“OR”(或运算)和“EXCLUSIVE OR”(异或运算)。

标准函数框:

可以在程序中使用标准函数框控制二进制操作数,执行 RLO 沿检测或执行跳转函数。 标准函数框通常只有一个输入。

复杂函数框

复杂函数框代表具有复杂函数的程序元素。 但空函数框除外。 可以使用空函数框作为占位符,在其中可以选择所需的指令。

在 FBD 程序中可以使用以下类型的函数框:

  • 无 EN/ENO 机制的复杂函数框:
    函数框的执行与函数框输入的信号状态无关。无法查询处理过程中的错误状态。
  • 具有 EN/ENO 机制的复杂函数框:
    只有使能输入“EN”的信号状态为“1”时才执行函数框。如果正确处理了该函数框,则“ENO”使能输出的信号状态为“1”。如果处理期间出错,则复位“ENO”输出。
    如果未互连 EN 使能输入,则始终执行函数框。

代码块的调用在程序段中也显示为具有 EN/ENO 机制的复杂函数框。


博客签名2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1451474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

1036 跟奥巴马一起编程 (15)

美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统。2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个正方形。现在…

【JavaEE】_文件与IO

目录 1.文件概述 1.1 文件的概念 1.2 文件的存储 1.3 文件的分类 1.4 目录结构 1.5 文件操作 1.5.1 文件系统操作 1.5.2 文件内容操作 2. Java文件系统操作 2.1 File类所处的包 2.2 构造方法 2.3 方法 2.3.1 与文件路径、文件名有关的方法 2.3.2 文件是否存在与普…

c++之function和bind详解-SurfaceFlinger学习必备语法基础

背景 C中的function和bind是为了更方便地进行函数对象的封装和调用而设计的,在SurfaceFlinger源码中也是有很多使用部分。 比如分析Vsync相关源码时候有相关回调时候 可以看到这里的mRegistration就有个参数是 std::bind,怎么这里就可以进行回调呢? 所…

代码随想录 Leetcode860. 柠檬水找零

题目&#xff1a; 代码(首刷自解 2024年2月15日&#xff09;&#xff1a; class Solution { public:bool lemonadeChange(vector<int>& bills) {vector<int> leftchange(2,0);//leftchange[0]代表5元数量&#xff0c;1代表10for (int i 0; i < bills.size…

最小生成树(Kruskal算法及相关例题)

1.Kruskal算法概念以及基本思路 &#xff08;1&#xff09;概念&#xff1a; 克鲁斯卡尔算法是求连通网的最小生成树的另一种方法。它的时间复杂度为O&#xff08;ElogE&#xff09;(E是图G的边的总数)&#xff0c;适合于求边稀疏的网的最小生成树 。 其基本思想是&#xff…

OS文件管理

文件管理 文件的属性 文件所包含的属性&#xff1a; 文件名&#xff1a;由创建文件的用户决定文件名&#xff0c;主要为了方便用户找到文件&#xff0c;同一目录下不允许有重名文件。标识符&#xff1a;一个系统内的各文件标识符唯一&#xff0c;对用户来说毫无可读性&#…

2.12:C语言测试题

1.段错误&#xff1a;申请堆区内存未返回&#xff0c;str指向NULL 2.段错误&#xff1a;局部变量&#xff0c;本函数结束&#xff0c;p也释放 3.越界访问&#xff0c;可能正常输出hello&#xff0c;可能报错 4.可能段错误&#xff0c;释放后&#xff0c;str未指向NULL&#x…

CentOS7.9+Kubernetes1.29.2+Docker25.0.3高可用集群二进制部署

CentOS7.9Kubernetes1.29.2Docker25.0.3高可用集群二进制部署 Kubernetes高可用集群&#xff08;Kubernetes1.29.2Docker25.0.3&#xff09;二进制部署二进制软件部署flannel v0.22.3网络&#xff0c;使用的etcd是版本3&#xff0c;与之前使用版本2不同。查看官方文档进行了解…

The method toList() is undefined for the type Stream

The method toList() is undefined for the type Stream &#xff08;JDK16&#xff09; default List<T> toList() { return (List<T>) Collections.unmodifiableList(new ArrayList<>(Arrays.asList(this.toArray()))); }

C语言strstr函数

简介 strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是&#xff0c;则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串&#xff1b;否则&#xff0c;返回NULL。 实验 #include "stdio.h" #include "string.h"c…

2.14:二维数组、非函数实现strcat、strcmp、strcpy、strlen

1.编程实现二维数组的杨辉三角 程序代码&#xff1a; 1 #include<stdio.h>2 #include<string.h>3 #include<stdlib.h>4 int main(int argc, const char *argv[])5 {6 int n;7 printf("please enter n:");8 scanf("%d",&…

2024/02/13

21 、C 22 、D 23、B 如果5先出栈那么1&#xff0c;2&#xff0c;3&#xff0c;4就已经入栈了&#xff0c;5出后4出&#xff0c;1要出栈必须先让3&#xff0c;2出栈&#xff0c;所以 不可能输出B 24、10&#xff0c;12&#xff0c;120 25、2&#xff0c;5 26、段错…

2024.02.12作业

1. 段错误 2. 段错误 3. hello 4. world 5. int a; int* a; int **a; int a[10]; int* a[10]; int(* a)[10]; int* a(int); int (*a[10])(int); 6. 6&#xff1b; 2&#xff1b; 2 7. 2 8. 2 9. b 10. a 11. a 12. c 13. b 14. c 15. a 16. c 17. b 18. a 19…

消息中间件特点

1.  消息中间件概念 消息中间件是消息传递的过程中保存消息的容器。 主要目的&#xff1a;提供路由并保证消息的传递&#xff1b;如果发送消息时接受者不可用&#xff0c;消息队列会保留信息&#xff0c;直到可以成功传递为止。 消息中间件保存消息也是有期限的。 2.  消息…

JVM工作原理与实战(三十八):JIT即时编译器原理

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、JIT即时编译器 二、HotSpot中的JIT编译器 三、JIT优化技术 1.方法内联 2.逃逸分析 四、JIT优化建议 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节…

[计算机网络]---序列化和反序列化

前言 作者&#xff1a;小蜗牛向前冲 名言&#xff1a;我可以接受失败&#xff0c;但我不能接受放弃 如果觉的博主的文章还不错的话&#xff0c;还请点赞&#xff0c;收藏&#xff0c;关注&#x1f440;支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、再谈协议…

《VulnHub》GoldenEye:1

title: 《VulnHub》GoldenEye&#xff1a;1 date: 2024-02-16 14:53:49 updated: 2024-02-16 15:08:49 categories: WriteUp&#xff1a;Cyber-Range excerpt: 主机发现、目标信息扫描、源码 js 文件泄露敏感信息、hydra 爆破邮件服务&#xff08;pop3&#xff09;、邮件泄露敏…

成考怎么搜题答案?9个受欢迎的搜题分享了 #微信#职场发展

大学生应该养成良好的时间管理习惯&#xff0c;合理分配学习、休息和娱乐的时间&#xff0c;避免压力过大或时间浪费。 1.Forest专注森林 Forest是一款专注与时间管理应用。当你需要专注于学习或工作时&#xff0c;你可以在Forest应用中种植一棵虚拟树&#xff0c;设定一段时…

幻兽帕鲁——游戏优化【腾讯云服务器联机版本】

幻兽帕鲁8人以内联机&#xff0c;闭眼参加【腾讯云幻兽帕鲁专属游戏活动】4核16G12兆 购买腾讯云服务器后&#xff0c;游戏一键部署&#xff0c;联机流程参照这个博文 【10秒开服】雾锁王国全自动部署教程-CSDN博客 幻兽帕鲁——游戏优化 1.设置虚拟内存 第一步&#xff1a…

selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘

Selenium更新到 4.x版本后&#xff0c;以前的一些常用的代码的语法发生了改变 from selenium import webdriver browser webdriver.Chrome() browser.get(https://www.baidu.com) input browser.find_element_by_id(By.ID,kw) input.send_keys(Python)目标&#xff1a;希望通…