PROFIBUS-DP智能从站的设计
北京信息科技大学自动化学院、北京国电智深控制技术有限公司的研究人员李明强、刘小河、田雨聪,在2015年第4期《电气技术》杂志上撰文,针对实际PROFIBUS-DP通信系统中测量点数较少,数据复杂程度中等以下的从站应用环境,在保证可靠和完善的工作能力下,文章提出了一种基于国产廉价协议芯片APC3和STM32控制芯片构建PROFIBUS-DP智能从站设备的方案,以有效控制成本。
首先分析了常见PROFIBUS-DP智能从站设计的方案,然后从软硬件两方面介绍了采用STM32芯片和APC3芯片实现PROFIBUS-DP智能从站的详细设计方法。经测试,设计的PROFIBUS-DP智能从站能被主站正确地配置和组态,并能顺利进入与主站的数据交换状态,将其测得的压力数据正确及时地传送给主站。
随着先进工业技术的发展,现场总线技术已经广泛地应用到世界工业自动化控制领域之中。在众多的现场总线协议中,PROFIBUS-DP协议的应用最为广泛,各类用途和型号的PROFIBUS-DP从站设备占据着巨大的市场份额。本文旨在设计一款成本低廉,性能稳定的PROFIBUS-DP智能从站,并能将通过压力传感器得到的压力数据正确传送至主站。
1从站的实现方式及芯片选择[1]
1.1 从站的实现方案
最常见的PROFIBUS-DP智能从站的实现有两种方式。
第一种:单纯“MCU+UART”方式。总线数据通过UART进入MCU,MCU通过完全的软件编程和必需的外围硬件接口(存储器等)来实现PROFIBUS-DP从站协议规定的状态机。硬件上,这种方式需要有高性能的MCU的支持;软件上,PROFIBUS-DP从站状态机的编程实现需要花费程序员大量复杂的工作。此方法设计的从站站点设计灵活,可以完全按照用户的要求来实现一个内核小巧的、特定的通信平台。
第二种:使用专门的PROFIBUS-DP从站ASIC芯片。这类芯片内部已经搭建了完整的SAP通信结构,负责处理与通信有关的状态机控制、将数据打包成规定的帧格式、从总线上截取帧以及令牌环的管理等,使所有与总线通信有关的任务在ASIC上得以完成,用户便不再需要将过多的精力放在协议状态机的软件实现上,从而可以专注于应用层的设计,完成产品的特定功能设计。这种方式极大地减少了处理器和开发人员的负担,节约开发时间。
综上考虑,本文选用方案二所述方法来完成PROFIBUS-DP智能从站的设计。
1.2 ASIC芯片的选择
适合构建从站的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完成,因此用户可以直接从组态时已经分配好的各个数据缓冲区中直接获取报文中的相关数据,而不必通过花大量时间分析报文来获得。
2 系统硬件结构
2.1 系统硬件结构概述
系统硬件总体结构如图1所示。控制核心为意法半导体公司的STM32F103VET6嵌入式控制芯片,该芯片拥有128KByte的程序存储器,运行速度可达72MHz,片内集成了3路波特率可达4.5Mbit/s的UART接口,内存最大可达20KB,另外芯片I/O接口丰富,具有DMA和FSMC模块,完全满足设计需求。
图1 系统整体结构功能框图
专用的PROFIBUS-DP总线连接器将差分信号送至485芯片,得到的串行数据送至APC3进行协议数据拆分保存,STM32通过操作三种总线按照一定的时序和周期将APC3内的缓冲数据取走,继而使得STM32内应用层软件得以运行。
在接收到主站指令后,STM32内部的A/D模块读取压力传感器电压值,转换成相应的模拟量数据后通过APC3应答给主站。为了使用方便,设计放置了一个8位拨码键盘来设置从站自身的固定地址,由于PROFIBUS-DP协议规定从站地址为0~127,所以只用到了按键的低7位,第8位可做扩展功能使用。
将STM32芯片的UART1引至RJ11接口,用以在编程时输出调试信息,并在程序运行时不断输出自定义的设备状态信息,以便对设备进行实时监视。系统供电来自外部输入的5V电源。
2.2 APC3与控制器的连接[3]
协议芯片APC3处于磁隔离芯片ADM2486和主控芯片之间,完成报文的自主发送和接收工作,硬件连接如图2所示[4]。
图2 APC3硬件接线图
设计采用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相应管脚连接。
3 系统软件构成
系统软件编程的主要任务是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进行初始化操作以期回归正常。
4 测试结果及结论
从站设计过程中使用了两个辅助设计软件:DPMasterSIM(模拟主站软件)、PROFIBUSViewer (PROFIBUS-DP总线监视软件)。DPMasterSIM软件模拟了一个PROFIBUS-DP主站的DP-V0的功能,能初始化从站并能与从站进行周期性数据交换。PROFIBUSViewer软件能监视总线上的数据流。
图4 测试结果
经测试,通过从站配置和组态,主站和该从站之间能建立起有效的数据通信。测试结果如图4,组态后设备地址为16,诊断字节长度为6,输入和输出字节长度均为4。从设备诊断选项卡的从站状态栏可知从站已经正确进入了DATA_EXCH状态,从输入数据选项卡右侧数据栏可知主站能正确接收到从站测得的压力值。
同时,可以在输出数据选项卡中点击“数据输出”按钮来使主站向从站输出右侧数据栏内用户自定义的数据,以便获得更高的应用灵活性。