武汉海王机电工程技术公司 胡 滢
重庆前卫科技集团有限公司 欧江波
武汉海王机电工程技术公司 程 波
基于电力线载波的双网口调制解调器设计
武汉海王机电工程技术公司 胡 滢
重庆前卫科技集团有限公司 欧江波
武汉海王机电工程技术公司 程 波
设计了一种用于电力线载波通讯的,具备双网口和路由功能的调制解调器。调制解调器可工作在直流电压最大1200V的供电电缆上,实现多种调制方式的载波通讯。本调制解调器具备双网口,可同时接入到双线路中,并具备路由选择功能,可根据IP地址选择相应的线路,通过实现冗余来提高整个系统的可靠性。该调制解调器已成功用于水下采油树控制系统中,满足系统提出的高可靠性和冗余备份要求。
调制解调器;路由;冗余设计
双网口为调制解调器系统提供冗余备份,适用于可靠性要求较高的应用。本文介绍了一种双网口电力载波调制解调器实现,配合适当的冗余策略,可根据通讯负载和设备故障情况再通信线路间进行智能切换。
图1 双网口冗余线路系统图
如图1双网口冗余线路系统图所示,用户和调制解调器间有两条备份通信线路,具备调制解调和路由功能,将电力线上的载波信号解调和把需要发送的信号进行调制发送至电力线外,分析目标网络地址,选择可行的通信线路。
如图2所示,该调制解调器的硬件由五个模块组成:主控单片机、调制解调模块、网络模块、接收发送滤波器模块和耦合去耦模块。STM32单片机作为控制中心,实现网口模块和调制解调模块的底层驱动,控制以太网口的收发,调制解调模块的配置、发送和接收,实现路由选择,在不同的网段间转发包;调制解调模块ST7580片上集成了高性能的PHY处理器和协议控制器、模拟前端和线路驱动器, ST7580通过RS232接口和主控制器通信;DM9051网口模块实现和其它设备通讯的以太网接口;接收滤波器将去耦后信号调理为解调模块频率和幅度范围内信号;发送滤波器将调制信号频率调理到符合电缆特性的传输频带内;耦合和去耦电路实现调制信号和直流高压的耦合和去耦。
图2 模块连接图
从网络OSI分层结构来看,该调制解调器在在链路层、网络层、传输层实现以下功能:在链路层,实现了调制解调器模块和网络模块的驱动、地址解析协议(ARP);在网络层,实现了路由选择、因特网控制报文协议(ICMP)、因特网互联协议(IP);在传输层,实现了传输控制协议(TCP)和用户数据报协议(UDP)。在传输层上的应用层,用户可通过冗余通信应用程序实现双网口冗余通信的智能切换。
在图1的连接方式下,用户A和B之间通过电缆进行通信,用户A 网口ETH1的IP地址IP1和Modem A的网口ETH1的IP地址IPa处于同一网段,用户A网口ETH1网关设置为IPa。用户A网口ETH2、用户B的网口ETH1和网口ETH2的设置也类似设置。
当用户A和用户B之间通讯选定某条通信线路,如A1-A-C-B-B1线路时,用户A从ETH1口发送信息,目标IP为用户B的ETH1口,由于IP1和IP3处于不同的网段,发送的信息将从网关设定的地址转包,即发送至Modem A的ETH1口转包。Modem A收到后,判别原目的地址为IP3,依次确定下一跳为Modem B的ETH1口,通过调制解调后,到达Modem B的ETH1口,该口IP地址IPc和目的地址IP3处于同一网段,从该口发出后,最终到达Modem B的ETH1口,完成从用户A到用户B经由A1-A-C-B-B1的一次通讯。
本调制解调器路由实现中涉及TCP/IP协议栈部分移植于uIP。uIP是专为8位和16位单片机开发的TCP/IP网络协议栈的一种开源实现。uIP因易于移植,代码量和占用资源少,在嵌入式系统中得到广泛应用。出于节约资源的考虑,uIP实现中仅用一个IP包缓冲区全局变量,半双工工作,用于接收和发送。本调制解调器具备双网口,将IP包缓冲区封装为结构体,如下代码所示:
typedef struct{
u16_t uip_len; //缓冲区长度
uip_ipaddr_t uip_hostaddr; //本地IP地址
uip_ipaddr_t uip_draddr; //默认路由地址
uip_ipaddr_t uip_netmask; //掩码地址
struct uip_eth_addr uip_ethaddr; //mac地址
u8_t uip_buf[UIP_BUFSIZE+2]; //接收发送缓冲区
};
程序主函数在网口轮询函数和解调缓冲区函数间循环。网口数据轮询子函数实现网口数据接收和发送任务处理,流程图如图3所示:当网口收到数据,判断接收包类型。若为ARP包类型,当为有效的ARP请求时,重新填充ARP帧,作为ARP回应从网口发送。当为ARP回应则更新对应ARP表;若为IP包类型,判断目标IP所处网段,若为远程网段,将IP包中的相应字段放入调制缓冲区内待调制模块调制到供电电缆上,若为本地网段,经IP包处理函数,当为有效IP包时应答,应答帧所需的以太地址通过查找ARP表得到(没有找到则需发送ARP请求),最终通过网口物理层发送。
图3 网口数据轮询流程图
解调缓冲区查询子程序实现解调缓冲区内数据处理任务,如图4所示:当解调缓冲区内有新数据时,将缓冲区内数据拷贝至IP包相应字段,判断该数据的目标IP地址是该端口还是和该端口同一网段的其它主机,若为本端口,通过IP包处理函数,判别为有效的IP包时回应,由于该回应的目标为远程主机,因此需将此回应的IP包相应字段放入调制缓冲区内。若为和该端口处于同一网段的其它主机,则通过网口进行转发,转发所需目标以太地址通过查找ARP表得到(没有找到需发送ARP请求),最终通过网口物理层发送。
图4 解调缓冲区查询流程图
本文涉及的双网口调制解调器可靠性高,已经成功用于采油树水下采油树控制系统电气分系统地面调制解调器和水下电子模块中,实现了五千米双网口双线路的电缆单芯通讯。
[1]AN4018 Data link communication protocol for the ST7580 power line networking SoC.Vincenzo Mormina.
[2]The uIP Embedded TCP/IP Stack The uIP 1.0 Reference Manual.Adam Dunkels.
[3]零死角玩转STM32.野火.