基于Web的分布式窑炉温控器设计
2018-07-31王利恒易金平王志航
王利恒,易金平,王志航
(武汉工程大学 电气信息学院 智能与网络化实验室,武汉 430205)
窑炉是玻璃、陶瓷等烧制品的重要生产设备。合理地控制窑炉各项生产参数,既可以节约能源又可以保证产品质量。大型窑炉的温度测点多,燃烧控制点分布广。计算机集成控制系统虽然可以很好解决多回路控制问题[1],但集中控制带来了大面积故障的风险。实际的控制系统仍然以就地的温度控制器加远程计算机管理为主。
本文研究并设计了一款基于Web技术的分布式窑炉温控器,可以直接利用浏览器来监控并管理温控参数[2]。利用该温控器可以实现扁平化的智能分布式窑炉控制系统。
1 温控器的系统设计
窑炉是一个参数分布、热惯性较大的热工对象[3]。为了使窑炉均匀加热,减少温度梯度,往往一个温度测点对应多路烧嘴。因此控制器采用了一路温度采集八路烧嘴控制输出的结构形式。系统框图如图1所示。
图1 控制系系统框图Fig.1 Block diagram of control system
温度采集使用热电偶。烧嘴控制输出使用数字量的Bang-Bang控制,在程序上可以使用长周期的PWM信号作为输出控制。为了扩展控制器的实用性,提供了一路标准的4~20 mA模拟量输出。该路输出可以通过软件设置成温度输出或控制量输出。当设置成温度输出时,控制器在作为温控器的同时可以提供温变功能。当设置成控制量输出时,该控制器可以作为一个普通的温度调节器使用。
该控制器提供两种通信接口:一路基于RS485的ModBUS总线通信接口;一路以太网总线通信接口。本文主要探讨基于以太网接口的Web Server的通信控制。
2 输入输出通道设计
2.1 温度输入通道
炉窑工作时温度可达1000℃以上,可选用测量在0~1300℃范围内的K型热电偶作为炉窑的温度传感器。热电偶的输出热电势不仅与测量端的温度有关,而且与冷端的温度有关,冷端在炉窑工作同时易受环境温度的影响,从而产生测量误差,为弥补热电偶存在的非线性、冷补偿等缺陷,通常需要在电路上做冷端补偿。本设计使用MAX6675芯片作为热电偶输入通道芯片,其外围电路如图2所示,该芯片内部集成的冷端补偿电路(补偿范围为-20℃~80℃)、非线性矫正电路,可以直接将热电偶输出的温度信号转换成数字量信号[4]。精简了外围电路的同时,提高了性能和一致性。
图2 热电偶输入通道Fig.2 Thermocouple input channel
2.2 烧嘴控制输出通道
烧嘴燃烧只有两种状态:点火燃烧和熄火停工。因此烧嘴控制是一个开关控制,要么工作(ON),要么不工作(OFF)。对于这样的执行机构,典型的数字控制算法为Bang-Bang控制算法,根据控制量来确定执行机构在一个控制周期的工作时间来完成控制。因此可以使用继电器的通断来控制烧嘴的工作。
由于窑炉一个温度测点对应多路烧嘴,所以控制器设计有8路上述的开关控制通道输出 (如图3),可以兼容8路以下的所有窑炉控制对象。
图3 一路烧嘴控制输出通道Fig.3 One-way burner control output channel
3 控制算法设计
由于温控器需要控制8路烧嘴,所以控制算法分为两步。第一步使用经典的PID计算出控制量(0~100%);第二步使用更具控制量的Bang-Bang控制算法来确定各烧嘴的工作时间和相位[5]。
3.1 控制量输出
控制算法使用时间最优PID算法,设被控量偏差为e(k),设定输入为r(k),系统输出为y(k),则控制量输出u(k)表达式为
当系统偏差大于设定阈值α时,控制量输出100,对应Bang-Bang控制的状态ON;当系统偏差小于设定阈值-α时,控制量输出0,对应Bang-Bang控制的状态 OFF;当系统偏差∈[-α,α]时,控制量有PID算法计算得到。
3.2 8路Bang-Bang控制算法
与PID相结合的Bang-Bang控制算法,就是根据控制量来决定烧嘴的工作状态。对于每一路烧嘴来说,控制量U=80时,则控制该路烧嘴在一个周期T里,0.8T的时间处于ON,0.2T的时间处于OFF。
对于8路(多路)烧嘴来说,如果所有的烧嘴都同步控制,那就是烧嘴同时燃烧,同时熄灭。这样输出就会出现较大的波动,为了得到较好的控制品质,使用烧嘴在一个周期内依次按控制率进行工作的模式。其控制时序如图4所示。每个烧嘴在一个控制周期处于工作(ON)状态总时间为U*T/100,每一个烧嘴与前面一个烧嘴的相位差为T/8。
图4 Bang-Bang控制8路烧嘴时序图Fig.4 Bang-Bang control timing chart of eight burner
一旦确定控制周期T,每路控制输出就是一路PWM输出。根据实际的控制烧嘴数量,就可以确定每路PWM输出的相位差,这样就完成了每路的Bang-Bang控制。由于窑炉温度是一个大惯性系统,通常控制周期T不宜选的太小,一般在30~120 s之间。
4 Web Server的实现
由于本控制器需要提供远程设置和操作,以便实现分布式控制的要求。为了减少对客户端的要求,控制通过Web Server来实现,远程只需要浏览器就可完成设置和操作。要实现Web Server,必须完整地实现TCP/IP网络的5个协议层。STM32F407内部集成了ETH控制器,通过外接一片PHY层芯片,就具备了实现以太网通信的硬件条件。通过软件可以实现TCP/IP协议栈以及Web Server的应用开发[6]。系统各部分在TCP/IP模型中的对应关系如图5所示。
图5 嵌入式网络协议层Fig.5 Embedded network protocol layer
LAN8720芯片是一片支持RMII接口的PHY层实现芯片,在TCP/IP模型中处于物理层的位置。STM32F407集成的MAC控制器和STM32F407的ETH驱动库函数实现了数据链路层功能。目前对于TCP/IP协议族有很多实现版本,LWIP就是一个开源的轻量级TCP/IP协议栈的实现,非常适合嵌入式系统中的应用,而在LWIP-APP中提供了Web Server的实现。要想实现一个Web控制器,就要完成LWIP的移植和应用程序的开发。本设计就是基于LWIP来实现的。
LWIP的移植就是要使LWIP协议栈能运行在指定的硬件平台上,因此需要完成物理层的初始化以及协议层和物理层的连接工作。完成LWIP的移植工作,就可以实现一个嵌入式的Web Server了[7]。整个系统工作框图如图6所示。
首先根据应用需求使用网页编辑器设计出控制器浏览页面,此时一般是.htm、.html、.shtm等类型的文件。需要通过转换工具(makefsdata.exe)将其转换成C语言文件,和主程序代码一起编译并下载。
图6 Web server工作框图Fig.6 Web server block diagram
当客户浏览器通过网络访问Web Server时,Web Server将网页数据传送给客户浏览器。通过网页编辑器编辑的网页数据是静态数据,而控制器需要实现动态数据以及与客户端的交互,比如:发送给客户浏览器的是实时的测量数据,客户端可以通过网页设置控制器参数。这种动态交互式是通过服务器端嵌入(SSI)技术和公共网关接口实现的[8]。
4.1 实时数据的显示
实时数据显示是通过SSI技术实现的。比如需要在浏览器上实时显示当前温度值,在编辑网页文件时,在要显示温度的位置插入一条SSI指令:,其中t是 SSI标签(tag)。 对于支持SSI指令的 Web Server,将调用 SSIHandle()函数来处理这条指令,因此在函数中完成温度数据的采集(在实际控制器中,由于控制实时性的要求,温度采集使用单独线程实现)并返回温度值给服务器,比如“t=30.6℃”。服务器将实时的温度值代替源网页中的SSI标签发送给浏览器客户端,所以在浏览器客户端就可以监测到实时温度值。SSI工作流程如图7所示。
图7 SSI技术工作示意Fig.7 Schematic diagram of SSI technology
4.2 客户端设置参数
客户端设置参数功能通过CGI技术实现。服务器端将表单和对应的CGI代码关联。当客户端通过表单设置好参数并提交,此时提交给服务器端的将是一个带CGI代码名称和参数的URL,如图8所示。服务器对该URL进行解析,得到处理该URL的CGI函数,以及传递给该函数的参数。通过函数代码完成参数的设定工作。整个CGI程序的执行过程如图8所示。
图8 CGI程序的执行过程Fig.8 Execution of the CGI program
4.3 客户端测试
温控器支持DHCP,在有DHCP服务器的网络里,可以动态分配IP。在动态获取IP地址失败后,会使用预置的静态IP地址[9]。访问温控器必须通过IP地址访问。图9是温控器的参数显示页面和设置页面。
图9 温控器的远程登录测试Fig.9 Remote login test for the thermostat
之所有要设置两个页面,是由于显示参数需要实时更新,因此显示页面设置了每秒自动刷新一次的代码。而设置页面需要用户设置完参数才能提交。所以为了互不干扰,分成两个画面设计。
5 结语
通过控制器的实验测试,该控制器可以直接控制多路烧嘴,既具备传统控制器的温控功能,同时又可以实现实时远程监控和设置。在用于小规模的分布式控制系统中,具有成本低,系统结构简单,使用方便,实现对被控设备的监测、控制以及诊断,可应用于工业控制等多个领域。