Arduino Opta PLC实操案例:货物传送
可编程逻辑控制器 (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
资源
● 贸泽项目购物车在这里。
● GitHub存储库在这里。
硬件准备
本项目将使用两个红外 (IR) 断光束传感器来检测包装箱及其尺寸。这类传感器通常用于物体检测、计数和安防系统等应用中。它们成对使用,发射器有两根线,接收器有三根线。
我们将把这对传感器上下堆叠在一起。如果一个小箱子通过,它只能激活一个传感器。而较大的箱子会中断两束光,同时激活两个传感器。最后,由于这两个是5V传感器,我们需要使用稳压器将电压从12V降到5V。图2显示了这两个传感器与Opta的连接方式。
图2 显示硬件连接的接线图。请注意,上拉电阻是可选的,如果需要,可将红外接收器OUT引脚连接至降压转换器的5V电压(图源:Green Shoe Garage)
使用以下步骤连接红外断光束传感器:
1.将Opta的12V源极引脚连接到稳压器的正 (+) 输入端子。
2.将Opta的GND (-) 源极引脚连接到稳压器的负 (-) 输入端子。
3.将发射器(红外LED)的VCC(电源)引脚连接至稳压器的正 (+) 输出端子。
4.将发射器的GND(接地)引脚连接至稳压器的负 (-) 输出端子。
5.将接收器的VCC(电源)引脚连接至稳压器的正 (+) 输出端子。
6.将接收器的GND(接地)引脚连接至稳压器的负 (-) 输出端子。
7.对于上方的断光束传感器,将OUT(信号)引脚连接至I3数字/模拟输入端子。
8.对于下方的断光束传感器,将OUT(信号)引脚连接至I4数字/模拟输入端子。
9.根据您的具体模块,可能需要增加一个上拉或下拉电阻。如果使用下拉电阻,则在信号引脚和接地引脚之间连接一个10kΩ电阻。
接下来,将Opta PLC连接到专为对接直流电机而设计的电路板上。两块电路板将通过RS485总线Modbus RTU命令进行通信(半双工,无终端电阻)。控制板包含控制直流电机的继电器,而直流电机将驱动传送带移动包装箱。
Opta控制板包含一个专用的RS485硬件端口,以嵌入式螺丝端子的形式安装在外壳顶部。引脚分别标记为A(-)、GND和B(+)。除了用于供电的VIN引脚外,电机控制板还有其他相应的引脚。通过以下步骤将PLC与控制器连接起来:
1.将PLC的A(-) 引脚连接到控制板的A(-) 引脚。
2.将PLC的B(+) 引脚连接到控制板的B(+) 引脚。
3.将PLC的GND引脚连接到控制板的GND引脚。
4.将PLC的12V电压连接到控制板的VIN引脚。
最后,我们必须将12V直流电机连接到控制继电器。我们希望两个电机的旋转方向相反。电机将由Opta 12V端口供电。
1.将Opta的12V引脚连接到控制板的NO1引脚。
2.将继电器控制板的COM1端口连接到直流电机的其中一条引线。
3.将直流电机的另一条引线连接到Opta的GND引脚。
4.将Opta的12V引脚连接到控制板的NO2引脚。
5.将继电器控制板的COM2端口连接到第二个直流电机的其中一条引线。确保引线与第一台电机的引线相反,以保证它们的旋转方向相反。
6.将第二台直流电机的另一条引线连接到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按钮。
图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和密码。
o #define SECRET_OPTIONAL_PASS "NETWORK_PASSWORD"
o #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)
o int dev_address:电机控制板的地址可能因制造商而异,请查阅控制板文档。
o uint8_t reg_address:写入电机控制板所执行命令的寄存器地址。寄存器编号与物理继电器板编号相对应。该值介于0x00和0x0F之间。
o uint8_t holding_write:被写入寄存器以控制继电器的命令。这些命令包括:
● 0x0100:继电器开启
● 0x0200:继电器关闭
● 0x0300:切换状态继电器
● ModbusRTUClient.lastError() 返回一个字符串,其中包含Modbus产生的最后一条错误消息。
接下来,我们检查断光束传感器的代码。我们可以使用几种不同的方法进行配置,包括将其作为中断的输入,以便及时处理新包装箱。回想一下,我们有两对发射器/接收器。发射器一直处于开启状态,因此它们没有代码。我们将在代码中处理接收器信号。请注意,这些传感器都是ACTIVE LOW(低电平有效)类型,因此当光束因包装箱的存在而中断时,PLC将看到0V电压。表2列出了一些关键函数和变量:
表2 硬件引脚标示
● void setup()
o pinMode(A2, INPUT):下方断光束传感器
o pinMode(A3, INPUT):上方断光束传感器
o attachInterrupt(digitalPinToInterrupt(A0), lowerBeamBreak_ISR, LOW):如果下方断光束传感器跳闸,我们就知道有包装箱。然后我们将检查上方断光束传感器,以确定包装箱是高还是矮。
o void lowerBeamBreak_ISR():中断服务例程 (ISR) 将检测是否有物体干扰下方断光束传感器。
最后一大段代码用于将遥测数据通过Wi-Fi®通信传回Arduino IoT Cloud。用于实现云通信的函数如下:
● void setup()
o initProperties() 初始化“thing”属性,以允许Opta与IoT Cloud通信。
o ArduinoCloud.begin(ArduinoIoTPreferredConnection) 启动Wi-Fi®通信。
o setDebugMessageLevel(2) 设置调试信息的粒度。根据文档说明,数字越大,获得的信息越详细;默认值为0(仅错误),最大值为4。
● void loop()
o 主循环的每次迭代都需要调用ArduinoCloud.update(),以便将遥测数据发回云端。
● thingProperties.h
o bool lowerSensorTripped是一个变量,用于存储下方断光束传感器的状态。如果设置为TRUE,表示检测到包装箱。如果只有下方断光束传感器跳闸,说明包装箱比较小。
o bool upperSensorTripped是一个变量,用于存储上方断光束传感器的状态。如果设置为TRUE,表示检测到包装箱。如果上方和下方传感器都跳闸,说明检测到了大包装箱。
o ArduinoCloud.addProperty(lowerSensorTripped, READ, ON_CHANGE, NULL) 将下方断光束传感器的状态发送到云端。
o 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软件:
1.从Arduino网站下载Arduino PLC IDE和Arduino PLC IDE Tools。
2.运行Arduino PLC IDE Tools安装程序,并按照安装说明进行操作。
3.安装完成后,打开Arduino PLC IDE。
4.使用USB电缆将兼容PLC的Arduino设备连接到计算机。
5.在Arduino PLC IDE中,单击“Tools”菜单,然后单击“Board”并选择设备。
6.在“Port”部分,选择设备连接的COM端口。
7.单击“PLC IDE Bootloader”按钮,将引导加载程序下载到设备。
8.下载引导加载程序后,单击“Connect”按钮连接到设备。
9.在“Device License”部分,输入设备的硬件ID,然后单击“Activate”按钮。
10.现在,您应该可以使用Arduino PLC IDE对兼容PLC的Arduino设备进行编程了。
我们已经在GitHub存储库中提供了演示如何使用PLC IDE(图5)对Opta进行编程的代码。
图5 Arduino PLC IDE为业界工程师提供了更常用的PLC开发工具(图源:Green Shoe Garage)
最后的组装和故障排除
硬件已组装完毕,固件也已经烧写到Opta PLC,我们接下来将为项目测试做最后的准备。在我们的设置中,断光束传感器将放置在传送带的两侧(图6)。我们将把发射器放在右侧,接收器放在左侧。要特别注意将发射器和接收器水平和垂直对齐,以便一个大包装箱能同时触发两个传感器。请注意确保电线安全、整齐地穿过任何机械部件,如电机和传送带。
图6 一个小包装箱将仅触发下方断光束传感器(图源:Green Shoe Garage)
要查看遥测数据,可下载并进入Arduino Cloud Remote App,然后选择相应的仪表板(图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》播客来提升公众对科技的认知。他还拥有马里兰州专业工程师资质,并获得了约翰·霍普金斯大学系统工程硕士学位。
评论