找回密码
 立即注册
楼主: 小白爱上51

modbus调不通

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-04-24 10:09:25

8

主题

9

回帖

137

积分

注册会员

积分
137
发表于 2024-12-12 13:41:52 | 显示全部楼层
小白*** 发表于 2024-7-12 17:23
已经调通,大小端的问题

想请问一下,梁工的这个modbusRTU程序从哪里获取?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:204
  • 最近打卡:2025-04-30 11:23:45

2

主题

65

回帖

168

积分

注册会员

积分
168
发表于 2024-12-12 14:45:17 | 显示全部楼层
_奶*** 发表于 2024-2-2 10:39
感觉你CRC用错了,MODBUS的 CRC是低字节在 高字节在后

你说反了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:435
  • 最近打卡:2025-04-30 08:43:23

33

主题

2351

回帖

4860

积分

论坛元老

积分
4860
发表于 2024-12-12 14:50:19 | 显示全部楼层

那你说的对~
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:16
  • 最近打卡:2025-04-30 08:18:51

9

主题

44

回帖

333

积分

中级会员

积分
333
发表于 2025-4-23 14:12:51 | 显示全部楼层

你好版主,我有类似的CRC校验问题,情况如下
目前使用的CRC校验程序如下--直接复制梁工的。

//========================================================================
// 函数: u16        MODBUS_CRC16(u8 *p, u8 n)
// 描述: 计算CRC16函数.
// 参数: *p: 要计算的数据指针.
//        n: 要计算的字节数.
// 返回: CRC16值.
// 版本: V1.0, 2022-3-18 梁工
//========================================================================
u16        MODBUS_CRC16(u8 *p, u16 n)
{
        u16        i;
        u16        crc16;
       
        crc16 = 0xffff;        //预置16位CRC寄存器为0xffff(即全为1)
        do
        {
                crc16 ^= (u16)*p;                //把8位数据与16位CRC寄存器的低位相异或,把结果放于CRC寄存器
                for(i=0; i<8; i++)                //8位数据
                {
                        if(crc16 & 1)        crc16 = (crc16 >> 1) ^ 0xA001;        //如果最低位为0,把CRC寄存器的内容右移一位(朝低位),用0填补最高位,
                                                                                                                        //再异或多项式0xA001
                        else        crc16 >>= 1;                                                        //如果最低位为0,把CRC寄存器的内容右移一位(朝低位),用0填补最高位
                }
                p++;
        }while(--n != 0);
        return        (crc16);
}       



发送的数据是:01 03 00 00 00 04 44 09
接收的数据是:01 03 08 01 02 03 04 05 06 07 00 36 21

用MODBUSPOLL连接反馈CRC校验错误,

我用工具软件中的CRC去校验得出的数据为
01 03 08 01 02 03 04 05 06 07 00 64 D5  下载软件CRC计算得出的数据
01 03 08 01 02 03 04 05 06 07 00 36 21

这两个数据是一样的,就是CRC校验不一样。能烦请帮忙指点下问题在哪里


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:9
  • 最近打卡:2025-04-23 15:28:46

19

主题

65

回帖

223

积分

等待验证会员

积分
223
发表于 2025-4-23 15:28:46 | 显示全部楼层
多项式问题
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:25 , Processed in 0.118444 second(s), 84 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表