李明强 刘小河 田雨聪
(1.北京信息科技大学自动化学院,北京 100192; 2.北京国电智深控制技术有限公司,北京 102200)
随着先进工业技术的发展,现场总线技术已经广泛地应用到世界工业自动化控制领域之中。在众多的现场总线协议中,Profibus-DP 协议的应用最为广泛,各类用途和型号的Profibus-DP 从站设备占据着巨大的市场份额。本文旨在设计一款成本低廉,性能稳定的Profibus-DP 智能从站,并能将通过压力传感器得到的压力数据正确传送至主站。
最常见的Profibus-DP 智能从站的实现有两种方式。
第一种:单纯“MCU+UART”方式。总线数据通过UART 进入MCU,MCU 通过完全的软件编程和必需的外围硬件接口(存储器等)来实现Profibus-DP 从站协议规定的状态机。硬件上,这种方式需要有高性能的 MCU 的支持;软件上,Profibus-DP从站状态机的编程实现需要花费程序员大量复杂的工作。此方法设计的从站站点设计灵活,可以完全按照用户的要求来实现一个内核小巧的、特定的通信平台。
第二种:使用专门的Profibus-DP 从站ASIC 芯片。这类芯片内部已经搭建了完整的SAP 通信结构,负责处理与通信有关的状态机控制、将数据打包成规定的帧格式、从总线上截取帧以及令牌环的管理等,使所有与总线通信有关的任务在ASIC 上得以完成,用户便不再需要将过多的精力放在协议状态机的软件实现上,从而可以专注于应用层的设计,完成产品的特定功能设计。这种方式极大地减少了处理器和开发人员的负担,节约开发时间。
综上考虑,本文选用方案二所述方法来完成Profibus-DP 智能从站的设计。
适合构建从站的ASIC 芯片分为智能型和简单型从站芯片两种:智能型有APC3、SPC3、VPC3、SPC4-2、SIM11、DPC31 等,简单型有LSPM2 和SPM2 等。本文设计的为智能型从站,所选择的芯片为国产的APC3。
APC3 是一款用于Profibus-DP 智能从站开发的ASICs 芯片,支持Profibus-DP 标准中的DPV0 部分,可以自动识别9.6kbps~12Mbps 范围内的波特率。在3.3V 工作电压情况下,与工作在DPV0 模式下的VPC3 完全兼容,除工作电压不同之外,与工作在DPV0 模式下的SPC3 完全兼容。APC3 支持Intel和Motorola 两种处理器接口模式,通过两个模式选择引脚可以进行接口模式的配置。通过8 位数据总线和11 位的地址总线,用户可以直接操作内部双口RAM。APC3 需要外部提供固定48MHz 的时钟,经内部分频后能够输出24M/12M 的时钟给外部处理器。通过中断请求寄存器可以获各种外部事件,从而得到相关的数据,如扩展参数数据等。
APC3 内部的双口RAM 可视为MCU 的一个简单外部RAM,MCU 可以直接对其进行寻址和数据存储。1.5kbyte 大小的双口RAM 被分为192 个段,每个段包括8 个字节。软件对双口RAM 的操作以段为单位。Profibus-DP 从站的状态机完全由APC3完成,因此用户可以直接从组态时已经分配好的各个数据缓冲区中直接获取报文中的相关数据,而不必通过花大量时间分析报文来获得。
系统硬件总体结构如图1所示。控制核心为意法半导体公司的 STM32F103VET6 嵌入式控制芯片,该芯片拥有128kByte 的程序存储器,运行速度可达72MHz,片内集成了3 路波特率可达4.5Mbit/s的UART 接口,内存最大可达20KB,另外芯片I/O接口丰富,具有DMA 和FSMC 模块,完全满足设计需求。
专用的Profibus-DP 总线连接器将差分信号送至485 芯片,得到的串行数据送至APC3 进行协议数据拆分保存,STM32 通过操作三种总线按照一定的时序和周期将APC3 内的缓冲数据取走,继而使得STM32 内应用层软件得以运行。在接收到主站指令后,STM32 内部的A/D 模块读取压力传感器电压值,转换成相应的模拟量数据后通过APC3 应答给主站。为了使用方便,设计放置了一个8 位拨码键盘来设置从站自身的固定地址,由于Profibus-DP 协议规定从站地址为0~127,所以只用到了按键的低7 位,第8 位可做扩展功能使用。将STM32 芯片的UART1 引至RJ11 接口,用以在编程时输出调试信息,并在程序运行时不断输出自定义的设备状态信息,以便对设备进行实时监视。系统供电来自外部输入的5V 电源。
图1 系统整体结构功能框图
协议芯片APC3 处于磁隔离芯片ADM2486 和主控芯片之间,完成报文的自主发送和接收工作,硬件连接如图2所示[4]。
设计采用ADI 公司生产的ADM2486 作为系统与总线的隔离芯片,其具有高达2500Vrms 的高压隔离性能,最大传输速率为20Mbps,可配置为半双工或全双工模式,总线最大节点数可达50 个,支持Profibus-DP 现场总线。将其RE 引脚接地,使从站一直处于接收监听总线数据状态,另外三个引脚与APC3 相应引脚连接,A、B 线与DB9 规定的引脚相连。
将APC3 的9 脚接地,使APC3 工作于Intel 接口模式,即数据总线和地址总线复用模式,8 数据总线分时复用为地址总线的低8 位,原地址总线的高3 位接地[5]。APC3 的3 脚接地,使得7 脚可以输出12MHz 的方波作为STM32F103 的外部时钟源之用。如果APC3 正确进入DATA_EXCH(数据交换)状态,13 脚连接的发光二极管将会亮起以进行提示。中断信号、复位信号、读写控制信号都与STM32F103 相应管脚连接。
系统软件编程的主要任务是APC3 芯片的初始化、电压采集处理及传输、从站的诊断以及中断程序的处理等。程序流程图如图3所示。
初始化分为系统资源初始化和APC3 芯片初始化。系统资源初始化主要完成对本设计所用到的系统资源,诸如ADC、UART、GPIO、SYSCLK、TIMER、FSMC 等模块的初始化工作。
图3 系统整体流程图
APC3 的初始化相对复杂,主要需要完成与从站相关的基本信息及功能相关寄存器的配置、APC3内部数据缓冲区指针的计算以及外部中断相关的各种定义。这些配置信息都保存在APC3 内存中地址从0X00H 到0X3FH 的区域中,之后的从0X40H 到0X5FFH 区域中以既定数据存储结构保存用户与主站间的交互数据。
Intel 操作模式下,APC3 内存中从地址0X00H到0X15H 保存处理器参数,从0X15H 到0X3FH 存储组织参数。处理器参数包括对模式寄存器0/1、中断寄存器和状态寄存器等的设置,组织参数用以设置从站的设备地址、生产厂家ID、输入输出缓冲区数据指针及长度等信息。这些配置信息都被写到从站的GSD 配置文件中,以便于使用者使用主站对其进行进一步配置。从站配置完成后,主站就可以同从站进行周期性的数据交换,主要完成以下三种服务:Read_Inp(读从站输入数据)、Read_Outp(读从站输出数据)、Data_Exchange(发送和接收被主站初始化的各参数以及与各从站的用户数据)。
MCU 内部的ADC 模块根据主站的需求适时对压力传感器电压值进行采样,经过数字滤波和模拟量计算后,计算得到实时的压力值。随后,MCU 将压力值数据写入到APC3 内部的输入数据缓冲区,APC3 将自动将数据打包,以应答帧的形式将数据送上Profibus-DP 总线,继而送至主站。在APC3 初始化和运行的阶段,主站会随时发送诊断报文给从站,因此还要求从站能组织诊断报文,在需要的时候送往主站,这些都在MCU 中完成。
在设备的运行过程中,随时可能出现一些意外的情况导致从站退出 DATA_EXCH 状态而进入WAIT_CFG 或者WAIT_PRM 状态,此时,MCU 应该重新对APC3 进行初始化操作以期回归正常。
从站设计过程中使用了两个辅助设计软件:DPMasterSIM(模拟主站软件)、ProfibusViewer (Profibus-DP 总线监视软件)。DPMasterSIM 软件模拟了一个Profibus-DP 主站的DP-V0 的功能,能初始化从站并能与从站进行周期性数据交换。ProfibusViewer 软件能监视总线上的数据流。
图4 测试结果
经测试,通过从站配置和组态,主站和该从站之间能建立起有效的数据通信。测试结果如图4所示,组态后设备地址为16,诊断字节长度为6,输入和输出字节长度均为4。从设备诊断选项卡的从站状态栏可知从站已经正确进入了DATA_EXCH 状态,从输入数据选项卡右侧数据栏可知主站能正确 接收到从站测得的压力值。同时,可以在输出数据选项卡中点击“数据输出”按钮来使主站向从站输出右侧数据栏内用户自定义的数据,以便获得更高的应用灵活性。
[1] 侯维岩,费敏锐.Profibus 协议分析和系统应用[M].北京: 清华大学出版社,2006: 22-76.
[2] 孟静静.Profibus 与Profinet 网络结构的研究与应用[D].兰州: 兰州理工大学,2011.
[3] 张强.采用SPC3 设计Profibus-DP 智能从站[J].自动化仪表,2005,26(3): 15-18.
[4] 郑源滨.智能分析仪表中 Profibus-DP 接口的研发[D].北京: 华北电力大学:北京,2011.
[5] 阎松明.基于Profibus-DP 分布式智能从站设计与研究[D].南京: 南京理工大学,2008.
[6] 姚旺.Profibus-DP 从站设计及其在人防工程中的应用研究[D].哈尔滨: 哈尔滨工业大学,2010.
[7] 郭彦青,姚竹亭.基于Profibus-DP 总线的单主站/单从站测试网络建设[J].计量与测试技术,2005,32(11): 24-25,27.
[8] 刘成俊,王善永.基于Profibus 的水电厂分布式测控装置[J].水电自动化与大坝监测,2007,31(1): 2-3.
[9] 刘波文,孙岩.嵌入式实时操作系统uC/OS-II 经典实例——基于STM32 处理器[M].北京: 北京航空航天出版社,2012.
[10] 姜日新,宋延民,张平,等.基于 VPC3+C 的Profibus-DP 智能从站设计[J].天津工程师范学院学报,2010,20(4): 14-17