在使用java与下位机通信中,经常会涉及到modbus协议,而作为校验手段,CRC16必不可少。
网上搜到的绝大部分实现都不是为modbus编写的,经过与下位机的通信检验,我选择了其中两个比较简洁的实现并根据自己的需要加以改进,完成了以下两个工具类。
希望对需要此类编程的朋友有所帮助。
对附件说明如下:
class CRC_16 ——采用运算实现的CRC
class CRC16M——采用查表实现的CRC
对主要方法说明如下:
alex_crc16——crc运算
getSendBuf——根据十六进制字符串获得带CRC校验字的字节数组
getBufHexStr——将字节数组打印为十六进制字符串
checkBuf——验证应答的字节数组
另外今天调程序还犯了一个低级错误,因为java中的byte是无符号的,因此在多数情况下是不能直接拿来相加的,需要先转换为无符号值
。
例如:说明书算式为: (bh & 03H) * 256 + bl
,即高字节后两位乘256加上低字节,如果直接将低字节拿去相加可能造成低字节值为负数。
加之前必须进行类似这样的转换 (bh&0x03)*256+(int)(bl&0xff)
分享到:
相关推荐
java ModBus CRC 16 校验_(亲测成功) 还有一个在线版本的 https://www.lammertbies.nl/comm/info/crc-calculation.html
使用modbus RTU通讯时候,我们需要进行CRC16进行校验。...本软件就是采用vb编写实现MODBUS crc16校验的。 下面的是采用该代码的延伸 http://blog.csdn.net/kw123/archive/2007/10/08/1815738.aspx<br><br>
附件是CRC16 MODBUS校验算法实现 分两种情况: 1、参数是字符串,见附件中CRCStrTest.java文件 2、参数是字节数组,见附件中CRCByteTest.java文件
MODBUS CRC16校验计算器.exe
modbus crc16校验程序。输入modbus格式字符串,计算字符串的modbus crc16计算结果。
C#实现 CRC16 MODBUS算法 工业制造常用
MODBUS CRC16代码,可以直接用该代码进行MODBUS CRC16的校验
ST语言编写Modbus通信CRC16校验程序,测试正常使用,是用施耐德somachine软件编写,使用ST语言,本文档下载后可直接使用。
我自己正在使用的 精简多余的代码之后的算法 用vb6开发 485 modbus通讯上位机的朋友可以直接用
CRC校验(循环冗余校验)小知识 CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度...CRC-16/MODBUS x6 + x5 + x2 + 1 16 8005 FFFF 0000
这个是才有MODBUS协议使用的 CRC16校验,我在网上看了别人写的CRC16不能用在上面,所以我自己写了一个。
MODBUS是工业领域广泛使用的通信协议,此为MODBUS协议CRC16校验的一段C程序供你参考。
PB 语言编写的基于MODBUS协议的CRC16校验算法,已验证结果正确。属于程序代码,有问题可以联系QQ:441965142
modbus CRC16校验码计算小工具,通过输入相应的命令帧,点击按钮,则生成CRC16校验码,非常好用,本软件采用C#语言编写,压缩包中包含源代码及执行exe文件
使用bit库,使用crc16 modbus算法,核心算法不变可以根据不同的需求进行对写入参数进行变化实现不同参数的计算
modbus crc16 十进制小数转16进制浮点数
CRC-16(Modbus)并行计算Verilog代码,结果可在网页http://www.ip33.com/crc.html上进行计算对比
MODBUS库有许多,但要想自己调度MODBUS通讯,就需要自己计算CRC,该文介绍CRC的ST语言实现。
1.背景介绍 主要应用场景在物联网中,底端设备注册报文的上报,需要对报文的有效载荷(data)进行CRC16的复验,验证与设备...本文侧重测试CRC的性能,不讲CRC校验的原理,因为CRC只是个校验数据准确性的工具,而且每个报