分享一个Arduino上的PLC梯形逻辑:使用OpenPLC控制
使用 Arduino Uno 和开源工业控制软件 OpenPLC 构建低成本 PLC,了解如何使用梯形逻辑进行编程,从您的第一个 OpenPLC 项目 Hello World 开始。
OpenPLC 是一个开源工业控制平台,允许将流行的微控制器转换为可编程逻辑控制器 (PLC)。OpenPLC 是基于国际电工委员会 (IEC) 函数式编程语言标准 61131-3 的全功能开源 PLC。
有五种与 IEC 61131-3 标准相关的函数式编程语言;它们是梯形图 (LD)、结构化文本 (ST)、指令列表 (IL)、序列功能图 (SFC) 和功能框图 (FBD)。PLC 最常用的编程语言是 LD。IEC 61131-3 标准考虑了开发有效、低成本的自动化控制系统的软件和硬件要求。
OpenPLC 的版本
OpenPLC平台的技术开发路径由开源编程语言工具链的两个基本版本组成,即1.0版和1.2b版。版本 1.0 提供了用于测试 LD 程序的模拟器。软件版本可以在目标 Microchip ATMEGA328 8 位微控制器上运行 ST 代码。版本 1.0 提供了运行时功能,允许安装 C 代码并显示运行在 ATMEGA328 微控制器上的基于 Microchip 的 PLC 输入/输出设备。图 1 显示了执行 Hello World LD 程序的典型运行时仪表板。
版本 1.2b 提供了一个用于测试 LD 程序的模拟器,但可以对其他 Arduino 平台和流行的微控制器(如 ESP32 和 ESP8266 可编程设备)进行编程。图 2 说明了 Hello World 模拟器 LD 程序环境。
将 OpenPLC 与 Arduino Uno 一起使用
了解 OpenPLC 开源平台后,您现在可以构建 Arduino Uno 或兼容的 PLC。构建开源 PLC 的第一步是从此处的网站下载开发工具。
为您的 PLC 开发机器的操作系统选择软件。从网站下载OpenPLC软件后,双击以运行安装程序。
恭喜您安装了 OpenPLC!
您已准备好构建您的第一个 OpenPLC 项目 Hello World。
第一个OpenPLC项目:Hello World
该项目使用Arduino Uno或兼容板,以及无焊试验板上的一些分立电子元件。Hello World PLC 项目在按下触觉按钮开关时会点亮 LED。您将使用图 4 所示的电子电路原理图连接兼容 Uno 的 PLC。
作为补充参考,这里是作者的无焊面包板PLC,如图5所示。
轻触按钮开关 PB1 和 PB2 作为数字逻辑开关接线。当按下 PB1 或 PB2 时,引脚 3 和 2 分别施加大约 +5 VDC。为了说明测试有线数字开关的方法,图6给出了图6。您会注意到,在 Tinkercad 电路模型中,数字电压表连接在电阻 R1 上。USB 电缆将 Arduino PLC 连接到编程计算机。Arduino Uno 印刷电路板 (PCB) 上将出现一个开机 LED;该指示灯表示微控制器和印刷电路板 (PCB) 上的配套电子电路已通电。
将数字电压表放在图 5 所示实际 PLC 原型的 R1 上,然后按下 PB1 轻触开关。电气测量仪器的 LCD 上应显示 +5 V 的近似读数。如果电压读数不是大约 +5 V,请检查接线并重复测量。在 PB2 轻触开关上执行相同的测试测量。按 PB2 在数字电压表上读取大约 +5 V。
恭喜,您的 Arduino PLC 有两个功能性数字逻辑开关。
下一步是在无焊试验板上接线并测试输出 LED 指示灯。图 7 显示了无焊试验板上有线和有源输出 LED 指示灯的 Tinkercad 电路模型。在实际无焊试验板原型上测试输出 LED 指示灯时,请使用此电路模型作为参考。
如果您的输出 LED 指示灯亮起,则工作做得好!您的输出 LED 指示灯工作正常。
从 PLC 开发机器的 USB 端口上拔下 USB 电缆。用长跳线更换连接到 560 Ω电阻的红线。您将取连接到 560 Ω电阻器的跳线末端,并将其插入安装在 Arduino Uno 上的母头连接器的数字引脚 7 (D7) 中。
您已经连接并测试了原型 Arduino Uno PLC 的数字逻辑开关和输出 LED 指示灯。
PLC 项目的最后阶段是构建 OpenPLC Hello World LD 程序并将其上传到 Arduino Uno PLC。在继续 OpenPLC 项目的最后一步之前,请将 USB 电缆插入 PLC 开发机器的 USB 端口。
构建基本梯形图程序
接下来,右键单击计算机创建一个项目文件夹(推荐在“我的文档”或其他简单位置),其中 OpenPLC 生成的文件与 LD 程序一起存储。您可以将项目文件夹命名为“HelloWorld”。
创建项目文件夹后,打开 OpenPLC 软件并选择 HelloWorld 项目文件夹,屏幕上会出现 OpenPLC 编辑器。
通过选择“文件”>“新建”创建 HelloWorld LD 程序。
屏幕上将出现一个小对话框。在标记为 POU Name 的文本框中填写 HelloWorld,如图 9 所示。对于“语言”下拉列表,选择“LD(用于梯形图)”。单击“确定”按钮以完成创建新的 LD 程序。
完成项目框后,即可创建 I/O 标记。对于 Hello World LD,有两个标记:HelloWorld_PB 和 HelloWorld_LED。单击加号以创建两个 I/O 标记。您的 I/O 标记列表应如图 10 所示。
您会注意到 I/O 标记列表中列的“类型”和“位置”。单击HelloWorld_PB的“类型”(数据类型)单元格,然后选择 BOOL。对HelloWorld_LED重复选择过程。通过触觉按钮开关提供数字信息(ON/OFF),输出 LED 指示灯被命令打开和关闭,数据类型为布尔值,因此选择 BOOL。location 列是 Arduino Uno 的指定 I/O 引脚的 PLC 地址。键入地址,如图 10 所示。
完成 I/O 标记列表后,您现在可以创建 LD 程序。您将用于 Hello World 项目的两个主要 PLC 位指令是检查是否关闭 (XIC) 和输出通电 (OTE) 这些位指令的位置在编程工具栏中。
选择XIC和OTE位指令,并将它们分别放在OpenPLC编辑器的LD程序构建部分的左侧和右侧。您创建的标记将通过选择正确的位指令进行关联。图 12 显示了与正确位指令关联的标签。
选择电源轨并配置引脚数以连接 XIC 和 OTE 位指令并构建逻辑的单级。引脚是 LD 程序的横档。图 13 说明了电源轨的选择和配置过程。
构建 LD 程序的最后一步是将 XIC 和 OTE 位指令连接在一起。选择 HelloWorld_PB XIC 位的右端并拖动它以创建一条线。继续拖动该线以连接到HelloWorld_LED OTE 位的左侧。该行创建一个梯级来管理 XIC 和 OTE 位指令控制逻辑操作。完成的 LD 程序如图 14 所示。
超级工作构建 Hello World LD 程序!
要在 LD 程序上运行模拟,请单击 Config0.Res.instance0 下拉框旁边的太阳镜。您应该看到连接到 HelloWorld_PB XIC 位指令的左梯级变为绿色,表示 LD 程序已准备好进行仿真,如图 16 所示。在任务栏上选择正在运行的人来运行 LD 程序。“PLC 已启动”文本将显示在编辑器的 PLC 日志部分。
要与模拟进行交互,请右键单击以从显示的选择列表中选择“强制 True”。Hello World_LED OTE 位应变为绿色。再次单击鼠标右键以切换强制 false。您会注意到 Hello World_LED OTE 关闭或显示为黑色。
恭喜,您已经为 Hello World LD 程序运行了模拟事件。该项目的最后一步是将LD程序上传到实际的Arduino PLC。
在Arduino Uno PLC上上传和测试Hello World梯形图程序
单击停止标志以关闭模拟事件。通过单击位于编辑器左侧的 HelloWorld LD 程序名称旁边的小框来重置 LD 程序。
要上传,请单击任务栏中的 Arduino Uno 图标以选择正确的 USB 通信 (COM) 端口和适当的微控制器开发平台。图 17 显示了所选 COM 端口和 Arduino 板的配置面板。
您可能需要使用 PLC 开发机器的设备管理器识别正确的 COM 端口。选择 Arduino Uno 板和 COM 端口后,单击 Upload 按钮。在运行时工具将 ST 程序转换为 C 代码,然后转换为二进制文件并将其上传到 Arduino 后,编译输出窗口中将显示一条“完成”消息,如图 17 底部所示。按下无焊面包板原型上的 PB1 轻触开关,LED 应亮起。松开触觉按钮开关将关闭 LED。
您现在已经使用Arduino和OpenPLC软件构建了一个低成本的PLC!
欢迎加入小编工控技术群聊,共同学习PLC+物联网!VV:PLC230