价值20美元的微控制器是否可以与现实工业控制应用中的PLC匹敌?
随着公司开发硬件和软件来支持各种有趣的应用程序,地下机器人制造商的“制造者”世界继续增长。已经出现了许多微控制器,它们以非常低的前期硬件和软件成本执行各种功能。
已经出现了许多板,包括微控制器,现场可编程门阵列(FPGA)和单板计算机。其中,Arduino和RaspberryPi是两个主要名称(图1)。两者都是开放源代码的设备,具有可从各种供应商处获得的组件,并且它们都需要高水平的编程技能和一定的想象力,然后才能用于实时工业控制应用。
一些工业用户可能会想到这些平台可以替代入门级PLC。毕竟,如果Arduino可以控制机器人来参加STEM竞赛,那为什么它不能控制工业机器人或简单的机器呢?如果有可能以低至20美元的价格购买Arduino,为什么要在PLC上花费数百美元?Arduino可以做很多事情,但是正如我发现的那样,即使在简单的工业应用程序中工作也要说起来容易做起来难。
网络研讨会:PLC与Arduino-按需观看
使用Arduino进行实时工业控制
工业平台?
图1:Arduino和RaspberryPi平台具有许多功能,但也缺乏许多实用功能以支持在工业应用中轻松实现。
RaspberryPi实际上是基于Linux的小型单板PC,而Arduino更像是PLC。尽管这两种平台都合适,但我还是选择了Arduino供我们的项目使用:对泵产生的流量进行闭环控制。传感器测量流量并将数据发送到Arduino,后者调整控制阀执行器以维持设定点。这是最基本的工业模拟自动化功能之一,通常使用PID回路作为控制算法。
Arduino使用PI控制功能-这种类型的回路不需要派生-从流量计读取信号并调节阀以达到并保持设定值。这个概念很简单,但是,在使用实际工业设备时,它变得更加复杂。
Arduino是价格合理的准系统设备,但如果可以编写正确的程序来匹配应用程序,它确实具有广泛的功能。对于程序员而言,这是一片空白,没有本机功能或功能块可以上传,因此我不得不从头开始创建PI算法。
它具有离散和模拟I/O。但是,选择是有限的。模拟输入为0-5V,模拟输出为脉宽调制(PWM)。这适用于调节电动机的速度或调节温度控制回路,但不适用于许多其他应用。大多数工业模拟仪器和执行器都是为4-20mA电流环路设计的,因此该标准已在演示项目中使用,需要大量的设计和工程工作。
处理电流回路
该演示设备使用标准的现成工业组件:罗斯蒙特SFP一体式孔板流量计和FisherEasy-Drive控制阀,均由艾默生自动化解决方案公司提供(图2)。除了物理尺寸以外,没有针对任何特定功能或特性选择这些产品。它们都是非常常见的设备类型,因此非常适合此演示。
流量控制
图2:此流量计和阀门代表通常用于控制流量的典型工业设备。
第一步是将来自流量计的4-20mA信号转换为0-5V,或更佳的1-5V,以保持有效零位。这种情况并不罕见,可以从多个来源获得转换器。但是,为了保持实验的DIY特性并降低成本,我从头开始创建了一个(图3)。它建立在Arduino原型屏蔽板上,可安装在主板顶部。一个简单的欧姆电阻将4-20mA信号转换为1-5V。
电流回路转换
图3:信号转换器板位于Arduino屏蔽栈的中间。它转换两个电流回路输入并将PWM输出更改为电流回路以控制阀。
更具挑战性的任务是将PWM转换为4-20mA。缺乏商业解决方案表明这不是常见的转换,因此我不得不从头开始构建此转换器(图4)。我决定使用两通道光电隔离器对4-20mA电流环路输出进行电隔离,以便在与其他电流环路设备连接时具有更大的灵活性。由于电路与电源隔离,因此留下了为电路供电的问题。这是通过使用电压基准集成电路从电流环路本身为电路供电来解决的。
PWM转换
图4:虽然脉宽调制可以很好地控制电动机或加热元件,但必须将其转换为电压或电流环路来驱动大多数其他设备。
ArduinoPWM输出以Hz运行。低通滤波器去除Hz信号及其谐波,从而产生与PWM占空比成比例的直流信号。设计了二阶Sallen-Key有源滤波器,其截止频率为7Hz,以提供对Hz分量的足够衰减。
运算放大器(运算放大器)用于将低通滤波器输出转换为电流。请记住,所有运算放大器,基准电压源和光电隔离器输出的电源电流必须小于4mA,因为它们必须流过电流环路。最终的隔离输出需要4-20mA电流环路提供的最大10V电源,因此在24V系统中可以很好地工作。有足够的空间将所有信号转换电路安装在同一屏蔽层上。
基本基础设施支持
Arduino没有电源,也没有任何类型的人机界面(HMI),但是它可以使用添加到堆栈中的小型图形显示护罩,屏幕尺寸约为1.75x2.25英寸。与PLC不同,需要自定义程序来提供有用的信息,而PLC通常具有多个HMI选项,仅需简单的屏幕配置即可。电线安装也是基本的,因此连接外部设备需要一些工作。安装Arduino板需要创造力,因为没有外壳,也没有任何方便的选择,例如DIN导轨安装。
在演示项目中,我使用了适合为流量计和控制阀供电的标准24Vdc电源,但必须通过一个简单的线性稳压器将电压降低至12Vdc,才能为Arduino供电.
规范的
图5:流量计,控制阀和大多数PLC在电源(24Vdc)下运行(左)。Arduino的工作电压为12Vdc,因此在散热器下方需要一个额外的调节器(右)以使其脱离主电源。
编写代码以在Arduino上实现PI算法必须从头开始,但是相对简单。读取电流环路输入,计算设定值和输入之间的差,计算积分和比例校正,并将结果发送到PWM电流环路输出。
为了查看操作,我编写了一个程序,使用小显示屏显示过程变量(通过电流回路输入读取)和控制输出作为时间的函数。这提供了控制系统性能的直接视图。
Arduino提供了几个模拟输入,因此将三个以上的模拟输入连接到电位器以调节操作系数(图6)。一个控制控制器的设定点,允许通过旋钮旋转来控制水流。另外两个为控制回路提供了比例和积分增益,并且可以通过调节两者来平衡稳定性和响应时间。它们都没有任何规模或工程单位来指示设置。
监管职位
图6:在其余三个模拟输入中添加电位计可以调整设定点以及P和I增益,但是没有刻度或指示。
准备运行
循环表现
图7:流量计上的变送器提供了本地显示,可滚动显示常规工程单位中的一系列过程变量。使用此功能,可以验证循环的性能。
流量计具有默认的本地显示(图7),以加仑/分钟(GPM)的形式显示流速,以英寸水柱为单位的压差(dP)来显示回路功能。PI算法按预期执行,可以通过操纵电位器来调整两个控制因子来调整环路。流量控制表现出PI回路的正常特性(好的和坏的)。
有一个旁通阀,可用于引起过程变化,迫使环路调节阀以保持设定值。我创建了一个程序,以便显示屏可以显示循环的有效表示形式(图8);但是,根据显示器的尺寸,需要花费一些时间来阅读。
PWM到电流环路转换器是主要的带宽限制。使用低截止频率来充分过滤PWM的必要性限制了Arduino对条件变化的响应速度。一旦调整了比例增益和积分增益,ms(10Hz)的采样间隔就可以很好地工作。如果旁通阀打开,它将抢断系统大约一半的输入流量,但是Arduino会调整控制阀以在几秒钟内达到所需的流量。在水流量稳定的情况下,系统是稳定的,没有任何迹象表明控制阀正在调整。
从头开始编程
图8:显示屏是Arduino板栈的顶层。虽然很小,但它可以给出环路性能的图像。但是,所有功能(例如绘制基本网格)都必须从头开始编程。
自然,Arduino没有要处理的工程单位的概念,但是PLC也没有。它只是在处理当前值,这实际上是它要做的全部。操作员可能希望看到加仑或打开的百分比,但对于控制器而言则不必要。
大多数工业级设备(例如PLC)都设计用于在操作至关重要且必须连续的潜在敌对环境中使用。它不能仅仅因为植物变得太热或太冷而分解并退出。大多数Arduino并非出于这一考虑而构建。越来越多的工业级设备和额定外壳也应运而生,但这种考虑应作为任何分析的一部分。
用PLC进行实时工业控制
演示项目的第二阶段使用基本的低端PLC,在这种情况下为AutomationDirect的BRX(BX-DM1E-10ED23-D)。我之前没有PLC编程经验或没有梯形逻辑知识,就进入了这个项目,尽管与经验丰富的PLC程序员相比,它与Arduino目标进行比较更具挑战性。
PLC具有一个模拟输出和一个模拟输入,均可配置为4-20mA电流环路操作,以及多个离散输入和输出。通过以太网从外部WindowsPC对PLC进行编程访问。第一步是在PC上下载并安装Do-moreDesigner软件,可从