您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

基于80C166单片机PEC服务的PROFIBUS-FDL从站协议实现

时间:2007-1-20栏目:电子通信论文

PEC通道:源地址为发送数据缓冲区首址+1、目的地址为串口发送缓冲器、COUNT域为发送字节数-1,将所要发送数据的第一个字节写入串口发送缓冲器,即可触发串口发送相关的PEC服务;当COUNT减为0时,触发串口发送中断服务子程序,完成串口数据发送过程。由于该过程实现简单,不作详细讨论。这里主要讨论第一阶段的帧完整接收实现过程。

从上面的帧结构分析可见,帧的长度是不固定的。因此,为提高接收效率,应用PEC服务分三步进行数据的批量接收。

4.1 第一步:帧头接收

首先,初始化时,定义串口接收PEC服务为连续接收三字节,用于接收帧的前三字节。

由第一个字符SDx(x=1,2,3)判断帧类型;对于不带数据固定长度帧和带数据固定长度帧接下来的两个字符是DA、SA,判断DA是否为本机地址;而对于带数据长度可变帧,接下来的两个字符是LE、LEr,判断其是否相等。

若以上判断都成立,则需定义下一次PEC服务的接收字符数:对于固定长度帧,定义PEC批量接收三字节数据,并保存DA、SA;对于可变长度帧,定义PEC服务接收四字节数据,转第二步;

若LE≠LEr或DA目的地址非本站地址,则重回到初始状态,进行帧头接收。

4.2 第二步:帧控制字接收

由于主站帧的连续发送,会再次触发PEC服务。由串口接收PEC服务连续接收三或四字节后,处理如下:

.不带数据固定长度帧,接收三字节,分别为FC、FCS、ED。对FCS和ED分别完成累加和校验与帧结束判断后,将帧控制字FC保存,转去执行帧控制字处理。

.带数据固定长度帧 接收三字节分别为FC和数据单元的前两个字节,保存FC,定义PEC服务接收后八个数据字节,转第三步。

.带数据可变长度帧,接收了四字节,分别为SD、DA、SA、FC。对SD再进行一次判断,之后判断DA是否为本机地址,保存DA、SA、FC,定义PEC服务接收余下的数据字节长度由LE确定,转第三步。

4.3 第三步:帧数据接收

当串口接收PEC服务连续接收八或更多的字节后,处理如下:

.带数据固定长度帧,接收八个字节,分别为余下的六字节数据和FCS、ED。在累加和校验与帧结束判断完毕后,转去执行帧控制字处理。

.带数据长度可变帧,接收了DATA-UNIT+2个字节,分别DATA-UNIT个数据字节和FCS、ED。在累加和校验与帧结束判断完毕后,进行协议要求的目的地址和原地址的地址扩展判断和保存,转去执行帧控制字处理。

4.4 串口接收中断服务子程序

以上三步都由串口接收中断服务子程序负责完成。每一步对应不同的处理状态。为提高程序的执行效率,用有限状态机实现。以1、2、3分别表示上述帧接收三个步骤,4表示帧控制字处理状态,其状态转换如图3。

采用这种协议实现方法,在最近研制的棒材生产线的飞剪控制器中运行效果良好。


上一页  [1] [2] [3] 

下页更精彩:1 2 3 4 下一页

★相关文章: