设计了RS232和RS485共用同一串口的通信接口;基于ModBus通信协议实现了单片机与PLC的数据传输;使用CH376文件管理芯片,在U盘等储存设备里建立txt、doc等类型文件储存数据,方便桌面计算机对数据进行分析处理;利用DS1302实时时钟系统,以时间信息命名数据文件,实现了数据的长时间有序储存。可编程程序控制器(PLC)是综合了计算机技术、自动化控制技术和通信技术的一种自动控制装置,以其具有的功能强、可靠性高、操作灵活、编程简便等特性,成为了现代工业控制的三大支柱之一[1]。
随着PLC的应用范围的不断扩展,其控制系统越来越复杂,需要处理储存的数据量不断增加。例如,有些PLC工业控制仪器需要保存一个月甚至一年的生产数据,需要几兆字节甚至几百兆字节的数据存储能力。由于一般的PLC数据存储容量较小,不得不借助外部的数据存储设备。因此,本文设计了一种基于单片机的PLC数据存储系统,可将PLC的数据以txt文件类型的形式存入到U盘、移动硬盘等大容量的数据储存器里,扩大PLC数据容量,亦可方便桌面计算机对数据进行进一步处理分析。
1 系统总体设计
系统由数据输出终端为PLC、数据转换模块、数据接收终端(U盘、移动硬盘等)三部分组成。其中数据转换模块的中央控制器为Atmega16L单片机。此外,还包括由RS232和RS485组成的串口通信模块、CH376文件管理控制芯片、USB接口输出模块以及DS1302授时模块。PLC通过RS232或RS485接口将数据上传给单片机,单片机发送识别信号给接USB口模块,根据反馈信号判断USB接口连接是否正常,若正常则根据DS1302授时模块、利用CH376文件管理控制芯片在存储设备中新建以时间信息为文件名主体的txt文件类型或其他类型的文件,再将数据存入其中。系统整体结构如图1所示。
图1 系统结构图
2 硬件设计
2.1 Atmega16L与CH376的电路设计
Atmega16L是基于增强的AVR RISC结构设计的低功耗8 位CMOS微控制器。其先进的指令集以及单时钟周期指令执行时间可以减小整个系统的功耗,且不会影响系统的处理速度[2]。
CH376是文件管理控制芯片,可用于单片机系统读写U盘、SD卡中的文件,亦可用于与USB接口设备的数据传输与通信。CH376支持3种通信接口:8位并行、SPI接口和异步串口方式,单片机通过上述任何一种通信接口控制CH376芯片,将数据储存在U盘、移动硬盘等存储设备,甚至可以与计算机相连进行通信[3]。
面对工业控制中恶劣的工作环境,为了保证数据传输的稳定性和精确性,单片机Atmega16L与CH376之间的通信接口选择8位并行接口,连接电路如图2所示。
图2 Atmega16L与CH376的连接电路图
2.2 串口通信模块的电路设计
通常PLC可以提供RS232和RS485两种通信接口类型,但是Atmega16L单片机只提供一个串口接口。为了方便用户接口选择,设计了一种RS232和RS485两个接口公用一个串口的接口电路,如图3所示。
图3 串口通信接口电路图
当RS232或RS485悬空未使用时,两二极管的负极均为高电平,所以当采用一组通信方式时不会影响到另一组。而RS485通信采用非门实现了RS485的自动接收与发送之间的切换[4]。Atmega16L的UART初始状态为逻辑高电平,则:
(1)接收状态:TXD为高,MAX485使能端(DE/RE)为低,MAX485处于接收状态,如无数据输入,由于偏置电阻R2、R3的作用,RXD为逻辑高电平;如果有数据输入,则RXD电平与输入电平一致,实现了接收功能。
(2)发送状态:TXD为高,MAX485使能端为低,MAX485处于接收状态,由于偏置电阻R2、R3的作用,输出逻辑为高;TXD为低,MAX485使能端为高,MAX485处于发送状态,输出逻辑为低[5]。这样就实现了发送功能。RS485收发信号状态如表1所示。
3 通信设计
3.1 PLC与单片机的通信
为了满足不同的PLC使用,本系统选用工业中使用广泛的ModBus通信协议。ModBus协议系统中有两种传输模式:ASCII模式和RTU模式。本系统的数据格式为RTU模式,在同样的波特率下,它可比ASCII方式传送更多的数据[6]。ModBus信息以帧的方式传输,在RTU模式中,每帧开始和结束都至少需要传输4 B数据的静止时间,所传输的报文数据域依次为从机地址、功能代码、数据和校验,传输的数据都是十六进制的[7]。RTU数据帧格式如图4所示。
ModBus通信协议采用的是主从方式,本系统中以PLC为主机,转换模块为从机。当从机接收到地址信息时立即对它进行解析判断,如果地址相符合,则按指令要求修改其参数,并发送应答信息给主机;否则对接收的报文信息不予理睬。一个帧的信息必须以连续的数据流进行传输,如果在发送帧信息期间出现超过传输1.5 B数据的静止时间时,接收到的数据将被清除[8]。主机与从机通信示意图如图5所示。
图5 主机与从机通信示意图
为了实现单片机与PLC的精确通信,ATmega16L单片机的串口设置为以中断响应的通信方式进行发送和接收数据,通信波特率设定为9 600 b/s,输出/输入的数据格式为1 bit开始位、8 bit数据位、1 bit停止位、1 bit校验位,奇偶校验方式设定为为偶校验[9]。主机PLC则以欧姆龙PLC为例,将串口1设置为RS-232C模式,数据格式与单片机相同,串口设置如图6所示。
图6 OMRON PLC的串口设置图
3.2 单片机与CH376芯片的通信
上电延时50 ms,单片机发送 CMD_CHECK_EXIST(06H)命令,发送55H数据,正常工作返回0AAH;再发送 CMD_SET_USB_MODE(15H)命令,后续数据为06H,设置为USB模式,返回状态为CMD_RET_SUCESS(51H),设置成功;发送CMD_DISK_CONNECT(30H)命令,检测U盘或移动硬盘是否连接,返回中断状为USB_INT_CONNECT(15H),设备连接;发送 CMD_DISK_MOUNT(31H)命令,初始化U盘或移动硬盘,产生中断返回USB_INT_SUCESS(14H),初始化完成。初始化完成即可对连接的U盘或移动硬盘进行创建新的文件、打开已有文件、写入数据等操作。操作完成后,发CMD_DISK_CONNECT(30H)命令,检测设备是否依然连接,产生中断。如果返回中断状态为USB_INT_DISCONNECT(16H),则设备移除;如果返回中断状态为 USB_INT_CONNECT(15H),则继续等待[3]。其流程如图7所示。
单片机与CH376之间使用8位并口,它的写指令和数据的程序如下:
(1)往CH376命令端口写入命令
void WriteCH376Cmd( unsigned char mCmd )
{
CH376_DATA_DAT_OUT( mCmd ); //向CH376的并口输出数据
CH376_DATA_DIR_OUT( ); //设置并口方向为输出
CH376_A0 = 1;
CH376_CS = 0;
CH376_WR = 0; //输出有效写控制信号,
写CH376芯片的命令端口
CH376_CS = 0; //该操作无意义,仅作延时,
CH376要求读写脉冲宽度大
CH376_WR = 1; //输出无效的控制信号,
完成操作CH376芯片
CH376_CS = 1;
CH376_A0 = 0;
CH376_DATA_DIR_IN( ); //禁止数据输出
}
(2)往CH376数据端口写入数据
void WriteCH376Data(unsigned char mData )
{
CH376_DATA_DAT_OUT( mData );
//向CH376的并口输出数据
CH376_DATA_DIR_OUT( ); //设置并口方向为输出
CH376_A0 = 0;
CH376_CS = 0;
CH376_WR = 0; //输出有效写控制信号,
写CH376芯片的数据端口
CH376_WR = 1; //输出无效的控制信号,
完成操作CH376芯片
CH376_CS = 1;
CH376_DATA_DIR_IN( ); //禁止数据输出
}
本文介绍了一种基于单片机的PLC数据存储系统的设计方案,重点描述了系统的总体方案、硬件电路的设计及各模块的相互通信。该系统与PLC通信采用了工业中广泛应用的ModBus通信协议标准,实现了通信标准化,以适应不同的应用场合。单片机与CH376的通信中采用了8位并行通信接口,增强系统整体的抗干扰能力,保证数据的传输稳定性和准确性。系统提供了RS485和RS323两种串口接口,满足不同的接口需求;使用CH376文件管理芯片,在U盘等储存设备里建立txt类型文件储存数据,方便桌面计算机的查看。此外,还添加了DS1302实时授时系统,使得系统可以依据时间创建以时间信息为命名主体的文件并存入数据,方便后期对数据识别、查找与分析。实践证明,该数据存储系统功能稳定,实用可靠,在PLC需要大数据存储的工控领域有极大的应用价值。
参考文献
[1] 霍罡.欧姆龙CP1H PLC应用基础与编程实践[M].北京: 机械工业出版社,2008.
[2] 汪炼,韩震宇.基于AVR单片机的串口通讯设计[J].中国测试技术,2003(2):52-53.
[3] Nanjing Qinheng Electronics Co..The data sheet of CH372[Z]. 2008.
[4] 刘启中,李荣正.PIC单片机原理及应用[M].北京:北京航空航天大学出版社,2010.
[5] 甘海峰,余奇志,吴兴中.单片机与西门子变频器的通信设计[J].四川兵工学报,2012,33(3):65-68.
[6] MODICON Inc..Modicon ModBus protocol reference guide[Z]. 2008.
[7] 邓元生.基于单片机的ModBus总线协议实现技术研究[D].长沙:中南大学,2009.
[8] 张荣华,王富东.单片机与U盘的接口技术[J].电工技术, 2007(5):45-51.
[9] 唐洪富,张兴波.基于STC系列单片机的智能温度控制器设计[J].电子技术应用,2013,39(5):60-70.
(收稿日期:2014-04-17)
作者简介:
殷苏民,男,1956年生,教授,硕士生导师,主要研究方向:微控技术、机电系统、机器视觉。