为什么自动化系统应用得这么广泛?
在几乎所有的工艺技术工厂中,电气和机械系统都已实现自动化。例如,根据开关的位置或在经过一定时间后对组件进行自动控制,就是自动化的典型体现。有时,系统仅需实现简单的二进制(开关量)逻辑关联;但在许多情况下,往往需要复杂的顺序控制。可编程逻辑控制器(PLC)通常被用于实现这些自动化功能。
在几乎所有的工艺技术工厂中,电气和机械系统都已实现自动化。例如,根据开关的位置或在经过一定时间后对组件进行自动控制,就是自动化的典型体现。有时,系统仅需实现简单的二进制(开关量)逻辑关联;但在许多情况下,往往需要复杂的顺序控制。可编程逻辑控制器(PLC)通常被用于实现这些自动化功能。
可编程逻辑控制器(PLC)可以理解为一台微型计算机,它根据输入信号和内部运算来执行输出操作。PLC 至少由一个中央处理单元(CPU)和输入/输出模块(I/O 模块)组成。I/O 模块通常通过系统总线与中央处理单元相连,系统总线同时也负责为它们提供电压(供电)。
PLC 拥有多种不同的版本,它们在功能和具体应用上各有侧重:
这类控制器被集成在一个单一的外壳中。它们包含了所有必需的组件,如 CPU、输入/输出端以及通信接口。对于空间要求较小的中小型应用而言,它们是理想的选择。
这类系统由一个中央 CPU 和独立的输入/输出模块组成,这些模块可根据实际需求进行添加或移除。它们为更复杂的应用提供了极高的灵活性和可扩展性。久茂(JUMO)variTRON 系列自动化系统便属于此类,即便它们的功能范围远超标准 PLC。
这类控制器专为安全关键型应用而研发,并符合严格的安全标准。它们被应用于将人员与工厂设备安全保护置于首位的领域。
来自开关、传感器等设备的信号会通过输入模块传输至中央处理单元(CPU),从而在 PLC 中变得可用。来自工厂现场的信号示例包括:限位开关、恒温器、流量监测器和液位开关的当前状态,以及来自温度、压力或湿度传感器的相应测量值。PLC 对这些信号进行逻辑关联与运算,并生成控制结果,随后将其提供给输出模块。例如,通过继电器来激活电磁阀和电机。因此,PLC 的核心功能正是在中央处理单元中实现的,可以说,它就是整个系统的控制中心。
在 PLC 问世之前,控制系统是通过将继电器和时间继电器(延时继电器)相互连接来实现的。这种控制方式需要耗费大量的硬件材料,且一旦需要修改功能,就必须重新更改物理接线。此外,这类系统极易发生故障,且排查故障非常耗时。因此,第一代 PLC 的核心任务就是为了取代这些传统的继电器控制网络。
所有的输入信号都会由 PLC 程序进行周期性处理,并在程序中完成逻辑关联。CODESYS 等开发环境可用于 PLC 编程,这意味着程序先在 CODESYS 中开发完成,然后再传输至 PLC。
PLC 可以使用 IEC 61131-3 标准中定义的各种编程语言进行编程。因此,程序员能够根据具体的应用需求,选择最合适的编程语言。
梯形图
梯形图编程语言自 20 世纪 60 年代起便投入使用,非常适合用来替代传统的继电器控制网络。它是最早问世的编程语言之一,其程序的图形化表达方式与电气电路图极为相似。
设想一个非常简单的应用场景:一个输入模块负责采集储罐中限位开关的状态,以及 2 个按钮的状态。在 PLC 程序中,这些状态分别通过名为“LevelBelowTheLimit(液位低于下限)”、“PushbuttonLeft(左按钮)”和“PushbuttonRight(右按钮)”的变量来获取。输出模块通过继电器来控制一台水泵,在程序中该水泵通过变量“PumpActivated(水泵启动)”进行寻址。
出于安全考虑,只有在同时按下两个按钮,并且液位降至下限以下时,才应启动水泵。在 CODESYS 软件中,使用梯形图语言编写的这个简单程序如下所示:
您可以看到,它的结构与电路图非常相似,同样由开关/按钮和继电器组成。程序创建完成后,会被传输至 PLC 并进行验证。此后,便不再需要 CODESYS 开发环境。
早在梯形图编程语言发展初期,就已经引入了定时元件,能够实现延迟接通/断开,或在触发后使输出信号保持一段特定的时间。例如,梯形图中提供了一个代号为 TON 的功能块。只有当其输入信号被激活的时间达到设定的最短时长时,它才会激活输出信号。举例来说,如果要求只有在按钮被持续按下至少 5 秒后才启动水泵,那么上述小程序就需要进行如下修改:
另一种与之非常相似的语言是面向网络的‘功能块图’(FBD)。在这种语言中,上述小程序的结构如下所示:
连续功能图(CFC)是功能块图(FBD)的进一步升级,它允许将各个功能元素在画布上进行自由定位。除此之外,CFC 在外观上与功能块图非常相似。这种编程语言在工业界应用极为广泛。在这种语言中,程序的结构如下所示:
指令表(IL)是一种如今已较少使用的语言,它与汇编语言(Assembler)非常相似。IL 中的每条指令主要基于将数值加载到累加器(Accumulator)中,这一过程通过 LD 指令来实现。随后,系统会使用累加器中的第一个参数来执行相应的运算。运算的结果会被重新返回并保存在累加器中。这个小程序在指令表语言中的结构如下所示:
另一种编程语言是 ST 代码(结构化文本)。ST 代码是一种基于文本的编程语言,能够执行复杂的控制任务。它的语法与 Pascal 编程语言非常相似,允许使用变量、函数、循环和条件语句。ST 代码尤其适合用于编写复杂的工艺顺序和数学运算。它能够实现结构化且清晰的编程,从而使控制程序的维护和后续开发变得更加容易。对于这个示例程序,仅需 2 行 ST 代码即可实现:
顺序功能图(SFC)语言是实现顺序控制的理想选择。设想一个热处理工厂,待处理的物料通过传送带被送入设备中。其前 3 个步骤如下:
按下启动按钮后,加热器开始加热。当达到目标温度时,进入下一步。
处理室的门被打开,传送带启动,将货物送入室内。当物料完全装载完毕(由接近开关检测确认)后,进入下一步。
门被关上,处理室的温度被调节至特定值。当产品核心达到某一特定温度时,控制系统关闭,门被打开。随后进入下一步。
在使用顺序功能图编写的程序中,特定的步骤(如加热和装载)通过切换条件或转换条件相互连接。上述示例应用所需程序的前 3 个步骤(加上初始位置/BasicPosition 步),在顺序功能图语言中的呈现如下:
可以为每个步骤定义相应的程序,但这些程序只有在对应的步骤处于活动状态时才会被执行。整个处理过程从“初始位置(BasicPosition)”步开始。由于该步没有存储任何程序,因此不会有任何动作发生。
为后续的所有步骤分别定义了独立的程序(例如使用梯形图编写)。当处于“初始位置”时按下启动按钮,“加热器(Heater)”步就会被激活,此时存储的程序便会启动加热发生器。该步会一直保持活动状态,直到加热器温度达到 200 °C,随后“退回(Retract)”步被激活。“退回”步中的程序会启动门和传送带电机的相应控制。
依此类推,通过转换条件可以继续添加更多的步骤。最后一个转换条件会再次激活“初始位置”步,从而使整个流程形成闭环。
PLC 的核心功能之一是实现工艺过程的自动化,这需要使用上述某种编程语言进行编程。然而,如今的 PLC 已经进化为全能型自动化平台,能够提供远超基础控制的功能: