【嵌入式】Modbus实践

2023-05-16

前言

  最近接了一个项目,需要使用Modbus协议,虽然之前有所耳闻,但一直没有实操过,但实践之后发现其实还是很简单的,我认为它本质上就是对串口传输进行“二次封装”

建议的入门顺序

  1. 大神带你秒懂Modbus通信协议——理解基本概念
  2. STM32+RS485+Modbus-RTU(主机模式+从机模式)-标准库/HAL库开发——实战演练

相关软件

  为了更加方便调试Modbus,这里推荐几个软件:

  • SSCOM:串口调试助手,但具有自动添加Modbus校验的功能
    在这里插入图片描述
  • Modbus Poll:模拟Modbus主机,链接为官网下载链接,SN为5A5742575C5D136F5843535610685C49434C1232131164706378
  • Modbus Slave:模拟Modbus从机,链接为官网下载链接,SN为54554154514756666A655A187D545E505C454F

CRC校验码计算函数

  这个是按照协议设定的方式来按过程实现的代码

void CRC16(unsigned char frame[], unsigned char length)
{
    unsigned int crc16 = 0xffff;
    unsigned char byteIndex, n;
    for (byteIndex = 0; byteIndex < length - 2; byteIndex++)
    {
        crc16 ^= frame[byteIndex];
        for (n = 0; n < 8; n++)
        {
            if (crc16 & 1)
            {
                crc16 >>= 1;
                crc16 ^= 0xA001;
            }
            else
                crc16 >>= 1;
        }
    }
    frame[length - 2] = crc16;  //记住,校验码低位在前,高位在后!
    frame[length - 1] = crc16 >> 8;
}

网上还有的是根据异或的规律列出所有的可能值,然后直接按下标索引,实际跑起来应该会快些,有兴趣的可以找找相关代码,此处不再列举。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【嵌入式】Modbus实践 的相关文章

随机推荐

  • 使用Jetpack给jetson tx1/tx2安装cuDNN、TensorRT、CUDA等软件环境

    背景 该博客适用于jetson设备已经装好了系统 xff0c 对于系统怎么烧录可以参考系统刷机 注意 使用Jetpack给jetson tx1 tx2安装软件之前需先确定jetson设备系统l4t版本 xff0c 因为NVDIA jetpa
  • C语言之strtok函数

    FROM MSDN amp amp 百科 原型 xff1a char strtok char s const char delim include lt string h gt 分解字符串为一组字符串 s为要分解的字符串 xff0c del
  • 谷粒学院-项目功能模块、技术点、整合Mybatis-Plus、主键生成策略

    Mybaitis Plus 简介 MyBatis Plus 初始化工程 使用 Spring Initializr 快速初始化一个 Spring Boot 工程 Group xff1a com nanjing Artifact xff1a m
  • sql中SUM函数的值保留两位小数

    SUM convert decimal 19 2 Num1 Num2 AS quantity
  • IdentityServer4官方文档代码配置unauthorized_client Invalid grant type for client错误

    今天按照IdentityServer4官方文档写了一下代码测试下来报错 xff0c 官方文档配置ConfigureService代码如下图 官方配置Configure代码如下图 运行报错效果如下图 完全按照官方文档跑的 xff0c 然后找了
  • 【MATLAB】(一)基本使用入门

    本文目录 前言声明一 MATLAB简介 xff08 基本来自课程内容 xff09 二 入门操作2 1 命令窗口 xff08 Command Window xff09 2 1 1 基本介绍2 1 2 基础指令2 1 3 常用操作 2 2 编辑
  • 【软件相关】Multisim完整教程

    文章目录 前言教程书籍安装基本使用快捷键总结高级操作1 示波器操作2 瞬态仿真3 MCU仿真 问题与解决1 添加场效应管不符合电气规律 xff1f 前言 电路仿真软件中 xff0c Multisim可能不是功能最强大的 xff0c 但一定是
  • 【单片机】C语言总结

    文章目录 文章内容1 位运算1 1 初级应用1 2 进阶应用1 2 1 给寄存器某一位置11 2 2 给寄存器某一位清01 2 3 翻转寄存器某一位1 2 4 数据的字节分解 2 宏定义和预编译2 1 理论指导2 2 看到一个宏定义在数据切
  • 【嵌入式工具】Keil下载,安装,配置教程大全

    文章目录 前言一 Keil下载及安装二 Keil兼容C51和ARM三 STM32支持包下载安装1 官网下载2 安装 四 常用配置1 代码补全和代码联想2 主题设置3 快捷键设置4 快速模板5 快速格式化代码6 转换文件编码格式 2022 3
  • 【嵌入式模块】蓝牙模块使用总结

    目录 前言参考链接常用的蓝牙模块有哪几种 xff1f 如何设置蓝牙模块 xff1f AT指令集BT 04HC 06HC 05 蓝牙主从配对工作手机与电脑端调试方法 前言 作为最为常用的无线通信模块 xff0c 蓝牙可以说是一些小型项目 xf
  • 【嵌入式模块】DS1302 时钟定时芯片

    文章目录 参考链接概述引脚与内部结构引脚定义常用电路内部寄存器及RAM分布 工作时序例程 xff08 51单片机 xff09 参考链接 CSDN 1 CSDN 2 博客园 概述 DS1302时钟芯片是DALLAS 公司推出的涓流充电时钟芯片
  • 【嵌入式模块】直流电机驱动L298N,TB6612详解

    文章目录 参考链接概述L298NTB6612FNG 参考链接 单片机 控制 直流电机 基于L9110S L298N TB6612FNG驱动 简书 概述 从上面那篇教程我们可以看出 xff0c 直流电机控制时 xff0c 只需要给它输入一个P
  • vue .npmrc 文件的作用

    有些项目根目录下有个 npmrc的文件 xff0c 点开看只有一句话 xff1a span class token assign left variable registry span span class token operator 6
  • 【嵌入式模块】ESP8266完整教程

    前言 无线通信中除了最为常用的蓝牙之外 xff0c 剩下的就是WiFi了 xff0c 但是相比于蓝牙模块一般只用来进行透传 xff0c WiFi模块的可自定义程度要更强 xff0c 而这也导致了WiFi模块的入门相对难了一点 参考资料 WI
  • 【MATLAB】(二)基本使用拾遗

    本文目录 0 前期教程1 前言2 输入输出2 1 input2 2 load2 3 importdata2 4 disp2 5 fopen amp fclose2 6 fscanf amp fprintf2 7 textread amp t
  • 【Linux】Ubuntu使用入门

    前言 本文主要记录一些Ubuntu中常用的基本操作 xff0c 记录自己的实践经历 xff0c 不断更新 xff01 xff01 xff01 0 基本文件交互 在Ubuntu系统中 xff0c 右键是没有创建文件的选项的 xff0c 只能创
  • 【嵌入式模块】MPU6050

    文章目录 0 前言1 MPU6050概述1 1 基本概述1 2 引脚和常用原理图 2 代码3 姿态解算3 1 欧拉角 amp 旋转矩阵3 2 DMP 3 校正 0 前言 作为惯性传感器中入门级别的器件 xff0c MPU6050凭借它出色的
  • 【PyQt】PyQt5进阶——串口上位机及实时数据显示

    文章目录 0 前期教程1 前言2 串口部分 QtSerialPort3 绘图部分3 1 QCustomPlot3 2 QtChart3 3 QWT3 4 Qt Designer中如何使用 参考链接 0 前期教程 Python PyQt5入门
  • 【软件相关】Proteus仿真STM32记录

    文章目录 0 前期教程1 前言2 先说说建议的流程3 需要注意的事项3 1 供电网配置不要忘了3 2 ADC模块的使用3 3 元器件查询手册 4 一些小技巧4 1 快速添加标号4 2 出现诡异问题的一种解决思路 0 前期教程 软件相关 Pr
  • 【嵌入式】Modbus实践

    前言 最近接了一个项目 xff0c 需要使用Modbus协议 xff0c 虽然之前有所耳闻 xff0c 但一直没有实操过 xff0c 但实践之后发现其实还是很简单的 xff0c 我认为它本质上就是对串口传输进行 二次封装 建议的入门顺序 大