0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Arduino和AutomationDirect在ProOpen PLC中合并

eeDesign 2024-04-24 17:41 次阅读

为什么对PLC编程这么感兴趣?可以说,因为PLC是大多数工业自动化系统的支柱,所以理解使用这种设备的复杂性当然很重要。这引出了一个重要的问题:为什么PLC首先成为如此重要的控制架构?

关于这件事有很多值得商榷的观点,但我最坚定的一个观点是梯形逻辑编程结构;能够在看起来和感觉上都像运行工厂的电气原理图的环境中编程。电工工程师和技术人员都可以很容易地理解和排除这些程序的故障。

今天,我们将稍微扩展一下梯形逻辑的范围。AutomationDirect以包括PLC在内的大量自动化设备而闻名,它提供了一种称为ProOpen的模型,这是一种模块化PLC,具有Arduino MKR Zero微控制器的大脑。

wKgZomYo09eAAXqmAAEI5DfXhys691.jpg

图一。

我的工作台设置包括电源以太网适配器、CPU和I/O模块。你可以只用CPU和I/O模块来完成这个项目!

Arduino与PLC有何不同?

这是一个重大的根本性问题。一;一个Arduino只是一块板子这提供了对处理器芯片的I/O引脚的简单访问。但除此之外,编程环境是免费的、简单的、基于文本的,用户社区是巨大的和全球性的。

如果我们想得到具体的,有两个主要的区别。Arduino是用C++(基于文本,而不是梯形逻辑)的变体编程的,Arduino也没有简单的卡扣式I/O模块,除了可以放置在可堆叠接头上的某些“屏蔽”,但这些看起来不太像任何控制工程师都会认识的PLC I/O模块。

然而,ProOpen结合了Arduino MKR板的功能和灵活性,并将其封装到DIN导轨安装的CPU、电源和I/O模块系列中,与Productivity 100 PLC系列兼容。如果我们能利用这一点,我们就有了一个非常强大的PLC。

开始:我需要什么?

这个项目,虽然不像市场上的一些PLC那样昂贵,但仍然需要几个项目才能成功。我们将使用P1AM-100 CPU和组合输入/输出模块P1-16CDR。在我的设置中,我还包括了一个以太网模块和一个电源,但这个介绍性项目将成功没有这些。

除了PLC本身,我们还需要一个24伏电源和微型USB电缆,包括电源和数据(您的计算机应该在设备管理器中注册一个新设备)。

由于编程使用Arduino软件,您可以在Windows、Mac或Linux上对该PLC进行编程!本教程是在软件版本1.8.19上测试的(向下滚动并找到“传统IDE”按钮在下载页面上).我个人没有在Arduino最新的2.0版本平台上测试过。

硬件设置非常简单。I/O模块连接在CPU的右侧,并固定在DIN导轨上。电源已连接,在将USB电缆连接到CPU之前,我接通了24伏电源。

wKgaomYo09iAAX2VAACdyfJZgOE587.jpg

图二。

所需硬件:P1AM-100 CPU和P1-16CDR I/O模块,以及用于接线的端子板。

配置软件

要正确使用Arduino软件,您需要添加两个元素:

这图书馆提供对运行I/O和通信功能的所有命令的方便访问。

这董事会经理提供有关P1AM硬件本身的信息

这些说明已经很好地提供了手册中的步骤从AutomationDirect开始,从第1-5页开始,一直到第1-6页的底部。

对于本教程,我只使用Arduino IDE,而不是附加的ProdictivityBlocks软件。当您加载代码时,您可能会遇到即使是那些使用过Arduino产品的人也不熟悉的错误,所以请务必查看解决纷争一节。

设计您的代码

如果您不熟悉C++编程的基础,它包含了梯形逻辑的所有相同元素,但格式完全不同。

假设我使用相同的硬件设置,我提供了一个模板来帮助我开始编写任何代码。下面是代码,从一开始就包含了库。我将对它进行分解,并解释每个组件以及它与梯形逻辑项目的关系。

标签名称变量

在这个IDE中,变量名在整个代码中使用,可能很多次,就像标签一样。在每一个实例中删除和重新键入新的标记名将是一场噩梦,所以在代码的最顶端,我创建了一个部分来定义我的输入和输出变量名。

在我的第一个简单项目中,我有一个蓝色按钮连接到输入终端1,一个绿色按钮连接到输入终端2。输出模块上还有标准的红色LED指示灯。你可以按照我的例子,输入你想使用的标签名。

带“int”的行是指每个I/O点的整数值。这些必须在代码的顶部全局定义,就像PLC程序中所有I/O地址的控制器范围标记一样。

wKgZomYo09qABr7jAAA-0a73z2E168.jpg

图3。

定义标记名变量。前两个已经为我的程序设置好了。我们还需要8倍的输出。

例行程序:设置

所有PLC都包含第一周期扫描逻辑。我们通常会忽略该例程并将其留空,但C++中的设置例程包括通信通道的初始化和PLC响应的验证。

wKgZomYo09yAY6IMAAAOyj1SVtc388.jpg

图4。

设置例程初始化串行通信(如果我们最终需要它)并验证CPU状态。

子程序:readModules

在典型的PLC扫描中,在执行任何逻辑之前,检测所有输入点的状态。这个简单的子程序将获得这个组合模块上的所有输入地址(它有8个输入和8个输出)。

如果其他模块(甚至模拟输入)被添加到项目中,它们也可以被添加到readModules例程中。

wKgaomYo092AYPM9AABaXTkEtrM130.jpg

图5。

该子程序读取所有输入模块点。为了方便起见,我们在程序的顶部定义了槽号。

主例程:循环

主例程按此顺序执行三项基本任务:

运行readModules子程序

检查我们代码中的所有逻辑指令

运行writeModules子例程。

在步骤2中,我们唯一需要进行代码编辑的地方是在所示的//注释标记之间。

与其重新散列这个If/Else语句逻辑,不如看看我们以前的文章,描述如何在C++编码环境中重新创建梯形逻辑.

对于我的简单测试,代码检查红色和绿色按钮,如果两个按钮都通电,输出LED也将通电。

wKgZomYo09-ALtzfAABWPJeMAA0716.jpg

图6。

主例程实际执行用户定义的逻辑。它不一定是梯形格式,但这可能会有所帮助。

子程序:写模块

一旦逻辑被执行,所有I/O点的临时状态被存储,但尚未写入I/O模块。这个最后的子例程的目的是写入这些值。

这意味着随着代码长度的增加,会有轻微的延迟,这与传统的PLC更相似,而与典型的微控制器代码有点不同,后者可以随时写入值。

C++环境的灵活性允许程序员对输出响应逻辑条件的时间、方式和原因有更多的控制。

wKgaomYo0-CATgdjAAB-0TId6Tc158.jpg

图7。

这个例程接收所有更新的标签值,并将它们写入适当的输出终端。

ProOpen故障排除提示

由于内置MKRZero板,有一些小技巧可以帮助编程。

首先,在使用箭头按钮上传之前,请始终按下“验证”复选标记按钮。这样,您可以将错误隔离到代码错误或加载错误。首先解决代码错误。

wKgaomYo0-KAeR99AAA9tbjKx2I417.jpg

图8。

加载代码时可能出现COM错误。

重新启动Arduino IDE

由于COM端口当前正被某个现有项目使用,因此存在一些错误。关闭和打开IDE可以清除一些问题并刷新板和端口标识。如果这不起作用,请继续下一步。

wKgaomYo0-OAVZimAACSxO3ybFE145.jpg

图9。

这显示了如何为Windows机器正确选择板和端口。

COM端口号

如果程序在加载过程中报告错误,请验证板的选择是否正确,以及COM端口是否正确。下图显示了正确的值(尽管您的COM端口号可能不同)。

wKgZomYo0-WADirSAADczZ27lBU007.jpg

图10。

如果遇到此错误,请双击重置按钮,选择COM端口,然后再次上传。

引导加载程序模式的重置按钮

加载程序时,可能会出现通信错误。与熟悉的Arduino Uno板相比,处理CPU USB和串行通信之间转换的芯片有所不同。简单地再次按“上传”或重启可能无法解决问题。

一个常见的解决方法是快速按下CPU上的“重置”按钮两次,然后选择适当的COM端口(它可能会改变),并再次上传。


这个重置按钮将CPU置于停止代码执行并允许加载的模式,有点像将PLC置于停止模式。

代码停止执行

在一些罕见的情况下,代码似乎会在一段时间后停止执行(我的经验是大约12小时)。在我的情况下,CPU在此期间通过USB连接到计算机。拔下USB并按下“重置”1次后,代码仍然无法执行,需要重新上传代码。

在第二个测试中,成功上传后立即断开USB连接,代码继续无限期执行(至少在撰写本节前几天)。

将微控制器用作PLC

微处理器嵌入PLC机箱的过程与大多数PLC的现实并没有太大的差距。然而,许多人会认为这一目的限制了微控制器的潜力,尽管这可能是真的,但PLC软件无疑在工业领域提供了一些极端的优势,迎合了不熟悉基于文本的编码的操作员和技术人员的需求。这种PLC是一个很好的折衷方案,具有一些独特的灵活性优势。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    6846

    浏览量

    147995
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16069

    浏览量

    344272
  • plc
    plc
    +关注

    关注

    4980

    文章

    12311

    浏览量

    455513
  • Arduino
    +关注

    关注

    185

    文章

    6434

    浏览量

    185075
收藏 人收藏

    评论

    相关推荐

    【eda经验分享】Allegro如何合并铜皮

    问:Allegro如何合并铜皮(Merge Shapes)答:Allegro,Shape不仅可以是走线,还可以是各种其他属性,例如Silkscreen,Place Bound,S
    发表于 11-12 17:49

    Arduino学习的问题

    Arduino IDE(arduino-1.6.0-windows),怎么能够导入库文件?在哪里可以下载到对应的库文件?
    发表于 02-26 17:28

    CAD文字之CAD怎么合并文字?

    使用国产CAD软件绘制给排水图纸的过程,经常会需要进行CAD文字修改,那么你知道浩辰CAD给排水软件如何合并文字吗?接下来就和小编一
    发表于 01-18 16:34

    CAD怎么合并设备表?CAD合并设备表操作技巧

    `浩辰CAD电气软件中进行强电平面设计的过程,怎么合并设备表呢?可能有些刚开始进行CAD入门学习的小伙伴对此并不了解,下面就让小编来给大家介绍一下正版CAD软件——浩辰CAD电气软件
    发表于 05-25 16:08

    CAD软件怎么合并表格?CAD表格合并技巧

    之前的CAD教程,小编使用浩辰CAD建筑软件给CAD制图初学入门者介绍了新建表格以及拆分表格的功能。那么,就有人问了:CAD软件如何合并表格呢?别着急,接下来就给大家介绍。合并表格
    发表于 06-05 12:53

    Arduino搭建一个3*3的矩阵键盘

    矩阵键盘在51单片机的案例应用较多,但是Arduino很少使用,今天小编就特立独行一次,Ardu
    发表于 01-12 06:09

    CAD软件怎么合并单元格?

    使用国产CAD软件绘制给排水CAD图纸的过程,有些时候会需要合并单元格,那么各位CAD制图初学入门者知道CAD怎么合并单元格吗?下面就
    发表于 05-11 14:19

    一个带有Arduino NANO V3的PLC项目

    描述PLC Arduino NANO 可编程梯形图该项目是一个带有 Arduino NANO V3 的 PLC,可以使用 LadderMaker 软件
    发表于 08-23 06:54

    arduino ide安装esp32的arduino框架时的问题求解

    arduino ide安装esp32的arduino框架时的问题在arduino ide
    发表于 03-06 08:22

    Arduino PLC项目开关输出LED卡(第4张,共5张)

    电子发烧友网站提供《Arduino PLC项目开关输出LED卡(第4张,共5张).zip》资料免费下载
    发表于 08-16 10:33 2次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>PLC</b>项目开关输出LED卡(第4张,共5张)

    Arduino PLC项目输入LED卡(第3张,共5张)

    电子发烧友网站提供《Arduino PLC项目输入LED卡(第3张,共5张).zip》资料免费下载
    发表于 08-16 10:32 4次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>PLC</b>项目输入LED卡(第3张,共5张)

    Arduino PLC项目继电器卡(第1张,共5张)

    电子发烧友网站提供《Arduino PLC项目继电器卡(第1张,共5张).zip》资料免费下载
    发表于 08-16 10:31 2次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>PLC</b>项目继电器卡(第1张,共5张)

    Arduino PLC项目(第2张,共5张)

    电子发烧友网站提供《Arduino PLC项目(第2张,共5张).zip》资料免费下载
    发表于 08-16 10:29 6次下载
    <b class='flag-5'>Arduino</b> <b class='flag-5'>PLC</b>项目(第2张,共5张)

    基于ArduinoPLC的水处理厂SCADA

    电子发烧友网站提供《基于ArduinoPLC的水处理厂SCADA.zip》资料免费下载
    发表于 10-24 10:25 0次下载
    基于<b class='flag-5'>Arduino</b>、<b class='flag-5'>PLC</b>的水处理厂SCADA

    基于ArduinoPLC的工业应用

    电子发烧友网站提供《基于ArduinoPLC的工业应用.zip》资料免费下载
    发表于 11-18 09:20 0次下载
    基于<b class='flag-5'>Arduino</b>的<b class='flag-5'>PLC</b>的工业应用