485通讯,上位机发送数据和下位机发送数据如何协调?会不会总线上接受和发送冲突呢?在程序里如何规定呢。

如题所述

RS-485接口大多都是基于RS-232接口与电脑进行通信的,485协议编程都是基于串口编程的,而由于RS-232与RS-485接口的不同,由于RS-232只支持点对点通信,全双工通信,而RS-485是支持点对多点通信,半双工通信,基于其编写的协议有一定的相关性又有一定的区别。

  RS-232接口支持点对点通信,全双工通信模式,现在对于RS-232的使用大多都是基于无Modem连接,其分为握手连接和无握手连接,握手连接方式类似于打电话,请求连接方发起连接请求发送,等待对方准备就绪并且允许发送,然后发送数据,发送数据的同时也可以接收对方发送的数据。而无握手连接则是类似于对讲,直接发送相关的数据过去,由于现在硬件功能增强,串口可以随时处于准备接收状态。在针对RS-232串口进行编程,无握手连接最简单,而握手连接则需要编写相应的应答命令之类的代码。

  RS-485接口支持点对多点通信,半双工通信模式,由于485是半双工通信模式,就必须要解决数据流向问题,就像某条铁路可以双向通车,为了防止撞车追尾等事故的发生,必须要通过相应的调度来解决该问题,同样的道理,由于支持点对多点通信,也必须要通过主机进行相应的调度来解决该问题,而且主机对于整个总线必须具有绝对的控制权。关于485通信问题,我们利用老师在教室讲课作为例子来说明。

  我们假设老师作为RS-485总线的主机,而学生作为485总线的从设备,而学生的学号则是从设备的地址码。老师对于整个课堂具有绝对的掌控力,一般来说,老师在上课之前会对学生进行点名以确实学生是否有缺课的,同样的道理,RS-485总线的主机一开始也会对从设备进行一次轮询,逐个地址码去询问设备是否正常并且对相关情况做个记录,防止在正常通信的时候不断呼叫并不存在的地址码而导致通信效率下降。主机对于从设备的控制是利用广播方式发送下去的,而从设备只对含有自己地址码的指令做相关的回应,在从设备做回应的情况下,其他的从设备和主机保持沉默,当从设备执行完相关指令之后,发送完毕信号给主机,主机继续执行下一条指令。就像老师在课堂讲课的时候,指定某个学生回答问题,学生回答问题过程中,其他学生和老师保持沉默,不容许课堂上有讲小话的情况,只有当学生回答完问题之后并且告知老师自己回答完毕,老师才会继续讲课或者指令另外的学生做相应的动作。485协议的编程基于上面的思路编写。

  RS-485总线协议对于意外情况的处理,当485总线主机对其从设备发送相关的指令的时候,从设备可能会因为种种原因而不执行相关指令的情况,比如从设备在使用过程中损坏而不能回应相关指令,主机一般都会设定一个时延,在设定的时间之内得不到相关从设备的回应,其应该做相应的记录并且执行下一条指令。就像老师点名要求某个学生回答问题,而没有得到相应的回应,点名三次之后,还是没有回应,对于该学生的缺课做相关的记录,然后继续下面的课程。
  

关于485总线线路另外的一些问题也可以用老师讲课来做比喻,如老师讲课过程中,外面的噪音非常的大,从而导致学生听不到,那就需要加扩音器,对于485总线而言,就是外部干扰过大,导致衰减的485信号淹没在噪声中,需要增加485中继器中继还原相关信号再次传输,同样的道理,如果教室过大,导致老师说的话并不能传到最后面的学生处,也是增加扩音器来解决问题,当485总线传输距离过长的时候,也是通过485中继器放大信号延长传输距离,还有就是如果讲课过程中,产生了混音的情况有可能会导致整个课堂都听不清楚,就将其划分为多个小教室,通过多个广播将老师的声音分别传入各个教室,使其不混杂都能够听清楚,如果将多个RS-485总线简单的按照星型连接或者树形连接方式连接,就会产生信号反射等问题,就必须采用485集线器或者485中继器将其相互隔离,独立驱动,不会相互影响,从而保证485通信的稳定性。

参考资料:http://www.232-485-tcp.com/jishu/485xieyi.htm

温馨提示:内容为网友见解,仅供参考
无其他回答

485通讯,上位机发送数据和下位机发送数据如何协调?会不会总线上接受和...
RS-485总线协议对于意外情况的处理,当485总线主机对其从设备发送相关的指令的时候,从设备可能会因为种种原因而不执行相关指令的情况,比如从设备在使用过程中损坏而不能回应相关指令,主机一般都会设定一个时延,在设定的时间之内得不到相关从设备的回应,其应该做相应的记录并且执行下一条指令。就像老师点名要求某个学生回...

单片机通过485如何避免通信冲突,比如要发送数据,但是串口在接受数据,这 ...
单片机通过485通信, 属于准双向通讯,在接收时不能发送,上位机与下位机通讯,一般为 上位机 发送 指令 或者 数据,下位机接收完成后 判断 是指令还是数据,并返回 执行状态 和 数据。就是 有接收完成 后 马上 返回数据 给 上位机。即 上位机与下位机的收发协议。如果 随意发送数据,那肯定会乱套...

基于RS-485的单片机多机通信如何实现?其c语言或者汇编程序如何写?
这样,上位机的指令就有针对性了,不会出现混乱。再有,下位机多对一的问题,如果下位机发送相同的数据到上位机,那么上位机也就分辨不出是那台下位机发送的数据,这就要求下位机在发送数据的时候,也要带上地址,用来区分是谁的数据

上位机是如何采集下位机发送的串口数据的???
RS485总线通信,上位机通过主机轮询的方式采集下位机信号! 也就是说下位机不能够主动发送信号,而是上未机通过地址依次读取这四路的报文并打印显示出来;每次通信都是有上位机发起的握手信号,下位机接收到信息后判断是不是自己信息,如果是则发送数据 ...

上位机和下位机的区别是?
在功能上,上位机的主要职责是发送命令,这些命令会被下位机解读并转化为实际操作。下位机则负责实时监控设备状态,将其获取的模拟量数据转化为数字信号反馈给上位机。上位机和下位机的编程都是必要的,都需要相应的开发系统进行支持。在通讯层面,上位机和下位机之间的连接方式多种多样,常见的有RS232...

为什么485通讯只收到一个设备信息
当其中一个设备的485处于发送状态时(此状态延续1分钟,实际未发送数据),上位机无法与其他设备正常通讯。这个是正常的啊,当你的下位机处于发送状态时,其他的设备是不能通信的。

...处于发送状态时,上位机将无法与其他485设备通讯?
;当其中一个设备的485处于发送状态时(此状态延续1分钟,实际未发送数据),上位机无法与其他设备正常通讯 这个是正常的啊,当你的下位机处于发送状态时,其他的设备是不能通信的。就像是老师在讲课,学生在回答问题的时候,哪怕他站起来,没有说话,呵呵,老师肯定也要等他说完,让他坐下,才会说...

怎样用LABVIEW串口通讯程序与485总线中一个串口上的多个站点通信?
这个,是要配合下位机那里区分的。比如:上位机发送一个1,所有的下位机都收得到。但是上位机发一个1A,代表第一台机器,数据为A,这样子在下位机那里区分就可以了。

上位机与下位机的区别?
在交互过程中,上位机发送指令给下位机,后者则是负责接收并解析这些命令,将它们转化为设备可以直接执行的时序信号,从而控制实际的机械或系统。下位机,如PLC或单片机,专注于设备的直接控制和状态数据的采集,它会定期读取设备的模拟量数据,并将其转化为数字信号反馈给上位机,这样可以确保实时的数据...

怎样用LABVIEW写的串口通信程序与485总线中接在同一个串口上的多个站点...
接在485总线网络里面的设备总数不要大于32个。否则就应该使用485中继器 在9600波特率或以下,最远两个设备间不能超过1200米,否则也需要中继器 采用上位机发指令,下位机应答方式通信。上位机发送的指令必须带地址码,下位设备收到指令检查地址码一致才应答,地址码不一致则忽略 有可能需要加120欧姆左右的...

相似回答