跟着现代化工业的不断前进,人们对生产过程的操控提出了更高的要求。智能化、网络化、微型化、分散化代表今世主动化操控技能开展的干流方向,而现场总线技能正是促进主动化体系适应这一开展要求的先进技能。DeviceNet是根据CAN总线的一种敞开式现场总线技能,在国际各大供货商的共同努力下,现已成为普及率比较高的现场总线技能之一,在国内外得到较大规模的推行和使用。
DeviceNet网络答应的波特率共有三种:500K、250K、125K。在设备联入网络之前,需求用户根据当时网络的要求挑选一种作业波特率。为了满意设备热插拔的要求,许多接入设备除了供给波特率的人工设置之外,还有必要具有波特率主动检测的功用。
1 波特率主动检测的前提条件
根据CAN总线的特色,每一个网络上的节点对接纳到的报文都具有主动应对机制,根据接纳到的信息正确与否宣布应对信息和犯错信息。在设备联入CAN网络后,根据网络通信安全的要求,在没有得到波特率的正确设置前,不答应发送任何的信息,也便是说,接入节点有必要具有“只听”功用。DeviceNet是根据CAN总线的协议标准,要完结接入设备的波特率主动检测,也有必要使通讯接口在波特率没有承认前处于“只听”形式。
许多DeviceNet通讯接口在规划上都是选用CAN协议芯片或许内嵌式的CAN接口,为了完结其“只听”功用,能够在其发送接口与总线驱动芯片之间加上一级或门,如图1所示。82C251是CAN总线驱动芯片,Gate便是“只听”形式的门控信号,Tx是发送引脚,Rx是接纳引脚。Gate、Tx以及CAN信号的状态表如表1所示。在上电复位或许进行波特率主动检测前,先将Gate设成1,这样就能够封闭Tx引脚,这样,CAN接口的任何过错帧和应对信息都不会被播送出去。当正确的波特率被挑选后,将Gate置0,就能够完结CAN信息的正常发送了。
也有一些CAN协议芯片内部具有“只听”功用,例如Philip的CAN操控芯片SJA1000,在其扩展CAN功用中就有对应的形式寄存器,能够在不添加其他外部电路的状况下完结“只听”形式的设置,其形式寄存器的位界说如下所示。
可见,只需将ModeControlReg的D1位设成1,就能够完结“只听”形式。
2.波特率检测的机遇
波特率的主动检测,是经过对网络信息的侦听来完结的,也便是说,网络上首要要具有正确传输的报文信息,接入设备才有或许辨认出网络的波特率信息。
首要,需求确保接入设备在网络上电前现已参加网络。这时,当上电时,根据DeviceNet网络协议,每一个从站节点都会有自检和应对信息,这给主动波特率检测供给了较好的机遇。
根据这必定论,还能够假想出波特率主动检测的比较极点的状况,那便是“孤立节点”的状况,网络上只需接入设备自身这一个节点,这时分网络上没有传输信息,也就无法侦听和辨认波特率,这种状况下只需等候,直到有另一节点参加或许主站设备主动发送有用信息。
3.总线守时器值的核算与设定
CAN总线是位裁定机制,关于位守时有着严厉的要求,而波特率的设置是经过对总线守时器的设置来完结的。位守时的要求首要体现在关于每一位的位时刻的各个组成部分以及采样次数的承认上。位时刻的巨细跟波特率有关,设位时刻为T,波特率为B,则由式(1)承认。
每一位时刻由固定数意图小时刻比例组成,小时刻比例的长度值是由芯片的晶振频率和波特率的预分频值决议的。设晶振频率是Fosc, 小时刻比例的长度为Ts,预分频值为Brp,则:
Brp=Ts×Fosc -1 (2)
位时刻可划分为几个互不堆叠的时刻段,这些时刻段的界说如图2所示。
同步段和传达段各为1个时刻比例,其他的是相位缓冲段1和相位缓冲段2,而采样点就在这两个缓冲段之间。 DeviceNet是高速CAN网络,采样点的采样次数为1次。根据图2所示,位时刻的小时刻比例的数目承认了位时刻的巨细,然后承认了波特率的巨细。设小时刻比例为Ts,相位缓冲段1的时刻比例为N1,相位缓冲段2的时刻比例为N2,总的时刻比例为N,则能够得出公式(3)。
N=1+1+N1+N2=T/Ts (3)
总线守时参数承认之后,能够根据晶振的差错算出最大答应传达延迟时刻:
上式(1+N1)表明从同步点到采样点的时刻比例数。
N的值在使用中一般设置成晶振频率的整除数,而N1和N2的巨细决议了采样点的方位,具有必定的试验数据支撑,根据ODVA发布的参数,当采样点坐落位时刻的80%处时,采样准确性最大。以16M±1%晶振下,波特率为500K,N为16,则:
T=1/500000=2 uS
Ts=T/N=0.125 uS
根据采样点坐落80%的分配比例,
N1=16×80%=12 (取整数)
N2=N-2-N1=2
波特率的预分频值根据式(2),有:
Brp=(0.125×16)-1=1
最大答应传达延时
根据CAN2.0A标准,这个延迟时刻是满意要求的。在关于DeviceNet接口三种不同波特率的设置,只需改动预分频值便可到达意图,其他参数能够参阅上面的核算。
4.波特率主动检测的软件完结
以SJA1000为例来阐明波特率主动检测的软件流程。SJA1000在PeliCAN 形式下才支撑“只听”形式,所以,在波特率检测时,应该将SJA1000设置成PeliCAN 形式。
软件检测的思维是根据DeviceNet网络的特色承认的。关于 Devicenet网络,只答应3种波特率:125K, 250K, 500K,选用“穷举法”不会花费太多流程。节点能够预先装备成这三种波特率中的一个,当波特率正确时,就会发生接纳中止,那么,预置的波特率便是正确的网络波特率;假如发生总线过错中止,则能够以为,波特率设置过错,替换波特率设置从头侦听。在启动时,先将节点波特率设置成125K形式,一同答应接纳和过错中止。假如在CAN总线上发生过错,软件就将波特率设成较高的波特率。为了牢靠承认,在接连2条信息的成功地接纳后,就以为当时预设波特率是正确的,然后转向正常作业形式。
流程图如下:
波特率主动检测是经过关于总线过错或许正确接纳的裁定完结的,在调试过程中,需求敞开接纳中止和总线过错中止。值得注意的是,在总线预设波特率不对的状况下,总线过错中止适当频频,假如处理不妥,就难于设置正确的波特率。经过调试,得出以下两点领会:
1.切换波特率的根据是总线过错中止,可是一般总线过错中止标志有或许和接纳中止一同接纳到,这个时分,不能当即切换波特率,而是再调查一帧信息,然后再承认是否找到波特率;假如单纯总线过错,则当即切换波特率。
2.跟着波特率的进步,总线过错中止会愈加频频,所以中止的呼应要敏捷,处理代码要短,否则就会影响其他的程序流程。特别是500K波特率时,主动波特率检测的时序要特别注意,有或许会形成SJA1000复位的状况,这时分有或许丢失用于检测波特率的信息。
5.定论
DeviceNet现场总线波特率的主动检测计划能够推行到其他根据CAN总线的网络接入中,只需待接入的网络上具有有用传输的数据报文,别的波特率值在必定的预选值规模内,这个计划都是可行有用的。在实践使用中,该波特率主动检测技能得到较为成功的验证。