基于DN1022的DeviceNet总线产品设计
张士全 袁虎 陆伟青
(安科瑞电气股份有限公司 上海嘉定 201801)
摘要: 以基于CAN的DeviceNet技术为基础,采用DeviceNet从站协议芯片DN1022和意法半导体公司的32位单片机STM32F051R8T6为智能电机保护器设计了一款DeviceNet从站模块,并介绍了DeviceNet网络应用系统构建方法。
0 引言
随着工业现场底层设备的种类越来越多,功能越来越强大,现场总线技术已经得到了广泛的应用。基于CAN总线的DeviceNet技术,由美国Rockwell公司提出,并由ODVA(Open DeviceNet Vendors Association)进一步开发并做一致性认证。其凭借低成本、高性能、设备级诊断等优异的性能在国际上得到了普遍的采用。DeviceNet协议主要应用于汽车、半导体、电气机器、运送传输系统、食品、水处理、冲压与注塑等领域。[1]
目前开发该协议的方式有:
(1)向ODVA购买协议规范,自己完成协议开发,此种方式对研发要求高,优点是成本较低,缺点是开发时间较长。
(2)购买第三方协议包开发。现在市场上一些大的自动化厂商(如德国赫优讯)提供DeviceNet协议包,供应商可向其购买开发。协议开发包的功能全面,但成本较高、有一定的技术难度。
(3)购买协议模块。一些自动化厂商(如ANYBUS、赫优讯)提供集成了DeviceNet协议的IC模块,供应商只需要将此IC设计到产品的内部并利用串口等进行一些简单的设置即可。这种方式简便、开发周期短,缺点是结构固定、成本较高。
(4)协议芯片。DN1022内部集成了DeviceNet协议从站功能,集成度高、封装简单,满足一般的DeviceNet从节点功能要求,而且成本低、易开发、不受结构限制。[2][3][4]
介绍了一种基于DN1022芯片的电机保护器DeviceNet从站功能模块的开发,不仅实现了现场控制系统对电机重要参数及运行状态等的实时监控,还可完成总线对电机的远程启/停控制,为工业生产带来了很大便利。
1 智能电机保护器的DeviceNet通讯模块开发
安科瑞电气股份有限公司为改公司的电机保护器开发了一款DeviceNet从站通讯模块,并将其集成在产品内部,实现了仪表与通讯模块的一体化结构,非常便于工业现场控制系统的组网安装。改模块的开发基于DeviceNet从站协议芯片DN1022和意法半导体的CPU芯片STM32F051。
1.1 主要芯片介绍
1.1.1 控制器
MCU芯片采用意法半导体公司的Cortex™-M0架构内核的32位处理器STM32F051R8T6,时钟频率高达48MHz,内置64 Kb的Flash、8K的RAM、1个12位D/A 转换器 、11个定时器 、5通道 DMA 控制器 、55个高速 I/O口 、2个 I2C 接口、2个USART、时钟管理等多种资源,具有很高的性价比。
1.1.2 DN1022协议芯片
DN1022芯片内置DeviceNet Group2 Only Slave从站协议栈,具有内置的CAN口和DeviceNet处理引擎,高速串行口、并行口和配置口。用户处理器可通过高速串口或者并口和该协议芯片通信,只需实现一个简单的通信协议即可。[5]
DN1022技术指标:
◆支持最大64个输入字节,64个输出字节
◆支持POLL(轮询)、COS(状态改变)、CYCLIC(循环)三种数据触发方式
◆内置CAN控制器
◆芯片供电电压 3.0V-5.5V
1.2 硬件功能框图
DeviceNet从站模块的硬件功能如图1所示。设备上电后,用户CPU从保护器读取对DN1022的配置数据。读取成功并配置完成DN1022后,将DN1022设定为运行态。在运行状态下,保护器与DeviceNet主站间进行数据交互。工作指示灯显示模块CPU的配置、DN1022的初始化及CPU读取保护器数据的状态,网络指示灯显示DeviceNet的网络状态。
图1 DeviceNet从站模块的硬件功能
1.3 DN1022工作原理介绍
(1)配置:设备上电后,用户处理器对DN1022进行配置,过程如图2所示。需要配置的参数有地址、波特率、Network Input连接长度、Network output连接长度等。
图2 DN1022配置
(2)I/O数据交换,过程如图3所示。DN1022内部有一个I/O数据缓冲区,DeviceNet主站与DN1022之间的数据交互是异步进行的。
图3 DeviceNet主站、DN1022、用户CPU间的I/O数据交换
1.4 软件设计
软件设计用C语言完成。主要包括CPU 的初始化、读保护器配置命令、DN1022配置、保护器与DeviceNet主站间的交互数据等。
软件主程序:
int main(void)
{
CPU_INIT(); //CUP初始化
disp(1); //CUP正常工作,指示灯闪烁第1下
read_setting();
set_1022(); //配置DN1022
while (1)
{
read_master(); //读取实时参数
PrepareIOrequest(); //给DeviceNet主站上传保护器数据
; //出错异常处理
}
}
软件流程如图4所示。
- 1
- 2
- 总2页
http:www.cps800.com/news/49671.htm