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协议不是很难,只要注意协议就行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/115016.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01Redis的安装和开机自启的配置

安装Redis 单机安装Redis 大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包(此处选择的Linux版本的CentOS 7) Windows版直接下载对应版本的.zip压缩包解压即可使用 第一步: Redis是基于C语言编写的,因此首先需要…

ez_pz_hackover_2016

ez_pz_hackover_2016 Arch: i386-32-little RELRO: Full RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位,保护全关 int chall() {size_t v0; // eaxint result; // eaxchar s[1024]…

Elastic Stack 8.10:更简单的跨集群搜索和身份验证等等

作者:Tyler Perkins, Gilad Gal, Shani Sagiv, George Kobar, Michael Peterson, Aris Papadopoulos Elastic Stack 8.10 增强了跨集群和向量搜索、数据摄取、Kibana 和云注册。 配置远程搜索时获得更大的灵活性,并提供更多信息来分类问题,…

数据工程中的单元测试完全指南

在数据工程领域中,经常被忽视的一项实践是单元测试。许多人可能认为单元测试仅仅是一种软件开发方法论,但事实远非如此。随着我们努力构建稳健、无错误的数据流水线和SQL数据模型,单元测试在数据工程中的价值变得越来越清晰。 本文带你深入探…

YashanDB荣获“鼎新杯”数字化转型应用奖项

近日,深算院YashanDB 团队与深燃集团联合共建的深圳燃气集团数据库国产化建设项目,荣获第二届“鼎新杯”数字化转型应用大赛信息技术应用创新赛道二等奖!此次获奖,彰显了崖山数据库系统YashanDB自主领先的国产数据库技术优势和优秀…

阿里云服务器经济型e实例租用价格和CPU性能测评

阿里云服务器ECS推出经济型e系列,经济型e实例是阿里云面向个人开发者、学生、小微企业,在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器,CPU采用Intel Xeon Platinum架构处理器,支持1:1、1:2、1:4多种处理…

安装gpu版本的paddle

安装gpu版本的paddle python -m pip install paddlepaddle-gpu2.3.2.post111 -f https://www.paddlepaddle.org.cn/whl/windows/mkl/avx/stable.html以上支持cuda11.1版本 其他需求可查阅文档在这里

python 串口发送图片给arduino

python 代码 import serial import threading import time from PIL import Image from PIL import ImageSequence## im.show()##print(img) ## ####img b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00…

mySQL中查询统计俩个表相加COUNT之合

最近工作中需要用到查询语句结果为统计当前表和历史表加起来的数据之和需要把俩条数据的合加起来返回给我们: select count() from work_order_history where valid true and and state ‘8’ and create_time like ‘%20230901%’; 返回结果如下 另一条SQL如下&…

七天学会C语言-第六天(指针)

1.指针变量与普通变量 指针变量与普通变量是C语言中的两种不同类型的变量,它们有一些重要的区别和联系。 普通变量是一种存储数据的容器,可以直接存储和访问数据的值。: int num 10; // 定义一个整数型普通变量num,赋值为10在例…

【Proteus仿真】【STM32单片机】STM32脉搏血氧仪

文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 系统运行后,LCD1604液晶显示心率、血氧和温度、时间日期; 如果心率、血氧超限则报警;蓝牙实时传输数据; 二、软件设计 /* 作者:嗨小易&#xf…

24个Docker常见问题处理技巧

1.Docker 迁移存储目录 默认情况系统会将 Docker 容器存放在 var/lib/docker 目录下 [问题起因] 今天通过监控系统,发现公司其中一台服务器的磁盘快慢,随即上去看了下,发现 /var/lib/docker这个目录特别大。 由上述原因,我们都知…