首页 上一页 1 2 下一页 尾页

如何计算Modbus_RTU_CRC? 点击:8195 | 回复:34



林美华

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:2帖 | 8回
  • 年度积分:0
  • 历史总积分:21
  • 注册:2002年12月31日
发表于:2004-02-19 14:35:00
楼主
· 预置16位寄存器为十六进制FFFF(即全为1)。称此寄存器为CRC寄存器; · 把第一个8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器; · 把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位; · 如果最低位为0:重复第3步(再次移位); 如果最低位为1:CRC寄存器与多项式A001(1010 0000 0000 0001)进行异或; · 重复步骤3和4,直到右移8次,这样整个8位数据全部进行了处理; · 重复步骤2到步骤5,进行下一个8位数据的处理; · 最后得到的CRC寄存器即为CRC码。 为何我按以上步骤在西门子的S7-200PLC的编出来的程式不对呀?



mariocha

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 4回
  • 年度积分:0
  • 历史总积分:57
  • 注册:2004年7月09日
发表于:2004-07-21 11:44:00
21楼
知道了,我已经做好了,谢谢

SHKLBLJ

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 12回
  • 年度积分:0
  • 历史总积分:12
  • 注册:2003年9月30日
发表于:2005-11-30 23:14:00
22楼
1746-BAS通讯板没有M0和M1文件,如何编程序,怎样将PRT2端口的通讯数据读到PLC中,请教各位老师,多谢!!!!!!!!!

昨日重现

  • 精华:1帖
  • 求助:0帖
  • 帖子:17帖 | 519回
  • 年度积分:0
  • 历史总积分:747
  • 注册:2005年8月05日
发表于:2005-12-11 09:09:00
23楼
感觉有点复杂,学习中

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2005-12-12 17:18:00
24楼
细说负载均衡技术 


 网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应增大

,使得单一设备根本无法承担。在这种情况下,负载均衡技术出现了。

  当前,无论在企业网、园区网.[url=http://vpnwangguan.persianblog.com][color=#000000]vpn网关

[/color][/url]还是在广域网如Internet上,业务量的发展都超出了过去最乐观的估计。上网热潮风起云涌,

新的应用层出不穷,即使按照当时最优配置建设的网络,也很快会感到吃不消。尤其是各个网络的核心部分。

  在此情况下,如果扔掉现有设备去做大量的硬件升级,将造成现有资源的浪费,而且如果再面临下一次业

务量的提升,又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量的需求

。于是,[url=http://fuzaijunheng168.persianblog.com][color=#000000]负载均衡[/color][/url]制应运而

生。


  什么是负载均衡

    负载均衡(Load Balance)建立在现有网络结构之上,它提供了一种廉价、有效、透明的

[url=http://dianlanqjia.canalblog.com][color=#000000]电缆桥架[/color][/url]方法,来扩展网络设备和

服务器的带宽(即:[url=http://fuzaijunheng168.persianblog.com][color=#000000]宽带叠加[/color]

[/url])、增加吞吐量、加强网络数据[url=http://dianlanqj168.persianblog.com][color=#000000]桥架母线

槽[/color][/url]处理能力、提高网络的灵活性和可用性。

  [url=http://fuzaijunheng.canalblog.com][color=#000000]负载均衡[/color][/url]有两方面的含义:

首先,大量的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间;其次,单个重

负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处

理能力得到大幅度提高。

叶帆

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 88回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2003年9月03日
发表于:2005-12-12 23:33:00
25楼
-------------------
//初始化程序

//先算好CRC表,这样计算速度快
Network 5 // //初始化CRC  ---1
LD     SM0.0
MOVD   MD24, AC3                   // 装入表指针
MOVD   +0, AC2                     // 装入索引 index.
FOR    MW28, +1, +256              // 外循环开始
MOVW   AC2, AC0                    // 值 = index.
FOR    MW30, +1, +8                // 内循环开始(由于每字节8位,所以循环8次).
SRW    AC0, 1                      // 移出LS位

-----------------------
这是一个子函数:GetCRC
参数:inDataNum - 信息长度
      inDataAddr -信息地址

Network 1 
// 保存AC寄存器的值
LD     SM0.0
MOVD   AC0, LD7
MOVD   AC1, LD11
MOVD   AC2, LD15
MOVD   AC3, LD19

Network 2 
LD     SM0.0
MOVD   16#FF, AC0                  //CRC H
MOVD   16#FF, AC1                  //CRC L
MOVD   LD1, AC2                    //数据地址
BTI    LB0, MW30
//WDR                                // 复位看门狗
//------------
FOR    MW28, +1, MW30
XORB   *AC2, AC0
INCD   AC2
+I     AC0, AC0                    //AC0*2
MOVD   MD24, AC3                   //CRC表的地址
+D     AC0, AC3
INCD   AC3
XORB   *AC3, AC1
MOVD   AC1, AC0
DECD   AC3
MOVB   *AC3, AC1

Network 3 
NEXT

Network 4 
LD     SM0.0
BTI    AC0, LW5
SLW    LW5, 8
ORW    AC1, LW5

Network 5 // 返回
// 恢复AC寄存器的值
LD     SM0.0
MOVD   LD7, AC0
MOVD   LD11, AC1
MOVD   LD15, AC2
MOVD   LD19, AC3

叶帆

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 88回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2003年9月03日
发表于:2005-12-12 23:35:00
26楼
这是我在PLC中开发 Modbus Client时用代码,绝对没有问题。

(西门子仅提供 Modbus Slave,所以没有办法,只好自己开发Client)

叶帆

  • 精华:1帖
  • 求助:0帖
  • 帖子:18帖 | 88回
  • 年度积分:0
  • 历史总积分:239
  • 注册:2003年9月03日
发表于:2005-12-12 23:39:00
27楼
上面的没有考全,补充一下

//初始化CRC  ---1
Network 5 // 
LD     SM0.0
MOVD   MD24, AC3                   // 装入表指针
MOVD   +0, AC2                     // 装入索引 index.
FOR    MW28, +1, +256              // 外循环开始
MOVW   AC2, AC0                    // 值 = index.
FOR    MW30, +1, +8                // 内循环开始(由于每字节8位,所以循环8次).
SRW    AC0, 1                      // 移出LS位


Network 6
//初始化CRC ---2
LD     SM1.1                       // 如果移出位是1
XORW   16#A001, AC0                // 则执行异或

Network 7
//初始化CRC ---3
NEXT  

Network 8
//初始化CRC ---4
LD     SM0.0
INCW   AC2                         // 索引 (index) +1,
MOVW   AC0, *AC3                   // 储存表字
+I     +2, AC3                     // 表指针加2
WDR                               // 复位看门狗

Network 9
//初始化CRC ---5
NEXT

东北电

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 261回
  • 年度积分:0
  • 历史总积分:689
  • 注册:2003年3月31日
发表于:2007-05-19 11:43:00
28楼
看了挺有启发,好啊

gongkongedit

  • 精华:1099帖
  • 求助:0帖
  • 帖子:14392帖 | 54470回
  • 年度积分:0
  • 历史总积分:622
  • 注册:2008年9月08日
发表于:2007-08-14 16:47:00
29楼
请教各位楼主,由于本人水平有限想请教一下以下十六进制代码的CRC16的校验码是多少?
   01 03 19 00 00 22,02 03 19 00 00 22,
   01 03 1A 90 00 1F,02 03 1A 90 00 1F,
   01 03 1A 2C 00 2A,02 03 1A 2C 00 2A,
   谢谢!急用请发邮件至:wangaijun1972@sohu.com

 

andy421

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:9
  • 注册:2007年1月12日
发表于:2009-11-03 17:28:47
30楼
shouchangle

yjig

  • 精华:2帖
  • 求助:5帖
  • 帖子:97帖 | 5237回
  • 年度积分:0
  • 历史总积分:12514
  • 注册:2004年6月04日
发表于:2009-11-03 18:34:57
31楼

01 03 19 00 00 22,CRC=8FC2

02 03 19 00 00 22,CRC= 8CC2
01 03 1A 90 00 1F,CRC=3703

02 03 1A 90 00 1F,CRC= 403
01 03 1A 2C 00 2A,CRC=C402

02 03 1A 2C 00 2A, CRC=F702

cslfg

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:11
  • 注册:2010年4月24日
发表于:2011-08-25 09:21:13
32楼

谁给个CRC16计算器,谢谢咯 急用cslfg@163.com

w0518027

  • 精华:0帖
  • 求助:1帖
  • 帖子:2帖 | 390回
  • 年度积分:0
  • 历史总积分:349
  • 注册:2012年12月25日
发表于:2013-12-12 16:29:07
33楼

厉害,10年前都会搞了,俺现在才摸索。

苦学

  • 精华:0帖
  • 求助:0帖
  • 帖子:28帖 | 1034回
  • 年度积分:2
  • 历史总积分:2430
  • 注册:2005年3月13日
发表于:2013-12-23 20:07:57
34楼

看看就会有收获 不过一般用不到撒


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页