485通讯,上位机发送数据和下位机发送数据如何协调?会不会总线上接受和发送冲突呢?在程序里如何规定呢。
1个回答
展开全部
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通信的稳定性。
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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询