马颖川,杨家辉
(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
以太网接口已经广泛应用在当代的工业控制中。随着物联网技术的发展、系统体积的不断变大、通信数据的增多,传统的串口已经不能满足大数量的通信系统,通过单片机实现以太网通信已经成为一种发展趋势。串口总线、控制器局域网(Controller Area Network,CAN)总线具有传输距离短的缺点,在以往工业应用时受限很大,其连接线数目多的特点引起电装烦琐、查线困难的问题。例如,大型系统中监控设备一般采用网口通信形式完成对各个分机的控制。分机单片机加入以太网通信模块,能减少串口服务器使用率和设备间的电缆连接线,提高系统框架的耦合性,增加数据传输的效率。利用串行外围设备接口(Serial Peripheral Interface,SPI)协议进行外部扩展网络通信的形式将W5500 与数字信号处理(Digital Signal Processing,DSP)芯片连接,可实现高效快速的以太网通信策略。本文将集成有W5500 芯片的板卡成功应用在X-Y 型天线的伺服控制盒中,通过CAN 总线采集天线驱动设备信息和轴角信息,再通过以太网接口上报给上位机监控设备。上位机设备采用Qt 软件开发,实现了与伺服控制盒的通信与控制,进而实现对天线的监控[1-3]。
W5500 是一款以太网接口芯片,由WIZnet 公司推出,具有内部集成硬件协议栈、性能高等特点。集成电路中,可节约微控制单元(Microcontroller Unit,MCU)内部只读存储器(Read Only Memory,ROM)等硬件资源,具有应用快速简单、安全性好、可靠性高等优势。W5500 提供了SPI,能够更加容易地与外设MCU 整合,方便开发者使用。
CDSPF28335P 型数字信号处理器是一款具有国内自主知识产权的DSP 控制器,该器件精度高、成本低、功耗小、性能高、外设接口丰富以及数据存储量大,正在逐渐应用于工业领域。此外,CDSPF28335P具有高性能的互补式金属氧化物半导体(Complementary Metal Oxide Semiconductor,CMOS)技术,外设2 个CAN模块、3个通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,UART)模块、2 个SPI 模块、1 个I2C 模块以及88 个可编程复用的通用输入输出(General Purpose Input Output,GPIO)引脚,可实现工业领域中大部分制式的数据通信和电平模拟量采集[4]。
本文采用SPI接口与MCU连接通信。如图1所示,基于W5500 的DSP 通信设计主要是DSP 与W5500的SPI 总线通信直连,包括从设备数据输出/主设备数据输出引脚SPISOMI、从设备数据输入/主设备数据输出引脚SPISIMO、片选信号端SPICS、时钟信号SPICLK,为总线4 线制的全双工通信。其中,片选信号作为DSP 的选择开关来选择W5500 芯片工作,时钟信号由DSP 输出作为W5500 的工作频率基准,最高可支持20 Mb/s的传输速率。除了这4个通信信号,还增加了IO20 连接INTn 作为备用中断输出,IO21连接RSTn 重置W5500 芯片。
图1 MCU 与W5500 连接图
以太网W5500 芯片采集到数据,可通过网线直连上位机,或者通过路由器中转。W5500 芯片不具有交叉直连自适应功能,但上位机和路由器的网卡一般支持。因此,在连接上位机时,应注意上位机网卡是否具备自适应功能。比较特殊的情况下,2 个W5500 芯片直连通信,必须用交叉线连接[5-9]。
底层程序是将SPI 接口打通,而要打通接口必须按照W5500 芯片使用说明进行配置。芯片上电后,先要强制重置一次,即RSTn 给入低电平信号并保持500 μs 至生效。
重置后的W5500 才可以进行参数配置,也就是配置W5500 的媒体访问控制地址(Media Access Control Address,MAC)、IP 地址和网关。在此步,需要通过SPI 与W5500 芯片建立通信。拉低片选信号,保持W5500 芯片激活状态,随后通过改编官网SPI 发送接收函数,将参数信息传入芯片,返回正确值后代表配置成功。在改编官网函数时,由于官网文件与DSP 生态的不同,其宏定义及变量结构体命名方式也不同,需适应DSP 环境改造。在此代码工程中,改变char 和short int 型变量类型,使之适应DSP环境。官网给出的范例中,应用较多的是while 语法。实际测试中发现,若对端网络关闭或者参数错误,则可能造成程序卡死,因此对while 语法加入时间限制措施。
配置IP 代码为
网络参数配置成功后,上位机的网卡显示连接芯片成功,可ping通W5500芯片,此时可设置Socket模块。W5500 芯片共有8 个Socket 寄存器区,理论上可建立8 个用户数据报协议(User Datagram Protocol,UDP)/传输控制协议(Transmission Control Protocol,TCP)通信,接口丰富,能满足绝大部分嵌入式设备的接口需求。每一个Socket 的发送缓存区都在一个16 kB 的物理发送内存中,初始化分配为2 kB;每一个Socket 的接收缓存区都在一个16 kB 的物理接收内存中,初始化分配为2 kB。这也说明W5500 芯片能将接收或发送的数据先存入缓存区,等待MCU 处理完毕。官网给出的示例是主动查询式接收数据,这得益于芯片中丰富的内存。考虑到此次项目中通信数据量不大,采用此种方法将中断资源留给其他更重要的保护模块。初始化配置流程如图2 所示。
图2 初始化配置流程
上位机程序是在Qt 平台下开发的界面程序,自带UDP 模块类,可实现与W5500 的通信。将提到的板卡应用到天线伺服设备中,该板卡通过其他接口采集到天线状态数据,再通过网口上报给上位机软件。
板卡中采用查询回复式的方法上报天线状态,板卡收到上位机发送的查询指令后,将天线状态数据打包发送给上位机,考虑到状态字节数和对系统实时性的要求,上位机间隔100 ms 查询一次状态。同样地,上位机软件可向板卡下发指令,板卡接收到指令后对指令解析,提取工作内容,进而驱动天线实现不同功能。上位机界面如图3 所示。
图3 上位机界面
基于Qt 的上位机程序,可设置网络通信IP、通信方式、端口,本文采用UDP 通信方式。首先初始化网络参数,打开网络监听线程,间隔100 ms发送查询指令。当监听线程收到网络数据后,通过消息的机制转到数据解码函数中,解算网络数据,从中获取天线状态信息。界面也可通过按钮的形式触发动作命令,当点击按钮后,在Qt 后台触发按钮槽函数,对指令编码,通过网络发送到对端设备。
测试实验中,找来一个X-Y型天线做被控对象,伺服控制盒通过CAN 总线连接X轴、Y轴电机、轴角装置和定位定向盒,通过网线连接上位机,实现与上位机的通信。测试连接如图4 所示。
图4 测试连接图
进行数据收发测试,利用上位机分别以不同频率(1 Hz、5 Hz、10 Hz、20 Hz 以及50 Hz)发送查询指令,持续10 min,统计发送和收到的完整包数,具体如表1 所示。从表中数据分析可以得出,伺服控制盒中网卡芯片收发正常,数据传输有效,有效率优于99%,能够应用于工业控制。
表1 测试数据
基于W5500 的天线伺服以太网通信设计满足了天线系统的通信速率和质量要求,单芯片有4 个Socket,可实现对多个设备的通信,节省了串口服务器设备和连接线缆数,简化了系统框架页,降低了系统成本。阐述了W5500 在天线伺服方面的应用前景,对搭载W5500 的伺服控制板进行硬件和软件设计,编写了上位机程序用于直观显示的通信内容。在此基础上,对不同速率进行测试,通信良好。天线实物测试过程中,天线状态等信息显示连续有效。测试结果表明,该设计方法通信有效,可推广应用在天线伺服系统中。