摘 要 利用STM32单片机设计了一种双层的小型可编程控制器,上层为核心控制层,下层为IO信号层,拥有很好的可扩展性。主要阐述了PLC中各模块的设计思路,并给出了部分模块的电路原理图。
关键词 可编程逻辑控制器 STM32 硬件设计
中图分类号 TP274 文献标识码 B 文章编号 1000?3932(2023)02?0268?07
可编程逻辑控制器(PLC)由于具有程序编写容易、安全性高及通用性强等优点,在工业生产控制领域中应用非常普遍。但随着社会的多样化、自动化以及嵌入式技术的不断进步,PLC兼容性差、计算能力不强等局限性逐渐显露出来。同时,国内的PLC市场一直被国外产品所垄断,国内PLC研究与国外的差距很大,国内市场亟待具有自主知识产权的新型PLC的出现。近几年,微控制器技术飞速发展,因此笔者针对上述问题,采用意法半导体公司的高性能芯片设计了一种小型可编程控制器,该控制器可以应用在小规模的控制场景中。
1 总体结构设计
笔者设计的PLC硬件系统主要由两部分组成,分别是核心控制层和IO信号层。核心控制层集成有中央处理器最小系统电路、通信系统电路及用户程序存储电路等,主要用于嵌入式PLC程序的执行和数据处理等。IO信号层集成有8路普通数字输入电路、8路继电器输出电路、2路模拟量输入电路、2路模拟量输出电路、开关电源电路。PLC的硬件结构如图1所示。
2 核心控制层硬件设计
2.1 MCU模块电路
MCU模块电路包括MCU、时钟电路、复位电路、SWD电路、BOOT启动电路和与外部设备连接的电路,其结构如图2所示。
本设计采用ARM开发的CORTEX?M4内核32位芯片STM32F407ZGT6作为MCU,ARM CORTEX?M4拥有高速、高准确度的数字量信号计算与控制能力[1]。该芯片的最高工作频率可以达到168 MHz,支持DSP指令和FPU(浮点运算),拥有1 024 KB的Flash和192 KB的SRAM,支持1.8~3.6 V的电源和I/O口电压,同时大部分I/O口耐压可以达到5 V,而且能耗很低。
2.2 通信系统电路
本设计拥有一个以太网端口,用于嵌入式PLC与上位机进行通信,同时拥有一个RS485通信接口和一个CAN总线接口,用于与其他工控设备进行通信。
2.2.1 以太网通信接口电路
本设计选择LAN8720作为以太网物理层的收发器。LAN8720符合IEEE 802.3—2005标准,功耗较低,支持通过标准RMII接口和以太网MAC进行通信。该芯片是一种全双工收发器,支持10 Mb/s和100 Mb/s两种工作模式,并且既可以直连也可以交叉连接。
以太网通信接口电路由LAN8720以太网收发器和RJ45接口组成。LAN8720以太网收发器通过MRII接口与STM32单片机相连,控制芯片的初始化和數据包的收发。
2.2.2 RS485通信接口电路
RS485通信是一种串行通信接口标准[2],广泛用于控制应用和数据采集中。在本设计中,采用SSP3485芯片作为RS485通信的收发器。RS485通信接口电路如图3所示。STM32单片机的串口2与SSP3485相连。其中STM32的PC10引脚连接SSP3485芯片的RO引脚,STM32的PC11引脚连接SSP3485芯片的DI引脚,用于接收和发送数据;STM32的PG8引脚连接SSP3485芯片的RE和DE引脚,用于控制SSP3485的状态。
2.2.3 CAN总线接口电路
CAN总线接口电路如图4所示。CAN总线收发器选用华冠公司的HGA1050M/TR,CAN收发器的TXD引脚和RXD引脚分别与STM32单片机的PD1和PD0相连接。CAN总线收发器将STM32单片机产生的TTL电平信号转换成差分信号到外部设备,并接收外部设备传输过来的差分信号,将其转换成TTL电平信号后传输给STM32单片机。
2.3 用户程序存储电路
用户程序存储器用于存储用户程序,EEPROM存储芯片中的数据可以在断电时予以保留,正适合储存PLC的用户程序。本系统中,EEPROM采用AT24C128芯片,AT24C128芯片拥有128 KB的存储容量,支持I2C串行总线,并且数据的传输仅需两条线(一条数据线和一条时钟线)就可以完成用户程序的读写,大幅降低了系统硬件设计的难度和成本。
3 IO信号层硬件设计
3.1 数字量输入电路
本设计拥有12路独立的数字量输入端口,其中有8路普通数字量输入端口和4路高速数字量输入端口。
3.1.1 普通数字量输入端口
普通数字量输入端口可以向PLC输送开关量信号,包括继电器、限位开关、按键或光电接近开关等的开关状态。STM32芯片引脚的输入电压范围是2.0~3.6 V,而PLC的输入信号一般为0~24 V直流电压。所以每路普通数字量输入端口都采用PC817光电耦合器实现电气隔离,防止外部环境对嵌入式PLC的干扰,保持系统的工作稳定可靠。光电耦合器是一种基于内光电效应原理所制成的电气隔离元件,它由发光元件和光敏电阻封装在一起构成。当输入端有输入信号时,发光元件会产生光信号,并射到感光电阻上产生电流,再通过光耦的输出端子输出,从而实现光电信号的隔离[3]。
图6为一路普通数字量输入电路,图中电阻R35和电容C13组成一阶滤波电路,可以过滤掉输入信号中的高频干扰信号,二极管D1可以防止PC817光耦被反向击穿,保护电路的正常运行。
COM0端口为输入I0.0~I0.7的公共端,连接电压+24 V,I0.0接外部开关量元件,外部开关量元件的另一端连接0 V电压。
当外部开关器件闭合时,电流从COM0端流入,流经PC817光耦,从I0.0流出,形成一个闭合回路,PC817光耦的3、4号引脚导通,IN0.0连接的STM32单片机信号输入引脚的电平为低,当嵌入式PLC扫描该路信号时,将该路输入信号所对应的输入映像寄存器的值置1。相反,当外部开关器件断开时,IN0.0连接的STM32单片机信号输入引脚的电平为高,当嵌入式PLC扫描该路信号时,将该路输入信号所对应的输入映像寄存器的值置0。
3.1.2 高速数字量输入端口
高速数字量输入端口可以向PLC输入高速脉冲计数信号,图7为高速数字量输入电路。采用6N137高速光耦进行光电隔离,该光耦的最大传输速度可达10 Mb/s。COM1端口为I1.0~I1.3的公共端,连接电压+24 V,I1.0连接外部设备,IN1.0连接STM32单片机拥有定时器复用功能的引脚。
3.2 数字量输出电路
PLC的输出端口有继电器输出、晶体管输出及晶闸管输出等多种类型[4]。继电器既可输出直流电也可输出交流电,晶体管只能输出单向直流电[5]。本设计有12路独立的数字量输出端口,包括8路继电器输出端口和4路高速晶体管输出端口。
3.2.1 继电器输出端口
继电器的输出信号通常用于控制接触器、指示灯及电磁阀等开关量器件,其本质上是由PLC内部的开关量信号转换成继电器触点的开合状态,因此继电器既可以驱动直流负载也可以驱动交流负载。
图8为继电器输出电路。继电器输出电路也采用PC817光耦实现电气隔离,并通过三极管驱动继电器,图8中二极管D3可以保护三极管不会被反向电势击穿。
COM2为输出Q0.0~Q0.7的公共端,OUT0.1连接STM32单片机输出引脚。当该输出端口对应嵌入式PLC的输出映像寄存器为1时,OUT0.0引脚变成低电平,PC817光耦的3、4号引脚之间短路,使三极管的集电极c极和发射极e极之间導通,继电器G5NB?1A得电,并形成磁性,常开触点变成闭合形态;当该输出端口对应嵌入式PLC的输出映像寄存器为0时,OUT0.0引脚变成高电平,PC817光耦的3、4号引脚断开,使三极管的c极和e极断开,继电器的线圈断电,常开触点断开。
3.2.2 高速晶体管输出端口
高速晶体管输出端口可以向外部设备输出PWM脉冲信号,图9为高速晶体管输出电路。该电路同样通过6N137高速光耦实现光电隔离,并采用PNP三极管进行驱动,二极管D2可以防止三极管被反向电压击穿。OUT1.0连接STM32单片机PWM输出引脚,Q1.0接外部负载,COM3为Q1.0~Q1.3的公共端。
3.3 模拟量电路
在生产控制过程中,特别是在连续的生产过程中,需要对温度、电压、电流、压力及流量等连续信号进行控制,这就需要PLC有模拟量控制的功能。STM32F4系列单片机拥有多个独立的AD/DA转换模块,在本设计中,设计有两路模拟量信号输入电路和两路模拟量信号输出电路。其中,模拟量信号输入电路可以直接输入0~10 V模拟量电压信号,模拟量信号输出电路可以直接输出0~10 V模拟量电压信号。
3.3.1 模拟量输入电路
图10为模拟量输入电路,ADC1连接外部元器件,如温度、速度、压力及流量等信号的测量装置,ADC_IN1连接STM32芯片的模拟量信号输入引脚。本设计采用LM358DR2G双运算放大器,将0~10 V模拟量输入电压信号转换成0~3.3 V模拟量电压信号,并起到了一定的隔离作用。
3.3.2 模拟量输出电路
图11为模拟量输出电路,DAC1连接外部元器件,可以通过外部元器件控制压力、温度、流量、电流及电压等模拟量信号,DAC_OUT1连接STM32单片机的模拟量输出引脚。模拟量输出电路同样采用LM358DR2G双运算放大器,通过运算放大器把STM32单片机输出的0~3.3 V模拟量电压转换成0~10 V模拟量输出电压。
4 PCB图及实物电路板
将上述各部分的硬件原理图组合起来,绘制出PCB图(图12)。然后根据PCB图打印并贴片,制作出相应的电路板,如图13所示。
5 结束语
设计了一种基于STM32的小型可编程逻辑控制器的硬件部分,主要包括核心控制层和IO信号层,这两层只需要连接正确的接口就可以单独使用,具有良好的灵活性和可扩展性。所设计的可编程逻辑控制器拥有多种通信模块,并集成了数字量控制、模拟量控制等电路,可以满足工业控制场景中大多数的简单控制需求,对国产PLC的研发具有一定参考价值。
参 考 文 献
[1] 廖一奎.ARM Cortex?M4嵌入式实战开发精解——基于STM32F4[M].北京:北京航空航天大学出版社,2013.
[2] 石进水.基于嵌入式系统的PLC的研究与设计[D].青岛:山东科技大学,2008.
[3] 胡云,王涛,蒋亚东.高压线性光电耦合器的研制[J].电子科技大学学报,2007,36(4):778-780;804.
[4] 任伟.嵌入式PLC编程装置的系统设计[D].桂林:桂林电子科技大学,2010.
[5] 王庭有.可编程控制器原理及应用[M].北京:国防工业出版社,2011.
(收稿日期:2022-06-03,修回日期:2023-01-06)
作者简介:刘青林(1997-),硕士研究生,从事复杂机电系统集成与控制的研究,chnliuqinglin@163.com。
引用本文:刘青林.一种小型可编程控制器硬件设计与开发[J].化工自动化及仪表,2023,50(2):268-274.