目录
一、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编程中有多种类型,其中最常见的包括:
-
程序块(OB,Organization Block):程序块是组织程序的基本单元,用于编写和执行PLC的控制逻辑。程序块按照特定的规则和要求编写,如主程序块(OB1)、副程序块(SFB)、中断程序块(OBi)、循环程序块(OBx)和系统程序块(OBD)等等。
-
函数块(FC,Function Block):函数块是一种可重用的程序段,包含输入、输出和中间处理部分。函数块通常用于对某个特定数据类型进行处理或一个特定的功能操作。
-
数据块(DB,Data Block):数据块是一个具有特定数据格式的数据存储区域。数据块中可以存储PLC程序使用的各种数据类型,如输入和输出数据、控制参数、控制算法参数等。
-
技术块(TB,Technological Block):技术块是一种特定的程序部分,用于描述和管理生产过程中的特定技术流程、工艺参数等信息。
块的作用在于将PLC程序划分为多个逻辑上独立的模块,使编程更加容易和灵活。通过合理的使用块,程序的逻辑和功能可以被分解为不同的部分,在编写和调试PLC程序时可以更加高效和灵活地开发控制逻辑,提高程序的可读性和可维护性。此外,块的使用也可以提高PLC程序的重用性,减少重复编写相似代码的工作量。
1.3 不同块之间的相互调用关系
OS-> OB -> FB -> FC -> DB
1.4 OB、FC、FB和DB
在PLC(可编程逻辑控制器)编程中,OB、FC、FB和DB是常见的缩写词,分别代表不同的概念和功能:
-
OB(Organization Block):OB是组织块的意思,在PLC编程中表示一个程序块,用于编写和执行PLC的控制逻辑。OB包括各种类型,如主程序块(OB1)、中断程序块(OBi)、循环程序块(OBx)等,根据其不同的类型和执行规则,在PLC程序中有不同的作用和触发条件。
-
FC(Function):FC表示函数块,是PLC中的一种可重用程序段,通常用于封装和实现某个特定功能或算法。FC通常有输入和输出,通过参数传递来实现对输入数据的处理,并返回处理结果或更新相关的输出数据。函数块可以在PLC程序中被调用和重复使用。
-
FB(Function Block):FB表示功能块,也是PLC中的一种可重用程序段。与函数块不同的是,功能块不仅包含输入和输出,还具有内部的数据存储区域,可以通过内部数据交换实现数据处理和逻辑控制。功能块通常使用图形化的可视化编程工具进行编写和调用。
-
DB(Data Block):DB表示数据块,是PLC中用于存储数据的一种特定数据结构。数据块常用于存储输入、输出数据、控制参数、算法参数等,可以在PLC程序中被访问和修改。通过合理使用数据块,可以实现数据的集中管理和重复使用。
综上所述,OB、FC、FB和DB在PLC编程中分别代表组织块、函数块、功能块和数据块,它们在PLC程序中有不同的作用和功能。工程师们可以根据实际需求,合理选择和使用这些程序块来实现PLC的控制逻辑和数据管理。
1.5 数据块中的数据类型
在西门子PLC编程中,常见的数据类型包括:
-
位(Bool):用于表示开关状态,取值为0或1。
-
字节(Byte):用于存储8位二进制数据。
-
字(Word):用于存储16位二进制数据。
-
双字(Double Word):用于存储32位二进制数据。
-
整数(Int):用于存储带符号的16位整数。
-
长整数(DInt):用于存储带符号的32位整数。
-
浮点数(Real):用于存储单精度浮点数,通常用于表示实数。
-
字符串(String):用于存储文本数据,可以包含多个字符。
-
定时器(Timer):用于实现定时功能,可以设置计时、启动和停止定时器。
-
计数器(Counter):用于实现计数功能,可以设置计数数值、启动和停止计数器。
-
用户自定义类型(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)的作用和重要性:
-
分解复杂程序:PLC控制程序可能非常复杂,包含大量的逻辑和功能。使用程序块可以将整个程序分解成小块,每个块负责特定的功能或任务。这样可以降低程序的复杂性,使其更易于编写、调试和维护。
-
模块化编程:每个程序块都可以看作一个独立的模块,它可以在程序中多次使用。这种模块化的设计能够提高代码的重用性,减少重复编写相似代码的工作量。
-
易于调试和故障排除:当发生问题时,程序块使得定位故障变得更加容易。通过每个程序块的调试和测试,可以快速定位问题并进行故障排除,而不必检查整个程序。
-
提高程序可读性:使用程序块将程序逻辑划分为不同部分,可以提高程序的可读性。每个程序块都有特定的用途和功能,使得代码更易于理解。
-
灵活的程序控制:PLC通常需要根据不同的条件和事件来执行不同的操作。通过程序块的使用,可以灵活地控制程序的执行流程,根据需要调用或跳过特定的程序块。
-
便于维护和修改:程序块的使用使得程序的维护和修改变得更加容易。当需要修改程序时,只需修改特定的程序块而无需修改整个程序。这样可以减少对其他部分的影响,并降低引入新错误的风险。
总而言之,程序块(OB)在PLC编程中起到了组织程序、提高可读性、减少重复性工作、便于调试和故障排除等重要作用。
2.3 PLC有哪些程序块
PLC 中的程序块(OB)通常包括以下几种类型:
-
主程序块(OB1)-- 主程序:主程序块是 PLC 中最常用的程序块。它负责 PLC 的控制逻辑和功能,包括输入信号的读取、输出信号的控制、数据处理以及各种控制算法的执行等。
-
副程序块(SFB)-- 功能库:副程序块用于完成各种常用的功能模块化程序,如数学计算、通信协议处理、定时器/计数器等。这些功能模块可以在程序中多次被调用。
-
中断程序块(OBi)-- 中断处理程序:中断程序块是在特定事件发生时被触发执行的程序块,例如硬件中断、通信中断等。中断程序块通常用于实时响应特定的事件。
-
循环程序块(OBx)-- 定时中断程序:循环程序块是周期性执行的程序块,它可以在特定的时间间隔或者循环次数内被触发执行。
-
系统程序块(OBD)-- 系统程序:系统程序块是用于系统特定的功能和操作,例如 PLC 的启动和停止,系统错误处理等。
每个程序块(OB)在 PLC 编程中具有特定的执行顺序和规则,可以在 PLC 的编程软件中根据需要进行编写和配置。编写程序块时需要遵守特定的编程规范和语法,确保程序的正确性和可靠性。
通过合理使用不同类型的程序块(OB),可以将 PLC 的控制逻辑分解为不同模块,提高程序的可读性、可维护性和可重用性。这样,在编写 PLC 控制程序时可以更加灵活、高效地开发和调试控制逻辑。
2.4 如何使用程序块 - OB块的执行顺序和规则
在PLC(可编程逻辑控制器)编程中,使用程序块(OB,Organization Block)需要遵守特定的执行顺序和规则。以下是一般情况下使用程序块的执行顺序和一些常见的规则:
-
主程序块(OB1)的执行顺序:主程序块(OB1)是PLC程序中的入口点,因此它的执行顺序是最高优先级的。在PLC系统启动时,OB1会首先执行。主程序块可以包含整个PLC程序的核心逻辑和功能。
-
副程序块(SFB)的执行顺序:副程序块(SFB)是一种常用的功能模块,可以重复调用。SFB通常在主程序块(OB1)的执行过程中根据需要调用。副程序块在被调用时会执行相应的功能,然后返回到主程序块继续执行。
-
中断程序块(OBi)的执行顺序:中断程序块(OBi)是在特定事件发生时被触发执行的程序块。中断事件可以是硬件中断、通信中断等。当中断事件发生时,PLC会中断当前正在执行的程序,转而执行相应的中断程序块(OBi)。
-
循环程序块(OBx)的执行顺序:循环程序块(OBx)是周期性执行的程序块。OBx的执行时间间隔可以通过配置进行设置,比如基于时间触发或者基于循环次数触发。OBx会在设定的时间间隔或者循环次数达到时,被触发执行。
-
系统程序块(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)都是可重用的程序段,但它们之间有一些区别:
-
输入输出方式不同:FC通常有输入和输出,它的输入和输出是由参数传递来实现的;而FB则具有内部的数据存储区域,可以通过数据存储区域进行内部数据交换,而不像FC需要通过参数进行传递。
-
编程方式不同:FC使用的是一种基于某种特定编程语言(如Ladder Diagram、Statement List等语言)的形式进行编程,它通常比较适合实现较为简单的算法和控制操作。而FB则通常使用图形化的可视化编程工具,如组态软件、PLCopen Editor等,它们提供了图形化的元件库,可以通过拖拽元件的方式来编写程序。
-
功能范围不同:FC通常用于针对一种简单的数据类型(如数字、布尔值、定时器等)进行操作和计算,它们通常处理数据对象的方法都很相似;而FB适合建模复杂的系统,可以通过组合一些元件和FB以及一些逻辑操作来实现更加复杂的算法。
-
内存使用不同:由于FC需要通过参数进行数据传递,因此它需要更多的内存来存储和传输数据,尤其是当数据量较大时;而FB则可以通过内部数据存储区域进行操作,因此可以更加节省内存资源。
-
场合不同:FC常见于数值计算、逻辑运算等仿真软件以及通用编译器中,并可以很方便地在程序中调用;而FB通常应用于控制系统的搭建、调试等场合,能够快速地实现PLC的控制逻辑。
综上所述,FB和FC在PLC编程中都是功能和模块的可重用部分,它们在输入输出方式、编程方式、功能范围、内存使用以及应用场合等方面存在一些不同。工程师们在选择FB和FC时,应该根据程序需求来合理选择。
2.8 PLC的多线程支持
备注:
循环中断:类似Linux操作系统中的定时中断程序。
硬件中断:类似Linux操作系统中的硬件中断服务器。
IO访问中断:类似Linux操作系统中的内核异常中断服务程序。
三、PLC 结构化逻辑编程
3.1 概述
PLC(可编程逻辑控制器)是一种用于自动化控制和工业生产的设备,编写PLC程序的目的是控制生产流程、实现工业自动化和提高生产效率。在PLC编程中,结构化逻辑编程是一种常见的编程方式,其特点是模块化、分层和可读性强,有助于PLC程序的编写和维护。
PLC结构化逻辑编程包括以下几个方面:
-
模块化编程:将整个PLC程序划分为多个逻辑上独立的模块,每个模块又可以进一步划分为多个子模块。每个模块和子模块的功能应该单一、清晰、明确。这种方式有利于程序的模块化管理和代码开发的重用。
-
分层编程:将PLC程序分为不同的层次结构(如控制层、运行层、监视层等),每层次结构的功能应该独立、清晰、明确。这种方式有利于程序的分层管理、调试和维护。
-
使用结构化方法:在PLC编程中,使用结构化方法可以显著提高程序的可读性和可维护性。使用结构化语言(如Ladder Diagram、Statement List、Structured Text等)进行编程,可以使用循环、条件等控制结构,使代码更加紧凑、易于理解、调试、修改。
-
使用函数块(FB):Facebook公司开发的PLCopen是一种广泛使用的PLC程序编程规范。PLCopen规范中的函数块(FB)是模块化编程的重要组成部分,它们可以提高程序的可读性和可重用性。编写好的函数块可以在多个程序中重复使用,并可以被其他编写PLC程序的工程师调用。
-
使用数据块(DB):数据块是用于存储控制参数、运行状态、输入和输出数据等的一种数据结构。在PLC程序中,使用数据块可以实现参数和数据的集中存储管理,也可以实现数据的重复使用。
综上所述,PLC结构化逻辑编程是一种模块化、分层和结构化的编程方式。使用这种方式可以提高程序的可读性和可维护性,并且使程序更易于开发、管理和维护。
3.2 程序段与程序块OB
程序块OB和程序段是PLC程序设计中的重要组成部分。
程序段是用于实现具体的功能和逻辑的代码段,
而程序块OB则是用于管理和执行程序段的特殊程序段。
通过合理使用程序段和程序块OB,可以实现PLC程序的模块化、结构化和灵活控制。