基于以太网的电热炉温远程控制系统设计

更新时间:2024-06-03 22:18:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

摘要

本课题的基本任务是研究基于以太网的电热炉温远程控制系统设计。能远距离对电热炉的温度实施有效控制。系统主要由被控对象(电热炉)、温度控制器和客户浏览器三部分组成。在被控对象和温度控制器之间设置过程控制接口,过程控制接口包括温度检测装置和调功器,温控器由单板机BL2000构成,完成接收客户端的请求和温度控制的功能。温度控制采用PID控制策略。BL2000通过自身的以太网接口与网络连接。客户浏览器完成温度显示和参数设置的功能,通过以太网,将设置参数(恒温值、PID参数)传送给BL2000,实现远程监控。 系统设计:主要确立总体方案,介绍了各个模块作用,系统的原理框图和系统工作流程图。

关键字:以太网 ;远程控制 ;电热炉

目录

第一章 绪论 ........................................................ 2

1.1 选题的背景与意义 ............................................ 2 1.2 相关知识简介 ................................................ 2

1.2.1 BL2000简介 ........................................... 2 1.2.2 Dynamic C简介 ........................................ 4

第二章 温度控制系统设计 ............................................ 6

2.1系统总体设计 ................................................ 6 2.2系统设计要求 ................................................ 6 2.3 总体方案的确定 .............................................. 6

2.3.1系统的原理框图 ........................................ 8 2.3.2系统工作流程图 ........................................ 9 2.4 嵌入式WebServer讨论 ........................................ 9 第三章 系统硬件电路设计 ........................................... 12

3.1 系统硬件的总体结构设计 ..................................... 12 3.2 系统硬件子模块的设计 ...................................... 13

3.2.1实验电路的连接图 ..................................... 13

第四章 温度控制系统主界面设计 ..................................... 14

4.1 系统主界面的设计 ........................................... 14

4.1.1 温度显示页 ........................................... 14 4.1.2 参数配置页 ........................................... 15 4.2 温度控制程序 ............................................... 17 第五章 温度控制系统数据采集及显示 .................................. 20

5.1数据采集步骤 ............................................... 20 5.2温度控制系统的显示 ......................................... 21 结果分析 ........................................................... 22 参考文献 ........................................................... 23

1

第一章 绪论

1.1 选题的背景与意义

在工业生产过程中,加热炉温度的控制是十分常见的。一般的温度控制器大都功能简单、固定;只能修改一般的参数,不能根据实际环境修改控制程序,控制效果不甚理想。单片机采用互连网进行通讯与控制具有很好的应用价值,可开拓单片机和互连网应用的新领域。它可以很容易地实现远程的监视控制。同时单片机采用浏览起进行监控也将给软件的编程带来极大的便利。互连网的技术大多应用在商业领域的信息传递,但目前也开始越来越多的向工业控制领域发展。单片机以其以及小、功能强、灵活可靠而广泛应用于工业控制和电器产品中,远程控制是其重要的内容之一。现在单片机也开始向互连网方向发展,以求实现远程控制。传统的实现单片机远程控制的方法一般是采用串行口RS232、RS485、和CAN总线等。如果将单片机与调制解调器连接,这样便可以与远程计算机进行通讯联系,形成一种新的远程控制方案。因而,根据现场实际,开发一种既照顾现场情况又考虑远程通讯的新的单片机控制方案将具有重大的意义。

Wildcat为OEM设计者提供了低成本、高性能的单板计算机以实现以太网接入。这些紧凑式板卡具有许多嵌入式控制和监视应用优点。所有的BL2000系列模块可以使用恰当的辅助硬件通过以太网/互连网进行编程和调试。带有10Base—以太网口的系统可以直接通过网络或互连网进行控制和监视,能够对远端设备开发接口,能够提供网页服务,还能够发送E-mail.BL2000系列对于大系统来说作为一个具有网络功能的服务处理器也是非常理想的。BL2000系列的编程使用工业级的Z-Word的Dynamic C软件开发系统。

1.2 相关知识简介

1.2.1 BL2000简介

Wildcat为OEM设计者提供了低成本、高性能的单板计算机以实现以太网接入。这些紧凑式板卡具有许多嵌入式控制和监视应用优点,电路板尺寸为 3.43x4.15英寸,非常适合系统集成。BL2000具有4种版本—其中两种具有以太

2

网接口,另外两种没有以太网接口—所有BL2000都具有28个数字I/O(包含5或7个双功能模拟、数字输入), 3个RS-232/485串行口, Rabbit2000 CPU(22.1MHz,128K的SRAM及256K的Flash(可扩展),在板的单刀双掷继电器输出,LED显示,7个定时器,备用电池的时间/日期时钟。

对于最常见的应用,BL2000和BL2020模块包含4通道12-位A/D输入,5通道双功能输入,以及2通道12-位D/A 输出。对于不需要高精度模拟数据采集的情况可以选用BL2010及BL2030 ,具有4通道10-位A/D输入,7通道双功能输入,没有 D/A 输出。双功能输入是由软件设置的,可配置成模拟输入或带域值的开关量输入。

BL2000的特点: 带有RJ-45插口的10Base—T以太网接口,简便的连通性,快速22 MHz时钟,高达28个数字I/O,A/D和D/A4个串口 128K的SRAM/256K的Flash (可扩展的)在板继电器有后备电池的时间/日期时钟

BL2000的性能指标: 微处理器 22.1MHz SRAM 128K 闪存 256K 以太网口 10Base-T RJ-45 链接上以后能激活显示灯 ,数字量输入 11个:±36VDC带保护 ,数字量输出10个:在40VDC下每通道可输出200mA, 模拟量输:4路输入阻抗1兆欧 12位分辨率 输入范围±10VDC(范围可修改) 4路输入阻抗1兆欧 10位分辨率 输入范围±10VDC(范围可修改) 4路输入阻抗1兆欧, 12位分辨率, 输入范围 ±10VDC(范围可修改), 4路输入阻抗1兆欧, 10位分辨率, 输入范围 ±10VDC(范围可修改), 模拟量输出 2路12位的分辨率输出范围0-4VDC(范围可修改) 无 2路12位的分辨率输出范围0-4VDC(范围可修改) 无 双功能模拟量或数字量输入 5路12位分辨率 输入范围0-48VDC(范围可修改) 7路10位分辨率 输入范围0-48VDC(范围可修改) 5路12位分辨率 输入范围 0-48VDC(范围可修改) 7路10位分辨率 输入范围0-48VDC(范围可修改) 继电器输出 单刀双掷1A在30VDC下, 0.3A在120VAC 继电器驱动于数字量输出0,并联 存储器I/O 无 串口 1个RS-485端口;2个3线的或1个5线的RS-232端口;编程端口 连接器 RJ-45以太网;电源插口;串口和I/O口的螺丝形端子;10管脚的编程接口 电源插口,串口和I/O口的螺丝形端子;10管脚的编程接口 显示灯 8个:电源开,微处理器,以太网连接,以太网可用,输出0-3的4个指示状态灯 6个:电源开,微处理器,输出 0-3的4个指示状态灯 定时器 5个:4个8位定时器和1个带有2个匹配寄存器的10位定时器(5个定时器成对级联) 时间/日期时钟 有(天/时/分/秒) 看门狗/监

3

视器 有 备用电池 有,在板上的电池和电路,支持RTC和SRAM 提供的电压 最初的:9-40VDC或24VAC ±10%,在板的转换调节器 功率 低于1.5瓦特的标准功率 板子尺寸 板子:3.43x4.15x0.82英寸 (87x105x21mm) 带外壳:4.9x5.6x1.1英寸 (124x142x28mm) 环境 -40°C~70°C, 5~95%湿度, 无结露。

1.2.2 Dynamic C简介

Dynamic C 是一个专门为Z-World产品创建的集成的C 编译器、编辑器、链接器、装载器和调试器。它的设计是用来替代昂贵的电路仿真器,Dynamic C 允许您快速开发您的应用,加快产品投放到市场的时间。 对于标准C来说,Dynamic C的改进和差异在于使得在功能强大的嵌入式系统上进行实时编程变得非常容易。 语言的扩展包括多任务和优先多任务的的构造,当供电失败时,能够保护写入变量, 能够写入到中断程序中去。标准C函数库,特定板的外围驱动,芯片外围设备,以及其他的性能以源代码的形式包含在Dynamic C中。完全支持汇编语言,在对时间要求较高的应用中,汇编代码可以方便的与C代码混用。

产品性能:(1)带单步编译、链接和目标下装的快速编译;(2)全功能的源代码和/或 汇编级的调;(3)源代码库中的数百个函数和例题程序;对浮点运算和先验函数的快速支持;RS-232 和 RS-485 串行通信;模拟和数字I/O驱动;I2C,SPI, GPS, 加密, 文件系统 (在以前的版本中 );(4)包括多任务和优先多任务的强大的语言扩展能力;在没有Dynamic C的时候可以利用装载应用程序将二进制映像装载到Z-World目标板中;通过使用库函数特殊形式创建“函数描述”块内容来创建自己的源代码库和扩展在线帮助;(5)生成程序使用最多512K的SRAM存储数据,使用512K的闪存或EPROM存储代码。

Dynamic C 新特性:(1)堆栈语法跟踪-在单步或断点程序停止时,能显示程序中函数调用路径。同时支持显示堆栈自动变量和参数的名称和值;(2)增强表达式监视-在键入结构体名字后,其值能够以树形结构显示。不在需要单独添加结构体各个成员;(3)执行跟踪-支持跟踪代码执行并且保存跟踪信息在宿主 PC 中。跟踪点可以是任何函数调用,任何一行 C 代码或用户设置的跟踪点。结果也可显示在跟踪窗口;持久的断点-当编辑模式和调试模式切换及文件被关闭并重打开,断点信息被保留。支持编译模式下设置断点;(4)运行目标锁定-如果程序没有被改变,允许不经编译和下载,重进编译模式。有助于当与目标通讯失效

4

或目标程序崩溃恢复调试;(5)增强内存下传-程序单步 在每一行 C 或汇编语句执行时,被改变的数据在 Memory Dump 窗口被以高亮或用户定义的颜色显示; (6)TCP/IP 提高-减少 TCP/IP 对 Root 内存的使用并提高 TCP/IP速度;(7)SMTP 认证-支持 E-Mail 服务器认证。

5

第二章 温度控制系统设计

2.1系统总体设计

主要设计内容为:温度控制系统设计、系统硬件电路设计、温度控制系统主界面设计、温度控制系统数据采集及显示。

(1)温度控制系统设计:控制系统与以太网直接连接,作为一个网络节点与其他节点通信,能远距离对电热炉的温度实施有效控制。

(2)控制系统的硬件原理设计:系统硬件的总体结构包括两个方面:一是采用PT100铂热电阻为温度检测元件的单板机温度控制系统设计,二是温度控制电路设计。

(3)温度控制系统主界面设计:通过对加热电阻丝的电源通断来实现对温度的控制。

(4)温度控制系统数据采集及显示:现场温度通过Pt100采集,得到相应的电流模拟量通过温度控制仪表传输给电流表显示和双向硅。

2.2系统设计要求

(1)温控器以单片机为核心; (2)恒温值设定范围:600---1000; (3)精度等级:0.5级; (4)显示位数:4位;

(5)能与以太网直接连接,能远程设置控制参数和实际温度等数据; (6)控制策略采用PID控制、模糊控制或二者结合。

2.3 总体方案的确定

本次课题的基本任务是研究基于以太网的炉温远程控制系统设计,能远距离对电热炉的温度实施有效控制。即控制现场与以太网连接,远程设置控制参数和上传控制参数和实际温度等数据。于是有以下图2.1的客户机/服务器模型:

6

图2.1 客户机/服务器模型

客户机/服务器的程序设计模式在网络程序中被大量的应用,本系统也采用这种设计方法。这种设计模式整个系统分为两大部分——服务器部分和客户机部分。客户机向服务器提出请求,服务器对请求做相应的处理,将结果返回给客户机。Web服务器一方作为主机,客户机一方作为从机[16]。在系统中,当用户在远程客户机上打开浏览器程序(Microsoft Internet Explorer),并在浏览器中输入指定IP地址(如http://202.197.240.100),浏览器便向该地址指向的Web服务器发出请求,通过网络传输,送到与控制现场连接的Web服务器,也即IP地址指向的Web服务器。Web服务器接到浏览器的请求后,把URL转换成页面所在服务器上的文件路径名,把指向的HTML文档及用户编写的一些小应用程序(applet)、如CGI或ASP等程序送到浏览器,在浏览器所在机器上显示和执行。

而Web服务器程序用Dynamic C语言编写,利用其内嵌的TCP/IP 协议栈,实现了网络通信的系统设计。系统以嵌入式 Webserver 技术为基础,结合Rabbit 2000 的网络通信功能,利用现有的以太网技术(如HTTP、CGI 等),将采集到的现场数据通过网页的形式,提供给远程用户使用。该系统的设计难点之一在于如何利用 Rabbit MPU 有限的资源信息,使用其内嵌的TCP/IP协议栈,进行 HTTP、TCP、UDP、IP 等协议的处理,使之可以变成可在互联网上传输的IP 数据包以及可在内置 Web 页上浏览的数据。难点之二在于实现通过网页进行远程访问的能力,解决这个问题要通过对 Rabbit MPU 进行TCP/IP 编程,将其配置成一个简单的Web 服务器,就可以以网页服务的形式将现场数据传递给远程用户。

浏览器与Web 服务器的交互是通过Rabbit Web程序来完成的。Rabbit Web程序是一段运行在Web 服务器上的程序,可以是可执行文件,也可以是脚本文

7

件。Rabbit Web程序可以动态地产生HTML 网页,因此可将实时采集到的数据通过网页发回给客户机。Rabbit Web通常是客户机与服务器中其它程序进行信息传递与沟通的桥梁。在以前Dynamic C语言版本中,浏览器与Web服务器的交互都是通过CGI程序来完成的,但Dynamic C发展8.5版本后,一种非常简单与方便的增强版本(RabbitWeb HTTP enhancements)出现了,用它来编写浏览器与Web服务器的交互更方便,并且非常容易理解。与它配套的是扩展的ZHTML脚本语言,用ZHMTL脚本语言编写动态网页,也非常容易,这将在后面的程序设计中详细介绍。注意,增强版只是以前版本的提高版本,因此以前版本的程序(CGI)仍然有用,用户亦然可以用CGI程序来编程实现浏览器与Web服务器的交互。

2.3.1系统的原理框图

温度控制是通过对电热炉的电源通断来实现的。本系统采用晶闸管调功方式。晶闸管开关控制方式有两种:相位控制和过零控制。相位控制会使负载上的电压波形发生畸变,产生高次谐波,对电网造成公害。过零控制则能使负载上的产生较完善的正弦电压波形,同时由于过零时通断,防止了过大电流冲击。其原理图如图2.2。

图2.2 系统原理框图

8

2.3.2系统工作流程图

利用实验箱的温度自动控制实验板、以太网控制网络系统平台和上位微机的WINDOWS应用软件(Dynamic C)和IE浏览器进行电热炉的温度控制实验。其工作流程图如图2.3。

程序启动 设定参数 运行 采集温度 控制温度 返回数据 图2.3系统工作流程图

2.4 嵌入式WebServer讨论

利用8位微控制器通过ISP(Internet服务供应商),在不需要使用PC机或高档单片机的情况下接入互联网。随着嵌入式系统的迅猛发展和IA(信息电器)的出现,该应用系统正逐步取代传统的以PC为中心的应用,成为未来Internet发展中的主力军;将会广泛应用于智能家居系统、工业智能化从站系统、LED网络控制显示屏系统、网络安全加密系统等各个方面。

利用单片机实现嵌入式WebServer方案的主要技术难点是:如何利用单片机本身有限的资源对信息进行HTTP、SMTP、POP3、TCP、UDP、ICMP、IP及PPP等协议的处理,使之变成可以在互联网上传输的IP数据包以及可以在内置Web页上浏览的数据。

利用单片机实现嵌入式WebServer,大体可有以下三种形式:

① MCU+专用网络芯片,如E1552、Webchip PS2000等。此种方案的主要优点是:应用系统设计工程师完全不必考虑任何网络协议,只需要解释并执行网络芯片传送过来的指令和数据就可以实现与Internet网络连接。

9

② EMIT技术。EMIT采用桌面计算机或高性能的嵌入式处理器作为网关,称为emGateway,上面支持TCP/IP协议并运行HTTP服务程序,形成一个用户可以通过网络浏览器进行远程访问的服务器。emGateway通过RS232、RS485、CAN等轻量级总线与外设联系起来,每个外设的应用程序中包含一个独立的通信任务,称为emMicro,监测嵌入式设备中预先定义的各个变量,并将结果反馈到emGateway中;同时emMicro还可以解释emGateway的命令,修改设备中的变量或进行某种控制。该方案中复杂的网络协议是通过emGateway在PC机上实现的,应用系统MCU只处理较简单的emNet协议,进行网际连接。

③ MCU直接实现形式。实现这个形式的Web Server,可选用多种型号的MCU来实现网络协议,如AT89C8252、SX52BD100等,并可根据具体要求选用不同速度的MCU作为核心芯片,但是基本硬件结构大致相同[1]。

显然以上方案中,以“MCU直接实现形式”的硬件结构最为简洁,不失为首选方案。

通常,所谓的TCP/IP协议是一个四层协议系统,包括数据链路层、网络层(含IP协议)、传输层(含TCP协议)和应用层,每一层负责不同的功能。基于TCP/IP协议可以实现多种功能应用,如:HTTP(超文本传输控制协议)、TELNET(远程登录)、 FTP(文件传输协议)、SMTP(简单邮件传送协议)、SNMP(简单网络管理协议)等。本文主要讨论HTTP, 也就是WebServer在应用层的主要构成协议。当然,用户也可以根据需要附加其它的协议功能。

IP包含编址方案,并提供寻址功能;TCP则是在不同主机的对等进程之间提供可靠的进程间通信。与TCP两端口所连接的实体中,一端为应用程序进程或用户,另一端则为底层协议,如IP协议。TCP在建立连接过程中采用三向握手机制,以保证数据的可靠性。

用户只需对应添加相关芯片及辅助设施(如电源、用户所需外设等)即可;而软件的实现,由于BL2000系列芯片得到Dynamic C编译器的支持以及实现TCP/IP所需的库文件dcrtcp.lib,因此只要会用C语言就可以进行开发。用户关注的重点也变为网络通信实现以后的代码编制及优化,可以极大提高开发进度。

以下是Dynamic C实现TCP/IP协议通信的程序主体框架。程序中起始宏定义为默认IP配置信息;“memmap”句可使程序在芯片里面运行时,如同在扩展代码窗口下被编译;“use”句使编译器按照库文件配置编译代码。 #define TCPCONFIG 1

10

#memmap xmem #use dcrtcp.lib main( ){ sock_init( ); for(;;){

tcp_tick(NULL);} }

sock_init( )和tcp_tick( )都是TCP/IP函数库的基本函数,前者为初始化TCP/IP协议栈函数,使协议栈开始处理入栈数据报;后者主要有两个用途:① 支持后台处理的最新信息;② 测试 TCP套接字的状态。

可以看到利用Dynamic C提供的TCP/IP协议包,用户可以轻松建立起TCP/IP通信。当通信建立以后,就可以在此基础上进行后续的进一步功能扩展,开展例如HTTP、PPP等应用层的协议实现。

HTTP(超文本传输协议)服务器可使 HTML (超文本链接标示语言)页面,如Web页等和其它文件为客户端所使用。在Dynamic C中,HTTP由HTTP.LIB来负责实现。

11

第三章 系统硬件电路设计

3.1 系统硬件的总体结构设计

BL2000定时对炉温进行检测,得到应有的控制量,去控制加热功率,从而实现对温度的控制。

为实现对温度的控制,在设计系统时应明确以下几点: ①控制指标主要是控制精度、显示位数。

②温度控制范围为600~1000℃,这涉及到测温元件,电炉功率的选择。 ③炉温变化规律控制,即确定温度-时间变化关系的控制算法。着主要在控制程序设计中考虑。

然后通过硬件电路和程序软件的设计,实现BL2000对工艺过程中的数据进行处理和控制。图3.1为一种采用Pt100为温度检测元件的单板机温度控制系统原理图。

图3.1 单板机温度控制系统原理图

12

3.2 系统硬件子模块的设计

BL2000系列模块可以使用恰当的辅助硬件通过以太网/互连网进行编程和调试。带有10Base—以太网口的系统可以直接通过网络或互连网进行控制和监视,能够对远端设备开发接口,能够提供网页服务,还能够发送E-mail。BL2000系列对于大系统来说作为一个具有网络功能的服务处理器也是非常理想的。BL2000系列的编程使用已工业级的Z-Word的Dynamic C软件开发系统。

温度检测模块是由铂热电阻元件作为一种温度传感器,其工作原理是在温度的作用下,铂电阻丝的电阻值随着温度的变化而变化。温度和电阻的变化接近于线性关系,偏差极小且随着时间的增长,偏差可以忽略,具有可靠性好、热响应时间短等特点,且电气性能稳定。铂热电阻是一种精确、灵敏、稳定的温度传感器。铂热电阻元件是用微型陶瓷管、孔内绕制好的铂热电阻丝脱胎线圈制成的感温元件,由于感温元件可以做的相当小,因此它可以制成各种微型温度传感器探头。可用于-200~+240℃范围内的温度测量。

3.2.1实验电路的连接图

利用实验箱的温度自动控制实验板、以太网控制网络系统平台和上位微机的WINDOWS应用软件(Dynamic C)和IE浏览器进行电热炉的温度控制实验,如图3.2示。

电源 数液体混合控制 温度自动控制 插模拟量出 模拟量入 AO GND AI GND 1 2 3 DO0 DO1 DO2 DO3 DO4 COM W+ 字量输出 电IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 GND ADC0 ADC1 ADC2ADC3 OUT0 OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT 7 HUBL2000 Ethernet控制网图3.2 温度自动控制实验连接图

13

第四章 温度控制系统主界面设计

4.1 系统主界面的设计

接下来介绍HTML页面,即我们设计的web服务器服务的网页。在这里主要解释新的脚本语言ZHTML的使用方法,用它与增强版的Dynamic C一起来进行设计。HTML的一般知识这里不做说明。

在实际应用中,需要设计两个页面。其中一个用于显示当前温度值,另一个用于设置参数。其图如图4.1所示。

图4.1温度控制系统主界面图

4.1.1 温度显示页

第一个网页是web1.zhtml。“.zhmtl”后缀表明服务器会检查到HTML文件中的特殊标志,而不仅仅是逐字的将文件发送。程序如下:

web1

14

this is my web1,welcome! The current temperature is (oC):

to change some parament,please click

here(to web2)

上面的网页指令用来创建一个网页,显示当前的温度值。如在网页中会显示下面的语句:the current temperature is (oC):600

新的服务解析标志是从“:”结束的语句。“echo($wd1)”是一个函数,用来显示给定变量的值,当然这个变量已经在web服务器中被用#web语句登记注册。它也可以由函数print( )代替,它们的作用是一样的。

接下来的指令用于建立一个超链接,一旦用户点击here(to web2)将会建立链接,去另一网页index.zhtml,在index.zhtml网页中可以修改某些参数(如PID,温度值等)。注意,由于index.zhtml网页是在“/admin)“目录下,因此会弹出一如下对话框,要求用户输入用户名及其密码(“group1”与“group1”或“group2”与“group2”)。

用户名与密码的要求是由于在web服务程序中调用了sspec_addrule( )。这在前面的web服务程序设计中有详细的介绍。第一个网页用于显示当前温度值,在设计中,显示页面非常简单,当然也可以增加某些功能与内容,使网页变得更加丰富多彩。

4.1.2 参数配置页

第二个网页用于远程上传参数。在该网页中将会更多的用到zhmtl脚本语言。下面做简单的介绍。

ERROR! submission contained errors. Please correct the entries marked in red below.

这里使用的error( )函数没有任何参数,在最后按提交键时,若提交的参数有

15

错误,那么函数error( )的返回值将会为真(即为1),由if语句判断,结果成立,那么在网页码中就会显示提示:

ERROR! submission contained errors. Please correct the entries marked in red below.

提醒用户上传的参数有错,错误参数的变量名在网页中用红色着重标出(其实现方法在后面有介绍),以便用户容易找到。

当用户按下“submit”提交后,POST请求将会返回zhtml页面。由下面的html指令定义:

标记符号则意味着表单的结束。由于表单经常用于收集站点访问者的信息,因此在表单内必须出现输入标记Input,它既可以用于收集表单数据,另一方面还可将表单数据发送给站点管理员,或者清除表单的内容,重新输入表单。表单的基本结构如下:

表单标记Form最重要的属性就是Method和Action。Method属性用于定义处理站点访问者提供数据的方法,它包括两个属性值Get和Post,其中Get属性值表示将表单数据传送给表单处理程序,这是默认方式。Post属性值表示表单处理程序将读取表单数据。本课题中,我们用到的就是Post属性,用于用户上传控制参数。Action属性用于指定表单处理程序的URL。这里我们使URL指向“/admin/index.zhtml” ,即定义页面将会返回到本身[21]。

接下来使用如下语句,用于输入参数,同时检查输入内容是否有错,以便在输入不正确时提示用户输入内容有错;如果有错误,将用红色着重标出。

16

parament blbl?:

”>

和前面调用函数error( )不同的是,这里的函数error( )拥有变量参数blbl,(这个变量在web服务程序中已经用#web语句注册)。调用函数error( )与if语句配合使用,当在最后提交时,若提交的变量值是无效的,会使字体颜色变为红色。变为红色的是用来在HTML页面上描述web变量内容的信息:“parament blbl?”,而不是提交的某个值本身。同时也要注意,在改变字体颜色的指令里,有必要两次调用error( )函数,因为第二次调用是用来关闭FONT标志的。若最后按submit提交后,web变量是一个有效的值,那么上面的“parament blbl?:”文本信息仍然会显示,只是字体的颜色并不改变。

上面是#web登记的一个参数变量比例blbl在zhtml脚本语言中的应用,在设计中,我们会用到其它几个配置参数:变量积分jfbl,微分jfbl,以及温度值wd2,它们的基本应用与blbl相类似,这里不再描写,可以参考附录中完整的ZHTML语言文件内容。

4.2 温度控制程序

由前面的硬件电路可知,通过对电热炉的电源通断来实现对温度的控制。利用BL2010的中10个数字I/O口的一个OUT0输出,即可控制晶闸管通断时间的脉冲信号。OUT0=1时关断晶闸管,OUT0=1时开启晶闸管。在设计中我们利用BL2010本身拥有的A/D转换接口和数字I/O口输出函数,进行A/D转换和输出高电平或低电平。下面对程序中用到的两个函数进行介绍。

int anaIn(unsigned int channel)

该函数主要用于读经A/D转换来的输入值。其中,参数channel表示A/D转换的模拟输入通道。函数的返回值是相对于某个模拟输入通道电压的一个值。对BL2010来说,由于它是10位A/D转换,因此它对应的范围是0----1024。

void digOut(int channel, int value)

17

该函数用来设置10个数字I/O口(out0-out10)的输出状态。其中,参数channel表示输出数字I/O口的数字通道;参数value表示输出的状态值,有0和1两个值,分别对应于高低电平。在这里用out0作为输出。

我们是通过控制数字输出口OUT0的状态来控制晶闸管的通断时间,即对电热炉加热时间的控制,从而达到控制温度的目的。这里就涉及到一个定时的问题。如果单独采用单片机来进行控制,可以编写汇编程序,利用单片机的定时器定时。定时器定时有一个麻烦,那就是要编写定时中断服务程序。BL2000系列的单板机,利用Dynamic C语言编写程序非常方便。在Dynamic C中,有三个全局变量是用来定时的,SEC_TIMER、 MS_TIMER 和 TICK_TIMER 是三个被定义为无符号数长整型的全局变量。它们会周期性改变,但不能被应用程序改变,我们可以利用它们来定时。其中SEC_TIMER被预置为与实时时钟同步,读数据和时间时,读SEC_TIMER比读实时时钟更容易访问。系统会周期性的中断来更新SEC_TIMER、MS_TIMER及TICK_TIMER三个变量,其中SEC_TMIER每秒钟更新一次,MS_TIMER每毫秒更新一次,TICK_TIMER会一秒中内更新1024次,即与周期性中断的频率一致。从它们的属性易知,它们用于应用程序定时很方便。在设计中就用MS_TIMER来定时5S。即通过它与以前某个时候的值进行比较,看是否到相差5000,如果等于或大于5000,也就是说5S定时已到,重新采样A/D转换值。

下面就是设计中用到的PID控制程序。通过控制数字I/O口的输出来控制晶闸管的通断时间(参考硬件电路部分的设计)。由于汇编语言的广泛应用,在附录中给出用汇编语言编写的PID计算源程序。 void main( )

{unsign long sj1; /*某时刻值*/

blbl=; /*下面5个变量都是已经用#web定义的变量*/ jfbl=; wfbl=; wd1=0; wd2=800;

float e(2)=0,e(1)=0,e(0)=0; long u(0)=0,u(1)=5000;

sj1=MS_TIMER; /*给某时刻赋初值*/ while(1)

18

{if ((MS_TIMER-sj1))<=u(0))

digOut(1,0); /*晶闸管导通*/ else digOut(1,1); /*晶闸管关断*/ if ((MS_TIMER-sj1)>=5000)

{sj1=MS_TIMER; /*重新赋时刻值*/ wd1=anaIn(1); /*读入AD转换值*/ e(2)=wd2-wd1;

u(0)=u(1)+pt*(e(2)-e(1))+it*e(2)+dt*(e(2)-2*e(1)+e(0);/*PID算法式子*/ if(u(0)>5000) /*输出控制变量u(0)限幅处理*/ u(0)=5000; else if(u(0)<0) u(0)=0;

else u(0)=u(0); u(1)=u(0); e(0)=e(1); e(1)=e(2); } }

19

本文来源:https://www.bwwdw.com/article/mn16.html

Top