找回密码
 立即注册
楼主: manzunzu

8H/8G/8C/8A系列4组串口同时通信的程序,Modbus 演示程序;可共享T2做波特率发生器

 火.. [复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:374
  • 最近打卡:2025-04-29 08:33:10

16

主题

137

回帖

978

积分

高级会员

积分
978
发表于 2024-6-7 10:32:20 | 显示全部楼层
modbus很流行,值得学习
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-05-27 11:53:57

0

主题

8

回帖

48

积分

新手上路

积分
48
发表于 2024-6-7 14:58:22 | 显示全部楼层
很实在 很常用,学习了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:392
  • 最近打卡:2025-05-01 07:58:56

1

主题

95

回帖

1421

积分

金牌会员

积分
1421
发表于 2024-6-19 16:10:24 | 显示全部楼层
在学习modbus rtu,如果用WIFI模块做串口透传,把modbus rtu协议转换成modbus tcp,有没有大侠做过,说一下思路,谢谢!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2024-07-27 21:12:30

0

主题

1

回帖

20

积分

新手上路

积分
20
发表于 2024-7-5 23:17:34 | 显示全部楼层
STC单片机作主站该如何操作?

点评

使用状态机或RTOS的一个任务,不断轮询各个从机,下面为逻辑语句: 比如有10个从机,地址为0x01~0x0A(1~10),读取10个寄存器(首地址0x1000),RTOS任务: for(addr=1, i=0; i  详情 回复 发表于 2024-7-9 16:50
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-02-27 21:15:21

0

主题

7

回帖

196

积分

注册会员

积分
196
发表于 2024-7-8 22:33:16 | 显示全部楼层
梁工,modbus例程里面有句代码看不懂,能否解释下:

if(MODBUS_CRC16(RX1_Buffer, RX1_cnt) == 0)        //首先判断CRC16是否正确, 不正确则忽略, 不处理也不返回信息

比如  MODBUS_CRC16(RX1_Buffer, RX1_cnt)=0xABCD,, 这个是怎么判断的?

感谢感谢

点评

发送端将两个字节的CRC16放在最后发送,低字节在前,高字节在后(小端模式),则接收端将报文与CRC16一起做CRC16校验时,正确的话,结果将是0,如果非0,则有错误。  详情 回复 发表于 2024-7-9 16:34
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2024-09-06 09:31:00

6

主题

26

回帖

152

积分

注册会员

积分
152
发表于 2024-7-9 15:43:53 | 显示全部楼层
梁*** 发表于 2024-5-24 10:27
从未出现过问题:

感谢梁工 费心了
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-7-9 16:34:43 | 显示全部楼层
karm*** 发表于 2024-7-8 22:33
梁工,modbus例程里面有句代码看不懂,能否解释下:

if(MODBUS_CRC16(RX1_Buffer, RX1_cnt) == 0)        //首先 ...

发送端将两个字节的CRC16放在最后发送,低字节在前,高字节在后(小端模式),则接收端将报文与CRC16一起做CRC16校验时,正确的话,结果将是0,如果非0,则有错误。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-7-9 16:50:29 | 显示全部楼层
lzz*** 发表于 2024-7-5 23:17
STC单片机作主站该如何操作?

使用状态机或RTOS的一个任务,不断轮询各个从机,下面为逻辑语句:
比如有10个从机,地址为0x01~0x0A(1~10),读取10个寄存器(首地址0x1000),RTOS任务:
for(addr=1, i=0; i<10; i++, addr++)   //
{
    发送 addr 03 1000 000A CRCL CRCH;
    TimeOut = 50;  //限时50ms
    while(TimeOut != 0)
    {
          TaskWait(1);     //挂起1ms
          if(从机有MODBUS数据返回)
          {
                处理数据, 标记此目标存在;
               break;   //结束等待
           }
           else if(--TimeOut == 0)   //50ms超时,没有收到返回
          {
              标记此目标不存在;
               break;   //结束等待
           }
      }
}
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-7-9 16:52:07 | 显示全部楼层
bh7*** 发表于 2024-6-4 15:42
请教梁工,串口1和串口2的字符串发送和接收都移植成功了,现在串口1需要发送接收hex,麻烦您给一下串口1发 ...

对于串口来说,都是HEX,每个字节都是0x00~0xff,接收方式一样的,没有区别。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:212
  • 最近打卡:2025-05-01 23:05:55

1

主题

35

回帖

951

积分

高级会员

积分
951
发表于 2024-7-10 21:31:44 | 显示全部楼层
收藏学习了
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 07:12 , Processed in 0.130097 second(s), 129 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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