分享一个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.OpenPLC Hello World 运行时仪表板。
版本 1.2b 提供了一个用于测试 LD 程序的模拟器,但可以对其他 Arduino 平台和流行的微控制器(如 ESP32 和 ESP8266 可编程设备)进行编程。图 2 说明了 Hello World 模拟器 LD 程序环境。
图2.Hello World 模拟器 LD 程序环境。
将 OpenPLC 与 Arduino Uno 一起使用
了解 OpenPLC 开源平台后,您现在可以构建 Arduino Uno 或兼容的 PLC。构建开源 PLC 的第一步是从此处的网站下载开发工具。
图3.OpenPLC 网站。
为您的 PLC 开发机器的操作系统选择软件。从网站下载OpenPLC软件后,双击以运行安装程序。
恭喜您安装了 OpenPLC!
您已准备好构建您的第一个 OpenPLC 项目 Hello World。
第一个OpenPLC项目:Hello World
该项目使用Arduino Uno或兼容板,以及无焊试验板上的一些分立电子元件。Hello World PLC 项目在按下触觉按钮开关时会点亮 LED。您将使用图 4 所示的电子电路原理图连接兼容 Uno 的 PLC。
图4. Arduino Uno PLC电子电路原理图。
作为补充参考,这里是作者的无焊面包板PLC,如图5所示。
图5. 笔者实际原型Arduino Uno PLC接线图。
轻触按钮开关 PB1 和 PB2 作为数字逻辑开关接线。当按下 PB1 或 PB2 时,引脚 3 和 2 分别施加大约 +5 VDC。为了说明测试有线数字开关的方法,图6给出了图6。您会注意到,在 Tinkercad 电路模型中,数字电压表连接在电阻 R1 上。USB 电缆将 Arduino PLC 连接到编程计算机。Arduino Uno 印刷电路板 (PCB) 上将出现一个开机 LED;该指示灯表示微控制器和印刷电路板 (PCB) 上的配套电子电路已通电。
图6.测试数字逻辑开关。
将数字电压表放在图 5 所示实际 PLC 原型的 R1 上,然后按下 PB1 轻触开关。电气测量仪器的 LCD 上应显示 +5 V 的近似读数。如果电压读数不是大约 +5 V,请检查接线并重复测量。在 PB2 轻触开关上执行相同的测试测量。按 PB2 在数字电压表上读取大约 +5 V。
恭喜,您的 Arduino PLC 有两个功能性数字逻辑开关。
下一步是在无焊试验板上接线并测试输出 LED 指示灯。图 7 显示了无焊试验板上有线和有源输出 LED 指示灯的 Tinkercad 电路模型。在实际无焊试验板原型上测试输出 LED 指示灯时,请使用此电路模型作为参考。
图7. 功能输出 LED 指示灯。 图7. 功能输出 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 编辑器。
图8. OpenPLC 编辑器。
通过选择“文件”>“新建”创建 HelloWorld LD 程序。
屏幕上将出现一个小对话框。在标记为 POU Name 的文本框中填写 HelloWorld,如图 9 所示。对于“语言”下拉列表,选择“LD(用于梯形图)”。单击“确定”按钮以完成创建新的 LD 程序。
图 9.填写项目框信息。
完成项目框后,即可创建 I/O 标记。对于 Hello World LD,有两个标记:HelloWorld_PB 和 HelloWorld_LED。单击加号以创建两个 I/O 标记。您的 I/O 标记列表应如图 10 所示。
图 10. HelloWorld I/O 标记列表。
您会注意到 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) 这些位指令的位置在编程工具栏中。
图 11. PLC 位指令。
选择XIC和OTE位指令,并将它们分别放在OpenPLC编辑器的LD程序构建部分的左侧和右侧。您创建的标记将通过选择正确的位指令进行关联。图 12 显示了与正确位指令关联的标签。
图 12. 放置和配置 XIC 和 OTE 位指令。
选择电源轨并配置引脚数以连接 XIC 和 OTE 位指令并构建逻辑的单级。引脚是 LD 程序的横档。图 13 说明了电源轨的选择和配置过程。
图 13. 电源轨的选择和配置。
构建 LD 程序的最后一步是将 XIC 和 OTE 位指令连接在一起。选择 HelloWorld_PB XIC 位的右端并拖动它以创建一条线。继续拖动该线以连接到HelloWorld_LED OTE 位的左侧。该行创建一个梯级来管理 XIC 和 OTE 位指令控制逻辑操作。完成的 LD 程序如图 14 所示。
图 14. Hello World LD 程序。
超级工作构建 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 板的配置面板。
图 17.“配置”面板。
您可能需要使用 PLC 开发机器的设备管理器识别正确的 COM 端口。选择 Arduino Uno 板和 COM 端口后,单击 Upload 按钮。在运行时工具将 ST 程序转换为 C 代码,然后转换为二进制文件并将其上传到 Arduino 后,编译输出窗口中将显示一条“完成”消息,如图 17 底部所示。按下无焊面包板原型上的 PB1 轻触开关,LED 应亮起。松开触觉按钮开关将关闭 LED。
您现在已经使用Arduino和OpenPLC软件构建了一个低成本的PLC!
欢迎加入小编工控技术群聊,共同学习PLC+物联网!VV:PLC230
物联网设备结构图
单片机能代替PLC吗?过来人告诉你
随着科技的进步和市场的需要,近年来出现了非常多类似Arduino这样的开源电子原型平台,它们大部分实现了对单片机的二次封装,所有外设、模块接口都是现成的,对于使用者的要求只需懂C语言,熟悉各种库的调用,不需要关心硬件原理,就可以轻松上手,降低了学习、使用成本,增加了人们对嵌入式系统的兴趣,为许多电子爱好者打开了创作的大门。这不仅增加了微控制器用户的数量,而且增加了微控制器的应用范围。
今天我们把微控制器(单片机)与可编程逻辑控制器 (PLC)进行比较。
可编程逻辑控制器(PLC) 是一种专用计算设备,在传统的顺序控制器的基础上引入了微电子技术、计算机技术、自动控制技术和通讯技术而形成的一代新型工业控制装置,目的是用来取代继电器、执行逻辑、计数等顺序控制功能,建立柔性的远程控制系统。具有通用性强、使用方便、适应面广、可靠性高、抗干扰能力强、编程简单等特点。
它们最初是为了取代自动化行业工作过程中使用的硬接线继电器和计时器而开发的,但如今它们已经扩大规模,并在各行业的制造过程使用,包括基于机器人的生产线。如今,世界上大多数的工厂都有在使用PLC设备。主要是因为其稳定耐用,能够承受粗暴搬运和高强度的震动环境。
微控制器(单片机)
微控制器是单个芯片上的小型计算设备,包含一个或多个处理核心,内存设备和通用输入和输出 (I/O) 端口。它们用于各种日常设备,特别是在需要执行特定重复任务的应用中。与 PLC 不同的是,它们没有像显示这样的接口,也没有内置的开关,它们只能用 GPIO 等接口连接这些外置组件。
结构组成
PLC架构
PLC 通常可以称为高级微控制器。它是由电源组件、微处理器CPU及存储器组件以及输入输出组件所构成。处理器模块由中央处理单元(CPU)和内存组成。除了微处理器之外,CPU 还包含至少一个以上的接口,通过该接口可以对其进行编程以及通信网络。电源通常是一个单独的模块,输入输出模块与处理器是分开的。输入输出模块可能还包含外部连接设备模块。
1.单片机架构
单片机的构成与上述 的PLC有些相似,但微控制器把 CPU,内存,存储单元以及与外界通信所需的输入输出端口和接口都集成到一个芯片上。
2. 接口
PLC 是为工业设计使用的,它的工作环境通常与没有外设的单片机不兼容。单片机在功能上基本可以做到PLC能做的事情,工业设计通常要处理几百个输入输出。单片机虽然可以通过增加外设来解决,但是相对的要增加成本,并且不稳定。
3.性能、稳定性、可靠性
这三点是 PLC 最与众不同的地方。PLC 设计用于工业需求,因此能够承受工业生产条件,例如温度变化、噪声、搬运和振动。
单片机却不同。根据设计,它们最初设计并非用作PLC等独立设备。单片机设计为的是嵌入到系统中,所以微控制器的外观讲究简易。微控制器在我们使用过程中不小心时就可能导致出现故障,芯片本身很脆弱并且很容易损坏。
4.使用要求(简易性)
PLC的编程所需的技术知识低、以及采用积木式结构,组态灵活安装方便。PLC使用并不复杂,只需要接受过正规培训的工厂技术人员就能操作使用,故障排除和诊断相对容易。现在的PLC基本都带液晶显示,操作人员通过液晶就可以进行监控。
单片机需要熟练的掌握芯片知识。开发人员需要精通硬件部分和编程知识,才能设计电路。单片机还需要特殊工具(例如示波器)来进行故障诊断和故障排查。虽然目前有几个像Arduino这样的集成简化平台,但综合从简易性来看,单片机比PLC对人员的要求要高出许多。
5. 应用
PLC是工业中非常常用的,它用于控制生产、生产管理等。单片机在日常电子设备中得到广泛应用。它们是智能设备和消费电子产品的主要组成部分。
单片机能替代PLC吗?
微控制平台的出现增加了单片机的使用范围,它可以去开发以前单片机不适合的领域,从微型DIY计算机到几个复杂的控制系统。这引发了关于为什么不使用单片机代替PLC的问题,主要是PLC与单片机相比的成本过高,将单片机用于工业应用之前,需要对单片机进行大量的改进。
总结:微控制器的设计不具备像PLC一样,能在极端条件下稳定工作的能力,这使得单片机不适合工业应用。工业用的器件都是按照标准进行设计,单片机不一定能支持,如果硬要使用需要加外设,就会增加成本,增加损坏的风险,这与工业产品的本质不符合。
综上所述,工业控制设备中的每一个都是为特定系统设计的,在决定选择特定应用作为最佳设备时,应充分考虑它们的各项因素。值得注意的是,一些制造商正在构建基于微控制器的 PLC,现在已经有了基于Arduino构建的PLC,在未来或许微控制器能大范围的应用于工业中,现在还不能达到替代的时候。
而还在考虑入门级,及今后发展路线的同学,不必过于纠结,首先PLC是单片机加上外部设备组成的,是建立在单片机基础之上的产品,从某个角度来看,PLC就是对单片机的二次封装,只是PLC厂家写好了固件,并封装到PLC设备中,学了单片机对PLC有比较底层理解。加上上述的对比分析,选择合适自己、感兴趣的方向耕耘才是最重要的。
想要一起学习单片机的朋友,评论”我要入门“,有惊喜,加入我们,就可以与导师一对一互动,快速成长
相关问答
如何用西门子PLC做上位机控制ArduinoUNOR3?
PLC和arduino都是做下端的,要做上端,西门子的,就要用winccPLC和arduino都是做下端的,要做上端,西门子的,就要用wincc
在座的前辈跪求解答!!arduino如何分别控制多个步进电机运动...
[回答]目前用的器材:两个两相四线步进电机,分别由两个l298n驱动,均安装在后轮上,主控制板是arduino2560,nrf24l无线芯片及ArduinoJoyStickShield板子进行...
工业机器人编程难学吗?
机器人的开发语言一般为C、C++、C++Builder、VB、VC等语言,主要取决于执行机构(伺服系统)的开发语言;而机器人编程分为示教、动作级机器人编程语言、任务级...
如何搭建个人4G物联网服务器?
综上,通过深刻的理解和掌握以上知识是你构建平台的必须,本人通过近两个月的研究,挖出了一条路,并不断实现,希望能互相交流,不断完善,直至成功。ONENET+ESP826...
PLC的AD模块中的输入电阻值10M欧姆有什么用?表示什么意思?
arduino当使用INPUT模式时,引脚作为数字输入,但是不连接任何的拉电阻,处于悬空转态,容易受电子噪声干扰而随机的改变其电平状态。一般来说,当引脚作为数字...
能随时控制反应的发生和停止的装置有哪些?
能够随时控制反应发生和停止的装置,通常具有精确的时间或条件控制能力,主要有以下几类:1.程序控制器:如PLC程序控制器、单片机、Arduino等,可以编写程序精确...
升入大学后想开始研究机器人,该从哪个套件入手?
谢邀。这个问题我来回答再合适不过了。因为我就是大二开始进入机器人实验室的,开始研究机器人。我学的是自动化专业,和机器人的控制方面息息相关。我是在实...
电气工程师用什么工具考..._电气工程师_帮考网
2.仿真软件,如PSpice、MATLAB等。3.自动化控制软件,如PLC编程软件、SCADA软件等。4.测试仪器,如示波器、数字万用表、频谱分析仪等。5.计算器和...