历史上的今天
返回首页

历史上的今天

今天是:2025年01月07日(星期二)

正在发生

2018年01月07日 | RS485通信和Modbus协议

2018-01-07 来源:互联网

在工业控制、电力通讯、智能仪表等领域,通常情况下是采用串口通信的方式进行数据交换。最初采用的方式是RS232接口,由于工业现场比较复杂,各种电气设备会在环境中产生比较多的电磁干扰,会导致信号传输错误。除此之外,RS232接口只能实现点对点通信,不具备联网功能,最大传输距离也只能达到几十米,不能满足远距离通信要求。而RS485则解决了这些问题,数据信号采用差分传输方式,可以有效的解决共模干扰问题,最大距离可以到1200米,并且允许多个收发设备接到同一条总线上。随着工业应用通信越来越多,1979年施耐德电气制定了一个用于工业现场的总线协议Modbus协议,现在工业中使用RS485通信场合很多都采用Modbus协议,本文讲解RS485通信和Modbus协议。


RS485特点


1、差分输入最大的优势是可以抑制共模干扰。尤其工业现场的环境比较复杂,干扰比较多,所以通信如果采用的是差分方式,就可以有效的抑制共模干扰。而RS485就是一种差分通信方式,它的通信线路是两根,通常用A和B或者D+和D-来表示。逻辑“1”以两线之间的电压差为+(0.2~6)V表示,逻辑“0”以两线间的电压差为-(0.2~6)V来表示,是一种典型的差分通信。


2、RS485通信速度快,最大传输速度可以达到10Mb/s以上。


3、RS485内部的物理结构,采用的是平衡驱动器和差分接收器的组合,抗干扰能力也大大增加。


4、传输距离最远可以达到1200米左右,但是他的传输速率和传输距离是成反比的,只有在100Kb/s以下的传输速度,才能达到最大的通信距离,如果需要传输更远距离可以使用中继。


5、可以在总线上进行联网实现多机通信,总线上允许挂多个收发器,从现有的RS485芯片来看,有可以挂32、64、128、256等不同个设备的驱动器。


RS485的接口非常简单,和RS232所使用的MAX232是类似的,只需要一个RS485转换器,就可以直接和我们单片机的UART串行接口连接起来,并且完全使用的是和UART一致的异步串行通信协议。但是由于RS485是差分通信,因此接收数据和发送数据是不能同时进行的,也就是说它是一种半双工通信。


Modbus协议特点


Modbus协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其他设备之间可以通信,已经成为一种工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。这种协议定义了一种控制器能够认识使用的数据结构,而不管它们是经过何种网络进行通信的。它描述了控制器请求访问其他设备的过程,如何回应来自其他设备的请求,以及怎样侦测错误记录,它制定了通信数据的格局和内容的公共格式。


在进行多机通信的时候,Modbus协议规定每个控制器必须要知道他们的设备地址,识别按照地址发送过来的数据,决定是否要产生动作,产生何种动作,如果要回应,控制器将生成的反馈信息用Modbus协议发出。


Modbus协议允许在各种网络体系结构内进行简单通信,每种设备(PLC、人机界面、控制面板、驱动程序、输入输出设备)都能使用Modbus协议来启动远程操作,一些网关允许在几种使用Modbus协议的总线或网络之间的通信。


通讯说明


控制器采用RS-485总线,协议符合ModBus RTU规约。


数据传输均采用8位数据位、1位停止位、无奇偶校验位。波特率可设为1200-9600 bit/s。 通讯传送分为独立的信息头,和发送的编码数据。以下的通讯传送方式定义与RTU通讯规约相兼容:


初始结构 = >=4字节的时间 地址码 = 1 字节 功能码 = 1 字节 数据区 = N 字节


错误校检 = 16位CRC码 结束结构 = >=4字节的时间


地址码:地址码为通讯传送的第一个字节。这个字节表明由用户设定地址码的从机将接收由主机发送来的信息。并且每个从机都有具有唯一的地址码,并且响应回送均以各自的地址码开始。主机发送的地址码表明将发送到的从机地址,而从机发送的地址码表明回送的从机地址。


功能码:通讯传送的第二个字节。ModBus通讯规约定义功能号为1到127。本控制器利用其中的一部分功能码。作为主机请求发送,通过功能码告诉从机执行什么动作。作为从机响应,从机发送的功能码与从主机发送来的功能码一样,并表明从机已响应主机进行操作。如果从机发送的功能码的最高位 (比如功能码大于127),则表明从机没有响应操作或发送出错。


数据区:数据区是根据不同的功能码而不同。 CRC码:二字节的错误检测码。

当通讯命令发送至仪器时,符合相应地址码的设备接通讯命令,并除去地址码,读取信息,如果没有出错,则执行相应的任务;然后把执行结果返送给发送者。返送的信息中包括地址码、执行动作的功能码、执行动作后结果的数据以及错误校验码。如果出错就不发送任何信息。

推荐阅读

史海拾趣

FILTRONIC公司的发展小趣事

FILTRONIC公司成立于上世纪90年代初,正值通信技术快速发展的时期。公司初创时便聚焦于滤波器技术的研发与生产,针对当时市场对高性能滤波器的迫切需求,FILTRONIC的研发团队通过不断试验与优化,成功开发出了一款具有创新性的高性能滤波器产品。这款滤波器在频率选择性和插入损耗方面表现出色,迅速获得了市场的认可,为FILTRONIC在电子行业中站稳脚跟奠定了坚实的基础。

CIPS公司的发展小趣事

随着CIPS系统的不断发展壮大,其在行业内的地位和影响力也逐渐提升。多家银行和金融机构因积极运用CIPS标准收发器推动跨境人民币业务发展而荣获奖项,这是对CIPS系统及其运营机构的高度认可。这些荣誉和奖项不仅彰显了CIPS在行业内的领先地位,也为其未来的发展奠定了坚实基础。

Eurofarad公司的发展小趣事

Eurofarad始终将技术创新作为公司发展的核心动力。随着科技的不断进步,Eurofarad不断投入研发资源,推动电子元件技术的创新。公司成功研发出了一系列具有创新性的产品,如陶瓷电容器、塑料薄膜电容器、云母电容器等。这些产品不仅具有更高的性能和更长的使用寿命,而且更符合市场的需求,为Eurofarad赢得了更多的市场份额。

Fascomp公司的发展小趣事

为了进一步提升技术实力和市场竞争力,Fascomp积极寻求与国际知名企业的技术合作。通过与多家跨国公司的联合研发项目,Fascomp成功吸收和借鉴了国际先进的技术和管理经验。此外,公司还积极拓展海外市场,产品远销欧美、亚洲等多个国家和地区,进一步提升了公司的国际化水平。

Eclipse Magnetics公司的发展小趣事

随着电子行业的快速发展和变革,Fascomp面临着前所未有的挑战。为了应对这些挑战,公司决定进行转型升级。一方面,公司加大了对人工智能、物联网等新兴技术的研发投入;另一方面,公司还优化了生产流程和管理模式,提高了生产效率和产品质量。这些举措使Fascomp在行业中保持了领先地位。

Hexawave公司的发展小趣事

在快速发展的过程中,Fascomp始终注重企业文化建设和人才培养。公司倡导“创新、协作、务实、进取”的价值观,鼓励员工积极创新、勇于挑战。同时,公司还注重人才培养和引进,建立了一套完善的人才培养和激励机制。这些举措为公司的发展提供了坚实的人才保障。

问答坊 | AI 解惑

SAE各汽车协议和标准的简介

1905年初,美国汽车工程师学会(SAE)认识到必须标准化。那个年代的汽车制造商都是小公司,从供应商购买零部件,然后组装成整车。当遍及全国的独立经销商销售各种车辆时,车辆需要经常维修。如果不返回汽车或零部件的原制造厂,就很难找到合适的配件,因此, ...…

查看全部问答>

ddraw 缩放的问题

   我在程序中创建了一个主表面,因为不能为独占模式,所以采用用覆盖页面over lay的方式来显示图片。因此创建了带一个缓冲的覆盖页面。基本想法是把yuyv格式的图片copy到其中一个覆盖页面,然后再blt到另一个覆盖页面,最后显示出来,实 ...…

查看全部问答>

程序跑飞,系统死机

我的系统基于linux基础加了自己的LCD,触摸屏等驱动,现在这套系统在一套板子上跑的好好的,在另外一套板子上跑2分钟后,系统就瘫痪了,死机了,只好重新上电重启。这第二套板子和第一套在LCD、触摸屏等部分一样,只是第二套在第一套的基础上稍微改 ...…

查看全部问答>

寻broadcom无线AP固件外包开发

硬件线路由我方负责。 现寻高手完成固件开发,AP完成常规功能即可,另要求有 GPIO读写功能,自定义网络数据包函数。详细要求请与我联络  leo@aviosys.com …

查看全部问答>

很有型的摇摆闹钟

这款好似不倒翁一样的摇摆闹钟,设计的精妙之处完全在它的那根天线棒上:通过点触天线尖端,您可以设置闹钟的时间;转动天线棒可以打开或关闭闹铃功能。除此之外,它的妙用还在于当闹铃响起时,如果您还想多睡一会,可以拨动天线棒,使闹钟像不倒翁 ...…

查看全部问答>

老师们帮忙分析一下实验现象【LM3S】

PE7、PE6都悬空:结果如下 PE7接地(电源地)、PE6悬空:结果如下 PE7接地(与手相连)、PE6悬空:结果见附件 怎么PE6和PE7还相互影响呢? [ 本帖最后由 喜鹊王子 于 2012-3-23 09:44 编辑 ]…

查看全部问答>

全波精密整流后加一个运放分析求解

如图: 问题如下: 1、全波精密整流后U5B的的输出脚不加电容0.47uF为馒头波,加了电容,波形变平,C1的作用是为滤波,请问这里是怎么算出来的? 2、U5B出来的信号接至U7,U7由2个1N4148和一个电容组成,这个运放是干什么用的? 请指 ...…

查看全部问答>

CBB电容会烧毁,基本上炸开了,怎么回事? 请高手指点.

最近做一个DC-DC的电源,在调试的时候出现0.22uF的CBB电容会烧毁,基本上炸开了,怎么回事? 请高手指点.…

查看全部问答>

定时器中断复位问题

       最近在使用msp430f5529时候发现在TA0应用UP MODE,选用ACLK(32.768Khz)或者是将SMCLK分频32次,使能TAIE之后将会出现单片机不停复位状况,在选用SMCLK分频系数小的时候就不会有复位情况。分析得出是因为使能TAIE产生T ...…

查看全部问答>

一个C文件的全局变量声明问题

最近人前几天在头问件上折腾了好久,主要是头文件里面的 嵌套问题,  后来曲线救国了。 现在问题是: 一个key.c文件中有些函数,这些函数有一个在key.c中的全局变量i。但这些函数在key.h中声明,在main.c中被调用,但全局变量i定义 ...…

查看全部问答>