你觉得这篇文章怎么样? 帮助我们为您提供更好的内容。
Thank you! Your feedback has been received.
There was a problem submitting your feedback, please try again later.
你觉得这篇文章怎么样?
上世纪七十年代我开始了计算机职业生涯,自然而然开始了解 CPU 的硬件。曾经,我需要用十六进制键盘键入每个字节及其 RAM 地址。写满 1kB 的 RAM 后,在按下“运行”按钮之前最好还要检查一下七段显示器,以便管理所输入的内容。让“用户”与软件进行交互的通用方法是连接开关和 LED, 这是非常典型的“物理计算”。后来,进入大学后,我学会了用 FORTRAN 执行计算。当时我不能随时接触计算机。我们需要在纸板(所谓的“打孔卡”)上打孔,然后让“操作员”将纸板装到计算机中,而计算机差不多就是个装满 19 英寸机架的房间。第二天,我们就可以收集在打印纸带或打孔卡上呈现的计算结果了。从那时起,我就一直游走于物理计算和传统 IT 两个领域。这是两个截然不同且专业性都很强的领域。一个领域的专家通常无法理解另一个领域的专家的言论,或者无法理解另一个领域的专家为什么会对在自己的领域根本不存在的问题感到困惑。
为了实现各自的特定目标,这两种计算方法在发展历程中自然地确立了不同的工具和规则。而这种差异似乎成了 IIoT(“工业物联网”)快速发展的主要障碍之一。在此次系列文章中,我将尝试解释其中存在的一些核心差异。希望您在读完文章后能够理解为什么在工业 4.0 之前自动化行业很少遇到功能安全和信息安全问题,以及为什么循环运行状态机不是微软 Windows 等操作系统的最佳架构。也许您更多的是 IT 方面的专家,想了解是什么因素使 PLC(“可编程逻辑控制器”)架构如此独特。敬请继续阅读探索……
第 1 部分
确定性系统架构与概率性系统架构
在自动化行业,“物”属于传统工程师的领域。他们设计嵌入式系统或编写 PLC(“可编程逻辑控制器”)程序来控制生产过程中的复杂机器。他们的系统架构旨在最大限度地提高可靠性,并且往往会采用最简化设计。“物”需要反复可靠地执行相同的任务,往往不需要与人类交互。人类可以通过所谓的 HMI(人机接口)监督和调整过程值,但 HMI 并不是核心控制算法的中心部分。我来试着解释一下这种架构是如何发展的。
图 1:简单的逻辑电路。LED 会在两个按钮同时按下时点亮。
最初,物理计算是通过组合二进制逻辑门实现的。就像图 1 所示,能看到两个开关(可以是光栅等二进制传感器)。如果同时闭合这两个开关,则输出会将 LED 点亮。 现在来思考一下利用这种逻辑门监控开关顺序的方法。最终会得到一个循环工作的“时钟逻辑”(图 2)。
图 2:时钟逻辑示例。您可以使用以下链接模拟此逻辑:http://simulator.io/board/Yc9tpDmfyO/3
PLC 的工作方式与这种时钟逻辑相似。PLC“程序”可以连接一组门(输出到输入),从而使控制器灵活运行(早期 PLC 中确实存在逻辑块阵列——PLC 因此而得名,而今天这项工作则由 CPU 完成)。但就核心而言,始终存在一组循环操作:获取所有输入的快照,对输入进行二进制运算,设定所有输出。因此,逻辑运算依赖于输入和定义的“内部状态”(被缓冲在称为“触发器”的逻辑电路中),而输入和内部状态都需要在 PLC 执行二进制计算之前在某种“快照缓冲区”(“锁存器”)中进行缓冲。在计算结果同时切换输出之前,计算结果也会进行缓冲(图 3)。对所谓的
“过程映像”进行这种缓冲,对于避免误判至关重要。
图 3:PLC 利用“过程映像”执行循环操作。
任何序列都需要有时钟来检测“之前”和“之后”。而对信号(输入)进行计时,就意味着对信号进行“采样”。时钟频率就成了采样率,按照奈奎斯特采样定理,只有不短于两倍采样率的信号才能进行可靠地采样。以图 2 为例:如果物体穿过两个光束,则根据移动方向,一定会产生“00 – 01 – 11 – 10 – 00”序列或“00 – 10 – 11 – 01 – 00”序列。只有时钟周期短于两种状态之间时间的一半,才能检测到这一序列。在不同时间对两个光栅进行采样,即使并非不可能,也会使检测变得非常复杂。要计算最小时钟频率,就需要同时采样的信号。
Nyquist for dummies奈奎斯特定理简介C.E. Shannon(克劳德·艾尔伍德·香农)在研究“时间离散系统”时引入了信号理论中的“奈奎斯特频率”这一术语——不用担心,这个术语只是听上去比较复杂, 放到数字信号环境中时,这个词就很容易理解了: 假设我们有一个在两个数字值“ 0”和“ 1”之间切换的方波。您的机器无法持续地观察该信号,而是需要周期性地选择实际值(即对值进行“采样”)。如果查看信号的时间轴和“采样点”,就会发现每个方波周期至少需要采样两次才能可靠地检测出方波的两种状态。因此,“采样频率”(有时也称为“采样率”)必须是信号频率的两倍。 换言之:能够可靠处理的最高信号频率是采样频率的 ½。这种可用作系统输入的最高信号频率,就称为“奈奎斯特频率”。 信号频率基本可以接受:
信号频率过高 => “信号混叠”(红点):
|
对过程映像进行采样,对缓冲输入值执行计算,在计算结束之前对结果进行缓冲,之后再同时切换输出,这种时序性理念对于高度可预测的系统来说至关重要。后来,这一理念被使用 FSM(“有限状态机”)的嵌入式控制器采用。FSM 的每个循环都从一个确定的状态开始,根据信号状态,可能会在转换到不同状态时结束。这种控制器的理念可以简化为一项简单的任务:“根据输入和内部状态循环切换状态(和输出)”。此类控制器以完全可预测且可靠的方式工作(“确定性”),因为在设计时就需要知道控制器的每种可能的状态以及状态转换规则。
EN 61131 是遵循该架构的核心规范之一,旨在定义自动化行业中控制器的行为。该规范还定义了梯形图 (LD)、功能块图 (FBD)、顺序功能图 (SFC) 或指令表 (IL) 等编程语言,这些语言反映了 PLC 技术的历史电子根源(例如,“梯形图”就非常接近数字逻辑的电路图)。
图 4:采用 LD(左)和 FDB(右)的 PLC 程序示例。
让这样的“物”与云端相连,意味着会进入一个目标和规则都不同的世界:传统 IT 世界。您经常会遇到所谓的“后端”(具有用于有效存储和检索海量数据集合的数据库)与前端(大多是基于 PC 的应用,带有高度交互性 GUI)分离的情况。甚至可以说,数据与人之间的交互是传统 IT 的基础,而传感器与执行器之间的交互则属于自动化行业中控制器的领域。因此,IT 系统架构通常会以实现最高效率、可重用性、可用性和舒适性为目标而进行优化。精巧的用户界面 (UI)、基于对象的编程语言和多任务操作系统都十分符合这些目标。
循环运行的软件可能会造成资源浪费。IT 系统更多地采用基于事件的理念:点击虚拟按钮就会触发软件内部的“事件”, 而这一事件则会触发所有链接的进程。后台进程(通常称为“守护进程”)持续监视鼠标,以便检测点击操作或执行其他作业。这些守护进程大多以独立、异步方式工作。其他进程可以进行订阅以便在发生特定事件时获取消息。因此就有了由后端进程提供的“服务”, 即后端进程为客户端进程提供服务。
自动化领域中的 PLC 会循环询问开关是否闭合,而像 Linux 之类的操作系统则会组织以下场景:键盘服务会在按键被按下后立即发送消息。订阅过此消息的任何应用软件都会以最小延迟收到该消息,可能会对该消息做出响应,也可能不响应。服务与客户端之间的通信通常是基于消息和事件的, 这种通信会使用明确定义的接口,而这种接口就是服务与客户端之间唯一的依赖关系。由于余下部分相互独立,因此,服务和客户端进程可以在不同的系统上运行,而且往往也确实是在不同系统上运行的(例如“后端”和“前端”系统)。利用这种服务器 - 客户端结构,可以轻松地搭建分布式且高度可扩展的架构。AWS 之类的现代云提供商提供了上千种服务,可供数百万客户端通过互联网同时使用。
因此,这种架构无论如何都称不上“有限状态”:运行大量独立的异步进程,会导致系统的可预测性降低。可能状态的数量通常太多,无法在设计时完全掌握并纳入考虑范围。另一方面,由于可扩展性和面向对象的设计原则,这种系统在处理海量数据时几乎不存在限制。这些系统在很多方面与人类相似:在牺牲可靠性和速度的情况下,可以实现多任务处理、高度互动、便捷通信和可适应性。IT 注定要与人类交互 (GUI), 系统之间的通信具有强烈的“社交触觉”(我们会在第 2 部分予以探讨), 利用“概率计算”(使用统计方法进行决策)可以实现机器学习和 AI(人工智能),如此看来都不足为奇。
图 5:IIoT - 自动化遇见 IT。
自动化工程师如果要将自己的确定性家园与这个奇妙的新概率性世界结合起来,就需要理解这种概率性世界以这些“人类”品质为基础。另一方面,将云与真实世界的机器相连,确实会带来新的风险,因此 IT 工程师也需要了解可靠作业自动化的基础。
后续
第 2 部分将阐述现场总线与互联网协议,第 3 部分将阐述功能安全和信息安全,最后的第 4 部分将讨论开源与知识产权保护。
传统自动化进入 IT 异世界:第 2 部分 |
传统自动化进入 IT 异世界:第 3 部分 |
传统自动化进入 IT 异世界:第 4 部分 |