首 页 用户登录 | ![]() |
|||
|
|||
按字母检索 | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
按声母检索 | A | B | C | D | E | F | G | H | J | K | L | M | N | O | P | Q | R | S | T | W | X | Y | Z | 数字 | 符号 |
|
![]() |
您的位置: 5VAR论文频道 → 论文中心 → 理工论文 → 电子通信 |
|
|||||
分布式发电机励磁监控系统的设计 | |||||
收集整理:佚名 来源:本站整理 时间:2009-01-10 22:33:08 点击数:[] ![]() |
|||||
Modbus通信协议的软件设计主要为CRC-16校验码生成的实现方法。CRC-16校验码生成编写程序有两种方法:一种为计算法;另一种为查表法。上位机采用计算法。下面为CRC-16的计算过程: (1)设置CRC寄存器,并给其赋初值FFFFHEX。 (2)将全部数据的第一个8bit数据与16位CRC寄存器的低8位进行异或,并把结果存入CRC寄存器。 (3)CRC寄存器整体向右移一位,MSB补零,移出并检查LSB。 (4)如果LSB为0,重复第三步;若LSB为1,CRC寄存器与多项式码相异或。 (5)重复第(3)与第(4)步直到8次移位全部完成。此时一个8bit数据处理完毕。 (6)重复第(2)至第(5)步直到所有数据全部处理完毕。 (7)最终CRC寄存器的内容即为CRC值。 Delphi6.0环境下CRC-16实现的函数如下: function CRC16CRC_Dataarray of ByteDATA_Leninteger word var CRC16LoCRC16Hibyte //CRC 寄存器 SaveLoSaveHibyte //CRC 中间寄存器 GLoGHibyte //生成多项式 iinteger //需校验数据的字节数 Flaginteger //移位的次数(8次) begin CRC16Lo=byte$ff CRC16Hi=byte$ff //给CRC寄存器赋初值 $ffff(HEX) GLo=byte$01 GHi=byte$a0 //多项式码$a001(HEX) for i=0 to DATA_Len-1 do //各字节数据 begin CRC16Lo=CRC16Lo xor CRC_Datai //各字节数据 与CRC寄存器进行异或 for Flag=0 to 7 do begin SaveLo=CRC16Lo SaveHi=CRC16Hi CRC16Hi=CRC16Hi shr 1 //高字节右移一位 CRC16Lo=CRC16Lo shr 1 //低字节右移一位 if SaveHi and byte$01=byte$01 then //若高字节LSB为1,则低字节MSB置1 CRC16Lo=CRC16Lo or byte$80 if SaveLo and byte$01=byte$01 then //若低字节LSB为1,则与多项式码进行异或 begin CRC16Hi=CRC16Hi xor GHi CRC16Lo=CRC16Lo xor GLo end end end CRC16=CRC16Lo256+CRC16Hi //CRC低字节在 前,高字节在后 end 用双微机松耦合实现了励磁控制微机与通信控制微机之间的数据交换,并通过通信控制微机完成与上位机之间的通信,将励磁调节器的任务进行分散,增强了装置的功能和可靠性。该系统已在国内多个中、小型水电站投入运行,运行稳定,得到用户的好评。 |
提供人:佚名 | |
【返回上一页】【打 印】【关闭窗口】 |
![]() |
5VAR论文频道 |
![]() |
5VAR论文频道 |
![]() |
关于本站 -
网站帮助 -
广告合作 -
下载声明 -
网站地图
Copyright © 2006-2033 5Var.Com. All Rights Reserved . |