蒋成清 王晓宇
【摘要】工业现场上经常需要监控现场的工作环境和设备的运行状态,所以需要对现场的温度、湿度和设备的电压、电流等参数进行采集,并传送给上位机监测。本文提出了一种数据采集系统的设计和实施方案,采用STM32作为微处理器,标准DeviceNet协议作为通信规约,实现数据采集的网络化和智能化。
【关键词】数据采集;STM32;DeviceNet协议;DN1022
1.引言
随着我国工业化水平不断提高,工业现场需要监控现场的工作环境和设备的运行状况,包括测量现场的温度、湿度和设备的电压、电流等参数。传统的数据采集多采用变送器,但是,变送器采集的数据采用模拟量传输,抗干扰能力较差,并且采集数据单一,不能完成多参数采集,不易实现网络化。如何提高采集数据抗干扰能力,并且完成多参数采集等问题有待完善。本设计采用stm32作为CPU,DeviceNet作为通信协议,接收并处理DeviceNet主站下达的查询命令,组织相应数据上报给DeviceNet主站,有多路的输入和多路的输出。
2.总体设计方案
从功能上讲,本设计可以分为两大部分:即工业现场信号采集电路和工业现场控制电路。其中工业现场信号采集电路完成对数字信号的采集,再由stm32对数据进行处理,通过标准的DeviceNet协议与DeviceNet主站通信。工业现场控制电路接收并处理DeviceNet主站下达的控制命令,组织相应数据实现对工业现场的控制。系统框图如图1所示。
图1 系统的方框图
2.1 数据采集电路
数据采集电路实现了开关量的实时采集功能。微处理器STM32f103R8的I/O口可以配置为开关量输入端口,开关量输入信号由I端输入,通过光电耦合器PC817与微处理器I/O口相连。微处理器对输入端进行状态查询,读取状态信息。光电耦合器PC817在作用是实现现场开关量与微处理器间的电气隔离,提高电绝缘和抗干扰能力。
2.2 协议芯片接口电路
DN1022芯片具有内置的CAN口和DeviceNet处理引擎,内置DeviceNet Group 2 Only Slave从站协议栈,具有高速串行口和配置口。微处理器可通过串口和DN1022通信。其集成度高、封装简单,满足一般的DeviceNet从节点功能要求。
(1)工作状态配置。DN1022芯片初始化时会检测配置口线CFG1的状态,根据状态的不同,决定芯片的工作状态。如果CFG1=0,芯片处于配置状态;CFG1=1,芯片处于工作状态。
(2)I/O数据交换状态。DN1022内部有一个I/O数据缓冲区,DeviceNet主站与DN1022之间的数据交互是异步进行的。
在工作状态,stm32可以与DN1022进行I/O数据交换及参数读写。如图3,DN1022芯片的RXD、TXD为串行口信号接收和发送引脚,分别接用户的处理器的TXD及RXD。高速串口最高波特率可达115.2Kbps,可以满足与DeviceNet相匹配的速度。
图2 DN1022接口电路
2.3 输出控制电路
当接收到DeviceNet主站发送的命令时,微处理器stm32对数据进行处理,根据主站要求指示相应的继电器闭合,三极管饱和导通,相应指示灯亮,实现了对开关量的控制。光电耦合器PC817实现电气隔离作用。
图3 输出控制电路
2.4 拨码开关电路
拨码开关电路分为从站地址的选择和波特率的选择两种,并且要求在配置状态下才能设置。从站地址的选择通过拨码开关中的前六位A1—A6设置从站地址,采用8421BCD编码规则配置从站地址,设置范围0-63。波特率的选择有125Kbps、250Kbps、500 Kbps和自动波特率设置4种可选。通过拨码开关中的后两位A7和A8选择波特率,采用8421BCD编码规则配置波特率。
3.系统软件设计
本设计由C语言编程实现,完成对工业现场信号进行采集,组织相应数据通过DeviceNet协议传给主站;并且接收处理DeviceNet主站发出的命令,控制对输出继电器做出闭合或释放动作,以实现开关量信号的输出。本设计中采用Keil uVision4为开发平台,编写了主程序,数据采集及处理程序,串口通信程序。上电后,CPU首先对DN1022进行配置,需要配置的参数有地址、波特率、Network Input连接长度等。然后进行I/O数据交换。DeviceNet主站与DN1022之间的数据交互是异步进行的。
表1 DN1022命令表
命令号 命令功能
0x1 设定身份识别信息(配置状态)
0x2 设定连接信息(配置状态)
0x5 I/O数据传输(运行状态)
0x6 I/O数据传输,并读取Device Net网络状态(运行状态)
0xE 读取参数(运行状态)
0x10 设置参数(运行状态)
0x20 设定参数信息参数(配置状态)
表1为协议芯片DN1022的命令表,本设计使用了1号、2号以及5号命令。1号命令是配置命令,包含设备号,设备许可号,版本号,产品名称等。当发送完一帧命令后,DN1022返回一个响应帧,0x81是正确响应帧,0xE0和0x2是错误响应帧。2号命令是配置命令,包括地址、波特率、输入及输出长度。地址和波特率是通过拨码开关读取的,由于输入和输出为4组,所以设置为各1个字节。正确响应帧为0x82,0x01和0xff是错误响应帧。5号命令为运行命令,完成DN1022与stm32之间的数据通信,正确响应帧为0x85。图6为整个系统设计的软件流程图。
图4 软件流程图
4.结论
本设计采用stm32作为CPU,对工业现场信号进行多路采集,采集的信息同时性好,通过devicenet协议与PLC实时通信,传输数据的实时性与可靠性显著提高,完全能满足整个系统的运行,通用性好,具有较好的应用价值和市场前景。
参考文献
[1]张旭,亓学广.基于STM32电力数据采集系统的设计[J].电子测量技术,2010,11:90-92.
[2]DN1022使用手册[S].上海泗博自动化技术有限公司,2013.
[3]张戟,程旻,谢剑英.基于现场总线DeviceNet的智能设备开发指南,2004.
[4]韩芝侠,淡涛.热释电红外传感器的应用[J].陕西工学院学报,2003(3):148-150.
[5]程晓辉,董爱华,舒国汀,方建安.I/O模块的DeviceNet接口设计[J].东华大学学报(自然科学版),2005(02).
作者简介:蒋成清(1993—),安徽宿州人,大学本科,现就读于辽宁科技大学。
通讯作者:王晓宇(1978—),辽宁鞍山人,硕士,讲师,主要研究方向:信号与系统。