通过使用Raspberry Pi和OpenPLC软件平台,可以创建一个简单的PLC,该PLC可以使用梯形图进行编程,并具有远程访问和I/O监控仪表板功能。
OpenPLC提供了一个控制工程开发平台,能够将各种微控制器转变为可编程逻辑控制器。OpenPLC兼容包括Arduino Uno、ESP32、RP2040等平台,甚至像Raspberry Pi这样的单板计算机也可以配备编辑器、运行时引擎和Web服务器,用作PLC。
本文将介绍如何使用OpenPLC在Raspberry Pi上创建PLC。
▲ OpenPLC 可在 Raspberry Pi 上实现
在Raspberry Pi上运行PLC(运行时)
使用Raspberry Pi开发PLC的概念在于实现OpenPLC运行时环境,该环境具有一个集成的Web服务器,允许配置运行时参数。这些运行时参数与数据类型和内存寄存器相对应。以下列出了一些参数:
- X:位(1位)
- B:字节(8位)
- W:字(16位)
- D:双字(32位)
- L:长字(64位)
这些参数是在结构化文本(.st)文件编译并下载后创建的。通过Raspberry Pi的IP地址后加“;”和端口号8080来访问运行时Web服务器。将鼠标指向PI桌面环境工具栏右侧附近的Wi-Fi图标,可以找到IP地址。IP地址将出现在一个弹出窗口中。
▲ Raspberry Pi Wi-Fi 图标的位置
在 Raspberry Pi 上使用 OpenPLC 的先决条件
WiringPi GPIO库
OpenPLC运行时需要访问通用输入/输出(GPIO)引脚。最新的Pi平台(版本3及更新版本)已经包含了这个库,但为了验证,请打开终端并输入以下命令:
gpio -v
如果找不到库(命令),请确保启用了Wi-Fi,并使用以下命令集安装WiringPi库:
git clone https://github.com/WiringPi/WiringPi.git
这将复制并创建一个名为WiringPi的文件夹。将当前目录更改为WiringPi:
cd WiringPi
然后输入以下命令。这将从源文件构建WiringPi,类似于安装过程:
./build
这应该完成了该过程,但此时,请运行“gpio -v”命令,并查看为您的Pi平台新安装的详细信息。它应该看起来与下面的图像类似:
▲ 成功构建 WiringPi 库
OpenPLC运行时
如果尚未安装OpenPLC运行时,则过程与之前类似。首先,输入命令“cd”切换回主目录:
与之前一样,使用克隆命令复制OpenPLC文件夹:
git clone https://github.com/thiagoralves/OpenPLC_v3.git
现在,切换到OpenPLC目录:
cd OpenPLC_v3
最后,安装实际的OpenPLC运行时(这需要一段时间,请耐心等待):
./install.sh rpi
安装完成后,转到您的家用电脑浏览器,输入Raspberry Pi的IP地址(在我的情况下是192.168.1.27),后跟端口8080,运行时登录屏幕应该会出现:
有关更详细的文档,请参阅OpenPLC官方网站。
https://autonomylogic.com/docs/installing-openplc-runtime-on-linux-systems/
现在,在Pi平台上完成了先决条件步骤,我们可以继续接线和梯形图逻辑编程!
从 Raspberry Pi 到PLC的引脚映射
输入和输出设备,如按钮开关、执行器、可视指示器和声音警报器,将被分配到 Raspberry Pi 的相应 I/O 引脚上。本项目文章将通过一个非常简单的梯形图 PLC 程序来操作一个 LED 按钮开关。
Raspberry Pi使用两种不同的编号格式来引用引脚。一种格式使用适当的GPIO引脚编号和功能来标记引脚。
在另一种格式中,40针接头垂直编号,左侧为奇数,右侧为偶数。OpenPLC使用左侧的GPIO引脚作为输入,因此引脚3、5、7、11和13(映射到GPIO引脚2、3、4、17和27)将构成输入标签IX0.0、IX0.1、IX0.2、IX0.3、IX0.4等。
对于输出,以类似的方式,引脚8、10、16、18和22(GPIO 14、15、23、24和25)等同于输出标签QX0.0、QX0.1、QX0.2、QX0.3、QX0.4等。
将I/O设备连接到Raspberry Pi
按钮电路将使用一个带有10kΩ下拉电阻的触觉开关。输出指示电路由一个与LED串联的330Ω电阻组成。
在最简单的层面上,可以将单根导线插入40针接头连接器,并连接到安装在外部面包板上的按钮开关和LED电路。
将按钮开关和LED电路连接到Raspberry Pi的另一种方法使用扩展板(如下所示),该扩展板在T形PCB上引出Raspberry Pi的I/O引脚。扩展板插入适当长度/尺寸的免焊面包板中,使得按钮开关、下拉电阻和LED电路能够轻松连接到Raspberry Pi,而无需使用大量跳线。
作为额外的电气接线参考,提供了电子电路原理图。
扩展板通过扁平带状电缆物理连接到Raspberry Pi,允许电压(+3.3V)、接地和I/O控制信号电连接到Raspberry Pi的40针接头连接器。扁平电缆允许免焊面包板的布置方便地放置在车间桌子或实验室工作台上。
下面的面包板接线组件展示了连接到扩展板的电气部件。如果没有扩展板,您可以使用跳线直接连接到Pi接头上的+3.3V、GND、引脚11(GPIO17)和引脚16(GPIO23)。
▲ 带扩展板的基于 Raspberry Pi 的 PLC 电路
Raspberry Pi的PLC软件
Arduino OpenPLC介绍项目中提供的“Hello World”梯形图(LD)可以很容易地修改为适用于Raspberry Pi控制器。LD的主要修改涉及将SBC物理I/O寻址方案应用于Raspberry Pi。I/O地址反映引脚格式,而不是GPIO指定。采用这种方法,分配的标签将确保目标按钮开关的输入和输出控制信号以及LED电路将正确启动。
Arduino OpenPLC介绍项目:
https://control.com/technical-articles/plc-ladder-logic-on-an-arduino-introduction-to-openplc/
▲ Raspberry Pi 物理寻址
与Arduino梯形图逻辑项目一样,“Hello World”LD和标签列表表是在OpenPLC编辑器中构建的。
▲ Raspberry Pi “你好世界 ”LD/标记列表表
添加运行时软件和测试
Raspberry PiOpenPLC项目的最后一步是将运行时软件上传到SBC。如“运行时”部分所述,需要访问Web服务器页面。通过Web浏览器指向Raspberry Pi的IP地址,运行时编程环境将可用。
默认登录用户名和密码均为openplc。建议您更改登录凭据以确保LD程序的安全性。
▲ OpenPLC 网络服务器登录界面
要在Raspberry Pi上运行,需要.st文件。通过在OpenPLC编辑器的任务栏上点击橙色向下的箭头图标,.st文件将被存储在为初始项目创建的指定文件夹中。
▲ OpenPLC Runtime .st 文件下载按钮
返回web服务器,点击“Hardware”(硬件)按钮,选择Raspberry Pi作为硬件层,并保存更改。
▲ 选择 Raspberry Pi 硬件
要上传.st文件,请在OpenPLC web服务器面板的左侧点击“Programs”(程序)按钮。
将打开一个窗口,您可以在此将.st文件(程序)上传到web服务器。点击“Choose File”(选择文件)按钮,选择Hello World.st文件,然后点击“Upload Program”(上传程序)。
▲ 选择并上传 .st 文件
将显示将.st文件转换为C++程序的编译过程。上传/转换过程完成后,Hello World程序将显示在表格中。
Hello World程序上传到Raspberry Pi后,在web服务器窗口底部用鼠标点击“Dashboard”(仪表板)按钮。在面板左侧点击“Start PLC”(启动PLC)按钮。程序的执行过程将在窗口中可见。
▲ 用于 Raspberry Pi 的 “Hello World ”监控仪表板
可以使用“Monitor”(监视器)观察按钮开关和LED的状态。用鼠标点击监视器按钮,以观察按钮开关和LED的动作。每次按下按钮时,LED将从红色切换到绿色。监视器可以作为一种诊断的人机界面(HMI)工具,用于虚拟观察Raspberry Pi PLC I/O的物理操作。
此视频剪辑展示了Raspberry Pi PLC的运行情况。了解运行环境并访问OpenPLC web服务器页面后,可以在Raspberry Pi上实现各种PLC控制应用。
原文地址: https://control.com/technical-articles/turn-a-raspberry-pi-into-a-plc-using-openplc/