基于ARM和CAN总线的嵌入式PLC设计
0 前言
可编程逻辑控制器(PLC),一种数字运算操作的电子系统,专为在工业环境应用而设计。它采用一类可编程的存储器,用于其内部存储程序,执行逻辑运算、顺序控制、定时、计数与算术操作等面向用户的指令,并通过数字或模拟输入/输出控制各种类型的机械或生产过程,是工业控制的核心部分。随着工业技术的发展以及规模的不断扩大,传统的PLC面临着IO点数增多、通讯功能需要增强等诸多方面的挑战,已无法满足个性化、差异化的需求。
现有的设计主要有工控机、单片机板等。工控机在互连、表达、算法等方面优势明显,但其实时性、稳定性难以满足连续控制的苛刻要求,通常用于监控。单片机系统在成本控制上更加灵活,可是没有操作系统使其只能应用于低端场合。具有嵌入式操作系统的PLC将能结合两者的优点,成为PLC领域的主要研究方向。本文介绍以嵌入式芯片STM32和CAN总线相结合的方式进行嵌入式PLC设计,并采用μC/OS-II实时操作系统,利用其开放性、模块化和可扩展性的系统结构特性来达到高实时要求的PLC控制,在保证实时性的同时,实现多点位、复杂功能的PLC系统控制目标。
1 系统总体设计
系统总体设计框图如图1所示。本设计采用ST公司生产STM32F103RCT6作为系统的主处理器。STM32系列基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M3内核,它集成了两个CAN控制器,并为每个CAN控制器分配了256字节的SRAM,每个CAN控制器有3个发送邮箱和两个接收FIFO。它主要负责采集、处理开关量和模拟量输入,控制开关量输出,同时通过CAN总线完成与上位机的通信。
开关量的输入,为了减少外部开关对系统的干扰,首先在输入端用光电耦合器隔离,再由IO口分别读取12路通道的输入,读取的开关量可以存储在ARM的存储器内。ARM对开关量数据进行处理,一方面通过CAN总线将数据传输到上位机;另一方面将开关状态由LED实时显示输入开关量状态。对于13路的开关量输出,ARM通过CAN总线得到上位机传来的开关量输出数据,并且将数据进行处理,一方面通过控制继电器的锁存器将数据锁存,完成对继电器的开关控制;另一方面将开关状态由LED实时显示输出开关量状态。模拟量的采样则通过信号放大调理电路及相应的控制电路,然后对其进行A/D转换,转换后的数字量读入PLC系统的输入映像缓冲区,从而完成对模拟量的采集。
2 系统硬件设计
2.1 开关量输入输出模块
开关量输入电路的功能是接收工业现场各种开关量信号的输入,并将其转换成符合CPU要求的标准逻辑电平。为提高控制器的抗干扰能力,在开关量输入信号和处理器STM32之间使用光电耦器件TLP521隔离,当开关量输入信号受到干扰时,只要其共模电压低于光耦的最大隔离电压,就不会对处理器正常工作造成任何影响。
开关量输入电路如图2所示。其中X1为输入端,P1为微控制器端口,LED0为输入点的状态指示灯,TLP521为光电耦合器,它实现现场与PLC的CPU电气隔离,提高抗干扰性。
开关量输出电路是嵌入式PLC与外部连接的输出通道,PLC通过它向外部现场执行部件输出相应的控制信号。开关量输出通常有晶体管输出和继电器输出两种形式。本设计中,开关量输出电路采用了13路继电器输出,器件选用松乐SRD-24VDC-SL-C,继电器输出电路可用于直流负载,也可用于交流负载,它特别适合于对动作时间和工作频率要求不高的场合。其电路图如图3所示。D1为稳压二极管1N4148,因为直流继电器的线圈在断开时会产生反向电动势,这时需要在继电器两极并接一个1N4148来进行快速放电。
2.2 模拟量输入模块
模拟量输入电路的主要功能是把现场测量到的模拟量信号转变成PLC可以处理的数字量信号。A/D转换器是模拟量输入电路的主要器件,STM32微控制器内部含有8路10位A/D转换器,配合信号调理电路以及相应的控制电路,可以完成模拟量的采样和转换。转换后的数字量由CPU读入PLC系统的输入映像缓冲区,从而完成对模拟量的采集。
本设计中,模拟量输入电路有8路4~20mA电流输入。4~20mA直流信号制是国际电工委员会(IEC)制定的过程控制系统用模拟信号标准。在工业现场,如果采集的信号经调理后是电压信号并且进行长线传输,会产生以下问题:第一,由于传输的信号是电压信号,传输线会很容易受到噪声的干扰;第二,传输线的分布电阻会产生电压降。为了解决上述问题和避开相关噪声的影响,工业现场大量采用电流来传输信号。
2.3 CAN总线接口电路
CAN总线是一种支持分布式实时控制的串行通信网络,采用对通信数据进行编码的方式,使得CAN总线上的节点数量理论上几乎不受限
- Linux嵌入式系统开发平台选型探讨(11-09)
- 基于ARM体系的嵌入式系统BSP的程序设计方案(04-11)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 达芬奇数字媒体片上系统的架构和Linux启动过程(06-02)
- SQLite嵌入式数据库系统的研究与实现(02-20)
- 革新2410D开发板试用手记(04-21)