• RS485以及MODBUS学习


    学习目的:

    1、什么是485?

    2、485如何通信?

    3、如何使用熟能生巧?

            RS485是一种四总线通信,分别是VCC、GND、485_A、485_B。两根负责通信,两根负责进行供电。

     RS485通信

        硬件层:解决的是数据传输问题,也就是如何将“0”和“1”传输到另外一端设备。

        软件层:ModBus协议则是解决数据传输的含义和意义

    那么单片机则是如何进行485通信的?

            单片机需要进行485通信,则需要进行电平转换以及485驱动芯片,一般现在市面上有两种驱动芯片(隔离芯片、非隔离芯片),在进行设计电平转换方案也是有几种:

            1、隔离电源+非隔离芯片+(高速)光耦隔离                成本低

            2、隔离电源+隔离芯片                                                   通信接口安全

    通常485驱动芯片 VB > VA为“0”,反之VA > VB为“1”.其通信流程如下

            因为在通信是采用的差分通信,则在两线制的485通信中,则只能进行单向传输,也就是半双工传输,不能进行同步双向传输。在半双工传输芯片中,一般会有RE和DE也就是控制485通信驱动芯片的传输方向,这部分则是485通信硬件层的解决。

     ModBus协议:        主从通信                在半双工通信中可以一主多从(驱动芯片决定从机数量)

      ModBus 通信:

            通信机制:      主机轮询,从机应答的机制

            1、系统中只有一个主机:主从通信

            2、系统中的从机不可以主动的向主机发送数据

            3、系统上电后所有的主从设备都应该处于监听总线的状态,也就是接收状态

            4、如果想要发起一次通信,那么必须有主机主动发起通信(任何一次通信或数据交换必须有主机来发起)

            主机想要发送则:        先将驱动芯片改为发送模式,在进行发送数据包。

            立马转换为接收模式

    地址码(通信地址):1-247

            指定地址0的指令是广播指令,所有收到的设备都会运行但不会回复。

    常用功能码: 01/05/15      03/06/16

    例如:

    更具体点分析如下:

    06则是主机发送什么从机就应答什么。

    而485通信断帧的时间大约10ms或者3ms,也就是超过时则认为这个数据包结束了。

    那么通信协议的定制,可以使用别人定制好的,拿来改进行自己使用,如下:

    在开发过程中需要制定RS485的通信协议:RS485 MODBUS-RTU等格式

    开发辅助工具:ModBus Poil (主机) 、ModBus Slave(从机)

    目前来看485协议不是很难,只要注意协议就行。

  • 相关阅读:
    信息学奥赛一本通:1310:【例2.2】车厢重组
    Java的类加载过程
    `THREE.AudioAnalyser` 音频分析
    C/C++学习 -- SHA-256算法
    技巧 | Python绘制2022年卡塔尔世界杯决赛圈预测图
    SpringBoot 整合 Elasticsearch (超详细)
    前端传参数进行Mybatis调用mysql存储过程执行返回值
    十年技术进阶路,让我明白了三件要事(8000字长文)
    Mysql加密功能
    捷报|数说故事同期斩获虎啸奖、弯弓奖六项大奖
  • 原文地址:https://blog.csdn.net/m0_51274562/article/details/132997104