Arduino Opta PLC实操案例:货物传送
发布于2024-04-10
可编程逻辑控制器 (PLC) 是现代工业自动化的基石,为控制机器和流程提供一个强大而灵活的平台。简单来说,PLC是一种工业数字计算机,适用于控制装配线、机器人设备等制造过程,或任何需要高可靠性、容易编程且能进行故障诊断的活动。PLC发明于20世纪60年代末,旨在取代当时复杂的继电器和定时器系统。Richard Morley通常被认为是1968年发明第一台PLC(Modicon)的功臣。从那时起,随着技术的不断发展,PLC已成为众多应用领域的重要组件,包括机器控制、楼宇自动化、预测性维护、数据记录、远程监控和安防等。
PLC由以下几个关键部件组成:
-
处理器 (CPU):它控制PLC的所有活动,处理来自输入模块的数据,并向输出模块发送信号。
-
输入/输出模块 (I/O) :PLC可以借助这些模块与外界互动。输入模块接收来自传感器和人机界面 (HMI) 的数据,而输出模块则向执行器和其他设备发送信号。
-
存储器:存储用户的程序和流程所需的其他信息。
-
通信端口:用于实现PLC与其他设备(如计算机、其他PLC和网络系统)之间的通信。
-
电源:为PLC及其I/O模块的运行提供必要的电力。
最近,Arduino携Opta平台(图1)进入了PLC市场,这是一款安全、易用的微型PLC,具有工业物联网 (IIoT) 功能。该平台是Arduino与领先的工业和楼宇自动化设备制造商Finder合作设计的。Opta让专业人员能够利用Arduino生态系统扩展自动化项目。它支持Arduino sketch和标准PLC语言,包括梯形逻辑图 (LD) 和功能块图 (FBD)。
图1:Arduino已经携Opta系列PLC进入了可编程逻辑控制器市场。(图源:Arduino)
Opta有三种型号:Arduino Opta Lite、Arduino Opta RS485以及功能最丰富的Arduino Opta Wi-Fi®。Opta配备有功能强大的STMicroelectronics STM32H747XI双核Arm® Cortex®-M7+M4 MCU,可帮助用户执行实时控制、监控以及实施预测性维护应用。根据型号的不同,Opta还提供多种网络连接选项,包括USB、以太网和Wi-Fi® /低功耗蓝牙,以及RS-485等特定行业协议。Opta是一款可安装在DIN导轨上的设备,其设计高度可靠,采用双核架构,无需外部冷却,可在工业温度范围(-20°C至+50°C)内运行。Arduino Opta的主要特性包括:
-
安全性:Opta具有安全引导程序,支持使用TLS 1.2进行安全通信。
-
方便开发:Opta可使用Arduino IDE或Finder PLC IDE进行编程。
-
专业级IIoT功能:Opta具有多种连接选项,可以连接到互联网用于远程监控。
在本项目中,我们将设计一个概念验证传送系统,按照尺寸对包装箱进行分类。我们将通过本项目探索有关Arduino Opta的多个概念,包括使用Arduino 2.0 IDE和Arduino PLC IDE进行开发。我们还将完成硬件与PLC的连接过程。最后,我们将了解如何通过Arduino云将Opta连接到互联网。
物料清单和工具
截至发布之日,物料清单总成本约为300美元(表1)。
表1:项目物料清单
除了上面的物料,还推荐使用以下工具:
-
小型十字头和平头螺丝刀
-
剪线钳/剥线钳
-
小型尖嘴钳
-
数字万用表
-
高速互联网连接
-
运行Windows 10或更高版本的PC
资源
硬件准备
本项目将使用两个红外 (IR) 断光束传感器来检测包装箱及其尺寸。这类传感器通常用于物体检测、计数和安防系统等应用中。它们成对使用,发射器有两根线,接收器有三根线。
我们将把这对传感器上下堆叠在一起。如果一个小箱子通过,它只能激活一个传感器。而较大的箱子会中断两束光,同时激活两个传感器。最后,由于这两个是5V传感器,我们需要使用稳压器将电压从12V降到5V。图2显示了这两个传感器与Opta的连接方式。
图2:显示硬件连接的接线图。请注意,上拉电阻是可选的,如果需要,可将红外接收器OUT引脚连接至降压转换器的5V电压。(图源:Green Shoe Garage)
使用以下步骤连接红外断光束传感器:
-
将Opta的12V源极引脚连接到稳压器的正 (+) 输入端子。
-
将Opta的GND (-) 源极引脚连接到稳压器的负 (-) 输入端子。
-
将发射器(红外LED)的VCC(电源)引脚连接至稳压器的正 (+) 输出端子。
-
将发射器的GND(接地)引脚连接至稳压器的负 (-) 输出端子。
-
将接收器的VCC(电源)引脚连接至稳压器的正 (+) 输出端子。
-
将接收器的GND(接地)引脚连接至稳压器的负 (-) 输出端子。
-
对于上方的断光束传感器,将OUT(信号)引脚连接至I3数字/模拟输入端子。
-
对于下方的断光束传感器,将OUT(信号)引脚连接至I4数字/模拟输入端子。
-
根据您的具体模块,可能需要增加一个上拉或下拉电阻。如果使用下拉电阻,则在信号引脚和接地引脚之间连接一个10kΩ电阻。
接下来,将Opta PLC连接到专为对接直流电机而设计的电路板上。两块电路板将通过RS485总线Modbus RTU命令进行通信(半双工,无终端电阻)。控制板包含控制直流电机的继电器,而直流电机将驱动传送带移动包装箱。
Opta控制板包含一个专用的RS485硬件端口,以嵌入式螺丝端子的形式安装在外壳顶部。引脚分别标记为A(-) 、GND和B(+) 。除了用于供电的VIN引脚外,电机控制板还有其他相应的引脚。通过以下步骤将PLC与控制器连接起来:
-
将PLC的A(-) 引脚连接到控制板的A(-) 引脚。
-
将PLC的B(+) 引脚连接到控制板的B(+) 引脚。
-
将PLC的GND引脚连接到控制板的GND引脚。
-
将PLC的12V电压连接到控制板的VIN引脚。
最后,我们必须将12V直流电机连接到控制继电器。我们希望两个电机的旋转方向相反。电机将由Opta 12V端口供电。
-
将Opta的12V引脚连接到控制板的NO1引脚。
-
将继电器控制板的COM1端口连接到直流电机的其中一条引线。
-
将直流电机的另一条引线连接到Opta的GND引脚。
-
将Opta的12V引脚连接到控制板的NO2引脚。
-
将继电器控制板的COM2端口连接到第二个直流电机的其中一条引线。确保引线与第一台电机的引线相反,以保证它们的旋转方向相反。
-
将第二台直流电机的另一条引线连接到Opta的GND引脚。
软件开发
Opta的编程有几种不同的选择,包括传统的Arduino IDE 2.0和Web编辑器。Opta还兼容Arduino PLC IDE,可使用工业自动化应用中的传统语言进行编程。Opta Wi-Fi®型号还可以连接到Arduino IoT Cloud,通过Web浏览器或Arduino IoT Cloud Remote智能手机App接收遥测数据和进行远程控制。
由于我们的要求之一是PLC能与云通信以进行远程监控,因此我们将从Arduino IoT Cloud仪表板开始配置我们的新设备(图3)。首先,下载并安装Arduino Create代理,允许设备与Arduino Cloud后台通信。下载代理程序并查看安装文档。安装完成后,用USB Type-C电缆将Opta连接到运行Create代理的开发人员工作站计算机上。
图3:在Arduino IoT Cloud上配置新设备。(图源:Green Shoe Garage)
首先,我们只需导航到Devices选项卡,单击Add按钮并完成安装向导,即可将Opta配置到Arduino IoT Cloud环境中。这一步将建立安全密钥,允许Opta通过IoT Cloud秘密通信。我们还需要为Opta创建一个“数字双胞胎”(在Arduino环境中称为“thing”)(图4)。为此,请单击Things选项卡,然后单击Create按钮。有关为IoT Cloud配置Opta的更多信息,请查看此处的技术参考资料。
图4:设置Opta PLC的数字双胞胎(或称“thing”)(图源:Green Shoe Garage)
完成后,PLC应显示为已连接到IoT Cloud。如果使用Arduino凭据登录,还可以在桌面IDE中访问基于Web的代码。
代码概览
我们先来看看本项目的关键文件:
-
main.ino负责设置设备和运行主循环的大部分工作。大多数与项目相关的源代码都可以在这里找到。
-
thingProperties.h包含一些函数调用,用于将物理PLC连接到其在云中的虚拟双胞胎。
-
arduino_secrets.h包含允许Opta连接到本地无线网络的Wi-Fi® SSID和密码。
-
#define SECRET_OPTIONAL_PASS "NETWORK_PASSWORD"
-
#define SECRET_SSID "NETWORK_NAME_HERE"
-
关键库、函数和变量
除了默认包含的库,我们还需要通过#include语句添加以下库:
-
ArduinoModbus.h包含处理Modbus RTU通信数据包所需的代码。
-
ArduinoTCloud.h允许Opta连接到Arduino IoT Cloud服务。
-
Arduino_ConnectionHandler.h提供一个ConnectionManager,用于控制连接和断开、属性变化更新和事件回调。
这些库主要用于Opta与直流电机控制器板的通信。该控制器板通过Modbus RTU串行通信协议进行通信,具体设置如下:
-
波特率:9600 bps
-
数据位数:8
-
奇偶校验位:No
-
停止位:1
以下是main.ino文件中用于Modbus通信的一些关键函数和变量:
-
byte controlBoardAddress = 0x01设置电机控制板的设备地址。
-
int motor1 = 1是电机寄存器,用于在检测到高包装箱时控制传送带。
-
int motor2 = 2是电机寄存器,用于在检测到矮包装箱时控制传送带。
-
int motorTimeOn = 5000设置检测到包装箱后传送带运行的持续时间。
-
ModbusRTUClient.begin(9600) 以给定的波特率启动Modbus功能。
-
void holdingRegisterWrite(int dev_address, uint8_t reg_address, uint8_t holding_write)
-
int dev_address:电机控制板的地址可能因制造商而异,请查阅控制板文档。
-
uint8_t reg_address:写入电机控制板所执行命令的寄存器地址。寄存器编号与物理继电器板编号相对应。该值介于0x00和0x0F之间。
-
uint8_t holding_write:被写入寄存器以控制继电器的命令。这些命令包括:
-
0x0100:继电器开启
-
0x0200:继电器关闭
-
0x0300:切换状态继电器
-
-
-
ModbusRTUClient.lastError() 返回一个字符串,其中包含Modbus产生的最后一条错误消息。
接下来,我们检查断光束传感器的代码。我们可以使用几种不同的方法进行配置,包括将其作为中断的输入,以便及时处理新包装箱。回想一下,我们有两对发射器/接收器。发射器一直处于开启状态,因此它们没有代码。我们将在代码中处理接收器信号。请注意,这些传感器都是ACTIVE LOW(低电平有效)类型,因此当光束因包装箱的存在而中断时,PLC将看到0V电压。表2列出了一些关键函数和变量:
表2:硬件引脚标示
-
void setup()
-
pinMode(A2, INPUT):下方断光束传感器
-
pinMode(A3, INPUT):上方断光束传感器
-
attachInterrupt(digitalPinToInterrupt(A0), lowerBeamBreak_ISR, LOW):如果下方断光束传感器跳闸,我们就知道有包装箱。然后我们将检查上方断光束传感器,以确定包装箱是高还是矮。
-
void lowerBeamBreak_ISR():中断服务例程 (ISR) 将检测是否有物体干扰下方断光束传感器。
-
最后一大段代码用于将遥测数据通过Wi-Fi®通信传回Arduino IoT Cloud。用于实现云通信的函数如下:
-
void setup()
-
initProperties() 初始化“thing”属性,以允许Opta与IoT Cloud通信。
-
ArduinoCloud.begin(ArduinoIoTPreferredConnection) 启动Wi-Fi®通信。
-
setDebugMessageLevel(2) 设置调试信息的粒度。根据文档说明,数字越大,获得的信息越详细;默认值为0(仅错误),最大值为4。
-
-
void loop()
-
主循环的每次迭代都需要调用ArduinoCloud.update(),以便将遥测数据发回云端。
-
-
thingProperties.h
-
bool lowerSensorTripped是一个变量,用于存储下方断光束传感器的状态。如果设置为TRUE,表示检测到包装箱。如果只有下方断光束传感器跳闸,说明包装箱比较小。
-
bool upperSensorTripped是一个变量,用于存储上方断光束传感器的状态。如果设置为TRUE,表示检测到包装箱。如果上方和下方传感器都跳闸,说明检测到了大包装箱。
-
ArduinoCloud.addProperty(lowerSensorTripped, READ, ON_CHANGE, NULL) 将下方断光束传感器的状态发送到云端。
-
ArduinoCloud.addProperty(upperSensorTripped, READ, ON_CHANGE, NULL) 将上方断光束传感器的状态发送到云端。
-
Arduino PLC IDE
对Opta进行编码的另一种方法是使用Arduino PLC IDE,这是一种软件开发环境,允许使用IEC 61131-3标准语言对兼容PLC的Arduino设备进行编程。这是一款免费的开源软件,仅适用于Windows系统。截至本文发布之日,PLC IDE的功能仍不如市场上其他一些PLC编程软件丰富。不过Arduino PLC IDE包含多种功能,也是一款功能强大的PLC编程工具:
-
支持五种IEC 61131-3编程语言:梯形图、功能块图、结构化文本、顺序功能图和指令表。
-
适用于Arduino和PLC编程的统一编程环境。
-
多种调试工具,帮助查找和修复代码中的错误。
-
易于使用且直观的用户界面。
Arduino PLC IDE是一款宝贵的工具,适用于想要对兼容PLC的Arduino设备进行编程的任何人。它易于使用和配置,并且功能丰富,是一款强大的PLC编程工具。
使用以下步骤安装和设置Arduino PLC IDE软件:
-
从Arduino网站下载Arduino PLC IDE和Arduino PLC IDE Tools。
-
运行Arduino PLC IDE Tools安装程序,并按照安装说明进行操作。
-
安装完成后,打开Arduino PLC IDE。
-
使用USB电缆将兼容PLC的Arduino设备连接到计算机。
-
在Arduino PLC IDE中,单击“Tools”菜单,然后单击“Board”并选择设备。
-
在“Port”部分,选择设备连接的COM端口。
-
单击“PLC IDE Bootloader”按钮,将引导加载程序下载到设备。
-
下载引导加载程序后,单击“Connect”按钮连接到设备。
-
在“Device License”部分,输入设备的硬件ID,然后单击“Activate”按钮。
-
现在,您应该可以使用Arduino PLC IDE对兼容PLC的Arduino设备进行编程了。
有关通过PLC IDE进行安装和配置的更多信息,请访问https://docs.arduino.cc/tutorials/opta/plc-ide-setup-license#3-project-setup。
我们已经在GitHub存储库中提供了演示如何使用PLC IDE(图5)对Opta进行编程的代码。有关使用支持云的PLC IDE的信息,请单击此处。有关Modbus和PLC IDE的信息,请单击此处。
图5:Arduino PLC IDE为业界工程师提供了更常用的PLC开发工具。(图源:Green Shoe Garage)
最后的组装和故障排除
硬件已组装完毕,固件也已经烧写到Opta PLC,我们接下来将为项目测试做最后的准备。在我们的设置中,断光束传感器将放置在传送带的两侧(图6)。我们将把发射器放在右侧,接收器放在左侧。要特别注意将发射器和接收器水平和垂直对齐,以便一个大包装箱能同时触发两个传感器。请注意确保电线安全、整齐地穿过任何机械部件,如电机和传送带。
图6:一个小包装箱将仅触发下方断光束传感器。(图源:Green Shoe Garage)
要查看遥测数据,可下载并进入Arduino Cloud Remote App,或在浏览器中导航至https://create.arduino.cc/iot/dashboards,然后选择相应的仪表板(图7)。
图7:基于云的仪表板,用于监控传送带的活动。(图源:Green Shoe Garage)
故障排除
如果您在项目中遇到问题,可以参考我们在开发过程中发现的一些解决方法:
-
具体的连接问题可能随不同的红外断光束传感器型号而异,因此请务必查阅传感器附带的数据手册或任意文档。
-
确保红外LED(发射器)和光电二极管或光电晶体管(接收器)正确对准,以检测光束中断情况。
-
避免将传感器暴露在直射阳光或其他红外光源下,因为它们可能会干扰传感器的运行。
-
确保串行通信设置为9600 bps。
-
如果您的设备未列在Arduino PLC IDE中,可能需要安装相应的Arduino内核。
-
如果您的设备没有引导加载程序,则必须使用Arduino IDE进行烧写。
-
在IDE和PLC IDE之间切换时,Wi-Fi®功能可能会中断。使用Arduino IDE 2.0,需要通过导航至File > Examples > Portenta H7 board 747_system > example > wififirmwareupdater 来运行Wi-Fi固件更新。在固件刷新后,启动串行监视器并完成安装流程。然后刷新项目固件,Wi-Fi®连接即可恢复。
总结
五十多年来,在日新月异的技术领域,PLC始终是工业自动化不可或缺的一部分。Arduino进入这类嵌入式系统领域,为工业系统设计人员提供了令人兴奋的新选择,尤其是对于资源较为有限的小型企业而言。凭借其出色的适应性、灵活性和强大的功能,Arduino Opta PLC系列必将成为现代工业领域的风向标。
用Arduino Opta Wi-Fi®代替传统PLC,是将设备连入IIoT系统的一种便捷方式。使用传统PLC编程技术的能力,可以帮助习惯于传统PLC软件开发的系统集成商更快适应。
通过本项目,您应该对PLC的原理,以及使我们的工业化社会得以运转的关键系统有了基本的了解。无论您是工程师、技术人员,还是仅仅对技术感兴趣,Arduino Opta PLC都能为您提供强大的学习平台,并为许多实际的自动化和远程控制应用提供物美价廉的解决方案。
作者简介
专业工程师Michael Parks是Green Shoe Garage的联合创始人。Green Shoe Garage是一家提供定制电子设计的工作室和嵌入式安全研究公司,位于马里兰州西部。Michael Parks创办了《Gears of Resistance》播客来提升公众对科技的认知。他还拥有马里兰州专业工程师资质,并获得了约翰·霍普金斯大学系统工程硕士学位。