3.2 CAN总线软件设计
CAN总线软件的任务是实现CAN总线[5]与RS-485总线间的通信,完成两者的协议转换。主要包括节点初始化程序、报文发送程序、报文接收程序以及CAN总线出错处理程序等。在初始化CAN内部寄存器时,要注意保证各节点的位速率一致,而且接发双方必须同步。为提高通信的实时性,报文的接收和发送采用定时中断接收方式。编写初始化程序应注意:先清除所有通道和其对应的状态寄存器;根据外部时钟和需要的CAN比特率初始化位定时器;根据收发要求定义通道的ID和过滤器寄存器;初始化对应通道的收发标志和数据的字节;在CAN中断接收程序中还要注意接收到数据后重新初始化,并设置使能接收通道,以便接收下次中断数据。同样,在定时中断发送例程中,把数据放入发送缓冲区后要置发送标志,并重新初始化定时器。CAN通信流程如图6所示。
3.3 PROFIBUS-DP从站软件设计
采用PROFIBUS-DP通信的智能仪表通常作为PROFIBUS-DP总线的从站设备,其软件程序包括通信主程序、SPC3初始化和中断处理, 其主程序流程图如图7所示。PROFIBUS-DP通信控制器SPC3集成了PROFIBUS-DP协议。P89V51RD2微处理器需要对SPC3进行合理的配置、初始化及报文处理。微处理器除了要完成串口端的定时/计数器工作方式、波特率、中断方式设置等自身初始化任务外,还要对SPC3进行开中断、从站识别地址、片内方式寄存器、诊断缓冲区、参数缓冲区、配置缓冲区、地址缓冲区、初始长度等初始化设置。中断处理程序用来处理SPC3发生的各种事件(如新的参数报文事件、全局控制命令报文事件、新的地址设置报文事件、新的组态报文事件等)。
本文设计的三种通信程序都是在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.