郭 亮 ,李济顺,b ,韩红彪,b
(河南科技大学 a.机电工程学院;b.河南省机械设计及传动系统重点实验室,河南洛阳 471003)
随着网络技术的迅速发展和TCP/IP协议的广泛普及,网络通信在数据采集系统中的应用成为一个新的研究热点。在工业控制等很多领域中,大多数设备的通信接口符合串行通信标准。这种通信方式的数据传输半径有限,不能满足某些远程传输或高速传输的需求。考虑到网络传输具有传输距离长,传输速率高,传输灵活性强等优点,改进系统使其接入网络,可以有效提高系统的性能。
目前,数据采集系统的网络传输一般采用以太网控制器来完成。使用以太网控制器,需要在采集前端的主芯片中移植TCP/IP协议,由于其芯片种类、型号繁多,TCP/IP协议在各个芯片的移植将产生一些困难;同时,在一些工作频率低、数据存储器小的芯片上加装TCP/IP协议模块,会影响其工作效率,使传输效果提升有限。TCP/IP协议转换器本身集成了网络协议,在数据采集系统中使用TCP/IP协议转换器,可以减少开发难度、避免占用芯片资源,更好的完成网络传输。多数单片机支持的串行通信机制中,I2C和SPI的通信速率比较高,而SPI的通信协议简单,占用芯片资源少,常用于大容量的数据传输。设计SPI接口到TCP/IP的协议转换器及通信系统,可解决很多数据采集系统的网络接入问题,提高其传输效率[1-4]。
本文基于PIC18F97J60单片机、VB开发软件和TCP/IP协议栈,提出SPI-TCP/IP协议转换器的制作方法,在上位机用 VB开发和其对应的通信软件,实现数据从下位机到上位机和上位机对采集过程的基于网络传输和控制。
系统由协议转换器和上位机软件组成。协议转换器以Microchip公司的PIC18F97J60为主芯片,负责处理协议,发送数据和传达上位机控制命令。上位机软件负责接收数据以待后期处理。整体结构如图1所示。
协议转化器和下位机之间采用SPI接口,SPI通信中设置为主模式。当收到上位机的控制命令后,协议转换器按应用层协议解读命令,控制下位机开始传输数据,并可接收上位机的控制信号,发送给下位机控制采集过程。在协议转换器接收到下位机的数据后,在单片机内部 RAM中根据协议将数据打包,最终以网络数据包的形式通过网络发送至上位机。上位机通过固定的网络端口来接收数据和发送控制命令[5-9]。
PIC18F97J60芯片是Microchip公司推出的一款100管脚的带MAC模块的微控制器,具有出色的计算性能、丰富的功能集和极具竞争力的价格优势,其最大特点是具有嵌入式以太网控制器模块,完全实现介质访问控制和物理层收发器模块,只需使用两个脉冲变压器和一些无源器件即可将单片机直接与网络相连[10]。
由于协议转换器同下位机的通信是基于SPI接口,因此,在设计硬件电路时重点考虑SPI口和网络接口,电路连接如图2所示。
图1 系统整体框图
协议转换器电源输入为5 V,经过低电压调节芯片和简单稳压电路后调节为 3.3 V提供给单片机。SPI接口的传输速率根据设备频率而定,PIC18F97J60的SPI口传输速率可由单片机控制,最大传输速度是单片机主频的 1/4,由于电路中选用了 25 M的晶振,在不分频的情况下理论上SPI口的传输速度可达到6 M左右。DOWNLOAD为6针口,连接MPLAB ICD作下载程序和在线调试用。HR901170A为带变压器件符合以太网标准的RJ45接口,连接在单片机的MAC差分输出口,另需添加 2个 75Ω电阻和一个小滤波电容。
图2 协议转换器硬件电路图
协议转换器主要完成两部分通信工作:一是和下位机的SPI通信;二是和上位机的网络通信。SPI接口特点是主设备通过时钟信号完全控制数据的传输过程,为便于上位机控制采集过程,协议转换器应设置为 SPI主设备。同时,为了保证传输的稳定性,应保证协议转换器的空闲电平为低电平,在时钟信号的上升沿采样,通过SDI接收数据,下降沿通过SDO输出数据,这些设定可由配置CKE,CKP等寄存器完成。SPI的传输可以由调用SPIReadTask()函数实现,SPI传输或接收1个字节后都会产生中断, SPIReadTask()功能是响应中断,读取SPI缓存。协议转换器和上位机的网络通信,可在生产商为PIC18F97J60单片机提供的完整TCP/IP栈基础上实现。此协议栈的最大特点是传输过程由StackTSK控制,在其中可以选用需要的服务类型,并可在中断处加入其他程序代码。为了控制采集过程,协议转换器建立了控制信息表ctrlmsg,整个传输过程由查询ctrlmsg的方式控制。图3是协议转换器通信过程的软件流程图。
协议转换器和上位机的通信是基于TCP连接的,而且协议转换器工作在 TCP服务器状态,因此在程序初始化时应调用TCP协议侦听指定端口。在StackTSK中,运行了采集和传输过程函数SPI2NetTask(),此函数调用了TCP接口函数和SPI读取函数SPIReadTask(),在读入上位机发送的信息后,按照设定好的标志符在控制信息缓冲区将控制信息写入ctrlmsg,按照ctrlmsg中指定的3个模式控制采集过程:
模式1:确认模式后全速采集SPI口数据,发送至上位机,以TCP连接断开作为结束。
模式2:确认模式后读取ctrlmsg中的采集延迟时间参数和采集时长参数,进入条件循环调用SPIReadTask()进行采集和TCP传输。
模式3:确认模式后将ctrlmsg中7个字节的额外控制参数传递发送至SPI口,等待3 s下位机的响应延迟时间后开始采集SPI口数据。
图3 协议转化器软件框图
图3中,采集过程的循环是一个多重的条件循环,主要由TCP连接的状况、发送、接收缓存的剩余容量、ctrlmsg控制信息表等因素决定。模式1和模式 2中,下位机可以用设置SPI中断的方式触发采集。模式3中,下位机在SPI中断后应接收并储存采集参数,通过读取协议转换器SPI口中发送的SPI状态字节来判断其模式。在模式 3中,协议转换器将自动将模式转变为模式1,采集SPI口数据。由于SPI口的数据传输完全由主机的SCK时钟控制,因此下位机如果工作频率过低,将无法和作为主机协议转换器通信,因此协议转换器如遇到频率较低的下位机应配置分频寄存器OSCTUNE,降低频率以保证传输的正常进行。
Winsock是Mcrosoftwindows提供的网络编程接口,它提供了基于TCP/IP套接字的通信方法。在VB中,利用Winsock控件可以很方便的实现和单片机的网络通信。上位机作为TCP通信中的数据接收端,可以用Winsock控件建立一个客户端的套接字SCKClient,在设置好和协议转换器的IP地址和通信端口号后,利用“SCKClient.connect协议转换器地址,端口号”来建立连接,然后用GetData,SendData等命令和协议转换器通信。在应用层协议中,协议转换器和上位机规定了控制信息的起始标识符,上位机靠发送规定格式的控制信息实现对采集的控制,在和协议转换器通信时,协议转换器模式 1状态下终止通信可用断开连接的方式,模式 2和模式 3可用控制信息指定终止传输的时间。
表1 不同容量数据包传输速度测试
在用PC机并口模拟SPI从机,协议转换器工作于模式1,SCK时钟采用主频1/64,上位机PC利用网络调试工具SocketTool和TCP测速软件TCPmon进行测试时,协议转换器将TCP数据包的数据量作了一些改变,表1为传输时长为 1 m in,各容量数据包下的平均传输速度。
由表1可看出:加大数据包的容量可以明显提高传输速度,但与此同时收到数据包的频率会降低。因此在系统要求传输量较大,同时即时性不强时可采用较大的数据包;即时性较强时候,可适当减小数据包的容量。
本文针对目前数据采集系统中传输方面的要求,设计了SPI到TCP/IP协议的协议转换器硬件电路,同时开发了与其配套的应用层程序。经测试此系统可良好的完成工作,实现了数据采集系统中数据的网络传输。
[1] 关守平,姚永.嵌入式系统的网络接口模块设计及应用[J].仪器仪表学报,2007(4):267-269.
[2] 王小菊,潘琢金.嵌入式网络接口模块设计及协议栈实现[J].沈阳航空工业学院学报,2007,24(1):48-52.
[3] 段之昱.嵌入式系统以太网数据传输性能研究[J].天文研究与技术,2007,4(3):266-275.
[4] 虞艳琼.基于SOCKET的通信网网管协议转换器[J].网络与通信,2007,23(4):103-105.
[5] 周砚江,顾焕峰,冯佳良.基于SPI的快速多通道数据采集系统和数字滤波[J].电子测量与仪器学报,2008,22(3): 100-104.
[6] 王海涛,段哲民.多路数据采集与网络远程传输系统实现[J].计算机测量与控制制,2008,16(3):421-423.
[7] 常志勇,李济顺,韩红彪.基于单总线协议的多点测温技术及应用[J].河南科技大学学报:自然科学版,2009,30 (2):35-37.
[8] 汪鹏,汪希平,李文鹏,等.串行 AD芯片MAX 1270在磁悬浮数字控制器中的接口设计方法与应用[J].机电一体化,2009,15(8):29-31.
[9] 纪珍从.基于SPI总线的低频信号数据采集系统的设计[J].机床电器,2008,35(1):5-8.
[10] 叶正清,张志.基于PIC18F97J60的以太网通信接口设计[J].研究与开发,2008,27(12):36-39.