当前位置:文档之家› 基于ARM和CAN总线的嵌入式PLC设计

基于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 [1]。它主要负责采集、处理开关量和模拟量输入,控制开关量输出,同时通过CAN 总线完成与上位机的通信。

图1 系统总体框架图 (参见右栏)

开关量的输入,为了减少外部开关对系统的干扰,首先在输入端用光电耦合器隔离,再由IO 口分别读取12路通道的输入,读取的开关量可以存储在ARM 的存储器内。ARM 对开关量数据进行处理,一方面通过CAN 总线

基于ARM和CAN总线的嵌入式PLC设计

刘 乾 孙志锋

(浙江大学 电气工程学院)

摘 要:为实现PLC 低成本、个性化的社会需求,提出一种嵌入式PLC 设计方案,重点讨论了系统的总体构成以及软、硬件设计方法。系统采用ARM 作为主控芯片,以CAN 总线作为主要通信接口,结合嵌入式实时操作系统,保证了系统的可靠性和实时性。实验结果表明,该系统运行稳定,通信可靠,能够满足基本的工业应用需求。

关键词:可编程逻辑控制器;ARM ;嵌入式系统;CAN 总线

Design of Embedded PLC Based on ARM and CAN Bus

Liu Qian SUN Zhi Feng

(College of Electrical Engineering, Zhejiang University)

Abstract : In order to achieve the social demands for low-cost and personalization of PLC, an embedded PLC design is proposed. The overall architecture of the system, the hardware structure and the software design are discussed in detail. The system uses ARM Cortex-M3 as the master control chip, and the CAN bus as the main communication interface, combined with embedded real-time operating system to ensure system ’s reliability and real-time. The experiment results show that the system is stable in operation, reliable in communications, and can meet the basic needs of industrial applications.

Key words: PLC; ARM; embedded system; CAN bus

图1 系统总体框架图

将数据传输到上位机;另一方面将开关状态由LED 实时显示输入开关量状态。对于13路的开关量输出,ARM 通过CAN 总线得到上位机传来的开关量输出数据,并且将数据进行处理,一方面通过控制继电器的锁存器将数据锁存,完成对继电器的开关控制;另一方面将开关状态由LED 实时显示输出开关量状态。模拟量的采样则通过信号放大调理电路及相应的控制电路,然后对其进行A/D 转换,转换后的数字量读入PLC 系统的输入映像缓冲区,从而完成对模拟量的采集。

2 系统硬件设计

2.1 开关量输入输出模块

开关量输入电路的功能是接收工业现场各种开关量信号的输入,并将其转换成符合CPU 要求的标准逻辑电平。为提高控制器的抗干扰能力,在开关量输入信号和处理器STM32之间使用光电耦器件TLP521隔离,当开关量输入信号受到干扰时,只要其共模电压低于光耦的最大隔离电压,就不会对处理器正常工作造成任何影响[2]。

开关量输入电路如图2所示。其中X1为输入端,P1为微控制器端口,L E D 0为输入点的状态指示灯,

TLP521为光电耦合器,它实现现场与PLC 的CPU 电气隔离,提高抗干扰性。

图2 开关量输入电路

开关量输出电路是嵌入式PLC 与外部连接的输出通道,PLC 通过它向外部现场执行部件输出相应的控制信号。开关量输出通常有晶体管输出和继电器输出两种形式。本设计中,开关量输出电路采用了13路继电器输出,器件选用松乐SRD-24VDC-SL-C ,继电器输出电路可用于直流负载,也可用于交流负载,它特别适合于对动作时间和工作频率要求不高的场合。其电路图如图3所示。D1为稳压二极管1N4148,因为直流继电器的线圈在断开时会产生反向电动势,这时需要在继电器两极并接一个1N4148来进行快速放电。

图3 开关量输出电路

2.2 模拟量输入模块

模拟量输入电路的主要功能是把现场测量到的模拟量信号转变成PLC 可以处理的数字量信号。A/D 转换器是模拟量输入电路的主要器件,STM32微控制器内部含有8路10位A/D 转换器,配合信号调理电路以及相应的控制电路,可以完成模拟量的采样和转换。转换后的数字量由CPU 读入PLC 系统的输入映像缓冲区,从而完成对模拟量的采集。

本设计中,模拟量输入电路有8路4~20mA 电流输入。4~20mA 直流信号制是国际电工委员会(IEC)制定的过程控制系统用模拟信号标准。在工业现场,如果采集的信号经调理后是电压信号并且进行长线传输,会产生以下问题:第一,由于传输的信号是电压信号,传输线会很容易受到噪声的干扰;第二,传输线的分布电阻会产生电压降。为了解决上述问题和避开相关噪声的影响,工业现场大量采用电流来传输信号。

2.3 CAN 总线接口电路

CAN 总线是一种支持分布式实时控制的串行通信网络,采用对通信数据进行编码的方式,使得CAN 总线上的节点数量理论上几乎不受限制[3]。然而实际上,CAN 总线上的节点数量不宜超过100个。每一个嵌入式PLC 通过CAN 总线实现与上位机的通信,传输距离可达l0km ,通信速率高、可靠性高、抗干扰能力强。由于STM32F103X 内部已集成CAN 总线控制器,因此只需要外接CAN 收发器即可,使得电路更加简洁而且成本更低,同时可靠性得以提高。CAN 收发器采用TI 公司的SN65HVD230供电电压为3.3V 的CAN 总线收发器,该收发器采用差分收发方式,最高速率可达1Mb/s ,具有高抗

电磁干扰、CAN 总线保护、斜率控制等特点,电气连接简单,使用方便,完全满足工业级产品的技术要求。通信接口电路如图4所示。

图4 CAN 总线接口电路

3 系统软件设计

由于嵌入式PLC 在工业控制方面的实时性和稳定性要求,选用μC/OS-II 操作系统来管理任务调度。μC/OS-II 是一个专为嵌入式应用设计,基于优先级调度的抢占式实时操作系统内核,它包含了任务调度、任务管理、时间管理、任务间通信与同步等功能。各任务之间通过信号量、邮箱和消息队列实现相互间的数据交换和同步[4]。

本系统软件部分由下位机控制程序和上位机监控程序两部分组成。前者主要负责读取开关量和模拟量的输入数据,控制开关量输出,并且负责通过CAN 总线将数据上传给上位机,以及接收来自上位机的命令;后者则通过人机交互界面来监控嵌入式PLC 的状态。系统需要先完成μC/OS-II 操作系统的移植,然后利用μC/OS-II 操作系统提供的API 函数以及ARM 微控制器集成开发工具Keil 开发嵌入式PLC 系统的控制程序。

3.1 下位机软件设计

系统下位机软件采用模块化的设计方法,把整个系统分解为几个功能相对独立的比较小的程序模块,分别对实现各个功能的程序模块进行设计、编程和调试。根据不同模块在系统中的作用,嵌入式操作系统应实现多个不同优先级的控制任务。这些任务按照优先级从高到低分别为:接收计算机控制中心命令;采集和处理数据;发送数据到本地控制中心。系统启动流程图如图5所示。

图5 系统启动流程图

CAN 总线通信程序主要由三部分组成:初始化、发送数据、接收数据。CAN 控制器的初始化流程是:首先将ARM 中CAN 控制器相关的引脚使能,然后对CAN 控制器进行复位操作,设置CAN 总线的通信波特率,最后初始化CAN 控制器的工作模式。初始化之后便可以进行数据的发送与接收。CAN 数据发送是将采集到的数据打包成符合CAN 发送帧格式后,调用CAN 发送数据函数进行发送。数据接收程序是从接收缓冲器读出数据,同时释放接收缓冲器并对数据做出相应处理,本系统中CAN 总线数据接收程序采用中断法进行控制。数据发送和接收流程图如图6、图7所示。

图6 CAN数据发送流程图

图7 CAN数据接收流程图

3.2 上位机软件设计

上位机主要实现CAN总线通信、显示输入输出端口的状态等功能,可以接收下位机传输过来的数据,也可以发送命令控制下位机的输出。采用VC++6.0开发环境的MFC编程实现上位机界面编程及与嵌入式PLC之间的通信。实现界面如图8所示。

图8 上位机程序界面图

本文给出了基于ARM和CAN总线的嵌入式PLC系统的软硬件设计方法,实现了对12路开入量信号采集;13路开出量输出信号的控制;8路模拟量的采集。具有LED 指示开关量状态、远程监控的功能。采用高性能嵌入式微处理器和嵌入式实时操作系统为核心,并使用稳定的工业现场总线,保证了系统的可靠性和实时性,达到了预期的设计要求。

参考文献:

[1] 王永虹,徐炜,郝立平.STM32系列ARM Cortex-M3 微控制器原理与实践[M].

北京:北京航空航天大学出版社, 2008.

[2] 陆泉森,李军,鲍鸿建.光耦隔离技术在智能测控系统 中的应用[J].机械与电子,2008(2):53-55.

[3] 饶运涛,邹继军,郑勇芸.现场总线CAN原理与应用 技术[M].北京:北京航空航天大学出版社,2003. [4] 肖圣兵,肖红菊.μC/OS-II在ARM Cortex-M3处理器 上的移植[J].电子技术,2010(7): 54-55,51.

作者简介:

刘乾,男,1986年生,硕士研究生,主要研究方向:嵌入式技术、网络通信。

电子信箱:liuq2012@https://www.doczj.com/doc/f94329555.html,

孙志锋,男,副教授,硕士生导师。

电子信箱:eeszf@https://www.doczj.com/doc/f94329555.html,

(上接70页)

比如在文献[7]中,作者分析了空间分集、角度分集、以及极化分集,对其进行了理论分析,并采用了极化分集方案,设计了两种双圆极化、宽波束的结构,分析了某些结构特征对天线性能的影响。对CMMB的分集接收有很大参考价值,但其侧重点是针对车载环境以及CMMB卫星接收,同样无法应用于目前最为火热的智能手机平台上。

参考文献:

[1] 中华人民共和国广播电影电视行业标准GY/T 220.1— 2006移动多媒体广播 第1部分:广播信道帧结构、 信道编码和调制[S].

[2] Proakis J G. 数字通信(第四版)[M].

北京: 电子工业出版社, 2009.

[3] Tse D, Viswanath P. Fundamentals of Wireless

Communication[M]. Cambridge University Press, 2005 [4] 陈智.基于CMMB标准的移动多媒体广播接收与播放 系统开发[D].厦门:厦门大学, 2008.

[5] 孟培培.基于CMMB技术的手机电视系统的开发与

实现[D]. 青岛: 中国海洋大学, 2009

[6] 廖敏超.CMMB系统中OFDM解调模块的仿真及FPGA 实现[D]. 北京: 北京邮电大学, 2009.

[7] 李隴 CMMB分集接收天线及基站阵列天线研究

[D].上海:上海交通大学,2010.

[8] 程飞. CMMB物理层关键技术研究与改进[D].

北京: 北京邮电大学, 2010.

[9] 王文博,郑侃.宽带无线通信OFDM技术(第二版)[M]. 北京: 人民邮电出版社, 2007.

[10] Siano. SMS1186 Datasheet[EB/OL].

https://www.doczj.com/doc/f94329555.html,/thread-446-1-1.html 联系方式:

手机:186********

电子信箱:fiddle.yuan@https://www.doczj.com/doc/f94329555.html,

相关主题
文本预览
相关文档 最新文档