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来设置,见表格。波特率转换器的两边的串口可以分别独立设置波特率,见下表。
DB-9孔RS-232口波特率设置 | DB-9针RS-232口波特率设置 | |||||||
J2 | J1 | J0 | 波特率 | K2 | K1 | K0 | 波特率 | |
0 | 0 | 0 | 1200 | 0 | 0 | 0 | 1200 | |
0 | 0 | 1 | 2400 | 0 | 0 | 1 | 2400 | |
0 | 1 | 0 | 4800 | 0 | 1 | 0 | 4800 | |
0 | 1 | 1 | 9600 | 0 | 1 | 1 | 9600 | |
1 | 0 | 0 | 19200 | 1 | 0 | 0 | 19200 | |
1 | 0 | 1 | 38400 | 1 | 0 | 1 | 38400 | |
1 | 1 | 0 | 57600 | 1 | 1 | 0 | 57600 | |
1 | 1 | 1 | 115200 | 1 | 1 | 1 | 115200 |
由串口波特率转换器实现的RS-485多机通信图与图3所示的“为RS-485下位机加上地址”的布线结构完全相同。由于每次主机通信程序只能够设置为某一种波特率,所以也就每次只能给与某一个从机进行通信,其它从机即使同时发送信号但由于波特率不一样所以也不会对主机产生影响。这种方案的优点之一在于完全无竞争,缺点是最多8个下位机,因为这种串口波特率转换器只能够提供8种不同的波特率。这种方案的优点之二在于如果用户自己可以修改从机的波特率,那么可以实现零成本的解决方案。
评论