OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3053|回复: 6

基于485的modbus RTU 发送不了数据??

[复制链接]

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-1-17
在线时间
16 小时
发表于 2020-5-6 12:11:22 | 显示全部楼层 |阅读模式
1金钱
各位大神帮忙看一下  搞了一个多星期了  实在是弄不出来

在网上找的Modbus从机程序移植到精英版上  从串口调试助手调试后发现  板子可以接收到报文  CRC也对  格式也对 发送缓冲区的报文也没问题,控制接受发送的PD7也设置了  然后就是调试助手就是接收不到板子的回应  
实在想不通是什么原因  引脚被烧了吗?截图如下

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2019-1-17
在线时间
16 小时
 楼主| 发表于 2020-5-6 12:13:56 | 显示全部楼层
图片怎么发不出去。。。那我贴一下代码
void Modbud_fun3()  //3号功能码处理  ---主机要读取本从机的寄存器
{
  u16 Regadd;
        u16 Reglen;
        u16 byte;
        u16 i,j;
        u16 crc;
        Regadd=modbus.rcbuf[2]*256+modbus.rcbuf[3];  //得到要读取的寄存器的首地址
        Reglen=modbus.rcbuf[4]*256+modbus.rcbuf[5];  //得到要读取的寄存器的数量

        i=0;
       
        modbus.Sendbuf[i++]=modbus.myadd;//本设备地址
  modbus.Sendbuf[i++]=0x03;        //功能码      
  byte=Reglen*2;   //要返回的数据字节数
//modbus.Sendbuf[i++]=byte/256;  //
        modbus.Sendbuf[i++]=byte%256;
       
        for(j=0;j<Reglen;j++)
        {
          modbus.Sendbuf[i++]=Reg[Regadd+j]/256;
                modbus.Sendbuf[i++]=Reg[Regadd+j]%256;               
        }
        crc=crc16(modbus.Sendbuf,i);
        modbus.Sendbuf[i++]=crc/256;  //
        modbus.Sendbuf[i++]=crc%256;
       
        RS485_RT_1;  //
       
        for(j=0;j<i;j++)
        {
         RS485_byte(modbus.Sendbuf[j]);
        }
       
        RS485_RT_0;  //
}
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2012-10-10
在线时间
0 小时
发表于 2020-5-6 13:05:05 | 显示全部楼层
帮顶,谢谢支持开源电子网,支持正点原子。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-9-18
在线时间
4 小时
发表于 2020-5-13 16:42:49 | 显示全部楼层
同问,定时器原因吗
回复

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2020-4-8
在线时间
51 小时
发表于 2020-6-2 15:54:09 | 显示全部楼层
你应该把整个工程发出来,你这只有功能码,看不出来的
回复

使用道具 举报

2

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
81
金钱
81
注册时间
2020-6-5
在线时间
16 小时
发表于 2020-6-5 16:43:37 | 显示全部楼层
兄弟,你解决没 加个联系方式吧 我也有一样的问题 Q2592419005
回复

使用道具 举报

5

主题

269

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1053
金钱
1053
注册时间
2020-5-11
在线时间
253 小时
发表于 2020-6-5 16:51:48 | 显示全部楼层
建议先调串口驱动。先不经过你网上找的程序。直接不停发送。看看是不是驱动的问题。若没问题的话。再debug跟踪一步步调。(ps:发送时候485引脚控制做的对么。可以参考原子哥的485实验。)
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 17:20

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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