pursuing 发表于 2024-6-7 10:32:20

modbus很流行,值得学习{:4_174:}

victormore 发表于 2024-6-7 14:58:22

很实在 很常用,学习了

molo 发表于 2024-6-19 16:10:24

在学习modbus rtu,如果用WIFI模块做串口透传,把modbus rtu协议转换成modbus tcp,有没有大侠做过,说一下思路,谢谢!

lzz668 发表于 2024-7-5 23:17:34

STC单片机作主站该如何操作?

karmaing 发表于 2024-7-8 22:33:16

梁工,modbus例程里面有句代码看不懂,能否解释下:

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

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

感谢感谢

无问西东 发表于 2024-7-9 15:43:53

梁工 发表于 2024-5-24 10:27
从未出现过问题:




感谢梁工 费心了

梁工 发表于 2024-7-9 16:34:43

karmaing 发表于 2024-7-8 22:33
梁工,modbus例程里面有句代码看不懂,能否解释下:

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

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

梁工 发表于 2024-7-9 16:50:29

lzz668 发表于 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;   //结束等待
         }
      }
}

梁工 发表于 2024-7-9 16:52:07

bh7ni 发表于 2024-6-4 15:42
请教梁工,串口1和串口2的字符串发送和接收都移植成功了,现在串口1需要发送接收hex,麻烦您给一下串口1发 ...

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

wugqsh 发表于 2024-7-10 21:31:44

收藏学习了
页: 2 3 4 5 6 7 8 9 10 11 [12] 13 14
查看完整版本: 8H/8G/8C/8A系列4组串口同时通信的程序,Modbus 演示程序;可共享T2做波特率发生器