论文部分内容阅读
摘 要:电液伺服控制系统已经在军事领域、航空技术领域和工业自动化领域得到广泛应用。随着网络通信技术的飞速发展,开发了一款基于轻型以太网协议(LwIP)通信的电液伺服控制系统,解决了传统电液伺服控制系统通信速度慢的问题,而且有利于在局域网内实现对多台控制器的同步控制。该系统在疲劳加载试验中得到了很好的应用效果。
关键词:电液伺服控制系统;LwIP;疲劳加载;通信;同步控制
中图分类号:TP275
电液伺服控制系统已经在军事领域、航空技术领域和工业自动化领域占有十分重要的地位。它具有控制精度高、响应速度高、信号处理灵活和应用广泛等优点,可以组成位置、速度和力等方面的伺服系统[1]。传统的电液伺服系统都采用RS232或RS485进行通信,其通信速度很难满足大型伺服控制系统在控制精度和实时性方面的要求。目前,Internet也开始向工业领域发展[2],于是能适用于嵌入式设备的微型网络协议栈应运而生[3]。本文,采用由瑞士计算机科学院开发的LwIP协议栈,将其移植到处理器STM32F407中,负责完成液压控制器与PC机之间的实时通信。解决了传统电液伺服系统通信速度慢的问题,提高了系统的控制精度和实时性,实现了通过PC机在局域网内控制多台液压控制器。
1 系统工作原理
基于LwIP通信的电液伺服控制系统的整体结构如图1所示。该控制系统实现了在局域网内控制多台控制器的功能,本文主要阐述PC机控制一台控制器的原理和过程。PC机为试验员的操作提供友好的人机环境,它需要完成的功能有:标定自传感器采回的数据、设置颤振值、设置阀平衡值、设置各控制参数、发送各参数和命令至伺服控制器、接收伺服控制器上传的数据、监测控制器控制对象的工作状态等等。每台伺服控制器能控制多个作用点。
系统的工作原理:PC机的人机交互界面被打开后,给已在网络中的伺服控制器发送“启动”命令,并将各作用点的控制参数(包括控制方式、控制波形、工作状态、PID参数等等)发送至控制器,接着控制器将从PC机接收到的数据进行解码,然后启动数据采集功能,一方面采集接入控制器的各传感器数据,另一方面采集控制对象的工作狀态,按照PC机的控制要求,由控制器计算每个作用点的控制量并输出,最后再通过网络将各传感器的数据、各作用点和系统的工作状态实时上传给PC机,帮助PC机完成对整个控制系统的监控。
2 系统硬件
2.1 系统模块划分
伺服控制器的整体框图如图2所示。该控制器由八部分组成,分别是:处理器STM32F4、信号调理模块、AD采集模块、开关量输入输出模块、看门狗、LwIP通信模块、DA输出模块和驱动电路模块。
信号调理电路负责对各路模拟信号进行滤波和放大,然后将信号送至AD转换电路;AD采集模块负责将经调理后的模拟信号转换成数字信号,并存储至该模块的FIFO芯片中;开关量输入输出模块负责对油源和液压泵的工作状态进行监测和控制;看门狗模块负责监控程序的正常运行,防止程序进入死循环,在每个定时周期开始时,都要对看门狗计数器清零;LwIP通信模块负责完成与PC机的数据通信;DA输出模块负责将控制器提供的数字控制量转换为模拟量;驱动电路模块负责将作用点的模拟控制量进行一定的叠加,然后进行功率放大,输出到液压伺服阀。
2.2 处理器介绍
伺服控制器的处理器采用STM32F407ZGT6,该处理器基于ARMV7架构的Cortex-M4F内核,主频168Mhz,内部含有1M字节的FLASH和196K字节的SRAM。处理器内部集成有高性能以太网模块,支持通过以太网收发数据,符合IEEE 802.3-2002标准。该以太网模块可灵活配置,支持两种标准接口(RMII—精简的独立介质接口和MII—独立介质接口),可连接到外接的物理层模块(PHY),它适用于各类应用,如交换机、网络接口卡等。该处理器具有灵活的静态存储器控制器(FSMC),应用该控制器可以对外设进行扩展,为了满足不同外设的需求,其读写时序也是可编程的。
2.3 LwIP通信的硬件电路
采用LwIP协议实现伺服控制器与PC机之间的通信,需要一定的物理网络硬件的支持。从逻辑上来看,LwIP分为4层:链路层、网络层、传输层和应用层[3]。在LwIP中,定义了一个网络接口的结构体netif,用来描述一系列的硬件网络接口。
LwIP就是通过该网络接口来处理与底层硬件,即网卡的通信。网卡工作在OSI的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准和数据编码等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、向网络层提供标准的数据接口等功能。数据链路层的芯片称之为MAC控制器。处理器STM32F407内含具有DMA功能的MAC控制器,因此只需添加一个PHY芯片即可。
本系统采用的物理层芯片是DP83848C,它是美国国家半导体公司生产的一个单端口物理层芯片,该芯片遵循Ethernet II和IEEE802.3u标准,内部还集成了数据接收及滤波功能[4]。通过外部的转换装置(RJ45),芯片可以很容易地与双绞线介质相连接,支持精简的媒体独立接口(RMII)通信,也支持媒体独立接口(RII)通信。其封装形式只有48个引脚,有利于通信模块的小型化设计。文中采用的是RMII通信接口。
3 系统软件
本控制系统的软件设计包括四部分:LwIP通信的实现、数据采集的程序实现、控制器控制算法的实现和PC机用户界面的监控程序。LwIP通信通过网络调试助手进行调试;数据采集部分由CPLD直接控制,其程序在isplever下编译和调试,限于篇幅,文中不予阐述;控制器的程序在Keil uVision4下编译和调试;用户界面的监控程序在Delphi 7下编译和调试。 3.1 LwIP通信的实现
在使用LwIP協议通信时,需要建立网络接口结构体netif,通过调用函数low_level_init()来对实际的网卡进行设置。设置的选项有:网卡的硬件地址及其长度,网卡每次传输的最大字节数,初始化网卡中DMA的接收和发送描述符列表,使能MAC和DMA对数据的传输和接收。
在netif中定义了两个函数指针:err_t (* input)(struct pbuf *p, struct netif *inp)和err_t (* output)(struct netif *netif, struct pbuf*p, struct ip_addr *ipaddr)。为了实现LwIP通信,还构建了两个函数low_level_input()和low_level_output(),将它们分别赋给前述的input和output指针。
当网卡中的MAC控制器接收到完整的帧后,MAC会通过DMA将帧存储到系统的存储区,函数low_level_input()一方面将系统存储区中的接收数据包传送到LwIP协议的包缓冲区(pbuf)中,另一方面调用网络层函数ip_input(),该函数对数据包进行校验和截断,然后调用传输层函数udp_input()接收来自网络层的UDP数据包,根据数据包中的IP地址和端口信息找到对应的包缓冲区控制模块(PCB),最后调用这个PCB所对应的回调函数recvcall(),将UDP数据包中的数据段上传给应用程序进行处理。
当应用程序需要发送数据时,应用程序调用udp_send()函数,然后再由该函数请求调用udp_output()函数来完成。在此处进行必须的校验和计算以及填充UDP包头。因为校验和包括IP信息包的源地址,因此在某些情况下会调用ip_route()函数以查找信息包将被传输到哪一个网络接口。网络接口的IP地址将作为信息包的源地址被使用。然后,信息包被移交给ip_output_if()函数,并通过函数netif->output()输出到网络接口层,因为结构体netif的output字段指向函数low_level_ouput(),该函数的作用就是将LwIP包缓冲区中的数据传给MAC控制器。
3.2 控制器程序的实现
系统采用的处理器为STM32F407,基于Cortex-M4内核,程序由C语言编写,编译环境为Keil uVision4。控制器程序的流程图如图3,它主要完成的任务有:对网络模块接收到的数据进行处理,对AD模块采集的数据进行处理,计算需要向各作用点输出的控制量,向PC机发送各传感器的数据、各作用点和系统的工作状态。
控制器程序的初始化操作包括:外部总线的初始化;初始化以太网模块的引脚、时钟、MAC控制器和DMA控制器;初始化LwIP协议栈,利用函数指针指向特定的网络接口;网卡驱动的初始化;初始化下位机的UDP服务器;中断设置和定时器设置;启动AD采集;启动系统的看门狗功能;开关量的输入检测和状态输出。
初始化操作完成后,需要检测PC机的工作状态标志位sendstop,在控制器中将该标志位初始化为0。当PC机用户监控界面被打开,会通过网络接口传送标志位0至控制器;当用户监控界面被关闭,则传送标志位1。若控制器检测到该标志位为1,则退出应用程序;否则继续执行应用程序。为了提高控制的准备性和精确性,控制器采用1ms的定时周期进行工作。
3.3 PC机监控程序
PC机的人机界面采用Delphi 7编写。Delphi是由Borland公司推出的一种可视化编程环境,为编程者提供了一种方便、快捷的Windows应用程序开发工具。控制器和PC机之间的通信采用LwIP协议栈的UDP/IP方式,Delphi中提供了专门的用于UDP通信的控件:UdpSever和UdpClient,分别用做服务器和客户机。UdpSever还提供一个线程OnUDPRead,可以读取控制器通过UDP通信方式上传的数据,为多线程,能同时读取多个网口的数据,便于在局域网内对多台控制器进行监控。
人机界面由主界面和多个子界面共同组成。需要它完成的功能有:对传感器的标定、设置阀平衡值、设置颤振值、设置各控制参数、设置网络参数、发送各参数和命令至控制器、接收并处理控制器上传的数据、显示采集的各通道数据和显示各通道的控制状态等等。
项目中需要通过PC机利用交换机在局域网内对四台控制器进行控制,每台控制器控制最多16个液压阀。PC机与控制器约定的下传数据的格式为:
4 调试
在实验室环境下,将控制器通过交换机与PC机相连,为控制器设置UDP端口号为7,IP地址为192.168.1.14,网卡地址为00-00-00-00-00-02,设置PC机的IP为192.168.1.15,UDP端口号为8。系统能够正常工作,截取被控对象4个作用点的位移监控状态如图4所示。
经测试,传统的RS232串口通信速度只有112Kbit/s,而本系统中网口通信的速度达到2Mbit/s。
5 结论
本文提出的基于LwIP通信的液压伺服控制系统具有通信速度快、实时性好的特点,它解决了传统液压伺服控制系统通信速度慢的问题,而且能实现在局域网内控制对多台控制器的功能。该控制器在疲劳加载试验台上取得了很好的应用效果。
参考文献:
[1]鞠丹.对现代工业企业中液压伺服系统的研究[J].理论广角,2012:247.
[2]王丽侠,樊艳,唐万伟.基于TCP/IP与can总线的多路工业控制器[J].计算机工程应用技术,2010,6(17):4805-4808.
[3]董向阳.基于ARM的LwIP协议栈研究与移植[D].哈尔滨,2009:5.
[4]王晖,周巧娣,章雪挺.基于LwIP的海洋数据采集与传输系统[J].电子技术应用,2012,38(8):26-29.
[5]梅红伟,吴学杰,商秋芳.基于PC104和CPLD的高速/多通道数据采集系统的设计与实现[J].现代电子技术,2006,5(244):152-154,159.
作者简介:黄鸿国(1988-),男,硕士,研究方向:电子技术应用、计算机控制、嵌入式。
作者单位:西南交通大学 牵引动力国家重点实验室,成都 610031
关键词:电液伺服控制系统;LwIP;疲劳加载;通信;同步控制
中图分类号:TP275
电液伺服控制系统已经在军事领域、航空技术领域和工业自动化领域占有十分重要的地位。它具有控制精度高、响应速度高、信号处理灵活和应用广泛等优点,可以组成位置、速度和力等方面的伺服系统[1]。传统的电液伺服系统都采用RS232或RS485进行通信,其通信速度很难满足大型伺服控制系统在控制精度和实时性方面的要求。目前,Internet也开始向工业领域发展[2],于是能适用于嵌入式设备的微型网络协议栈应运而生[3]。本文,采用由瑞士计算机科学院开发的LwIP协议栈,将其移植到处理器STM32F407中,负责完成液压控制器与PC机之间的实时通信。解决了传统电液伺服系统通信速度慢的问题,提高了系统的控制精度和实时性,实现了通过PC机在局域网内控制多台液压控制器。
1 系统工作原理
基于LwIP通信的电液伺服控制系统的整体结构如图1所示。该控制系统实现了在局域网内控制多台控制器的功能,本文主要阐述PC机控制一台控制器的原理和过程。PC机为试验员的操作提供友好的人机环境,它需要完成的功能有:标定自传感器采回的数据、设置颤振值、设置阀平衡值、设置各控制参数、发送各参数和命令至伺服控制器、接收伺服控制器上传的数据、监测控制器控制对象的工作状态等等。每台伺服控制器能控制多个作用点。
系统的工作原理:PC机的人机交互界面被打开后,给已在网络中的伺服控制器发送“启动”命令,并将各作用点的控制参数(包括控制方式、控制波形、工作状态、PID参数等等)发送至控制器,接着控制器将从PC机接收到的数据进行解码,然后启动数据采集功能,一方面采集接入控制器的各传感器数据,另一方面采集控制对象的工作狀态,按照PC机的控制要求,由控制器计算每个作用点的控制量并输出,最后再通过网络将各传感器的数据、各作用点和系统的工作状态实时上传给PC机,帮助PC机完成对整个控制系统的监控。
2 系统硬件
2.1 系统模块划分
伺服控制器的整体框图如图2所示。该控制器由八部分组成,分别是:处理器STM32F4、信号调理模块、AD采集模块、开关量输入输出模块、看门狗、LwIP通信模块、DA输出模块和驱动电路模块。
信号调理电路负责对各路模拟信号进行滤波和放大,然后将信号送至AD转换电路;AD采集模块负责将经调理后的模拟信号转换成数字信号,并存储至该模块的FIFO芯片中;开关量输入输出模块负责对油源和液压泵的工作状态进行监测和控制;看门狗模块负责监控程序的正常运行,防止程序进入死循环,在每个定时周期开始时,都要对看门狗计数器清零;LwIP通信模块负责完成与PC机的数据通信;DA输出模块负责将控制器提供的数字控制量转换为模拟量;驱动电路模块负责将作用点的模拟控制量进行一定的叠加,然后进行功率放大,输出到液压伺服阀。
2.2 处理器介绍
伺服控制器的处理器采用STM32F407ZGT6,该处理器基于ARMV7架构的Cortex-M4F内核,主频168Mhz,内部含有1M字节的FLASH和196K字节的SRAM。处理器内部集成有高性能以太网模块,支持通过以太网收发数据,符合IEEE 802.3-2002标准。该以太网模块可灵活配置,支持两种标准接口(RMII—精简的独立介质接口和MII—独立介质接口),可连接到外接的物理层模块(PHY),它适用于各类应用,如交换机、网络接口卡等。该处理器具有灵活的静态存储器控制器(FSMC),应用该控制器可以对外设进行扩展,为了满足不同外设的需求,其读写时序也是可编程的。
2.3 LwIP通信的硬件电路
采用LwIP协议实现伺服控制器与PC机之间的通信,需要一定的物理网络硬件的支持。从逻辑上来看,LwIP分为4层:链路层、网络层、传输层和应用层[3]。在LwIP中,定义了一个网络接口的结构体netif,用来描述一系列的硬件网络接口。
LwIP就是通过该网络接口来处理与底层硬件,即网卡的通信。网卡工作在OSI的最后两层,物理层和数据链路层,物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准和数据编码等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY。数据链路层则提供寻址机构、数据帧的构建、数据差错检查、向网络层提供标准的数据接口等功能。数据链路层的芯片称之为MAC控制器。处理器STM32F407内含具有DMA功能的MAC控制器,因此只需添加一个PHY芯片即可。
本系统采用的物理层芯片是DP83848C,它是美国国家半导体公司生产的一个单端口物理层芯片,该芯片遵循Ethernet II和IEEE802.3u标准,内部还集成了数据接收及滤波功能[4]。通过外部的转换装置(RJ45),芯片可以很容易地与双绞线介质相连接,支持精简的媒体独立接口(RMII)通信,也支持媒体独立接口(RII)通信。其封装形式只有48个引脚,有利于通信模块的小型化设计。文中采用的是RMII通信接口。
3 系统软件
本控制系统的软件设计包括四部分:LwIP通信的实现、数据采集的程序实现、控制器控制算法的实现和PC机用户界面的监控程序。LwIP通信通过网络调试助手进行调试;数据采集部分由CPLD直接控制,其程序在isplever下编译和调试,限于篇幅,文中不予阐述;控制器的程序在Keil uVision4下编译和调试;用户界面的监控程序在Delphi 7下编译和调试。 3.1 LwIP通信的实现
在使用LwIP協议通信时,需要建立网络接口结构体netif,通过调用函数low_level_init()来对实际的网卡进行设置。设置的选项有:网卡的硬件地址及其长度,网卡每次传输的最大字节数,初始化网卡中DMA的接收和发送描述符列表,使能MAC和DMA对数据的传输和接收。
在netif中定义了两个函数指针:err_t (* input)(struct pbuf *p, struct netif *inp)和err_t (* output)(struct netif *netif, struct pbuf*p, struct ip_addr *ipaddr)。为了实现LwIP通信,还构建了两个函数low_level_input()和low_level_output(),将它们分别赋给前述的input和output指针。
当网卡中的MAC控制器接收到完整的帧后,MAC会通过DMA将帧存储到系统的存储区,函数low_level_input()一方面将系统存储区中的接收数据包传送到LwIP协议的包缓冲区(pbuf)中,另一方面调用网络层函数ip_input(),该函数对数据包进行校验和截断,然后调用传输层函数udp_input()接收来自网络层的UDP数据包,根据数据包中的IP地址和端口信息找到对应的包缓冲区控制模块(PCB),最后调用这个PCB所对应的回调函数recvcall(),将UDP数据包中的数据段上传给应用程序进行处理。
当应用程序需要发送数据时,应用程序调用udp_send()函数,然后再由该函数请求调用udp_output()函数来完成。在此处进行必须的校验和计算以及填充UDP包头。因为校验和包括IP信息包的源地址,因此在某些情况下会调用ip_route()函数以查找信息包将被传输到哪一个网络接口。网络接口的IP地址将作为信息包的源地址被使用。然后,信息包被移交给ip_output_if()函数,并通过函数netif->output()输出到网络接口层,因为结构体netif的output字段指向函数low_level_ouput(),该函数的作用就是将LwIP包缓冲区中的数据传给MAC控制器。
3.2 控制器程序的实现
系统采用的处理器为STM32F407,基于Cortex-M4内核,程序由C语言编写,编译环境为Keil uVision4。控制器程序的流程图如图3,它主要完成的任务有:对网络模块接收到的数据进行处理,对AD模块采集的数据进行处理,计算需要向各作用点输出的控制量,向PC机发送各传感器的数据、各作用点和系统的工作状态。
控制器程序的初始化操作包括:外部总线的初始化;初始化以太网模块的引脚、时钟、MAC控制器和DMA控制器;初始化LwIP协议栈,利用函数指针指向特定的网络接口;网卡驱动的初始化;初始化下位机的UDP服务器;中断设置和定时器设置;启动AD采集;启动系统的看门狗功能;开关量的输入检测和状态输出。
初始化操作完成后,需要检测PC机的工作状态标志位sendstop,在控制器中将该标志位初始化为0。当PC机用户监控界面被打开,会通过网络接口传送标志位0至控制器;当用户监控界面被关闭,则传送标志位1。若控制器检测到该标志位为1,则退出应用程序;否则继续执行应用程序。为了提高控制的准备性和精确性,控制器采用1ms的定时周期进行工作。
3.3 PC机监控程序
PC机的人机界面采用Delphi 7编写。Delphi是由Borland公司推出的一种可视化编程环境,为编程者提供了一种方便、快捷的Windows应用程序开发工具。控制器和PC机之间的通信采用LwIP协议栈的UDP/IP方式,Delphi中提供了专门的用于UDP通信的控件:UdpSever和UdpClient,分别用做服务器和客户机。UdpSever还提供一个线程OnUDPRead,可以读取控制器通过UDP通信方式上传的数据,为多线程,能同时读取多个网口的数据,便于在局域网内对多台控制器进行监控。
人机界面由主界面和多个子界面共同组成。需要它完成的功能有:对传感器的标定、设置阀平衡值、设置颤振值、设置各控制参数、设置网络参数、发送各参数和命令至控制器、接收并处理控制器上传的数据、显示采集的各通道数据和显示各通道的控制状态等等。
项目中需要通过PC机利用交换机在局域网内对四台控制器进行控制,每台控制器控制最多16个液压阀。PC机与控制器约定的下传数据的格式为:
4 调试
在实验室环境下,将控制器通过交换机与PC机相连,为控制器设置UDP端口号为7,IP地址为192.168.1.14,网卡地址为00-00-00-00-00-02,设置PC机的IP为192.168.1.15,UDP端口号为8。系统能够正常工作,截取被控对象4个作用点的位移监控状态如图4所示。
经测试,传统的RS232串口通信速度只有112Kbit/s,而本系统中网口通信的速度达到2Mbit/s。
5 结论
本文提出的基于LwIP通信的液压伺服控制系统具有通信速度快、实时性好的特点,它解决了传统液压伺服控制系统通信速度慢的问题,而且能实现在局域网内控制对多台控制器的功能。该控制器在疲劳加载试验台上取得了很好的应用效果。
参考文献:
[1]鞠丹.对现代工业企业中液压伺服系统的研究[J].理论广角,2012:247.
[2]王丽侠,樊艳,唐万伟.基于TCP/IP与can总线的多路工业控制器[J].计算机工程应用技术,2010,6(17):4805-4808.
[3]董向阳.基于ARM的LwIP协议栈研究与移植[D].哈尔滨,2009:5.
[4]王晖,周巧娣,章雪挺.基于LwIP的海洋数据采集与传输系统[J].电子技术应用,2012,38(8):26-29.
[5]梅红伟,吴学杰,商秋芳.基于PC104和CPLD的高速/多通道数据采集系统的设计与实现[J].现代电子技术,2006,5(244):152-154,159.
作者简介:黄鸿国(1988-),男,硕士,研究方向:电子技术应用、计算机控制、嵌入式。
作者单位:西南交通大学 牵引动力国家重点实验室,成都 610031