技术频道

串口地址转换的实现

  串口多机通信,就是RS-232/RS-485多机通信,要求通信的下位机必须带地址。通信时由上位机先发送某个下位机的地址,位于同一个网络中的所有下位机都同时读取这个地址的值,然后与自己的地址进行比较,如果地址相同则接收后面的数据,如果地址不同则不读取后面的数据。某些情况下,下位机也可以主动向上位机发送数据,但是必须按照预先设置的格式在数据前面加上下位机的地址,这样上位机才可以知道是哪一个下位机发来的数据。可是在许多情况下,下位机没有设置地址的功能,或者地址的格式不同,这就必须进行串口地址的转换。本文介绍了如何实现串口地址的转换。

  如果上位机与多个下位机之间需要通信,但是下位机却不带地址。串口地址转换器的原理就是利用转换器两个串口,称为上位机串口和下位机串口,自动添加人为设置的地址。地址哦处理包括两部分:1、将上位机串口接收到的数据去掉地址后从下位机串口发送出去;2、将下位机串口接收到的数据加上地址后从上位机串口发送出去。

  DIZ485串口地址转换器用于实现不同地址的RS-232/RS-485口的通信转换,纯硬件跳线设置,无需任何软件设置。串口地址转换器的外形为DB-9/DB-9转接盒大小,如图的产品左边为上位机的RS-232以及RS-485口,右边为下位机的RS-232以及RS-485口,上边为波特率设置和地址设置的跳线,下面为5V电源接线端子。DIZ485通过跳线J2、J1、J0设置波特率,通过跳线K2、K1、K0设置地址。见下表。0-断开,1-短路。注意每次更改跳线新设置后必须重新加电源才能生效。

串口通信波特率设置

地址设置

J2

J1

J0

波特率

K2

K1

K0

地址

0

0

0

1200

0

0

0

0

0

0

1

2400

0

0

1

1

0

1

0

4800

0

1

0

2

0

1

1

9600

0

1

1

3

1

0

0

19200

1

0

0

4

1

0

1

38400

1

0

1

5

1

1

0

57600

1

1

0

6

1

1

1

115200

1

1

1

7

  DIZ485 使用非常方便。首先根据用户通信程序的波特率进行波特率设置,比如9600bps,则将J2断开、J1短接、J0短接。然后设置本产品的地址,比如设置地址为1,则将K2断开、K1断开、K0短接。

  左侧的A1、B1的RS-485以及DB-9孔RS-232称为“主串口”;右侧A2、B2的RS-485以及DB-9针RS-232称为“从串口”。通信规则:主串口数据=地址码+从串口数据 比如:如果主串口收到 ###1:1234567,那么地址为1的产品的从串口发送出 1234567(地址不是1的产品的从串口不发送任何数据),就是去帧头。地址码就是在K2、K1、K0跳线设置值的前面加3个井号(###)和后面加一个冒号(:)的英文字符。如果地址为1的产品的从串口收到abcdefg ,则主串口发送出###1:abcdefg 就是加帧头。

  在同一个RS-232/RS-485总线中可以同时接入一般最多8个DIZ485产品,定制最多可以到32个。使用时将这8个产品的地址分别设置为0、1、2、……、7不同的值。将所有DIZ485产品的主串口共同接入到一个总线并接到上位机的RS-232或RS-485口。DIZ485接受定制开发。超过8个地址要求的可以定制扩展地址编码,最多可以达到32个。默认地址为0、1、2、3、4、5、6、7、8、9、a、b、……、t、u、v。

  如果上位机要向某个下位机(比如地址为1的DIZ485的从机)发送数据,只需要在数据前面加上###1:即可。地址为1的DIZ485发送给上位机的数据都是加上了###1:再发送给主机的;地址为2的DIZ485发送给上位机的数据都是加上了###2:再发送给主机的,都带有地址,所以主机可以识别从哪个下位机(即从机)发来的。

  地址转换器的内部有一个带双串口的单片机。单片机自动完成两个串口之间的数据交换。单片机程序用C语言编写,核心功能就是先将两个串口UART1和UART2根据跳线设置的状态进行地址等初始化设置,然后随时将UART1接收的数据去掉地址帧头之后立即送到UART2的发送区、以及将UART2接收的数据加上地址帧头后立即送到UART1的发送区。

  本文介绍的串口地址转换的硬件方法和单片机代码,对不同地址之间的串口通信具有一定的使用价值。地址转换器的优点在于使用简单方便,不足之处在于只能够转换地址而没有对数据位、停止位、校验位进行转换,而且对于不常见的地址的转换还需要定做。如果要实现功能全面的地址等各种格式的全面转换,还是要用计算机加上专门的地址转换软件,通过对计算机的两个串口进行地址等格式的设置,而两个串口在计算机内部进行数据透明传输。我们已经以另外文章《串口地址转换的纯软件实现》予以了介绍。

文章版权归西部工控xbgk所有,未经许可不得转载。