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. DOM技术

    DOM概述 DOM:Document Object Model(文档对象模型)(DOM核心就是 文档变对象,标签也变对象,属性也变对象,反正就是把标记文档拆散) 用来将标记型对象封装成对象,并将标记型 ...

  2. es6 语法 (Decorator)

    修饰器是一个函数,用来修改类的行为(注意:1.函数  2.修改行为  3.对类进行操作) { //修饰器函数定义 target:类本身,name名称,descriptor描述 let readonly ...

  3. CSS之IE浏览器的hasLayout,IE低版本的bug根源

    什么是hasLayout? hasLayout是IE特有的一个属性.很多的ie下的css bug都与其息息相关.在ie中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组 ...

  4. MySQL服务无法启动 3534

    1.环境变量配置完成 2.配置文件编辑完成 3.启动服务(启动不成功,错误信息“MySQL服务无法启动 请键入 NET HELPMSG 3534 以便获得更多的帮助”) 错误原因:mysql安装目录下 ...

  5. git命令详解( 九 )

    此为git第九篇记录 整理提交记录 Git Cherry-pick     交互式的 rebase Git Tags  Git Describe 整理提交记录 之前我们已经学习了 Git 的基础知识 ...

  6. Nginx 集群 反向代理多个服务器

    准备多个服务器,使用 nginx 先做好代理(我这里只有一台服务器,就拷贝两个 tomcat 了,端口分别设置为 8081 和 8082) 1,复制 tomcat cp -r apache-tomca ...

  7. Android 打包混淆

    将项目改成Module //项目build.gradle的applicationId注释掉 修改apply plugin: 'com.android.library' 打包混淆脚本 //在项目的bui ...

  8. java垃圾回收机制GC

    记得第一次总结java 的GC的时候,是刚开始在课堂上学习GC的时候,那时候许老师第一节java课 课后老师说同学们可以去深入理解一下java的GC机制: 但是是花费了三四个小时,翻看了<Thi ...

  9. 如何在 Flickr 上找到又酷,又有趣,且版权自由的照片?

    [编者按]本文作者为 Alex Walker,主要介绍在 Flickr 上进行照片搜索时的一些技巧.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 我们一直都在寻找新奇的,与众不同的设计.图 ...

  10. Orchard详解--第七篇 拓展模块(译)

    Orchard作为一个组件化的CMS,它能够在运行时加载任意模块. Orchard和其它ASP.NET MVC应用一样,支持通过Visual Studio来加载已经编译为程序集的模块,且它还提供了自定 ...