AVR单片机与PLC通信技术的研究与应用

2016-06-23 02:53袁庆一
工程与试验 2016年1期
关键词:串口通信

韩 冬,张 拓,袁庆一

(长春机械科学研究院有限公司,吉林 长春 130103)

AVR单片机与PLC通信技术的研究与应用

韩冬,张拓,袁庆一

(长春机械科学研究院有限公司,吉林 长春 130103)

摘要:为了实现单片机通过串口访问PLC内部寄存器的功能,设计并实现了AVR单片机与PLC的串口通信系统。实践证明了AVR单片机与PLC实现串口通信的可行性。

关键词:AVR单片机;PLC;串口通信

1引言

AVR单片机的功率较低,内部存储器包含FLASH、EEPROM和SRAM。基于AVR单片机的产品设计、研发周期短,工艺流程简单。AVR单片机内部包含了32个通用工作寄存器以及丰富的指令集。每一个寄存器直接连接至运算逻辑单元(ALU),可以实现每个时钟周期同时访问两个独立的寄存器。这种工作方式提高了代码的工作效率,数据处理能力也比普通的复杂指令集微处理器优越。另外,AVR单片机还具备如下优点:

(1)程序存储器的价格不高、擦写次数达1万次以上;

(2)采用CMOS技术及RSIC架构,运算速度高、功耗低,并且具有预取指令的功能;

(3)产品调试、升级方便,维护成本低;

(4)工业级产品,可靠性较高,可直接驱动LED、SSR或继电器,具有看门狗定时器安全保护;

(5)具有内部的RC振荡器,无需外加时钟电路,能够自行提供1MHz、2MHz、4MHz、8MHz的工作时钟;

(6)具有多个8位、16位带预分频器的计数器/定时器;

(7)串行通信接口USART性能优良,不占用定时器,能够进行高速同/异步通信;

(8)大部分芯片内部集成A/D转换接口。

本文采用的是ATmega128L芯片,该芯片包括128K字节的Flash,具有同时进行读写操作的能力,具有PWM功能的定时器,两个串口,具有片内振荡器的可编程看门狗定时器。

PLC在工控领域应用广泛,具有非常高的稳定性、可靠性。欧姆龙CP1L系列PLC属于小型PLC,共有40个输入输出点,可扩展两个串口通信模块。Hostlink系统对于FA系统来说是一种即优化又经济的通信方式,可以实现独立上位机与多个PLC的连接。能够在线向PLC传输程序,监测PLC工作状态。通信方式可以采用RS-232C或者RS-422,其中RS-232C的通信距离是15m,并且是1对1的;RS-422的通信距离最大为500m,并且可以实现1对多的通信,最多可以达到32台。

2硬件电路设计

ATmega128具有两个串口通信接口,USART0和USART1。该串口具有较高的通信灵活性,支持全双工操作、同步异步操作,最多支持9个数据位、2个停止位、数字低通滤波器、独立的通信中断。ATmega128原理图如图1所示。

图1 ATmega128原理图

采用RS232串口通信方式实现AVR单片机与欧姆龙CP1L系列PLC的通信。通信芯片采用MAX3232,原理图如图2所示。上位机链接通信是通过在上位机和PLC间交换命令和应答实现的。使用的是OMRON的HOSTLINK协议,在一次交换中传输的命令或应答数据称为一帧,一帧最多可包含131个数据字符。

图2 MAX3232原理图

3软件设计

欧姆龙的HOSTLINK协议通信,AVR单片机读取PLC内部寄存器数据的命令格式为:

起始符节点号命令码正文校验码终止符

PLC响应格式为:

起始符节点号命令码结束码正文校验码终止符

AVR单片机与欧姆龙CP1L系列PLC通信波特率设置为:9600,数据位:8位,停止位:2位,奇偶校验:无。应用的是Atmega128的USART0串口,配置为:UCSR0C=0x0E。

欲读取PLC内部寄存器D20起始的5个字节的数据,定义如下的通信数据串:

str[20]={0x40,0x30,0x31,0x52,0x44,0x30,0x30,0x32,0x30,0x30,0x30,0x30,0x35,0x35,0x30,0x2A,0x0D};//读取D20起始数据第5字节。

PLC收到读取命令后,会将D20起始的5个字节的数据通过串行端口逐个发送给单片机,单片机将持续接收两组完整的数据,并将其组成一个数据串进行处理。这样的数据接收方式能够增加数据传输的稳定性,保证了处理数据的准确性。在接收的两组完整的数据中,寻找PLC响应数据的起始字符“@”、停止字符“*”,判断数据的长度,即选定了有效的数据段。选定有效数据段后,取出PLC寄存器存储的数据,进行高低位数据的移位、变换处理,显示在单片机驱动的液晶屏上。

revbuf[revindex++] = UDR0;//将接收的数据组成一组

if(revindex >= 61)//连续接收两组完整的数据

{

for(i=0;i<=revindex;i++)

{

if( revbuf[i] == '@')

{

start_NO = i;

get_flag = 1;

}

}

if (get_flag == 1 &&revindex >= (start_NO + 9) &&revbuf[start_NO + 9] == '*')

{

revindex = 0;

get_flag = 0;

start_NO = 0;

}

else if(get_flag == 1 &&revindex >= (start_NO + 30))

{

get_flag = 0;

revindex = 0;

fcs = revbuf[start_NO];

for(k=(start_NO + 1);k<=(start_NO + 26);k++)

{

fcs ^= revbuf[k];

}

fcs_L=hex_to_char(fcs &0x0f);

fcs_H=hex_to_char((fcs &0xf0) >>4);

}

}

4结论

应用Atmega128芯片设计制作了能够独立访问PLC内部数据寄存器的终端设备,该设备通过RS232串口通信的方式,实时读取PLC数据寄存器存储的数据,并可以对其进行写操作。该技术的应用,能够简化功能相对单一的进行PLC操作的人机交互设备,降低设备成本,减小设备体积。

参考文献

[1]石泽宇,石林炜.PLC与计算机之间程控通信技术研究[J].电子技术与软件工程,2014,14:237.

[2]苏明霞,熊薇薇,张明涛.基于AVR单片机的无线红外通信系统设计[J].无线互联科技,2015,19:5-6.

[3]詹平红,丁函,李文娟.单片机多串口通信扩展的设计及其应用[J].自动化与仪器仪表,2015,(02):125-127.

Research and Application of Serial Communication between AVR MCU and PLC

Han Dong,Zhang Tuo,Yuan Qingyi

(Changchun Research Institute for Mechanical Science Co.,Ltd.Changchun 130103,Jilin,China)

Abstract:Serial communication between AVR MCU and PLC is discussed.In order to read the data from PLC internal register through serial communication,a kind of serial communication system based on AVR MCU is designed and realized.The practice shows the feasibility of serial communication between AVR MCU and PLC.

Keywords:AVR MCU;PLC;serial communication

[收稿日期]2016-02-29

[作者简介]韩冬(1987—),男,硕士研究生,工程师,主要研究方向:自动控制系统。

中图分类号:TN919

文献标识码:B

doi:10.3969/j.issn.1674-3407.2016.01.028

猜你喜欢
串口通信
基于Qt和Flash的嵌入式Linux软件架构设计
串口通信在智能家居监控系统中的应用
基于OpenCV的室内照明智能控制系统设计与实现
基于MSP430单片机的窄带无线数据传输模块的设计
便携式数传电台测试系统的设计与实现