0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞芯微(EASY EAI)RV1126B modbus

广州灵眸科技有限公司 2026-04-14 14:51 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. MODBUS简介

MODBUS是一项应用层报文传输协议,用于在通过不同类型的总线或网络连接的设备之间的客户机/服务器通信。Modbus比其他通信协议使用的更广泛的主要原因是因为它公开发表并且无版权要求;而且易于部署和维护;对供应商来说,修改移动本地的比特或字节没有很多限制。

1.1 协议版本与内容

Modbus协议目前存在用于串口、以太网以及其他支持互联网协议的网络的版本。

大多数Modbus设备通信通过串口EIA-485物理层进行。对于串行连接,存在两个变种,它们在数值数据表示不同和协议细节上略有不同。MODBUS模式分为三类,一种模式是RTU(远程终端设备),另一种模式是ASCII(美国信息交换码),第三种模式为TCP(运行在以太网上的协议)。【Modbus RTU】是一种紧凑的,采用二进制表示数据的方式(Modbus协议上规定,且默认模式必须是RTU,ASCII作为选项),【Modbus ASCII】是一种人类可读的,冗长的表示方式。这两个变种都使用串行通信(serial communication)方式。对于通过TCP/IP(例如以太网)的连接,存在多个【Modbus/TCP】变种,这种方式不需要校验和计算。对于所有的这三种通信协议在数据模型和功能调用上都是相同的,只有封装方式是不同的

1.2 通信和设备

Modbus协议是一个master/slave架构的协议。有一个节点是master节点,其他使用Modbus协议参与通信的节点是slave节点。每一个slave设备都有一个唯一的地址。在串行和MB+网络中,只有被指定为主节点的节点可以启动一个命令(在以太网上,任何一个设备都能发送一个Modbus命令,但是通常也只有一个主节点设备启动指令)

一个ModBus命令包含了打算执行的设备的Modbus地址。所有设备都会收到命令,但只有指定位置的设备会执行及回应指令(地址0例外,指定地址0的指令是广播指令,所有收到指令的设备都会运行,不过不回应指令)。所有的Modbus命令包含了检查码,以确定到达的命令没有被破坏。基本的ModBus命令能指令一个RTU改变它的寄存器的某个值,控制或者读取一个I/O端口,以及指挥设备回送一个或者多个其寄存器中的数据。

1.3 MODBUS使用要点

通过以上叙述可知,使用Modubs需要时刻围绕以下几点:

l Modbus是主从方式通信,不能同步进行通信;

l 主机不发送,总线上就没有数据通信;

l 设备必须要有RTU协议,这是Modbus协议上规定的;

l 基本流程如下

发送:从机的地址+功能码+寄存器的地址+寄存器地址的个数+校验码

回复:从机的地址+功能码+要发送给主机数据的字节数+数据+校验码

我司的easyeai-api软件开源库将复杂的报文格式、收发操作做了统一的封装,为客户提供简单便捷的调用方式实现Modubs通讯功能。

2. 快速上手

2.1 开发环境准备

如果您初次阅读此文档,请阅读《入门指南/开发环境准备/Easy-Eai编译环境准备与更新》,并按照其相关的操作,进行编译环境的部署

在PC端Ubuntu系统中执行run脚本,进入EASY-EAI编译环境,具体如下所示。

cd ~/develop_environment ./run.sh 2204

wKgZPGkmcrqAUDHhAAGt1XOkqw8819.jpg

2.2 源码下载以及例程编译

在EASY-EAI编译环境下创建存放源码仓库的管理目录:

cd /opt mkdir EASY-EAI-Toolkit cd EASY-EAI-Toolkit

通过git工具,在管理目录内克隆远程仓库

git clone https://github.com/EASY-EAI/EASY-EAI-Toolkit-1126B.git

wKgZO2lgX0qAFDSLAADZOcsxKH0728.jpg

注:

* 此处可能会因网络原因造成卡顿,请耐心等待。

* 如果实在要在gitHub网页上下载,也要把整个仓库下载下来,不能单独下载本实例对应的目录。

进入到对应的例程目录执行编译操作,具体命令如下所示:

cd EASY-EAI-Toolkit-1126B/Demos/netProtocol-modbus/ ./build.sh

注:

* 由于依赖库部署在板卡上,因此交叉编译过程中必须保持/mnt挂载。

wKgZPGnd4-iAZ9XQAAM1pSC1qOY283.jpg

2.3 例程运行

通过串口调试或ssh调试,进入板卡后台,定位到例程部署的位置,如下所示:

cd /userdata/Demo/netProtocol-modbus

wKgZO2nd4-mAJbs_AAApODyEbSo063.jpg

运行例程命令如下所示:

./test-modbus_tcp_master & ./test-modbus_tcp_slave

2.4 运行效果

TCP模式执行效果如下所示:

wKgZO2nd4-iAGAoRAAA6pxaS2QM943.jpg

如果需要更换RTU模式可自行修改代码:

代码路径:EASY-EAI-Toolkit-1126B/Demos/netProtocol-modbus/test-modbus_tcp_slave.c

wKgZPGnd4-mAVToOAAEH7ko7XyM126.jpg

API的详细说明,以及API的调用(本例程源码),详细信息见下方说明。

3. MODBUS库函数说明

本章节介绍EASY EAI的MODBUS库函数的使用方法。

3.1 引用方式

EASY EAI api库位于本仓库的easyeai-api目录中。为方便客户在本地工程中直接调用我们的EASY EAI api库,此处列出工程中需要链接的库以及头文件等,方便用户直接添加。

wKgZO2nd4-mAPe98AABRWuzoiU8715.jpg

API源代码路径为EASY-EAI-Toolkit-1126B/easyeai-api/netProtocol/modbus/。用户可通过源代码了解接口实现,甚至可对源码进行修改。

3.2 创建实例

以TCP方式创建Modbus实例,并初始化:

modbus_t* modbus_new_tcp(const char *ip, int port);

具体介绍如下所示。

wKgZPGnd4-iAZk8LAAA73P8z-Uo050.jpg

3.3 设置从机ID

设置从机ID的函数原型为:

void modbus_set_slave(modbus_t *ctx, int slave);

具体介绍如下所示。

wKgZO2nd4-mAPLy9AAA53QzUaY0019.jpg

3.4 和从机进行连接

和从机建立连接的函数原型为:

void modbus_connect(modbus_t *ctx);

具体介绍如下所示。

wKgZPGnd4-mACe3TAAA1jddnLG8067.jpg

3.5 寄存器进行操作,功能码对应函数

3.5.1 读取线圈状态,可读取多个连续线圈的状态(对应功能码为0x01)

int modbus_read_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);a

具体介绍如下所示。

wKgZPGnd4-mAWLi3AABHpjeqKhA605.jpg

3.5.2 读取输入状态,可读取多个连续输入的状态(对应功能码为0x02)

int modbus_read_input_bits(modbus_t *ctx, int addr, int nb, uint8_t *dest);

具体介绍如下所示。

wKgZPGnd4-mARTtUAABNeAmHzmA821.jpg

3.5.3 读取保持寄存器的值,可读取多个连续保持寄存器的值(对应功能码为0x03)

int modbus_read_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);

具体介绍如下所示。

3.5.4 读输入寄存器的值,可读取多个连续输入寄存器的值(对应功能码为0x04)

int modbus_read_input_registers(modbus_t *ctx, int addr, int nb, uint16_t *dest);

具体介绍如下所示。

wKgZO2nd4-mAAbeYAABgFlvipOA552.jpg

3.5.5 写入单个线圈的状态(对应功能码为0x05)

int modbus_write_bit(modbus_t *ctx, int addr, int status);

具体介绍如下所示。

wKgZO2nd4-mARUi6AABDp2saqsM438.jpg

3.5.6 写入多个连续线圈的状态(对应功能码为15)

int modbus_write_bits(modbus_t *ctx, int addr, int nb, const uint8_t *src);

具体介绍如下所示。

wKgZPGnd4-mAVWGHAABNPFyDS7E751.jpg

3.5.7 写入单个寄存器(对应功能码为0x06)

int modbus_write_register(modbus_t *ctx, int addr, int value);

具体介绍如下所示。

wKgZPGnd4-qAWt0VAABCpS83cUc405.jpg

3.5.8 写入多个连续寄存器(对应功能码为16)

int modbus_write_registers(modbus_t *ctx, int addr, int nb, const uint16_t *src);

具体介绍如下所示。

wKgZO2nd4-mAJtCkAABNi5pTVns317.jpg

3.6 关闭套接字

关闭套接字函数原型为:

void modbus_close(modbus_t *ctx);

具体介绍如下所示。

wKgZPGnd4-qAEUv_AAAvHdw2xNM197.jpg

3.7 释放实例

和从机建立连接的函数原型为:

void modbus_free(modbus_t *ctx);

具体介绍如下所示。

wKgZO2nd4-qATfIyAAAuzn0ayp0218.jpg

4. 使用实例

示例主机代码路径:

EASY-EAI-Toolkit-1126B/Demos/netProtocol-modbus/ test-modbus_tcp_master.c

示例从机代码路径:

EASY-EAI-Toolkit-1126B/Demos/netProtocol-modbus/ test-modbus_tcp_slave.c

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1821

    文章

    50463

    浏览量

    267574
  • 开发板
    +关注

    关注

    26

    文章

    6476

    浏览量

    121300
  • 瑞芯微
    +关注

    关注

    27

    文章

    890

    浏览量

    54723
  • EASY-EAI灵眸科技

    关注

    4

    文章

    128

    浏览量

    3750
  • RV1126B
    +关注

    关注

    0

    文章

    118

    浏览量

    269
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    (EASY EAI)RV1126B 音频输入

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 12-18 13:41 2673次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输入

    (EASY EAI)RV1126B PWM使用

    1.PWM简介1.1开发板PWM资源1.2查找PWM节点rv1126b的pwm资源表如下:【PWM1CH0】对应的是pwm1_4ch_0,寄存地址为20700000。【PWM1CH1】对应
    的头像 发表于 01-06 10:49 8793次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> PWM使用

    (EASY EAI)RV1126B 音频输出

    1.声卡资源介绍EASY-EAI-Nano-TB仅有一块由RV1126B主控输出的声卡。通过串口调试或ssh调试,可以进入开发板终端。执行aplay命令查看声卡相关的详细信息,如下所示
    的头像 发表于 04-01 17:13 8666次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 音频输出

    (EASY EAI)RV1126B RV1126B最小系统

    1.RV1126B最小系统1.1最小系统核心板已经将电源管理芯片、DDR、EMMC集成于一个小巧的模块上,所需的外部电路非常简洁。如下图所示,构成一个最小系统只需要5V电源和基础外设。在系统上电
    的头像 发表于 05-15 17:27 4113次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> <b class='flag-5'>RV1126B</b>最小系统

    EASY EAI Nano-TB(RV1126B)开发板试用】+初识篇

    Nano-TB是灵眸科技研发的一款应用于AIoT领域的开发板,它基于RV1126B处理器,集成了4个Cortex-A53及独立的NEON协处理器,它支持4K@30fps的H.
    发表于 10-25 22:06

    EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目

    接上文【EASY EAI Nano-TB(RV1126B)开发板试用】通过wifi连接,使用ssh登录EASY EAI Nano-TB(
    发表于 11-02 18:34

    EASY EAI Nano-TB(RV1126B)开发板试用】介绍、系统安装

    ,并介绍了系统镜像安装部署的相关流程。 介绍 EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。 核心板基于
    发表于 12-23 18:05

    RV1126系列选型指南:从RV1126RV1126B,一文看懂升级差异

    2025年7月,正式发布新一代AI视觉芯片RV1126B。作为其金牌方案商,EASYEAI灵眸科技同步推出搭载该芯片的AIoT核心板EAI11
    的头像 发表于 09-04 10:50 5392次阅读
    <b class='flag-5'>RV1126</b>系列选型指南:从<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126B</b>,一文看懂升级差异

    【免费试用】EASY EAI Nano-TB(RV1126B)开发套件评测

    EASY-EAI-Nano-TB是灵眸科技研发的一款应用于AIoT领域的AIOT主板。核心板基于RV1126B处理器设计,并引入了新
    的头像 发表于 09-23 08:09 1359次阅读
    【免费试用】<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b> Nano-TB(<b class='flag-5'>RV1126B</b>)开发套件评测

    RV1126B特性概述

    RV1126BRockchip在2025年第二季度全新推出的Arm架构AI视觉芯片,搭载4核Cortex-A53与自研3Tops算力NPU。全面替代上一代的
    的头像 发表于 10-09 11:22 2344次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126B</b>特性概述

    替代升级实锤!实测RV1126B,CPU性能吊打RV1126

    AI智能芯片迭代提速,推出了全新的Arm架构AI视觉芯片RV1126B,是否替换RV1126,CPU性能是挤牙膏还是大突破。带着这些核
    的头像 发表于 12-11 17:13 2698次阅读
    替代升级实锤!实测<b class='flag-5'>RV1126B</b>,CPU性能吊打<b class='flag-5'>RV1126</b>

    (EASY EAI)RV1126B 人体关键点识别

    的特点。本人员检测算法在数据集表现如下所示:基于EASY-EAI-Nano-TB(RV1126B)硬件主板的运行效率:17个人体关键点索引定义:2.快速上手2.1开发
    的头像 发表于 01-23 10:13 4065次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> 人体关键点识别

    (EASY EAI)RV1126B rknn-toolkit-lite2使用方法

    1.rknn-toolkit-lite2介绍RKNN-Toolkit-Lite2是(Rockchip)专为旗下RK系列芯片(如RV1126B、RK3576、RK3588等)打造的
    的头像 发表于 04-22 17:38 895次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> rknn-toolkit-lite2使用方法

    (EASY EAI)RV1126B yolov11训练部署教程

    、使用最广泛的YOLO变体。YOLO11将延续YOLO系列的传奇。本教程针对目标检测算法yolo11的训练和部署到EASY-EAI-Nano-TB(RV1126B)进行
    的头像 发表于 05-09 16:59 734次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b>(<b class='flag-5'>EASY</b> <b class='flag-5'>EAI</b>)<b class='flag-5'>RV1126B</b> yolov11训练部署教程

    RV1126B 方案特性

    RV1126B是面向边缘视觉场景的专用处理芯片,凭借低功耗、内置AI-ISP、双路MIPI-CSI接口以及端侧AI算力,可支撑常规监控、双光谱、多目视觉等多类相机产品开发,配合定
    的头像 发表于 05-11 14:27 947次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>芯</b><b class='flag-5'>微</b><b class='flag-5'>RV1126B</b> 方案特性