找回密码
 立即注册
查看: 697|回复: 0

modbus协议寄存器读取值与指令感觉矛盾??采用的官方例程

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-05-02 07:00:13
已绑定手机

151

主题

589

回帖

1200

积分

金牌会员

积分
1200
发表于 2023-10-12 08:58:06 | 显示全部楼层 |阅读模式
本帖最后由 380091044 于 2023-10-12 09:00 编辑

一、控制指令都写在modbus_reg[0]的高8位,不同的指令实现不同的功能;寄存器位置不变;经过测试是可以的,没有问题的;
1、拐弯控制指令
10 10 10 00 00 01 02 01 00 76 51
2、直行控制指令:
10 10 10 00 00 01 02 02 00 76 A1
        if(        (u8)(modbus_reg[0] >> 8)==0x01 )  //拐弯
                {
               
          key_sec=1;
               
                }       
               
                if(        (u8)(modbus_reg[0] >> 8)==0x02 )  //直行
                {
               
    key_sec=2;
               
                }       
二、状态指令:modbus寄存器的08的值代表状态:0x00代表直行;0x01代表拐弯;
状态指令:(u8)modbus_reg[0]=0x00;//MB0的低8位是0x00,直行;
通过读取指令读取结果如下:
读取指令:10 03 10 00 00 01 83 8B
直行返回指令:10 03 02 00 A8 F9 45
拐弯返回指令:10 03 02 01 A8 69 44
疑惑点:我认为控制指令高8位,都没问题,但是状态值应该是modbus寄存器0的低8位,应该在A8的位置,怎么会在A8前面这个字节,与前面的控制指令位置相同,应该不同位置,这是什么情况?请各位高手指点
截图202310120900252782.jpg
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 20:46 , Processed in 0.175883 second(s), 48 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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