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

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

[复制链接]
  • TA的每日心情
    奋斗
    11 小时前
  • 签到天数: 197 天

    [LV.7]常住居民III

    118

    主题

    485

    回帖

    764

    积分

    高级会员

    积分
    764
    发表于 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, 2024-6-17 19:52 , Processed in 0.055709 second(s), 31 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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