https://blog.csdn.net/ouyangxin95/article/details/78174145

RS-485总线技术只是规定了接口的电气标准,并没有规定RS-485接口的电缆,插件以及通信协议,只是OSI规范中物理层的一个标准,由于RS-485总线采用差分平衡传输方式,一般使用的电缆建议采用屏蔽双绞线,使得485+与485-两两双绞,外面采用屏蔽层屏蔽外部电磁干扰,但是在现场实施施工中,有人采用平行线也是可以适用于RS-485总线的电缆,只是抗干扰能力较差,传输距离不远且通信质量不稳定,一般都是建议采用屏蔽双绞线。而接口定义形式,由于RS-485总线一般都是用到485+,485-以及GND三根线,没有硬性规定接口定义形式,一般市面上多见的接口形式有RJ45接口,工业接线端子接口,DB9串口接线端子以及RJ11电话线接口等。一般而言,采用工业接线端子更为合适,因为如果需要接入终端电阻的话,采用工业接线端子是很好接入的,而且接入屏蔽双绞线也是工业接线端子更加方便。

由于RS-485总线并没有规定通信协议,有很多厂家自己推出基于RS-485总线的通信协议,其中最为著名的是由modicon公司推出的Modbus协议,该协议具有两个版本,一个是Modbus RTU和Modbus ASCII两种帧报文格式,该内容我们会在其他文章内详细描述,我们现在讨论基于RS-485总线通信的协议的一些基本原则以及相关情况。

由于RS-485总线支持点对多点通信模式,而其没有数据冲突检测解决机制,所以数据冲突的问题都是依靠主机来解决,通过主机对整个系统进行全方位的控制,避免数据冲突的产生,一般而言,由于必须通过主机进行控制以避免数据冲突,基于RS-485总线通信只能支持一主多从的通信方式,在现实生活中,老师在课堂讲课的模式其实就是一种一主多从的通信方式,下面我们按照老师课堂授课的比喻来说明RS-485总线通信协议的一些基本原则。

由于RS-485总线支持一主多从的通信模式,主机需要能够识别下位多个从机设备,所以从机设备必须具备一个在485网络中的唯一的地址码,就像班级中给学生分配学号一样,学生的姓名可能会有重复,但是学号必须是该班级内唯一的。而老师只需要叫唤学生的学号要求学生回答问题或者做相应的动作等。 同样的道理,485通信主机通过呼叫485通信从机的地址码来控制485通信从机的相关动作。

485通信网络开始通信的时候,就会对整个网络的设备进行轮询,也就是对485通信从机进行逐个的询问,确认网络中是否存在该设备以及该设备是否能够正常运转。就像老师在正式授课之前会对班级进行点名,确认是否有人缺课,一旦有人缺课做上标识以保证在课堂提问的时候不会点到缺课的学号以免浪费时间。

485通信主机下发指令是以广播形式发送,485通信从机接收到相关指令,将指令中的地址码与自己的地址码对应,发现是下发给自己的指令则立即执行相关指令,执行完相关指令之后发送相应的状态代码给485通信主机,示意其可以继续下一条指令。否则丢弃该指令,静默等待485通信主机的下一条指令。同样的道理,当老师向某个学生提问的时候,其他学生在此期间是不能出声,只有被提问的学生回答问题,当学生回答完问题之后,就说回答完毕,然后大家静待老师的下一个提问或者授课。

一般而言,老师授课都是一个人在课堂,但是有些特殊情况是需要两个或者两个以上的老师同时在一个课堂授课,这样就需要一个协调的机制来协调多个老师的授课。而在485通信网络中,也有可能存在多个RS-485通信主机共存于同一个RS-485通信网络中,在这种情况下,深圳市国科伟业通信技术有限公司开发出相应的485共享器用于满足这些需求,485共享器分为两种,抢占式模式以及优先级模式,抢占式模式就是先到先得,就像老师在授课的时候,谁在授课的时候其他老师是不能打断他的授课的,只有在他将该段内容讲完之后,停顿一定时间之后,其他老师才可以开始自己的授课,同样的也是先到先得,谁先开口,谁就授课,直到该段内容讲完之后再重新争取控制权。优先级模式则是定义相应的优先级,比如系主任的优先级高于普通老师的优先级,即使在老师正常授课的时候,系主任说:这里我插一句,则老师的授课自动停止,等待系主任讲完之后再重新抢夺控制权(注:485共享器并不带有存储功能,只能是多个主机重新抢夺控制权,而不是原有中断485通信主机的重新接续原有的指令,原有的通信直接失败)。

还有就是485通信线路问题,当传输距离较远的时候或者外部干扰过大导致噪音太大,485通信信号会有一定的衰减,就像教室较大以及教室外面比较吵闹的情况,后面的学生并不能清楚的听到相关的内容,在中间增加一个485中继器,将衰减的485信号重新整形还原放大,使得距离较远的485通信从机能够识别485信号。还有就是当教室较大,可能会在教室里面产生混音,通过在教室合理放置多个喇叭,就像485总线连接为星型拓扑结构,产生了信号反射导致通信质量不稳定,使用485集线器将各条485总线相互隔离,独立驱动可以有效的解决类似问题。

RS-485总线通信协议的更多相关文章

  1. delphi 串口 关于RS485总线通信协议开发注意事项

    http://blog.csdn.net/shjhuang/article/details/9426739 关于RS485总线通信协议开发注意事项 1       前言 近段时间发现我们系统在进行设备 ...

  2. 泓格WINPAC主机与第三方模块rs 485 modbus rtu通信测试

    开发语言:C# 开发环境:VS2008(支持WINCE开发的最后一个版本) 运行环境:Windows CE 5.0~7.0 项目说明:多台涨格winpac系列的主机,原来使用泓格SDK开发的程序,采集 ...

  3. CAN总线与RS485的比较

    CAN总线与RS485的比较 http://blog.csdn.net/reille/article/details/6135546 can总线与485总线有什么区别?  http://blog.16 ...

  4. CAN总线学习系列之二——CAN总线与RS485的比较

    CAN总线学习系列之二——CAN总线与RS485的比较 上 一节介绍了一下CAN总线的基本知识,那么有人会问,现在的总线格式很多,CAN相对于其他的总线有什么特点啊?这个问题问的好,所以我想与其它总线 ...

  5. CAN总线协议 学习笔记

    1.CAN总线网络 CAN总线网络主要挂在CAN_H和CAN_L,各个节点通过这两条线实现信号的串行差分传输,为了避免信号的反射和干扰,还需要在CAN_H和CAN_L之间接上120欧姆的终端电阻,但是 ...

  6. Modbus RTU通信协议详解以及与Modbus TCP通信协议之间的区别和联系

    Modbus通信协议由Modicon公司(现已经为施耐德公司并购,成为其旗下的子品牌)于1979年发明的,是全球最早用于工业现场的总线规约.由于其免费公开发行,使用该协议的厂家无需缴纳任何费用,Mod ...

  7. I2C总线通讯协议

    I2C总线通讯协议 1. I2C总线简介 I2C是Inter-Integrated Circuit的简称,读作:I-squared-C.由飞利浦公司于1980年代提出,为了让主板.嵌入式系统或手机用以 ...

  8. I2C总线协议的软件模拟实现方法

    I2C总线协议的软件模拟实现方法 在上一篇博客中已经讲过I2C总线通信协议,本文讲述I2C总线协议的软件模拟实现方法. 1. 简述 所谓的I2C总线协议的软件模拟实现方法,就是用软件控制GPIO的输入 ...

  9. 对 IIC 总线的理解、调用函数以及常见面试问题

    一.IIC 总线概述: IIC 即Inter-Integrated Circuit(集成电路总线) I2C总线是PHLIPS公司推出的一种串行总线, I2C总线只有两根双向信号线.一根是数据线SDA, ...

随机推荐

  1. PHP全路径无限分类导航LINK代码实现

    <?php /** * @param php全路径无限分类 */ include('db.inc.php'); function getPathCate($cateid){ $sql = &qu ...

  2. 微信小程序获取复选框全选,反选选中的值

    wxml文件 <view class="tr"> <view class="th"> <checkbox bindtap=&quo ...

  3. 洛谷P4063 [JXOI2017]数列(dp)

    题意 题目链接 Sol 这题想还是不难想的,就是写起来很麻烦,然后去看了一下loj的最短代码表示只能Orz 首先不难发现一条性质:能够选择的区间一定是不断收缩的,而且新的可选区间一定是旧区间的某个位置 ...

  4. Caused by: Java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ForeignKey;

    Caused by: Java.lang.NoSuchMethodError: javax.persistence.JoinColumn.foreignKey()Ljavax/persistence/ ...

  5. 21.Odoo产品分析 (三) – 人力资源板块(2) – 工时表(1)

    查看Odoo产品分析系列--目录 工时表是一个用来管理员工工作时间和出勤的模块.当需要计算员工的工作时间,并将这些时间对应到项目或者顾客上时,"工时表"就会起到一个非常好的作用.  ...

  6. Android包管理机制(一) PackageInstaller的初始化

    前言 包管理机制是Android中的重要机制,是应用开发和系统开发需要掌握的知识点之一. 包指的是Apk.jar和so文件等等,它们被加载到Android内存中,由一个包转变成可执行的代码,这就需要一 ...

  7. Android-textview图文混排(网络图片)

    工作太忙,不做过多的解释了,核心是用到了 SpannableStringBuilder  Glide  和 Rxjava 直接上代码了,就两个类. public class ImageSpanAsyn ...

  8. ERP服务启动后无法连接数据库的解决方法

    请安照步骤一步一步走,一个方法一个方法试. 方法一: 第一步,退出ERP 第二步,卸载sql服务,操作方法如下(win+R—输入cmd—输入sc delete mysql_sl 回车键) 第三步,重启 ...

  9. linux vbundle插件配置

    1.新建目录,clone源码 mkdir ~/.vim/bundle/ git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vun ...

  10. IntelliJ IDEA常用快捷键(一)

    Ctrl+J 键常用的组合 psvm:public static void main(String[] args) { } Serr: System.err.println("") ...