[工业自动化-19]:西门子S7-15xxx编程 - 软件编程 - PLC程序块、组织块OB与PLC多线程原理、OB、FC、FB、DB

目录

一、PLC的块的种类

1.1 什么是块

1.2 块的种类

1.3 不同块之间的相互调用关系

1.4 OB、FC、FB和DB

二、PLC程序组织块OB

2.1 什么是程序块OB

2.2 为什么需要程序块OB

2.3 PLC有哪些程序块

2.4 如何使用程序块 - OB块的执行顺序和规则

2.5 PLC用户程序主函数(主循环)

2.6 PLC初始化函数

2.7 PLC函数调用支持

2.8 PLC的多线程支持

三、PLC 结构化逻辑编程

3.1 概述

3.2 程序段与程序块OB


一、PLC的块的种类

1.1 什么是块

在PLC(可编程逻辑控制器)编程中,块(Block)是组织程序(Organization Program)的基本单元。

块是一个逻辑上的概念,通常包含一系列的指令或语句,用于实现特定的功能、算法或任务。

块可以看作是一个相对独立的程序部分,可以在整个PLC程序中重复使用。

1.2 块的种类

块在PLC编程中有多种类型,其中最常见的包括:

  1. 程序块(OB,Organization Block):程序块是组织程序的基本单元,用于编写和执行PLC的控制逻辑。程序块按照特定的规则和要求编写,如主程序块(OB1)、副程序块(SFB)、中断程序块(OBi)、循环程序块(OBx)和系统程序块(OBD)等等。

  2. 函数块(FC,Function Block):函数块是一种可重用的程序段,包含输入、输出和中间处理部分。函数块通常用于对某个特定数据类型进行处理或一个特定的功能操作。

  3. 数据块(DB,Data Block):数据块是一个具有特定数据格式的数据存储区域。数据块中可以存储PLC程序使用的各种数据类型,如输入和输出数据、控制参数、控制算法参数等。

  4. 技术块(TB,Technological Block):技术块是一种特定的程序部分,用于描述和管理生产过程中的特定技术流程、工艺参数等信息。

块的作用在于将PLC程序划分为多个逻辑上独立的模块,使编程更加容易和灵活。通过合理的使用块,程序的逻辑和功能可以被分解为不同的部分,在编写和调试PLC程序时可以更加高效和灵活地开发控制逻辑,提高程序的可读性和可维护性。此外,块的使用也可以提高PLC程序的重用性,减少重复编写相似代码的工作量。

1.3 不同块之间的相互调用关系

OS-> OB -> FB -> FC -> DB

1.4 OB、FC、FB和DB

在PLC(可编程逻辑控制器)编程中,OB、FC、FB和DB是常见的缩写词,分别代表不同的概念和功能:

  1. OB(Organization Block):OB是组织块的意思,在PLC编程中表示一个程序块,用于编写和执行PLC的控制逻辑。OB包括各种类型,如主程序块(OB1)、中断程序块(OBi)、循环程序块(OBx)等,根据其不同的类型和执行规则,在PLC程序中有不同的作用和触发条件。

  2. FC(Function):FC表示函数块,是PLC中的一种可重用程序段,通常用于封装和实现某个特定功能或算法。FC通常有输入和输出,通过参数传递来实现对输入数据的处理,并返回处理结果或更新相关的输出数据。函数块可以在PLC程序中被调用和重复使用。

  3. FB(Function Block):FB表示功能块,也是PLC中的一种可重用程序段。与函数块不同的是,功能块不仅包含输入和输出,还具有内部的数据存储区域,可以通过内部数据交换实现数据处理和逻辑控制。功能块通常使用图形化的可视化编程工具进行编写和调用。

  4. DB(Data Block):DB表示数据块,是PLC中用于存储数据的一种特定数据结构。数据块常用于存储输入、输出数据、控制参数、算法参数等,可以在PLC程序中被访问和修改。通过合理使用数据块,可以实现数据的集中管理和重复使用。

综上所述,OB、FC、FB和DB在PLC编程中分别代表组织块、函数块、功能块和数据块,它们在PLC程序中有不同的作用和功能。工程师们可以根据实际需求,合理选择和使用这些程序块来实现PLC的控制逻辑和数据管理。

1.5 数据块中的数据类型

在西门子PLC编程中,常见的数据类型包括:

  1. 位(Bool):用于表示开关状态,取值为0或1。

  2. 字节(Byte):用于存储8位二进制数据。

  3. 字(Word):用于存储16位二进制数据。

  4. 双字(Double Word):用于存储32位二进制数据。

  5. 整数(Int):用于存储带符号的16位整数。

  6. 长整数(DInt):用于存储带符号的32位整数。

  7. 浮点数(Real):用于存储单精度浮点数,通常用于表示实数。

  8. 字符串(String):用于存储文本数据,可以包含多个字符。

  9. 定时器(Timer):用于实现定时功能,可以设置计时、启动和停止定时器。

  10. 计数器(Counter):用于实现计数功能,可以设置计数数值、启动和停止计数器。

  11. 用户自定义类型(User-Defined Types):可以根据需求通过结构体或联合体等方式定义自己的数据类型。

这些数据类型在西门子PLC编程中被广泛应用,开发人员可以根据具体的应用需求选择适合的数据类型来存储和处理数据。每个数据类型都有其特定的用途和限制,了解这些数据类型的特点和用法对于正确使用PLC编程非常重要。

二、PLC程序组织块OB

2.1 什么是程序块OB

在PLC(可编程逻辑控制器)编程中,程序块(OB,Organization Block)是组织程序(Organization Program)的基本单元,用于编写和执行 PLC 的控制逻辑。

OB 是按照特定的规则和要求编写的一段程序代码

2.2 为什么需要程序块OB

程序块(OB,Organization Block)在PLC(可编程逻辑控制器)编程中起着重要的作用。

以下是一些程序块(OB)的作用和重要性:

  1. 分解复杂程序:PLC控制程序可能非常复杂,包含大量的逻辑和功能。使用程序块可以将整个程序分解成小块每个块负责特定的功能或任务。这样可以降低程序的复杂性,使其更易于编写、调试和维护。

  2. 模块化编程:每个程序块都可以看作一个独立的模块,它可以在程序中多次使用。这种模块化的设计能够提高代码的重用性,减少重复编写相似代码的工作量

  3. 易于调试和故障排除:当发生问题时,程序块使得定位故障变得更加容易。通过每个程序块的调试和测试,可以快速定位问题并进行故障排除,而不必检查整个程序。

  4. 提高程序可读性:使用程序块将程序逻辑划分为不同部分,可以提高程序的可读性。每个程序块都有特定的用途和功能,使得代码更易于理解。

  5. 灵活的程序控制:PLC通常需要根据不同的条件和事件来执行不同的操作。通过程序块的使用,可以灵活地控制程序的执行流程,根据需要调用或跳过特定的程序块

  6. 便于维护和修改:程序块的使用使得程序的维护和修改变得更加容易。当需要修改程序时,只需修改特定的程序块而无需修改整个程序。这样可以减少对其他部分的影响,并降低引入新错误的风险。

        总而言之,程序块(OB)在PLC编程中起到了组织程序、提高可读性、减少重复性工作、便于调试和故障排除等重要作用。

2.3 PLC有哪些程序块

PLC 中的程序块(OB)通常包括以下几种类型:

  1. 主程序块(OB1)-- 主程序:主程序块是 PLC 中最常用的程序块。它负责 PLC 的控制逻辑和功能,包括输入信号的读取、输出信号的控制、数据处理以及各种控制算法的执行等。

  2. 副程序块(SFB)-- 功能库:副程序块用于完成各种常用的功能模块化程序,如数学计算、通信协议处理、定时器/计数器等。这些功能模块可以在程序中多次被调用。

  3. 中断程序块(OBi)-- 中断处理程序:中断程序块是在特定事件发生时被触发执行的程序块,例如硬件中断、通信中断等。中断程序块通常用于实时响应特定的事件。

  4. 循环程序块(OBx)-- 定时中断程序:循环程序块是周期性执行的程序块,它可以在特定的时间间隔或者循环次数内被触发执行。

  5. 系统程序块(OBD)-- 系统程序:系统程序块是用于系统特定的功能和操作,例如 PLC 的启动和停止,系统错误处理等。

每个程序块(OB)在 PLC 编程中具有特定的执行顺序和规则,可以在 PLC 的编程软件中根据需要进行编写和配置。编写程序块时需要遵守特定的编程规范和语法,确保程序的正确性和可靠性。

通过合理使用不同类型的程序块(OB),可以将 PLC 的控制逻辑分解为不同模块,提高程序的可读性、可维护性和可重用性。这样,在编写 PLC 控制程序时可以更加灵活、高效地开发和调试控制逻辑。

2.4 如何使用程序块 - OB块的执行顺序和规则

在PLC(可编程逻辑控制器)编程中,使用程序块(OB,Organization Block)需要遵守特定的执行顺序和规则。以下是一般情况下使用程序块的执行顺序和一些常见的规则:

  1. 主程序块(OB1)的执行顺序:主程序块(OB1)是PLC程序中的入口点,因此它的执行顺序是最高优先级的。在PLC系统启动时,OB1会首先执行。主程序块可以包含整个PLC程序的核心逻辑和功能。

  2. 副程序块(SFB)的执行顺序:副程序块(SFB)是一种常用的功能模块,可以重复调用。SFB通常在主程序块(OB1)的执行过程中根据需要调用。副程序块在被调用时会执行相应的功能,然后返回到主程序块继续执行。

  3. 中断程序块(OBi)的执行顺序:中断程序块(OBi)是在特定事件发生时被触发执行的程序块。中断事件可以是硬件中断、通信中断等。当中断事件发生时,PLC会中断当前正在执行的程序,转而执行相应的中断程序块(OBi)。

  4. 循环程序块(OBx)的执行顺序:循环程序块(OBx)是周期性执行的程序块。OBx的执行时间间隔可以通过配置进行设置,比如基于时间触发或者基于循环次数触发。OBx会在设定的时间间隔或者循环次数达到时,被触发执行

  5. 系统程序块(OBD)的执行顺序:系统程序块(OBD)是用于系统特定的功能和操作,如PLC的启动和停止、系统错误处理等。系统程序块的执行顺序可能会有特定的要求和规则,需要根据具体的PLC和编程平台进行配置和使用。

在PLC编程中,程序块(OB)的执行顺序和规则可能因具体的PLC品牌、模型和编程软件而有所不同。因此,在进行PLC编程时,应仔细阅读和遵守相关的PLC文档和编程手册,了解特定PLC系统的程序块使用规则。

另外,值得一提的是,程序块的具体功能和执行顺序可以通过参数设置和编程软件中的配置进行调整和修改。这样可以根据程序的具体需求和逻辑来定制程序块的执行顺序,以满足特定的控制要求。

2.5 PLC用户程序主函数(主循环)

2.6 PLC初始化函数

2.7 PLC函数调用支持

FB:多个函数的程序块,拥有块内的全局变量,也称为背景数据区,背景数据区的数据供程序块内部的不同函数之间进行数据交互与通信。

FC:类似C语言函数,使用局部变量进行通信。

在PLC(可编程逻辑控制器)编程中,FB(Function Block)和FC(Function)都是可重用的程序段,但它们之间有一些区别:

  1. 输入输出方式不同:FC通常有输入和输出,它的输入和输出是由参数传递来实现的;而FB则具有内部的数据存储区域,可以通过数据存储区域进行内部数据交换,而不像FC需要通过参数进行传递。

  2. 编程方式不同:FC使用的是一种基于某种特定编程语言(如Ladder Diagram、Statement List等语言)的形式进行编程,它通常比较适合实现较为简单的算法和控制操作。而FB则通常使用图形化的可视化编程工具,如组态软件、PLCopen Editor等,它们提供了图形化的元件库,可以通过拖拽元件的方式来编写程序。

  3. 功能范围不同:FC通常用于针对一种简单的数据类型(如数字、布尔值、定时器等)进行操作和计算,它们通常处理数据对象的方法都很相似;而FB适合建模复杂的系统,可以通过组合一些元件和FB以及一些逻辑操作来实现更加复杂的算法。

  4. 内存使用不同:由于FC需要通过参数进行数据传递,因此它需要更多的内存来存储和传输数据,尤其是当数据量较大时;而FB则可以通过内部数据存储区域进行操作,因此可以更加节省内存资源。

  5. 场合不同:FC常见于数值计算、逻辑运算等仿真软件以及通用编译器中,并可以很方便地在程序中调用;而FB通常应用于控制系统的搭建、调试等场合,能够快速地实现PLC的控制逻辑。

综上所述,FB和FC在PLC编程中都是功能和模块的可重用部分,它们在输入输出方式、编程方式、功能范围、内存使用以及应用场合等方面存在一些不同。工程师们在选择FB和FC时,应该根据程序需求来合理选择。

2.8 PLC的多线程支持

备注:

循环中断:类似Linux操作系统中的定时中断程序。

硬件中断:类似Linux操作系统中的硬件中断服务器。

IO访问中断:类似Linux操作系统中的内核异常中断服务程序。

三、PLC 结构化逻辑编程

3.1 概述

PLC(可编程逻辑控制器)是一种用于自动化控制和工业生产的设备,编写PLC程序的目的是控制生产流程、实现工业自动化和提高生产效率。在PLC编程中,结构化逻辑编程是一种常见的编程方式,其特点是模块化、分层和可读性强,有助于PLC程序的编写和维护。

PLC结构化逻辑编程包括以下几个方面:

  1. 模块化编程:将整个PLC程序划分为多个逻辑上独立的模块,每个模块又可以进一步划分为多个子模块。每个模块和子模块的功能应该单一、清晰、明确。这种方式有利于程序的模块化管理和代码开发的重用。

  2. 分层编程:将PLC程序分为不同的层次结构(如控制层、运行层、监视层等),每层次结构的功能应该独立、清晰、明确。这种方式有利于程序的分层管理、调试和维护。

  3. 使用结构化方法:在PLC编程中,使用结构化方法可以显著提高程序的可读性和可维护性。使用结构化语言(如Ladder Diagram、Statement List、Structured Text等)进行编程,可以使用循环、条件等控制结构,使代码更加紧凑、易于理解、调试、修改。

  4. 使用函数块(FB):Facebook公司开发的PLCopen是一种广泛使用的PLC程序编程规范。PLCopen规范中的函数块(FB)是模块化编程的重要组成部分,它们可以提高程序的可读性和可重用性。编写好的函数块可以在多个程序中重复使用,并可以被其他编写PLC程序的工程师调用。

  5. 使用数据块(DB):数据块是用于存储控制参数、运行状态、输入和输出数据等的一种数据结构。在PLC程序中,使用数据块可以实现参数和数据的集中存储管理,也可以实现数据的重复使用。

综上所述,PLC结构化逻辑编程是一种模块化、分层和结构化的编程方式。使用这种方式可以提高程序的可读性和可维护性,并且使程序更易于开发、管理和维护。

3.2 程序段与程序块OB

程序块OB和程序段是PLC程序设计中的重要组成部分。

程序段是用于实现具体的功能和逻辑的代码段,

而程序块OB则是用于管理和执行程序段的特殊程序段。

通过合理使用程序段和程序块OB,可以实现PLC程序的模块化、结构化和灵活控制。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IntelliJ IDEA 安装 GitHub Copilot插件 (最新)

注意: GitHub Copilot 插件对IDEA最低版本要求是2021.2,建议直接用2023.3,一次到位反正后续要升级的。 各个版本的依赖关系,请参照: ##在线安装: 打开 IntelliJ IDEA扩展商店,输入 "Git…

Js 保留关键字

JavaScript 关键字用于标识要执行的操作,和其他任何编程语言一样,JavaScript 保留了一些关键字为自己所用;这些关键字有些在目前的版本中可能没有使用,但在以后 JavaScript 扩展中会用到。 以下是JS中最重要的保留关键字&#xf…

element 周选择器el-date-picker

2023.11.13今天我学习了在使用element 周选择器的时候&#xff0c;我们会发现默认的时间选择为星期日到下一个星期一&#xff0c;如图&#xff1a; 我们需要改成显示星期一到星期天&#xff0c;只需要加一行代码&#xff1a;picker-options <el-date-pickertype"week&…

【反编译系列】一、反编译 .so 文件(IDA Pro)

文章目录 【反编译系列】一、反编译 .so 文件&#xff08;IDA Pro&#xff09;1. 介绍2. 反编译Reference 【反编译系列】一、反编译 .so 文件&#xff08;IDA Pro&#xff09; 1. 介绍 .so 文件是共享对象文件&#xff08;Shared Object file&#xff09;的一种形式&#xf…

智慧化城市内涝的预警,万宾科技内涝积水监测仪

随着城市化进程的加速&#xff0c;伴随的是城市内涝问题日益凸显。频繁的暴雨和积水给市民的生活带来了诸多不便&#xff0c;也给城市的基础设施带来了巨大压力。如何解决这一问题&#xff0c;成为智慧城市建设的重要课题和政府管理的工作主题&#xff0c;只要内涝问题得到缓解…

时间序列预测实战(十五)PyTorch实现GRU模型长期预测并可视化结果

往期回顾&#xff1a;时间序列预测专栏——包含上百种时间序列模型带你从入门到精通时间序列预测 一、本文介绍 本文讲解的实战内容是GRU(门控循环单元)&#xff0c;本文的实战内容通过时间序列领域最经典的数据集——电力负荷数据集为例&#xff0c;深入的了解GRU的基本原理和…

HCIE-灾备技术和安全服务

灾备技术 灾备包含两个概念&#xff1a;容灾、备份 备份是为了保证数据的完整性&#xff0c;数据不丢失。全量备份、增量备份&#xff0c;备份数据还原。 容灾是为了保证业务的连续性&#xff0c;尽可能不断业务。 快照&#xff1a;保存的不是底层块数据&#xff0c;保存的是逻…

list复制出新的list后修改元素,也更改了旧的list?

例子 addAll() Testpublic void CopyListTest(){Student student Student.builder().id(1).name("张三").age(23).classId(1).build();Student student2 Student.builder().id(2).name("李四").age(22).classId(1).build();List<Student> student…

ElasticSearch简单操作

目录 1.单机部署 1.1 解压软件 1.2 创建软链接 1.3 修改配置文件 1.4 配置环境变量 1.5 后台启动 2.配置分词器 2.1 安装IK分词器 2.2 ES 扩展词汇 3.常用操作 3.1 索引 3.1.1 创建索引 3.1.2 查看所有索引 3.1.3 查看单个索引 3.1.4 删除索引 3.2.文档 3.2.1…

7.外部存储器,Cache,虚拟存储器

目录 一. 外部存储器 &#xff08;1&#xff09;磁盘存储器 1.磁盘的组成 2.磁盘的性能指标 3.磁盘地址 4.硬盘的工作过程 5.磁盘阵列 &#xff08;2&#xff09;固态硬盘&#xff08;SSD&#xff09; 二. Cache基本概念与原理 三. Cache和主存的映射方式 &#xff…

ChatGPT 4 OpenAI 数据分析动态可视化案例

数据分析可视化是一种将原始数据转化为图形或图像的方法,使得数据更易理解和解读。这种方法能够帮助我们更清楚地看到数据中的模式、趋势和关联性,从而更好地理解数据,并据此做出决策。 数据分析可视化的一些常见形式包括: 1. 折线图:常用于展示数据随时间的变化趋势。 …

ISP图像处理Pipeline

参考&#xff1a;1. 键盘摄影(七)——深入理解图像信号处理器 ISP2. Understanding ISP Pipeline3. ISP图像处理流程介绍4. ISP系统综述5. ISP(图像信号处理)之——图像处理概述6. ISP 框架7. ISP(图像信号处理)算法概述、工作原理、架构、处理流程8. ISP全流程简介9. ISP流程介…

如何保护电动汽车充电站免受网络攻击

根据国际能源署 (IEA) 的一份报告&#xff0c;如今&#xff0c;全球销售的汽车中约有七分之一是电动汽车。虽然这对环境来说是个好消息——有可能使占总碳排放量16% 的道路交通脱碳——但这也带来了针对电动汽车充电站的网络攻击日益严重的威胁。 电动汽车充电站、数据流网络和…

LLM大语言模型(典型ChatGPT)入门指南

文章目录 一、基础概念学习篇1.1 langchain视频学习笔记1.2 Finetune LLM视频学习笔记 二、实践篇2.1 预先下载模型&#xff1a;2.2 LangChain2.3 Colab demo2.3 text-generation-webui 三、国内项目实践langchain-chatchat 一、基础概念学习篇 1.1 langchain视频学习笔记 lan…

Day29力扣打卡

打卡记录 美丽塔 II&#xff08;前后缀分解 单调栈&#xff09; 链接 大佬的题解 class Solution:def maximumSumOfHeights(self, a: List[int]) -> int:n len(a)suf [0] * (n 1)st [n] # 哨兵s 0for i in range(n - 1, -1, -1):x a[i]while len(st) > 1 and …

【Liunx】DHCP服务

【Liunx】DHCP服务 DHCP概述A.安装dhcpB.查看配置文件C.修改配置文件 DHCP概述 DHCP(Dynamic Host Configuration Protocol)i动态主机配置协议 DHCP是由Internet工作任务小组设计开发的&#xff0c;专门用于为TCP/IP网络中的计算机自动分配TCP/IP参数的协议。 口使用DHCP服务的…

Ps:通过显示大小了解图像的打印尺寸

在 Photoshop 中&#xff0c;如果想了解文档窗口中的图像打印出来之后的实质大小&#xff0c;只要知道两个数值即可。 第一个数值是图像分辨率&#xff08;也称“文档分辨率”&#xff09;的大小&#xff0c;可在Ps菜单&#xff1a;图像/图像大小 Image Size对话框中查询或设置…

cocosCreator 之内存管理和释放

版本&#xff1a; 3.4.0 语言&#xff1a; TypeScript 环境&#xff1a; Mac 回顾 前面有两篇博客说明了&#xff1a; cocosCreator 之 resources动态加载、预加载 讲述了静态引用资源&#xff0c;动态加载和预加载相关cocosCreator 之 Bundle 讲述了AssetManager关于对内置…

计算机毕业设计 基于SpringBoot的失踪人员信息发布与管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

芸鹰蓬飞:抖音投流以后还有自然流量吗?

随着抖音平台的普及&#xff0c;企业和个人纷纷加入到这个短视频的热潮中。然而&#xff0c;一旦投入抖音投流&#xff0c;是否还能依赖自然流量&#xff1f;这是许多用户和品牌关心的问题。本文将深入剖析这一话题&#xff0c;探讨抖音投流与自然流量之间的关系。 一、抖音投…