多现场总线接口智能仪表设计
2011-06-03牛昱光崔正文
牛昱光,崔正文
(太原理工大学 信息工程学院,山西 太原 030024)
为了适应不同自动化系统的应用需求,出现了拥有不同技术特点的现场总线[1]。每种现场总线都以一个或几个大型跨国公司为背景拓展其应用领域,多种总线在一个应用领域中协调共存,不同的总线设备为用户提供了产品选择多样性的同时,也给用户带来了设备兼容性问题,传统的单一现场总线仪表已经不能灵活地适用于自动化系统。因此,针对多种总线共存的客观事实,探讨如何使智能仪表适应不同现场总线系统有着重要的现实意义。
1 系统结构及功能
本文系统以STC12C5612AD作为智能仪表的主CPU(内部烧写有MODBUS通信协议),设置一个由主CPU所在板引出的引脚为 GND、VDD、TXD、RXD、INT1、AGND、VCC的公共通信接口,可以连接485、PROFIBUS、CAN三种通信板中的一种通信电路实现通信。其中CAN、PROFIBUS通信 电 路 分 别 有 独 立 的 CPU (AT89C51CC03[2]和P89V51RD2,分别烧写了DEVICENET和PROFIBUS-DP协议),与主CPU构成双CPU结构。系统结构如图1所示。
图1 系统结构
2 系统硬件设计
系统硬件主要包括:RS-485、CAN和 PROFIBUS通信接口电路。其中,RS-485通信电路包括光耦和485驱动电路;CAN接口电路由如图2所示的CAN控制电路和如图3所示的CAN驱动电路组成。PROFIBUS-DP接口电路由CPU(P89V51RD2)、通信协议控制芯片 SPC3[3]、高速光耦HCPL0601和 RS-485总线驱动电路组成,如图4所示。CAN接口电路与PROFIBUS接口电路相似,由于篇幅所限,本文以PROFIBUS接口电路为例进行说明。
图2 CAN主控制电路
图3 CAN驱动电路
由图4可知,PROFIBUS-DP接口电路的CPU(P89V51RD2)负责控制 SPC3实现 PROFIBUS-DP总线数据的转换与共享。SPC3已集成了PROFIBUS-DP物理层的数据收发功能,可独立处理PROFIBUS-DP协议;DP通信服务存取点由SPC3自动建立,各种报文信息呈现在用户面前是不同BUF的内部数据,用户可以通过总线接口单元来访问这些内部数据。SPC3选择工作在Intel模式下 (XINT/MOT接低电平,MODE接高电平,J2引入 2路+5 V隔离电源J3用作编程口。P89V51RD2通过P0、P2口与SPC3的总线单元连接来读写SPC3的1.5 KB RAM[4],P0口作为数据总线和低8位地址总线复用口,P2口作为高8位地址总线。由于SPC3内部集成了锁存器,所以 P89V51RD2的 P0口AD0~AD7与 SPC3的 DB0~DB7直接相连。P89V51RD2的读写控制信号和ALE信号分别与SPC3的XWR、XRD和 ALE相连,CPU通过 P1.0对 SPC3进行复位,并且通过外部中断引脚P3.2接入SPC3的中断信号X/INT。拨码开关电路用于设置DP从站波特率。外接TL7705实现看门狗功能。由于SPC3仅集成了物理层的数据传输功能,不具备RS-485的驱动接口,因此扩充了RS-485驱动电路。另外为避免总线引入干扰,在SPC3与RS-485总线驱动电路之间采用10 Mb/s高速光耦HCPL0601进行光电隔离。
3 系统软件设计
3.1 RS-485通信软件的设计
RS-485通信由主CPU控制,不需外接单独的CPU,采用中断方式通信。PC机作为上位机,与仪表采用问答方式通信,总线上的设备在时序上需严格配合,必须遵从以下原则:(1)复位时,从机都应该处于接收状态;(2)控制端、DE的信号有效脉宽应该大于发送或接收一帧信号的宽度,接收/发送数据也要考虑延时;(3)总线上所连接设备的发送控制信号在时序上要完全隔开。RS-485串行通信程序流程如图5所示。RS-485串行通信采用MODBUS消息帧RTU模式,整个消息帧必须作为一连续的流传输。如果在帧完成之前有超过1.5个字符时间的停顿时间,则接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,则接收设备将认为它是前一消息的延续。
图4 PROFIBUS接口电路
3.2 CAN总线软件设计
CAN总线软件的任务是实现CAN总线[5]与RS-485总线间的通信,完成两者的协议转换。主要包括节点初始化程序、报文发送程序、报文接收程序以及CAN总线出错处理程序等。在初始化CAN内部寄存器时,要注意保证各节点的位速率一致,而且接发双方必须同步。为提高通信的实时性,报文的接收和发送采用定时中断接收方式。编写初始化程序应注意:先清除所有通道和其对应的状态寄存器;根据外部时钟和需要的CAN比特率初始化位定时器;根据收发要求定义通道的ID和过滤器寄存器;初始化对应通道的收发标志和数据的字节;在CAN中断接收程序中还要注意接收到数据后重新初始化,并设置使能接收通道,以便接收下次中断数据。同样,在定时中断发送例程中,把数据放入发送缓冲区后要置发送标志,并重新初始化定时器。CAN通信流程如图6所示。
图5 RS-485串行通信流程
3.3 PROFIBUS-DP从站软件设计
采用PROFIBUS-DP通信的智能仪表通常作为PROFIBUS-DP总线的从站设备,其软件程序包括通信主程序、SPC3初始化和中断处理,其主程序流程图如图7所示。PROFIBUS-DP通信控制器SPC3集成了PROFIBUS-DP协议。P89V51RD2微处理器需要对SPC3进行合理的配置、初始化及报文处理。微处理器除了要完成串口端的定时/计数器工作方式、波特率、中断方式设置等自身初始化任务外,还要对SPC3进行开中断、从站识别地址、片内方式寄存器、诊断缓冲区、参数缓冲区、配置缓冲区、地址缓冲区、初始长度等初始化设置。中断处理程序用来处理SPC3发生的各种事件 (如新的参数报文事件、全局控制命令报文事件、新的地址设置报文事件、新的组态报文事件等)。
图6 CAN通信流程
图7 PROFIBUS主程序流程
本文设计的三种通信程序都是在Keil-Uvision3仿真软件环境下进行C51编写、编译和调试;GSD文件是在西门子GSD文件编辑器(GSD Editor)[6]环境下进行编写和编译。
4 测试结果
4.1 MODBUS通信测试
使用STC-ISP.exe烧写程序软件将MODBUS通信程序以冷启动方式写入主芯片STC12C5612AD。单台仪表可以通过“ComMonitor”串口调试软件按照标准 RTU信息帧格式测试。
4.2 CAN通信测试
使用Atmel-Flip2.4.6烧写程序软件,将CAN通信程序以冷启动方式写入主芯片T89C51CC03。使用周立功公司的PCI-9810主站卡插在PC机PCI插槽上作为主节点,通信调试软件使用ZLGCANTest-PCI9810。
4.3 PROFIBUS通信测试
将智能仪表作为从站并设置地址为3,实现与主站PC(地址1)的通信。由于PROFIBUS-DP在底层物理层上采用RS-485协议,因此可以通过串口调试助手软件SComAssistant V2.1模拟DP系统工作过程,对总线数据进行侦听。
4.4 通信测试结果
智能仪表分别配置的MODBUS、PROFIBUS和 CANBUS三种通信试验板均能够接收上位机主节点发送的命令,同时发送响应信息至上位机,实现主从站数据交换,且收发数据正确,测试结果表明本设计方案可行。
本文介绍的带有多现场总线接口的智能仪表,使智能仪表具备了 MODBUS、PROFIBUS和 CANBUS三种独立的现场总线通信功能。通信板采用统一标准接口的集成化模块结构设计,使得智能仪表更换通信板更加便捷、高效,避免了智能仪表的二次开发。为解决控制系统多种总线并存环境下的信息交换提供了一种解决方案,具有一定的应用价值。
[1]阳宪惠.现场总线技术及其应用[M].北京:清华大学出版社,2008.
[2]ATMELL.Enhanced 8-bit MCU with CAN controller and flash memory AT89C51CC03 datasheet[S].2007.
[3]Germany,Siemens AG.Siemens AG,SIMATIC NET SPC3 PROFIBUS controller user description[S].2000.
[4]孙鹤旭,梁涛,云利军.Profibus现场总线控制系统的设计与开发[M].北京:国防工业出版社,2007.
[5]BOSCH Inc.CAN 2.0 specification part A&B.1991.
[6]罗红福,胡斌,钟存福,等.PROFIBUS-DP现场总线工程应用实例解析[M].北京:中国电力出版社,2008.