从站与主站通信是采用异步串行通信方式,该通信方式需保证通信双方具有
一致的通信波特率。因此,DP从站与主站建立通信之前需要先识别主站的发送
波特率。设置通信的波特率可以选择硬件设置方式或软件自动识别方式。为方便
用户使用,本文采用软件自动识别方式,用户使用DP从站时不需要设置波特率,
它会在通信过程中自动设置通信波特率。
目前,常见的波特率自适应的方法[}2},so]有以下三种:标准波特率穷举法、码
元宽度实时检测法、最大公约数法。
1)标准波特率穷举法
从字面意思很容易就知道,标准波特率穷举法是尝试着用每个固定的波特率
接收主机发出的数据,比对接收的数据是否与主机发送的一致,若一致,说明该
波特率就是主机发送的波特率,若不一致就换下一个波特率进行接收,继续比对,
直到一致为止。该方法适用于主机发送的波特率在有限个固定的数值之间变化,
另外还需得知主机发送的特定字符,运用起来有一定的局限性,但思想简单,占
用CPU资源少。
2)码元宽度实时检测法
主机按要求发送给从机某一数据,从机通过定时器测量串口通信的RXD引
脚上输入数据的码元宽度,这样通过计算得到通信的波特率,相对于标准波特率
穷举法而言,使用范围较广,但在算法上复杂度相对有些提高,占用CPU的资
源也相应变多。
3)最大公约数法
最大公约数法的最大特点是可以不需要主机向从机发送规定的数据,无论主
机发送什么数据,从机都可以根据该数据自动识别主站发送的波特率,从而调整
接收的波特率,以便下次数据接收正确。该方法对RXD引脚不断地测量高低电
平脉冲持续的时间,测出来的时间正好都是tlh;t的整数倍,因此,只要求出最小
公约数值,就能知道tlb、的大小,即可知通信波特率。这种方法使用场合广,但
比前两种要复杂,考虑到MCU资源有限,越简单越好。
Profibus-DP协议中,主站和从站通信的波特率都是一些固定标准的波特率:
9.2Kbps, 19.2 Kbps, 45.45 Kbps、93.75 Kbps, 187.5 Kbps、500 Kbps、1. SMbps、
3Mbps, 6Mbps, 12Mbps,且也给出了Profibus-DP协议中发送的帧格式,有固
定的帧头。根据这两特点,考虑微处理器的资源有限,尽量选择简单的算法实现
需要的功能。因此,标准波特率穷举法较另两种方法来说更加适合,虽然方法比
较笨,但算法最简单。
因此选用该方法来实现波特率自适应功能。从站一开始以某一波特率尝试接
收主站发送的数据,若使用该波特率接收到的数据不是规定的格式,则寻找下一
个波特率进行接收,直到与主站发送的数据相同为止,从而确定通信的波特率,
实现了波特率自适应的功能。该方法虽然比较笨,但很简单,占用微控制器的资
源最少。
|