实现零成本解决RS-485多从机竞争的3种方案介绍

实现零成本解决RS-485多从机竞争的3种方案介绍,第1张

RS-485多机通信中,往往会出现多个从机同时向主机发送数据。比如在RS-485温度测量系统中,多个RS-485从机的温度测量值只要超过报警点就立即向主机发送报警信息,但是这也可能会出现2个或者2个以上的RS-485从机同时向主机发送报警信息。如果不采取RS-485竞争解决机制,那么就可能会导致2个从机同时发送的信息重叠,这样主机就无法接收到正确的信号,严重的还可能导致整个RS-485系统的崩溃。传统的解决方案是由主机循环轮流对各个RS-485下位机点名通信,这虽然解决了RS-485多从机的竞争,但是同时延误了实时报警信息。本文介绍的新方案之一能够识别从机发送信号的时间顺序,先发送的从机信号可以同时抑制其他从机的RS-485发送信号,只有等先发送信号的从机发送完毕之后其它从机才能够发送RS-485信号。本文介绍的新方案之二可以让下位机能够主动发送自己的地址,这样就无需主机对各从机进行轮流查询。本文介绍的新方案之三是将从机转换为不同的波特率,由于主机每次只能够接收某一种波特率的信号,这样就完全避免了多从机的竞争。本文中的“上位机”即“主机”,“下位机”即“从机”。

1、在RS-485总线中接入RS-485智能共享器

2路RS-485对1路RS-485智能共享器(型号:HUB2485Z)本来是用于两个RS-485上位机共同控制一个RS-485下位机的通信连接,在这里我们将HUB2485Z用于两台下位机的RS-485口共享一台上位机的RS-485口。HUB2485Z使RS-485总线同时接2个从机(下位机)。HUB2485Z已经有2个下位机RS-485(1)和RS-485(2)的插座(DB-9针并且配接线端子)和1个上位机的接线端子,无需修改软件、5V供电。HUB2485Z适用于两台下位机的RS-485口同时驱动一台上位机的RS-485口。HUB2485Z的外型为DB-9(针)/ DB-9(针)转接盒大小,其中两个DB-9针的RS-485口均配接线端子。两个DB-9针的下位机RS-485口,如图RS-485(1)和RS-485(2)是完全一样的,可以互换。上位机RS-485为接线端子,位于如图产品的上侧面,与电源接线端子在一起。HUB2485Z需要外接5V电源,配套提供。

波仕HUB2485Z智能RS-485集线器能够识别两个下位机RS-485(1)和RS-485(2)的发送顺序,避免同时发送导致的系统瘫痪。也就是说,即使两个下位机正在同时发送,HUB2485Z会选取发送开始时间领先的下位机正确发送数据,而只有等到这一个下位机的数据发送完毕后,另外一个下位机才可以开始发送数据。HUB2485Z的具有双向通信功能,当上位机发送时,两个下位机同时接收到相同的数据,并不区分地址。

在图2中,举例说明了同时接4个RS-485下位机的布线图,实际上还可以一直继续接下去。以接4个下位机为例,下位机4和下位机3分别接入3号HUB2485Z的RS-485(1)和RS-485(2)口,共享的RS-485口再级联接入另外一个2号HUB2485Z的RS-485(2)口,2号HUB2485Z的RS-485(1)接下位机2。以此类推,2号HUB2485Z的RS-485(2)口接下位机2,共享的RS-485接到1号HUB2485Z的RS-485(2),1号HUB2485Z的RS-485(1)接下位机1。在这样的布线结构中,每一个下位机都接入到了HUB2485Z共享器,由于HUB2485Z是可以级联的,所以非常灵活地接入多个下位机。实际上,1号HUB2485Z的RS-485(1)也可以继续级联新的HUB2485Z。

2、在RS-485总线中接入RS-485地址转换器

传统的RS-485多机通信方案是每次都由主机循环轮流对各个RS-485下位机点名通信,主机先发送被呼叫的从机的地址,总线中每一个从机都将这个地址信号与自己的地址进行比较,地址一样就继续也主机通信,不一样就不与主机通信。这样可能存在的问题就是从机发送的信号是可以不带本从机地址的,因为主机已经发送了从机地址信息,紧接着收到的从机信号一定就是这个被点名的从机的信号,而且从机信号不带地址可以极大简化主机的信号处理程序。从机发送的信号不带从机地址就会限制RS-485多机通信的实时性,比如RS-485多机温度测量系统就不能够实时报警,因为主机不知道发送报警信号的从机的地址。

波仕电子的DIZ485地址串口转换器用于实现串口(同时支持RS-232和RS-485)之间的带地址的转换。通过跳线设置地址编码,DIZ485可以将串口接收到的数据附加上地址编码发送出去,也可以将带地址编码的串口数据送到对应地址的转换器的串口。 DIZ485与其它同类产品相比的特点是可以识别下位机的地址、下位机可以主动发送带地址的数据。 波仕DIZ485地址串口转换器的外形为DB-9/DB-9转接盒大小,如图,产品左边为主串口,包括DB-9孔的RS-232口,和标明为A1、B1的RS-485口。右边为从串口,包括DB-9针的RS-232口,和标明为A2、B2的RS-485口。左上侧J2、J1、J0为波特率设置的跳线,右上侧K2、K1、K0为地址编码设置的跳线,下面中间为5V电源接线端子。

DIZ485 使用非常方便。首先根据波特率进行波特率跳线设置,然后跳线设置本产品的地址。通信规则:主串口数据=地址码+从串口数据   如果主串口收到 ###1:1234567,那么地址为1的产品的从串口发送出 1234567(地址不是1的产品的从串口不发送任何数据),就是去帧头。地址码就是在K2、K1、K0跳线设置值的前面加3个井号(###)和后面加一个冒号(:)的英文字符。如果地址为1的产品的从串口收到abcdefg ,则主串口发送出###1:abcdefg 就是加帧头。

加入RS-485地址转换器可以使得RS-485从机可以随时主动向上位机发送消息,因为信号中自动加上了从机地址信息,这样主机就可以识别下位机。

3、在RS-485总线中接入串口波特率转换器

RS-485多机通信,本来是要求通信的双方波特率等通信格式一样才可以通信成功。可是为了解决在这种情况下出现RS-485多从机竞争的问题,波仕电子在世界上首次提出了一种多波特率的多机通信方式。本来是相同波特率的RS-485从机设备,我们人为地将从机进行串口波特率的转换。当多个从机都转换为不同的波特率后,由于每个RS-485从机发送信号的波特率不同,而主机同一时间只能够收到某一种波特率的信号,这样就自然避免了多从机同时发送的竞争问题。本节介绍如何实现串口波特率的转换。

串口波特率转换器用于实现不同波特率的RS-485/RS-232口的通信转换,纯硬件跳线设置,无需任何软件设置。串口波特率转换器的外形为DB-9/DB-9转接盒大小,如图4。串口波特率转换器的内部有一个带双串口的单片机。单片机自动完成两个串口之间的数据交换。单片机程序用C语言编写,核心功能就是先将两个串口UART1和UART2根据跳线设置的状态进行波特率等初始化设置,然后随时将UART1接收的数据立即送到UART2的发送区、以及将UART2接收的数据立即送到UART1的发送区。

上位机串口A的波特率通过产品的J2、J1、J0来设置,下位机串口B的波特率通过产品的K2、K1、K0来设置,见表格。波特率转换器的两边的串口可以分别独立设置波特率,见下表。

实现零成本解决RS-485多从机竞争的3种方案介绍,实现零成本解决RS-485多从机竞争的3种方案介绍,第2张

由串口波特率转换器实现的RS-485多机通信图与图3所示的“为RS-485下位机加上地址”的布线结构完全相同。由于每次主机通信程序只能够设置为某一种波特率,所以也就每次只能给与某一个从机进行通信,其它从机即使同时发送信号但由于波特率不一样所以也不会对主机产生影响。这种方案的优点之一在于完全无竞争,缺点是最多8个下位机,因为这种串口波特率转换器只能够提供8种不同的波特率。这种方案的优点之二在于如果用户自己可以修改从机的波特率,那么可以实现零成本的解决方案。

本文介绍的3种解决RS-485多从机竞争的方案可以形象地称为抢答、报名和调频。这3种方案各有特色,也各有局限性,但是互不排斥。也就是说,这3种方案还可以组合使用。

责任编辑:gt

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2482244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存