可编程逻辑控制器 / PLC — 核心问题与解答

自动化

可编程逻辑控制器(PLC)是工业自动化的核心,能够实现对机器和流程的精确控制与调节。它们在众多应用中兼具灵活性、可靠性和高效性。在我们的常见问题解答(FAQ)专区,您可以找到关于 PLC 的详细信息以及常见问题的解答。

目录

为什么自动化系统应用得这么广泛?

在几乎所有的工艺技术工厂中,电气和机械系统都已实现自动化。例如,根据开关的位置或在经过一定时间后对组件进行自动控制,就是自动化的典型体现。有时,系统仅需实现简单的二进制(开关量)逻辑关联;但在许多情况下,往往需要复杂的顺序控制。可编程逻辑控制器(PLC)通常被用于实现这些自动化功能。

什么是 PLC?

可编程逻辑控制器(PLC)可以理解为一台微型计算机,它根据输入信号和内部运算来执行输出操作。PLC 至少由一个中央处理单元(CPU)和输入/输出模块(I/O 模块)组成。I/O 模块通常通过系统总线与中央处理单元相连,系统总线同时也负责为它们提供电压(供电)。

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_ljd0i534sl1mj029bj4dvmlk6h/-C1479.1504388697722x985.381560588172,306.6951164537943,339.36316126107005
JUMO variTRON 500 central processing unit with PLC functionality, input/output modules, and web panel (behind)
具备 PLC 功能的 JUMO variTRON 500 中央处理单元、输入/输出模块以及 Web 面板(位于后方)
m
landscape

有哪些类型的可编程逻辑控制器?

PLC 拥有多种不同的版本,它们在功能和具体应用上各有侧重:

紧凑型 PLC

这类控制器被集成在一个单一的外壳中。它们包含了所有必需的组件,如 CPU、输入/输出端以及通信接口。对于空间要求较小的中小型应用而言,它们是理想的选择。

模块化 PLC

这类系统由一个中央 CPU 和独立的输入/输出模块组成,这些模块可根据实际需求进行添加或移除。它们为更复杂的应用提供了极高的灵活性和可扩展性。久茂(JUMO)variTRON 系列自动化系统便属于此类,即便它们的功能范围远超标准 PLC。

安全 PLC

这类控制器专为安全关键型应用而研发,并符合严格的安全标准。它们被应用于将人员与工厂设备安全保护置于首位的领域。

为什么 PLC 要配备输入/输出(I/O)模块?

来自开关、传感器等设备的信号会通过输入模块传输至中央处理单元(CPU),从而在 PLC 中变得可用。来自工厂现场的信号示例包括:限位开关、恒温器、流量监测器和液位开关的当前状态,以及来自温度、压力或湿度传感器的相应测量值。PLC 对这些信号进行逻辑关联与运算,并生成控制结果,随后将其提供给输出模块。例如,通过继电器来激活电磁阀和电机。因此,PLC 的核心功能正是在中央处理单元中实现的,可以说,它就是整个系统的控制中心。

PLC 问世前,工艺过程是如何自动化的?

在 PLC 问世之前,控制系统是通过将继电器和时间继电器(延时继电器)相互连接来实现的。这种控制方式需要耗费大量的硬件材料,且一旦需要修改功能,就必须重新更改物理接线。此外,这类系统极易发生故障,且排查故障非常耗时。因此,第一代 PLC 的核心任务就是为了取代这些传统的继电器控制网络。

什么是 PLC 程序?它是如何创建的?

所有的输入信号都会由 PLC 程序进行周期性处理,并在程序中完成逻辑关联。CODESYS 等开发环境可用于 PLC 编程,这意味着程序先在 CODESYS 中开发完成,然后再传输至 PLC。

有哪些可用的 PLC 编程语言?

PLC 可以使用 IEC 61131-3 标准中定义的各种编程语言进行编程。因此,程序员能够根据具体的应用需求,选择最合适的编程语言。

梯形图

梯形图编程语言自 20 世纪 60 年代起便投入使用,非常适合用来替代传统的继电器控制网络。它是最早问世的编程语言之一,其程序的图形化表达方式与电气电路图极为相似。

设想一个非常简单的应用场景:一个输入模块负责采集储罐中限位开关的状态,以及 2 个按钮的状态。在 PLC 程序中,这些状态分别通过名为“LevelBelowTheLimit(液位低于下限)”、“PushbuttonLeft(左按钮)”和“PushbuttonRight(右按钮)”的变量来获取。输出模块通过继电器来控制一台水泵,在程序中该水泵通过变量“PumpActivated(水泵启动)”进行寻址。

出于安全考虑,只有在同时按下两个按钮,并且液位降至下限以下时,才应启动水泵。在 CODESYS 软件中,使用梯形图语言编写的这个简单程序如下所示:

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_jtf6ug62c96o70gc7fv5flhh2n/
Example program in ladder logic
梯形图程序示例
m
landscape

您可以看到,它的结构与电路图非常相似,同样由开关/按钮和继电器组成。程序创建完成后,会被传输至 PLC 并进行验证。此后,便不再需要 CODESYS 开发环境。

早在梯形图编程语言发展初期,就已经引入了定时元件,能够实现延迟接通/断开,或在触发后使输出信号保持一段特定的时间。例如,梯形图中提供了一个代号为 TON 的功能块。只有当其输入信号被激活的时间达到设定的最短时长时,它才会激活输出信号。举例来说,如果要求只有在按钮被持续按下至少 5 秒后才启动水泵,那么上述小程序就需要进行如下修改:

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_90mtvfgi0p05d6t0dm4mdmj51c/
Modified example program in ladder logic
修改后的梯形图程序示例
m
landscape
标准功能模块还包括 RS 触发器、计数器、定时元件(如接通延时和断开延时)以及边沿检测器。此外,数学运算符也是标准编程工具集的一部分。

功能块图

另一种与之非常相似的语言是面向网络的‘功能块图’(FBD)。在这种语言中,上述小程序的结构如下所示:

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_0frrc3t3k157dacc7du0f62g0l/
Example program in function block diagram
功能块图程序示例
m
landscape

连续功能图

连续功能图(CFC)是功能块图(FBD)的进一步升级,它允许将各个功能元素在画布上进行自由定位。除此之外,CFC 在外观上与功能块图非常相似。这种编程语言在工业界应用极为广泛。在这种语言中,程序的结构如下所示:

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_md36ak1d9p30heoj6r3ubd9d0u/
Example program in continuous function chart
连续功能图程序示例
m
landscape

指令表

指令表(IL)是一种如今已较少使用的语言,它与汇编语言(Assembler)非常相似。IL 中的每条指令主要基于将数值加载到累加器(Accumulator)中,这一过程通过 LD 指令来实现。随后,系统会使用累加器中的第一个参数来执行相应的运算。运算的结果会被重新返回并保存在累加器中。这个小程序在指令表语言中的结构如下所示:

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_95fh2ci71p5jr9i27jur2nnn0s/
Example program in instruction list
指令表程序示例
m
landscape

结构化文本

另一种编程语言是 ST 代码(结构化文本)。ST 代码是一种基于文本的编程语言,能够执行复杂的控制任务。它的语法与 Pascal 编程语言非常相似,允许使用变量、函数、循环和条件语句。ST 代码尤其适合用于编写复杂的工艺顺序和数学运算。它能够实现结构化且清晰的编程,从而使控制程序的维护和后续开发变得更加容易。对于这个示例程序,仅需 2 行 ST 代码即可实现:

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_uv43g8iifh0437vm7nmr2dlg14/
Example program in structured text
结构化文本程序示例
m
landscape

如何通过 PLC 实现顺序控制

顺序功能图(SFC)语言是实现顺序控制的理想选择。设想一个热处理工厂,待处理的物料通过传送带被送入设备中。其前 3 个步骤如下:

按下启动按钮后,加热器开始加热。当达到目标温度时,进入下一步。

处理室的门被打开,传送带启动,将货物送入室内。当物料完全装载完毕(由接近开关检测确认)后,进入下一步。

门被关上,处理室的温度被调节至特定值。当产品核心达到某一特定温度时,控制系统关闭,门被打开。随后进入下一步。

在使用顺序功能图编写的程序中,特定的步骤(如加热和装载)通过切换条件或转换条件相互连接。上述示例应用所需程序的前 3 个步骤(加上初始位置/BasicPosition 步),在顺序功能图语言中的呈现如下:

image
https://do2p1q9b92sgp.cloudfront.net/rendition/353604884319/image_cmg6ofvi0l01n7tg08kbrqdh1h/
Linking of process steps in sequential function chart
顺序功能图中的工艺步骤关联
m
landscape

可以为每个步骤定义相应的程序,但这些程序只有在对应的步骤处于活动状态时才会被执行。整个处理过程从“初始位置(BasicPosition)”步开始。由于该步没有存储任何程序,因此不会有任何动作发生。

为后续的所有步骤分别定义了独立的程序(例如使用梯形图编写)。当处于“初始位置”时按下启动按钮,“加热器(Heater)”步就会被激活,此时存储的程序便会启动加热发生器。该步会一直保持活动状态,直到加热器温度达到 200 °C,随后“退回(Retract)”步被激活。“退回”步中的程序会启动门和传送带电机的相应控制。

依此类推,通过转换条件可以继续添加更多的步骤。最后一个转换条件会再次激活“初始位置”步,从而使整个流程形成闭环。

可编程逻辑控制器(PLC)还有哪些典型特征?

PLC 的核心功能之一是实现工艺过程的自动化,这需要使用上述某种编程语言进行编程。然而,如今的 PLC 已经进化为全能型自动化平台,能够提供远超基础控制的功能:

  • 提供多种通信接口,用于与上位系统进行数据交互;
  • 将变量发布至云端,使工厂能够随时随地通过不同的终端设备进行访问;
  • 提供可视化编辑器,用于创建具有客户专属外观风格的工艺画面;
  • 内置 Web 服务器,可通过浏览器或 Web 面板直接访问并实现工厂的可视化监控。