嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

PYTHON – 让“Monty 语言”进入自动化行业:第 1 部分

只需以下 11 行 Python 语句,就能使用 Revolution Pi 平台构建基于 PID 控制的加热系统:

from simple_pid import PID
import revpimodio2
import time

TempController = PID(5.0, 0.13, 10.5, setpoint=400, output_limits=(0,100))
rpi = revpimodio2.RevPiModIO(autorefresh=True)
while True:
    Temp = rpi.io.Temp10.value
    PWMvalue = TempController(Temp)
    rpi.io.PWM_heater1.value = int(PWMvalue)
    rpi.io.PWM_heater2.value = int(PWMvalue)
    time.sleep(0.05)

我们将控制什么?它是一种采用经典 PID 控制和基于消息的 IoT 的混合应用。我将使用一个模拟温度输入(连接 PT100 传感器)和一个数字输出(带有两个由 PWM 控制的 10W 灯泡)来模拟加热器。当前温度报告至 MQTT 代理,此代理再将数据提供给 Node-Red GUI。设置值可通过此 GUI 进行调节,并由 MQTT 传输至 Python PID 控制软件。如果您对这些感兴趣,请继续阅读下文关于如何高效使用 Python 语言完成自动化任务的逐步说明。

Python 是 IT 行业中常用的编程语言。然而,尽管它问世已有近 30 年,但是鲜少用于自动化行业和嵌入式系统。2017 年,C 和 C++ 语言仍然占据主导地位。但是随着 Raspberry P 以及 MicroPython 等针对 IoT 开发的系统的发展,情况开始有所改变。2018 年,IEEE Spectrum 排行榜连续第二年将 Python 列为编程语言的第一名,排在 C++ 和 C 语言之前。此外,Python 在 2017 年嵌入式编程语言排名中甚至未能跻身前十名,而 2018 年则一跃成为榜首。

image0041_85675cad528a4372c99c8f45fc1ab5d0b2ad39a1.jpg

来源:IEEE Spectrum 2018 年嵌入式编程语言排名

近几年来,Python(该名字与单词字面意义上的“巨蟒”无关,而是取自 Monty Python)持续走红,排名蹿升也反映出它受欢迎的程度。在本文中,我不想探讨其中的原因,也不会比较在嵌入式系统中使用 Python 和 C 语言的优劣。如果您希望进行此类讨论,请以发起者的身份进行评论。

在自动化行业中,许多工程师在进行 PLC 编程时甚至不使用 C 语言,而是常常使用 IEC61131 语言。为了激发大家对 Python 的兴趣,我将演示如何通过 Revolution Pi 使用 Python 轻松控制工业 IO。请勿错过 Peter OakesAndrew Back 发表的关于 Revolution Pi 的精彩文章Dave Ives 已演示过如何通过 Revolution Pi 使用 EN61131“结构化文本”语言。

我在演示中使用的设备如下:

  • Revolution Pi Core 3 (181-1142)
  • RevPi DIO (181-1143)
  • RevPi AIO (181-1146)
  • 1 个可至少提供 1A 电流的 24V 实验室电源(还可使用 DIN 导轨式开关电源,例如这款 36W Mean Well 设备: (145-7868)
  • 2 个 24V 10W 汽车灯泡(例如 (017-0913)
  • 1 个 PT100 传感器(我使用的是四线制传感器,例如 (123-5602) ,但是也可使用三线制传感器,例如 (896-8395)
  • 1 台装有 Windows 操作系统的个人电脑,带互联网连接和开关,另配 1 根用于连接 RevPi Core 3 的网络电缆
  • (选配)示波器,用于检查 PWM 输出

如果您是第一次接触 Revolution Pi,请阅读 Andrew 和 Peter 发表的文章,以充分了解这款硬件和软件平台。您将学到如何将 Core 3 模块连接至 IO 模块,如何连接电源,以及如何使用中央处理图像访问所有的 IO。在制造商网页上,您还可以找到许多文字教程和视频教程。我搭建的装置如下:

image006_3da4f6c3bc631840ea50925283ed6b097126ba2d.jpgimage007_41380d5ea97dcdd12a057cf23cdd68b3fced28dc.jpgimage008_d762aebe3410888152275353b3c3ba7e172b2c6e.jpgimage0111_b059147a00ca2458cb86af8239255666cdae0d76.jpg

请注意两个细节:

  • 我见过许多人将 DIN 导轨安装在平放在台面上的底板上。如果 RevPi Core 是以这种布置方式工作,对 Raspberry 计算模块的冷却起到关键作用的层流气流将无法形成。请勿这样做!使用时务必使 RevPi 直立,这样才能有足够的空气从底部细缝进入,再从顶部细缝流出!
  • 我还经常看到有人在使用 RevPi 模块时不连接 FE(功能接地)接线端子。这样会导致完整的浪涌电流,并使 ESD 保护失效。请勿这样做!即使在办公室桌面上,也至少应当将 FE 接线端子连接到 0V 接线端子。请勿混淆 PE(保护接地)和 FE 的概念!虽然 RevPi 模块不需要 PE(没有接触高压的风险),但是 FE 接线端子是将任何因浪涌、电快速瞬变脉冲群或 ESD 引起的破坏性能量导出模块的唯一途径。如果不连接,将使系统失去保护,从而暴露在这类破坏性环境能量下。

请参考印在 AIO 模块侧面的原理图,以检查是否正确连接了四线或三线 RTD 传感器。我使用 RTD1 输入端子连接该装置,并用 Out1 和 Out2 连接灯泡。请注意,两个 10W 灯泡需要消耗 24V 电源近 1A 的电流。连接 IO 电源时使用粗电线,并且仅使用高侧模式下的输出(这样每个输出最高可达 500mA,而推挽式只能达到 100mA)。

几天后,我们将发布第 2 部分博客文章,我将在其中逐步介绍如何安装将要使用的库和工具。请勿错过。订阅后可在文章发布时收到消息。

 

Volker de Haas started electronics and computing with a KIM1 and machine language in the 70s. Then FORTRAN, PASCAL, BASIC, C, MUMPS. Developed complex digital circuits and analogue electronics for neuroscience labs (and his MD grade). Later: database engineering, C++, C#, industrial hard- and software developer (transport, automotive, automation). Designed and constructed the open-source PLC / IPC "Revolution Pi". Now offering advanced development and exceptional exhibits.
DesignSpark Electrical Logolinkedin