陈永昕
(吉林工业职业技术学院智能制造学院,吉林 吉林 132013)
目前,市场上可编程逻辑控制器(PLC)的品类繁多,如信捷、汇川等国内主流品牌在性价比和稳定性上具有一定的优势,是很多控制技术人员首选控制器。然而,在面对一些点数较少的开关量数据采集和控制应用上,通用型PLC 无论是从成本还是从功能上考虑都存在大材小用的痒点,尤其是加上需要通过无线通信方式进行数据传输,更凸显了通用PLC 的系统臃肿、投入成本较高。
为此,设计了一种以单片机为主控芯片的简易可编程逻辑控制器,并具有无线通信组网功能。该设计方案可使用多种编程方式进行程序设计,降低了应用推广门槛,非常适合在少量开关量采集和控制方面运用物联网技术。
图1为硬件电路总体设计框图。系统核心部分共分为四个单元:主控单元、输入单元、输出单元和通信单元,所有单元均通过供电单元进行统一供电。从理论上而言,通信单元可以选择任何具有TTL 电平UART 串口的无线通信模块,以实现无线通信甚至组网功能,但是基于无线通信组网难度和普适性的考虑,后续设计首选ZigBee和LoRa 两方面技术。
图1 控制器电路总体框图
控制器主控芯片采用AVR 单片机Atmega328 作为主控芯片。该芯片闪存容量32 KB,集成了I2C、SPI、USART 接口,共三个定时器(其中一个16 位,两个8 位),芯片总共28 个引脚,芯片I/O 接口数量足够支持8 输入和8 输出开关量接口使用。与其他8 位单片机相比,该芯片能够使用的编程语言种类较多。具体最小系统电路原理图如图2所示。
图2 单片机最小系统原理图
最小系统电路是单片机芯片能够工作的基本电路结构,包括复位电路、时钟电路和电源三部分。单片机最小系统属于固定模式的电路,一般不需要使用者具体了解其功能就可以直接使用,因此本文对其具体功能不再赘述。
为辅助控制进行程序调试和运行状态显示,使用电阻和LED 串联设计了运行状态指示电路。由电源直接进行供电,由于Atmega328P 芯片I/O 口内部有20KΩ 的上拉电阻,LED 负极端连接至单片机PC4 引脚上,通过拉低电平驱动LED 发光,具体如图3所示。
图3 运行状态指示电路
输入接口电路设置8 路开关量输入通道,CN2 为输入接口端子,可对外提供24 V 直流电源并作为传感器电源接口使用;输入端使用光耦作为隔离,将输入外设24 V 电路同控制核心单片机5V 电路进行隔离;每个信号输入端配有一个LED 作为信号指示,具体如图4所示。
图4 输入接口电路
CN1 为输出端接线端子,端子上可提供24 V 直流电压,用于输出端负载供电使用;每个输出端口使用光耦进行隔离,将5 V 电路系统和24 V 电路系统进行光电隔离;每个输出口上配有一个LED 用于输出接口信号指示,具体如图5所示。
图5 输出接口电路
AVR 单片机可通过UART 串口进行程序下载,电路板上预留的程序下载接口U2 可作为通信模块的接口使用;通过串行口同ZigBee 或者LoRa 等无线模块进行通信,以实现控制器的无线通信功能,具体如图6所示。
图6 通信接口电路设计
3.5.1 电源电路设计
控制器主电源采用24 V 直流电源供电,主控芯片和通信模块均使用直流5 V 电源供电,因此需要对电源电压进行降压,本设计则采用LM2596S 降压模块进行降压调压,具体如图7所示。IN+和IN- 为电压输入端,输入直流电压范围3.2~46 V,输入电压必须比输出电压高1.5 V 以上;OUT+和OUT- 为电压输出端,输出直流电压范围1.25~35 V,电压连续可调,转化效率高,最大输出电流为3 A。通过电位器调节模块电压,逆时针方向调节时为降压,顺时针方向调节时则为升压。
3.5.2 电源上电指示电路
电源上电指示电路使用电阻和LED 串联5 V 供电,电源上电则LED 发光指示,具体电路如图8所示。
图8 电源上电指示电路
本设计中的控制器可使用的编程语言较多,其中图形化语言和梯形图编程是本设计重点推荐的。图形化编程语言的适用年龄段较宽,即使是具备少儿编程图形化语言编程基础的儿童都可使用该控制器编写程序,而对于习惯PLC 梯形图编程的技术员而言,可继续直接使用梯形图进行程序编写。
AVR 程序编写应用最广泛的编程语言是C语言和汇编语言,其中C 语言在单片机嵌入式系统开发领域具有更多的用户群。这两种语言均要求程序员具有较高程序编写经验,并且学习难度相对较大。
4.2.1 ArduBlock 等类似图形化语言
以ArduBlock 为代表的图形化编程语言大幅度降低了程序编写难度,因而比较适合程序设计零基础的人员使用。近几年,该程序设计的技术方案更是被大量优化升级为少儿编程的主流语言。
Atmega328 芯片被用于ArduinoUno 模块的主芯片设计,因此本设计中控制器也使用ArduinoUno 的所有开发资源进行程序设计,图形化编程界面如图9所示。
图9 图形化编程界面
4.2.2 FlowCode 流码语言
FlowCode 适用于电子和机电系统开发的高度集成开发环境(IDE),并且无论是专业人员还是学术人员,都可以快速掌握单片机嵌入式系统的程序开发。此外,FlowCode 还允许全仿真(包括C 代码仿真),用户可以将C 代码转换成流程图和其它编程语言。图10是FlowCode 软件的编程界面。
图10 FlowCode流码程序界面
图10中类似程序流程图的结构即为FlowCode 流码程序,因此只要能够看懂程序流程图,就可以进行嵌入式程序设计。
4.2.3 Proteus 可视化编程
Proteus 软件是单片机开发人员熟知的一款仿真软件,从8.6 版本开始增加了可视化程序设计功能Visual,该功能是面向Arduino 平台进行程序设计的一种图形化语言,因此也可以用于本控制器的程序开发,Proteus 仿真界面和Visual程序设计界面如图11所示。
从图11可以看出,该图形化程序与FlowCode 流码程序设计思路类似,均是类似于程序流程图的编程语言,因此该方法对于程序员程序设计基础要求不高,非常容易掌握。
图11 Proteus仿真界面和Visual程序设计界面
LDMicro 是一款可用于AVR 和PIC 单片机的编程软件,LDMicro 梯形图编程界面如图12所示。
图12 LDMicro梯形图编程界面
该软件使用梯形图进行程序设计,能够将梯形图逻辑编译生成适用于AVR 和PIC 单片机的HEX 文件。基于该功能使用PLC 的自动化工程师,因此较为容易掌握程序设计方法。LDMicro软件部分版本的源代码有开源版本,因此程序设计工程师可以结合本控制器硬件设计方案和LDMicro 源代码来进一步完善上下位机系统,以形成更为完善的产品。
本设计中的控制器功能较为简单,适合简单逻辑控制应用,具有成本低、搭建系统迅速的优点。由于在无线通信方面使用常见的工业通信协议,会使得程序开发变得复杂,因此结合上述软硬件设计方案设计出一种既简单实施又可以保障通信可靠稳定的通信协议方案。该协议方案的协议帧由包头、地址、命令帧、数据帧、校验帧和包尾6 部分组成,如表1所示。
表1 协议帧数据格式
包头、地址和包尾均为一个字节的十六进制数,数据帧和校验帧可以根据实际需要定义数据长度,校验帧存储的是地址和命令帧所有十六进制数的求和值。通信发送端和接收端同时使用该协议,接收端接收完包头和包尾所有数据后,再进行校验对比,如果收到的数据校验和同接收到的数据帧中交验帧一致,则说明接收数据正确。
目前,物联网技术工程实践以无线通信为主,这使得物联网终端具有安装简单、便于移动状态使用等优点,因此为大量的多终端实施数据集中采集和管理提供了技术上的可行性和工程安装的便利性。对于本设计中的控制器,推荐使用ZigBee 和LoRa 技术来实现无线组网功能,通过图6预留的串行通信接口即可实现有线组网通信,也可直接挂接Zigbee 和LoRa 无线通信模块。通常ZigBee 用于近距离通信,而LoRa 则用于远距离通信。
ZigBee 是基于IEEE802.15.4 标准的低功耗局域网协议,作为一种近距离、低复杂度、低功耗、低速率和低成本的双向无线通讯技术,主要用于距离短、功耗低且传输速率不高的各种电子设备之间进行数据传输,以及典型的有周期性数据、间歇性数据和低反应时间数据传输的应用,可工作在2.4 GHz(全球流行)、868 MHz(欧洲流行)和915 MHz(美国流行)三个频段上,分别具有最高250 kbit/s、20 kbit/s 和40 kbit/s 的传输速率,其传输距离在10~75 m 范围内且可以继续增加。本设计在实际应用中主要采用ZigBee 网络结构,具体如图13所示。
图13 ZigBee组网网络结构
LoRa 是一种LPWAN 通信技术,也是美国Semtech 公司采用和推广的一种基于扩频技术的超远距离无线传输方案。该方案改变了以往关于传输距离与功耗的折衷考虑方式,而是为用户提供一种简单且能够实现远距离、低功耗(电池寿命长)、多节点、低成本和大容量的系统,进而扩展传感网络。目前,LoRa 主要在全球免费频段运行,包括433 MHz、868 MHz、915 MHz 等。图14为本设计在实际应用中所使用的LoRa 网络结构。
图14 LoRa组网网络结构
本设计中的这种可用于物联网领域的小型可编程逻辑控制器产品,不仅可以进行网络终端简单地开关量逻辑控制,还降低了逻辑控制成本,并为不同程序设计技术水平的工程技术人员提供了适合的程序设计方案,设计人员可根据实际需要对硬件系统进行增减I/0 点配置。目前,本设计方案主要应用在开关量输入输出状态需要远距离传输显示或者控制的场所,如生产线上开关量报警状态、开关量传感器信号、多开关量输入和多开关量输出的逻辑控制等远距状态显示或输出控制。