张帆,高红亮,尹欢欢
(湖北师范学院, 湖北黄石 435002)
嵌入式PLC高速脉冲输出的研究与实现
张帆,高红亮,尹欢欢
(湖北师范学院, 湖北黄石 435002)
本文介绍了基于C8051F020单片机的嵌入式PLC的高速脉冲输出功能的开发。灵活运用C8051F020内部提供的可编程计数器阵列(PCA)模块实现了PLC高速脉冲输出功能。
嵌入式PLC C8051F020 高速脉冲输出
在自动化技术迅速发展的今天,自动化设备在工业生产中得到普及。工业生产中的许多自动化设备都要求精确控制,可靠定位。自动化生产线上的点位控制系统、运动控制系统,以及步进电机、伺服电机的控制都需具要有高速脉冲输出功能的设备来驱动,实现精确控制。专用的高速脉冲输出设备价格昂贵,且功能没有针对性。采用单片机控制,不仅要开发软件系统,还要设计硬件电路,而且还要考虑在工业现场中抗干扰问题。可编程序控制器(PLC)具有抗干扰能力强、可靠性高、体积小等优点,是专为工业环境而设计的电子系统[1]。因此,本文采用具有嵌入式操作系统的PLC来开发高速脉冲输出功能。
嵌入式PLC是用单片机来控制,用梯形图来编程的芯片组。本文所设计的嵌入式PLC是建立在EASYCORE操作系统平台之上的。该系统内核可实现实时任务调度,梯形图语言的解释和执行,以及通信等功能,并且留出了可二次开发驱动程序的接口[2]。
嵌入式芯片组的PLC兼容三菱FX2N梯形图指令和编程软件。通过梯形图、指令表可以实现数据运算、逻辑顺序控制、特殊控制等功能,可以满足数字量控制、模拟量控制,以及CANBUS、RS485等网络通信的需要。此外,嵌入式PLC芯片组使用的MCU为C8051F020单片机,C8051F020内部丰富的资源如PCA、SPI、I2C等功能都可以通过编写二次开发程序加载到实时操作系统中。
2.1 高速脉冲输出功能简介
脉冲控制要用到脉冲信号,一般小型PLC都具有高速脉冲输出功能,如西门子的S7-200、三菱FX2N等都可以提供多个高速脉冲输出端口[3]。通过梯形图中脉冲参数的设置,结合具体的
2.2 硬件设计
高速输出频率较高,因此需要选用晶体管输出型。晶体管型输出电路如图(1)所示,输出的高速脉冲信号由内部电路发出,经光电耦合器送给输出晶体管,晶体管的饱和和截止状态相当于触点的接通和断开。稳压二极管是作用是防止过电压和浪涌电压,保护晶体管。
2.3 软件设计
2.3.1 C8051F020高速输出简介
C8051F020单片机内部有一个可编程计数器/定时器阵列(PCA)。PCA包括一个专用的16位计数器/定时器和5个16位捕捉/比较模块。每个捕捉/比较模块都有自己的I/O线(CEXn), 可以通过数字交叉开关配置到相应的单片机引脚。计数器/定时器由一个可编程的时基信号驱动,时基信号有6个时钟源:系统时钟/12、系统时钟/4、定时器0溢出、外部时钟输入(ECI)、系统时钟和外部振荡源频率/8。每个捕捉/比较模块可以独立地工作在一下6种工作方式之一:边沿触发捕捉、软件定时器、高速输出、频率输出、8位PWM和16位PWM[4]。C8051F020提供的增强定时器功能与标准8051的定时器/计数器相比,它所需的CPU干预更少。
下面就本文用到的高速输出方式的基本原理做简要介绍。
在高速输出方式下,通过改变相应模块的16位捕捉/比较寄存器(PCA0CPHn和PCA0CPLn)内的值可以使输出脉冲的宽度或频率发生变化。每当PCA的16位计数器与模块的16位捕捉/比较寄存器值相等时,CEXn引脚就会发生电平转换。与此同时,如果捕捉/比较模块控制寄存器PCA0CPMn中的CCFn位被置“1”,则可以进入PCA的中断程序,在中断程序中更新PCA0CPHn和PCA0CPLn的值来设置下一次匹配时刻。这样,通过计算设置PCA0CPHn和PCA0CPLn内的数值就可以控制输出脉冲的频率和脉冲宽度。所产生脉冲的频率由公式(1)给出。
其中,Fout为CEXn引脚输出的脉冲频率。Fpca是由PCA方式寄存器PCA0MD选择的PCA时钟的频率。本文程序中选用的时基信号的时钟源为系统时钟,即Fpca=24 MHZ。△n是连续两次匹配16位捕捉/比较寄存器的差值。输出频率变化的脉冲时,△n也是变化的。
由公式(1)可以看出,△n直接决定输出脉冲频率的大小。如图2,假设捕捉/比较寄存器的初值为n1,PCA计数器从0开始计数,当计数到n1时发生匹配,电平翻转,进入中断程序。在中断程序中我们需要将捕捉/比较寄存器的值设置为n2。其中n2=n1+△n,n3=n2+△n……以此类推,每一次进中断都要对捕捉/比较寄存器重新赋值,这样才能保证输出准确的脉冲频率。
2.3.2 高速脉冲输出所占用的PLC资源
多段脉冲输出时需要设定每段脉冲的起始频率f(占用2个字节)、频率改变量△f(有符号数,为负表示频率依次减小,占用2个字节)、以及脉冲数(占用四字节),脉冲数的范围为0~232-1。段的起始地址存放在数据寄存器D5860中,起始地址存放脉冲段数,然后按照段的顺序依次将各段脉冲参数存入起始地址之后的连续D寄存器区。M1006为高速脉冲启动辅助继电器[5]。
2.3.3 嵌入式PLC高速脉冲输出设计原理
芯片组为用户二次开发设计了七个用户程序嵌入接口,本文程序设计用到其中的2个接口:USER_CONFIG、USER_SCAN。USER_CONFIG为用户I/O配置程序入口,此段程序会在内核重新上电后调用一次。高速脉冲输出端口在这里通过数字交叉开关配置到单片机相应引脚。USER_SCAN为用户演算周期扫描程序,所有梯形图执行完后,即调用该程序,PCA模块的初始化和△n值的更新放在此段程序中。嵌入式PLC输出高速脉冲流程图如图3所示。
PLC上电运行后,如果梯形图中相应的高速脉冲输出标志位被置位,即M1006=1,则在执行用户演算周期程序时会初始化PCA模块输出高速脉冲,如果M1006被复位,则立即停止脉冲输出,PCA高速输出方式被禁止。
在PCA中断程序中,需要对匹配值更新,同时对脉冲进行计数。当脉冲数达到设定值后继续输出下一段脉冲串或结束脉冲输出任务。PCA中断服务流程如图4所示。
3.1 输出频率测试
为验证高速方式输出脉冲频率的准确性,比较示波器观测值与理论计算值,得出结果如表1所示。
通过表1数据比较可以看出,实际输出频率与理论值相差很小,符合设计要求。
当设定的输出脉冲频率为整数时,实际输出频率与理论值基本一致。经过试验,当设定输出脉冲频率非整数时,实际输出频率的准确性会降低。
3.2 梯形图功能测试
其他各段脉冲参数须依次装入相应的寄存器中。通过示波器观察,可明显看出脉冲宽度的变化过程。经测试,各段脉冲满足要求。
本文基于嵌入式PLC,研究具有高速输出功能的PLC。通过对C8051F020单片机PCA模块的运用,实现了嵌入式PLC的高速脉冲输出功能。结合计算与实验观察,验证了功能的可行性。应用嵌入式PLC开发设计高速输出功能降低了开发难度和成本,是一种经济、有效的方法。
[1] 王永华.现代电气控制及PLC应用技术[M].北京:北京航天航空大学出版社,2008.
[2] 向前进,周纯杰,龚云生.嵌入式PLC的高速脉冲计数开发[J].计算技术与自动化,2006,25(4):47-50.
[3] 宋伯生. PLC编程实用指南[M].北京:机械工业出版社, 2006.
Implementation of High-Speed Pulse Output of Embedded PLC
Zhang Fan,Gao Hongliang,Yin Huanhuan
(Hubei Normal University, Huangshi 435002, Hubei, China)
This article describes the development of high-speed pulse output function of embedded PLC based on C8051F020. The high-speed pulse output function of PLC is implemented by using the internal programmable counter array (PCA) module provided by C8051F020 flexibly.
embedded PLC; C8051F020; high-speed pulse output
TP23
A
1003-4862(2014)03-0062-03
2013-09-15
湖北师范学院2012年国家级大学生创新创业训练计划项目(项目编号:201210513027)。
张帆(1990-),男,工学学士,研究方向:电气工程及其自动化。控制要求,可以输出一段或多段脉冲信号。本文设计的PLC高速脉冲可以实现多段脉冲输出。