基于PC机与STM32的铝箔冷轧厚度控制系统设计
2015-05-25秦继文姚亚夫
秦继文,廖 平,姚亚夫
(中南大学机电工程学院,湖南长沙 410083)
0 引言
随着现代工业技术的发展,对铝箔的质量要求越来越高,而衡量铝箔质量主要有2个指标,即板厚与板形,其中板厚偏差是最为基本也是最为核心的技术指标之一[1]。对于板厚控制,传统轧制过程中铝箔在线厚度大多使用单片机系统或PLC来测量,但前者存在集成度不高、稳定性不好等问题,而后者成本较高。根据现场轧机具体情况选用了基于ARM内核的STM32芯片设计了厚度在线检测系统,且增加了以太网通信模块实现了与主控站间的高速通信,使主控系统对板厚的实时监控成为可能。同时提出一种改进的PID控制算法用于板厚自动控制策略中,最后讨论了在佛山某铝业公司1 450 mm冷轧机上的实际使用效果。
1 板厚控制基本原理
铝箔厚度控制系统为闭环系统,铝箔经过工作辊轧制后在出口处先经过板形仪然后由安装在板形仪之后的厚度探测器检测带材厚度,最后由收卷机将铝箔卷起。板厚的测量采用非接触式的X射线测厚仪,X射线穿透物质时的衰减规律是X射线测厚理论基础[2]。探测器X射线管发射出的X射线经过铝箔后,射线强度会被削弱,其射线强度I与铝箔厚度d之间的关系可用式(1)表示:
式中:I0为X射线入射时的信号强度;μ为铝箔对X射线的衰减系数。
故通过检测透过铝箔衰减后射入X射线检测器的射线强度,即可计算出铝箔的在线厚度。
2 测厚系统硬件设计
2.1 测厚电路
检测器可将X射线转换成可见光至紫外线的波长范围内的信号,通过光电倍增管将微弱的光信号转换为电压信号[3]。测厚电路如图1所示,在铝箔厚度为1 mm时的电压信号只有200 mV左右,而STM32微控制器的A/D采样范围为0~3.6 V,因此需要使用前置放大电路对输入的电压信号进行放大,使之与A/D的采样范围相匹配,以提高测量精度。这里选用高灵敏度、高输入阻抗的放大器OP07,它由传统的三运算放大器发展而成,具有体积小、功耗低、噪声小等特点。信号先经过由OP07放大器构成的电压跟随器,考虑到其中会有一些空气中的杂波信号,增加1个低通滤波电路滤掉杂波,保留有用信号。然后送到STM32微控制器的12位ADC输入通道进行电压采样,采样后的数据在微处理器内部经过处理和转换得到被测铝箔的厚度值。
2.2 通信接口电路
图1 厚度测量放大滤波电路
图2 DM9161A网卡接口电路
由于主控部分由工控机完成,包括控制量的计算、参数设定和界面组态,因此需将STM32中测量得到的铝箔在线厚度值实时地传送到工控机中,为满足数据传输过程的可靠性和实时性要求,选择基于TCP/IP协议的以太网通信。通信电路如图2所示,STM32具体型号为STM32F107VCT6,它内部集成了高性能以太网模块,该模块支持简化的独立于介质的媒体接入接口(RMII),可连接到外部物理层(PHY)网络接口芯片,这里选择10 Mbit/s、100 Mbit/s自适应以太网物理层的、低功耗、高集成度的收发芯片DM9161A。然后与网口HR911105A相连,该网口内部集成有网络变压器,具备自动翻转功能,可自动识别收发信号并自动去适应。
3 厚度控制策略及系统软件设计
3.1 厚度控制策略[4]
冷轧机的板厚控制通过液压装置调整轧辊辊缝大小实现,通过位置闭环进行控制[5]。由于被控对象特性比较复杂,如果参数调整不当,将会导致系统不停振荡。故压力闭环控制采用改进的PID调节算法,具体实现方法为预先设定3条控制规则,根据当前的厚度偏差Ten(k)及偏差的变化率ΔTen(k)的大小决定是否需要更改比例系数Kp、积分时间Ti及修改的方式。
常规PID控制器的算法为[6]:
式中:p(k)为第k次采样时刻的输出;Ten(k)为第k次采样时刻的厚度偏差值;Ten(k-1)为第k-1次采样时刻的厚度偏差值;Kp为比例系数;Ti为积分时间;Td为微分时间;T为采样周期。
现在设计3条控制规则:
(1)若|Ten(k)|<ε1,且|ΔTen(k)|< ε2,则 Kp(n)=Kp(n -1),Ti=Ti(n -1);
(2)若|Ten(k)|≥ε1,且|ΔTen(k)|≥ε2,则 Kp(n)= λ1[Kp(n-1)-1],Ti=λ2[Τi(n-1)+1];
(3)若|ΔTen(k)|<ε3,且 ΔTen(k)·ΔTen(k-1)≥0,则 Kp(n)=λ1[Kp(n-1)+1],Ti=λ2[Ti(n-1)-1]。
规则1表示如果偏差和偏差变化率都在允许范围内,则保持原控制参数不变。规则2表示如果偏差和偏差变化率太大,则应减少比例积分作用。规则3表示如果为单调过程,且偏差变化率太慢,则应加强比例积分作用。其中ε1、ε2、ε3是经验指标,通过测试调整得到;λ1、λ2是加权因子,可在线修正。控制器原理图如图3所示。
图3 改进PID控制原理图
3.2 主控程序设计
系统软件用Visual C++6.0基于微软基础类库(MFC)方式开发,采用多线程技术编程,根据不同的任务将程序分为几个不同的工作线程:
(1)界面工作线程。主要用来配置轧机系统工作参数,主要包括铝箔合金号、铝箔入口厚度、铝箔出口设定厚度、开卷张力、开卷速度、包角辊包角等重要参数。同时也作为人机交互的接口,通过自主编写的ActiveX实时趋势曲线控件来实时显示铝箔的在线厚度。
(2)铝箔厚度自动控制工作线程。这是系统最核心的部分,按照上一节中提出的控制策略,运用改进后的PID控制算法来进行铝箔轧制过程中在线板厚的闭环实时控制。
(3)以太网通信工作线程。此工作线程为以太网客户端程序,采用基于TCP(面向连接)的Socket编程,Windows Sockets是Microsoft Windows的网络程序设计接口,以动态链接库的形式提供。
具体程序流程如下:
(1)通过调用 Windows库函数 socket(AF_INET,SOCK_STREAM,0)来创建套接字:sockClient。第1个参数指定地址族,对于TCP/IP协议的Socket,它只能是AF_INET(也可写成PF_INET);因为程序采用的是基于TCP协议的网络程序,所以第2个参数用SOCK_STREAM指定Socket类型为流式套接字;最后一个参数为0,则该socket函数会根据地址格式和Socket类型自动选择合适的协议;
(2)向服务器端(STM32)发出连接请求。对于客户端来说,它不需要绑定,可以直接连接服务器端。需先定义一个地址结构体(SOCKADDR_IN)变量:addrServer,并对其成员变量赋值,填写服务器端(STM32)的IP地址和端口,因为在STM32测厚系统中已将DM9161A网卡芯片IP地址设置为192.168.1.6,并绑定在23号端口上等待客户的请求到达,所以这里addServer地址结构体的IP地址和端口号分别为192.168.1.6和23,然后通过调用库函数 connect(sockClient,(SOCKADDR*)&addrServer,sizeof(SOCKADDR))与服务器端建立连接;
(3)与服务器端(STM32)进行通讯。当连接建立以后,就可以通过调用库函数 recv(sockClient,recvBuf,100,0)来接收服务器端(STM32)发送的铝箔厚度数据,其中recvBuf是1个指向缓冲区的指针,用来保存接收的数据,100是缓冲区的长度;
(4)关闭Socket。当需要停止通信时只需调用closesocket(sockClient)即可关闭套接字,释放为此套接字分配的资源。
3.3 测厚及以太网通信程序设计
铝箔厚度的测量采用STM32F107VCT6内部自带的A/D转换模块,是1个12位的逐次逼近型模数转换器,程序中的A/D转换以连续模式执行。ADC的结果可以左对齐或者右对齐的方式存储在16位数据寄存器中。ADC的结果是12位二进制数,最小转换结果为0x0000,最大为0x0FFF,所以用1个16位的变量来保存测量结果。
STM32测厚系统与主控制器工业PC机基于TCP/IP协议的以太网通信中,STM32作为服务器端向(客户端)工业PC机发送经A/D转换后的铝箔厚度数据。在下位机端采用LwIP协议栈来实现。LwIP协议栈是一套用于嵌入式系统的开源轻量级TCP/IP协议,具有移植性强、资源占用率低的优点[7],LwIP实现的重点在于保持TCP协议主要功能的基础上减少对RAM的占用,一般它只需要几百字节的RAM和40K左右的ROM就可以运行,这使得LwIP协议栈非常适合在相对低端的嵌入式系统中使用。程序中应用程序的编写采用基于回调函数编程的方式,此时只需移植内核核心[8]。
主要工作包括:
(1)完成协议栈内部使用的所有变量类型的定义,内核使用自定义的数据类型,可以保证协议栈的平台无关性;
(2)另外需根据编译器特性定义结构体封装宏,禁止编译器的地址自动对齐,这样可避免数据字段在结构体中的偏移量发生不可预知的改变;
(3)协议栈内核参数的配置,完成几个关键宏定义,由于未移植操作系统需将NO_SYS宏定义为1,另外有内存堆大小及允许TCP协议使用的最大缓冲区长度的定义,分别定义为10 K和1 K字节;
(4)最后是网卡驱动的编写,LwIP源码中ethernetif.c文件提供了1个框架形式,以伪代码方式给出,只需根据DM9161A的网卡特性完善几个函数即可。主要包括3个函数,low_level_init为网卡初始化函数、完成网卡复位及MAC地址的设置等;low_level_output为网卡数据包发送函数,将网卡发送缓冲区中的数据以pbuf包的格式发送到网络回路中;low_level_input为网卡数据包接收函数,将网卡接收缓冲区的数据读取出来,并封装为pbuf包格式递交协议栈内核处理。
LwIP移植好后就可在用户程序部分写以太网服务器端程序。首先调用内核函数lwip_init初始化协议栈,并通过内核函数 netif_add 把网关地址192.168.1.1,服务器 IP 地址 192.168.1.6及子网掩码 255.255.255.0 等参数注册到网络接口dm9161a_netif结构体,并将该网络接口添加到协议栈的网络接口链表中,再通过netif_set_up函数使能网卡,这样网卡就可以用了。然后就可以建立TCP服务器了,步骤如下:
(1)调用协议栈内核函数tcp_new新建1个TCP控制块;
(2)调用内核函数tcp_bind给创建的TCP控制块分配IP地址192.168.1.6和端口号23,即将此控制块与 DM9161A 网卡的23号端口绑定;
(3)调用内核函数tcp_listen使TCP控制块处于数据监听状态;
(4)调用内核函数tcp_accept指定有连接到达(即收到客户端连接请求)的响应函数,在此响应函数中可通过tcp_recv配置接收到网络数据包的回调函数到LwIP协议栈。在STM32与PC机通信过程中,可以在此回调函数中不断调用tcp_write将所测的铝箔厚度值传给PC机,然后由客户端程序去处理数据。
下位机整个程序流程包括外设及系统时钟初始化、配置系统滴答定时器、A/D转换模块初始化、STM32以太网模块初始化、协议栈初始化、DM9161A网卡初始化并使能、建立TCP服务器、进入循环、采集并发送铝箔厚度值。
4 数据分析
板厚控制系统投入使用之后,在板厚控制上发挥出了较大的作用,图4显示了冷轧机在入口厚度为500 μm,出口厚度设定值为320 μm,铝箔带材宽度为995 mm时的控制效果。图中纵坐标为相对厚差值,即厚度偏差与出口预设厚度的比值,用百分数表示;横坐标为铝箔宽度值,随着轧制的进行,实时趋势曲线从右往左不断移动,曲线最右边的1点即为当前时刻的相对厚差。从图中可以看出,采用了这套厚度控制系统后,在入口厚度为500 μm、出口厚度为320 μm时,相对厚差基本都能控制在±2%以内,即绝对厚差范围为±6.4 μm,达到了预期的铝箔厚度控制目标,结果表明该系统和所提出的控制策略能够满足实际生产的需求。
图4 铝箔相对厚差实时趋势曲线
5 结论
通过有机结合传感器与测试技术、计算机测控技术、单片机技术及模拟电子技术构建了板厚控制系统,并在改进的铝箔厚度控制策略的基础上,采用多线程技术编写了系统控制软件,PC机与下位机STM32采用客户机/服务器模式的以太网通信,STM32服务器端利用LwIP协议栈实现网络通讯。在佛山某铝业公司的生产现场经过一个多月的试运行,验证了该系统不仅能达到预期的控制精度,而且以太网通信的应用很好地保证了系统的实时性。目前系统已投入实际生产,当出口厚度为0.15~0.35 mm时,铝箔厚度绝对偏差在±8 μm内的比例已达到98%以上。
[1]张磊,李谋渭,刘鸿飞.基于IoWorks的软逻辑实时控制系统.仪器仪表学报,2009,30(2):391 -395.
[2]徐卫国.X射线测厚仪在双机架可逆式冷轧机中的应用.仪表技术与传感器,2007(12):30-31.
[3]靳其兵,江晶.薄膜X射线测厚仪.仪表技术与传感器,2007(5):18-19.
[4]王君,张殿华,李建平,等.中厚板轧机液压辊缝控制系统研究及其PLC 实现.东北大学学报(自然科学版),2001,22(4):435 -438.
[5]谷德昊.单机架四辊铝带冷轧机自动厚度控制系统的研究:[学位论文].沈阳:东北大学,2008.
[6]杨德刚,姜磊,贾文杰.数字PID与其算法改进的研析.中国科技信息,2010(14):102-104.
[7]徐鑫,曹奇英.基于LwIP协议栈的UDP协议分析与优化.计算机应用与软件,2011,28(3):246 -249.
[8]张齐,劳炽元.轻量级协议栈LwIP的分析与改进.计算机工程与设计,2010,31(10):2169 -2171.