Profibus-DP是一种由西门子开发的开放式现场总线标准,用于现场级分布式自动化外设之间的高速数据传输。在2007年,Profibus节点数已经突破2000万,至2012年时,PI组织预计节点数将超过5000万个,年销售芯片达到450万。Profibus-DP主要分为单主站结构和多主站结构,本文主要讨论的是多主站结构。
Profibus-DP的多主站结构使用混合的总线访问控制机制,主站之间采取令牌控制方式,令牌在主站之间传递,拥有令牌的主站拥有总线访问控制权;主站与从站之间采取主从的控制方式。令牌是一种特殊的报文,令牌在主站间按照地址的升序依次传递。令牌环是所有主站的组织链,用户通过编写令牌传递程序保证每个主站在规定时间内得到令牌,之后就可以在规定时间内与所属从站通信,也可与所有主站通信。
Profibus协议的结构以OSI为参考模型,DP使用第1层、第2层和用户接口,第3层到第7层未加以描述。一个DP系统既可以是单主站结构,也可以是多主站结构。在多主站结构中,令牌在主站之间传递,每个主站在接收到令牌后,通过令牌轮转定时器来控制令牌持有时间。
为了实现Profibus-DP主站通信平台,本文提出了一种FPGA与ARM相结合的解决方案。FPGA主要负责数据链路层部分的介质访问控制、数据安全性、传输协议和报文的处理。FPGA部分主要完成对Profibus报文的组帧、拆帧、FCS校验以及对报文的基本分析,对应的是Profibus的链路层功能。FPGA内部主要由锁相环模块、串口时钟模块、接收模块和发送模块及相应的缓冲模块、处理模块、定时器模块和寄存器模块组成。
ARM控制器负责DDLM层和建立在其上的状态机运转以及应用层的数据接口。为了维护令牌环的正常运行,定时器模块是至关重要的。对于正常轮转令牌环,必需的定时器包括令牌轮转定时器、空闲定时器、时隙定时器、超时时间定时器和GAP更新定时器。当主站接收到令牌后,令牌轮转定时器装入目标轮转时间tTR并按位时间递减;当此站再次接收到令牌时,此定时器值(剩余时间或令牌持有时间tTH)被读出,且此定时器再装入tTR,实际轮转时间tRR为tTR-tTH。
Profibus-DP通信的高能高效和实时性以及安全和自恢复都离不开各个定时器的参与。当主站接收到令牌后,令牌轮转定时器装入目标轮转时间tTR并按位时间递减;当此站再次接收到令牌时,此定时器值(剩余时间或令牌持有时间tTH)被读出,且此定时器再装入tTR,实际轮转时间tRR为tTR-tTH。在传输或接收了一帧的最后一位后,打开空闲定时器,仅当定时器溢出后一个新的请求或令牌帧才可被传输。主站中的时隙定时器在一个请求或令牌传送最后一位后打开,若在一帧的第一位被接收前此定时器期满,则产生错误,然后开始重试或新的报文循环。
在Profibus-DP主站通信机理及技术特性中,令牌循环时间的分析是重要的一环。在不考虑出错重发的前提下,N个主站令牌的整体传输延迟TTS=N?TTK,TTK是发送令牌PDU(协议数据单元)需要的时间。高优先级报文的传送时间为THMS,报文数量为M;低优先级报文的传送时间为TLMS,报文数量为L。假设所有站点的报文服务均含有应答,则TTH=N(THMS+TLMS)。代入上述公式可得:TTK的经验值取66Tbit(Tbit为传送1bit所需要的时间,即总线波特率的倒数)。考虑最坏情况,THMS和TLMS的最长报文长度为128字和244字,令牌维护时间可以取365Tbit,代入可近似算出令牌循环时间。