潘 广, 黄国辉, 姜周曙
(杭州电子科技大学 能量利用系统与控制研究所, 浙江 杭州 310018)
近几年,国内高校实验室建设投入巨大,取得了丰硕的成果,但是在传统实验系统的实际应用中还存在一些问题,例如缺少对实验室现场数据的监测和管理。因此,有必要设计一套应用于远程实验的多功能中继器,将实验室现场数据通过网络传输到数据中心,便于实时了解实验室情况,分析和评价实验系统的效率和效益。
本文提出了一种以自主研发的三容水箱实验台为对象、内嵌uCos-ii实时操作系统的远程实验多功能中继器。uCos-ii系统以线程为基本单位进行工作,很好地对系统资源和多线程进行管理,应用也更加灵活,能够满足开放性实验对实时性与可靠性的要求。
多功能中继器主控制模块采用基于ARM内核的高性能处理器作为处理芯片,内嵌uCos-ii嵌入式实时操作系统和FatFs文件系统。如图1所示,系统硬件电路分为中继器和采集控制模块两部分。中继器主要由电源模块、单片机最小系统模块、RS485通信模块、网络通信模块、SD卡本地存储模块等构成[1]。三容水箱采集控制模块的核心部分为A/D采样电路,辅以外围隔离、滤波与放大电路模块。硬件电路采用模块化设计思想,既能提高硬件电路的整体可靠性,也便于硬件电路的维护和升级。
稳定、可靠的电源模块是多功能中继器正常工作的必要前提。在进行电源模块的设计时,需重点考虑电压、功率和数模隔离。
电压的稳定可靠是有源器件工作的必要条件。作为数模转换的参考基准,电压是否稳定将直接影响采集精度。采用24 V—5 V—3.3 V三级降压模式,其中24 V—5 V采用LM2575集成稳压电路,5V—3.3 V采用LM1117集成稳压电路,最大限度地确保稳压值偏差较小[2]。
图1 系统总体硬件框图
对于功率匹配的设计,首先需要分析所有有源器件的工作功率,按照瞬时最大工作电流求得有源器件瞬时最大工作功率,再给予部分冗余和考虑电源转换效率等因素。
硬件电路中数字电路在电平转折处近似于突变,造成电压和电流变化速率快,易对模拟电路产生影响。因此,将隔离元件(磁珠、电容、电感、0 Ω电阻)单点接地,使模拟电路和数字电路相互隔离。
选用ARM Cortex-M3内核的stm32f103vet6系列处理器芯片作为主控制芯片。该芯片具有高主频、低功耗、资源丰富等优点,并且具有多种外部设备接口,方便外围硬件模块的设计,也为嵌入uCos-ii实时操作系统与FatFs文件系统提供了硬件平台。
最小系统主要由时钟源电路、启动模式选择引脚、复位电路、下载仿真电路和RTC钟源组成。其电原理图如图2所示。
图2 单片机最小系统模块电路图
数据中继器有2个RS485总线接口,通过接口与现场多台数据采集器串行通信。本文选用隔离型RS485收发器ADM2483作为通信芯片,降低了硬件电路设计难度,提高了硬件电路的安全性。为达到最佳数据通信效果,在ADM2483的通信端口之间接入匹配电阻R,匹配电阻R主要用于匹配传输线的特性阻抗,阻止高速差分电信号在传输线中反射[3]。RS485普遍采用双绞线进行数据传输,因此,选用120 Ω电阻作为RS485传输总线的终端并联匹配电阻。通信模块电路如图3所示。
图3 RS485通信模块电路图
网络通信模块集成无线GPRS网络通信和有线以太网网络通信两种通信方式,适用于不同的应用场合。有线以太网网络通信选用Boccn公司的W5100以太网接口芯片,芯片内部采用硬件逻辑电路实现TCP/IP协议栈,有效降低主控制芯片的处理负担。片内集成100 Mbit/s以太网控制器,能降低实时通信网络延时、提高数据传输稳定性,满足远程控制实验的实时性要求[4]。
采集控制模块是指底层数据采集板(又称为下位机),以ADμC834单片机为核心控制器,其外围电路的设计如图4所示。采集控制模块通过传感器采集液位、温度、压力等模拟量并进行A/D转换,最后把数字量按字节发送给中继器。底层采集板通过RS485串口设备与中继器通信,中继器连接上位机,根据实验类型选择控制算法,将控制信号通过中继器转发至下位机并实时发送数据采集命令,实现运行状态监控[5]。下位机在接收到中继器的指令后进行分析并作出响应。
为满足上位机与底层采集板间的高实时性数据传输的要求,中继器不仅在硬件设计上使用高性能的ARM Cortex-M3内核芯片,而且在主控制芯片内移植嵌入uCos-ii系统来实现系统任务线程的管理与实时调度[6]。同时,系统还移植嵌入FatFs文件系统[7],方便在上位机和下位机之间进行数据交换与数据查看。
图4 采集控制模块电路图
系统上电启动后,其初始化工作是首要工作。初始化包括系统变量初始化,uCos-ii实时操作系统初始化,相关消息队列、信号量集以及信号量初始化,MCU外设初始化和动态内存管理初始化。系统总体软件流程图如图5所示。
图5 系统总体软件流程图
数据传输是通过数据接收线程和数据发送线程来完成的。为保证数据的安全,中继器的数据包均采用AES(advanced encryption standard)加密算法加密,再传输给数据中心服务器;而数据中心发送的数据包,中继器通过解密、过滤,再将数据发送给采集控制板进行控制。在数据传输设计中,通信协议是准确进行数据传输的重要保障。该协议在遵循数据传输协议国家标准的前提下,结合本系统的需求进行设计。数据包由起始符、时间戳、包编号、包体长度、中继器编号、数据类型、包体和校验位组成。起始符为固定的“@@”,表示数据包的开始;包体长度为4字节,是除起始符和校验位外的总长度[8]。请求数据包格式如表1所示。
表1 请求数据包格式
注:数据类型的具体定义如下:0—连接请求;1—身份验证;2—验证实验台开关;3—实验数据;A—心跳包数据。
根据数据类型,上位机可以显示实验台是空闲,还是进行实验中。控制指令数据包的数据类型为固定值“K”,格式与请求数据包完全一样,而包体内写明具体的控制指令,如采集温度、控制水箱液位等。
为了保证及时、有效地检测到一方的非正常断开,保证连接的资源被有效利用,保活机制就成为必要[9]。通常有两种保活处理方式:(1)利用TCP协议层实现的Keepalive;(2)自己在应用层实现心跳包。由于应用层实现心跳包具有很好的灵活性,本系统选用该种方法来保证实验的实时有效性。心跳包数据以固定时间间隔发送,判断正确的回复,确定网络连接是否正常。
实验用户进入登录界面,发送建立连接的请求。上位机启动后一直在等待接收中继器的请求信号,建立会话连接。当连接成功后,中继器将向多台下位机发送验证实验台开关数据,验证成功后,开始进行远程实验。
实验开始时,上位机把用户设置的实验参数及控制指令发送到中继器,进行解析处理后发送到对应的实验台进行实验;下位机则根据实验类型进行相应的操作,通过串口与采集控制板进行通信。下位机会实时把液位、温度、流量、压力等信息通过串口发给服务器端,并把数据存入数据库。在另外一个线程中,通过网络发给客户机并以flash的方式显示给用户,如图6所示。
图6 远程实验flash效果图
通过中继器能够有效地利用计算机资源来进行更多的实验,不仅节约成本,而且方便管理,使远程实验更加有序的进行[10]。
利用良好的硬件平台和uCos-ii实时操作系统,将模糊自适应PID控制算法嵌入到中继器中,不仅能够避免每台上位机都进行Matlab编程,而且使远程实验更加准确、有效地进行。中继器接收到上位机的Kp、Ki、Kd值,对众多实验台进行模糊自适应PID控制[11],将得到精准值再转发给下位机,控制三容水箱实验台进行实验,二阶液位控制运行效果图如图7所示。
图7 二阶液位控制运行效果图
部分程序如下:
/*******模糊规则表*********/
int kp[7][7]={{PB,PB,PM,PM,PS,ZO,ZO},
{PB,PB,PM,PS,PS,ZO,ZO},
{PM,PM,PM,PS,ZO,NS,NS},
{PM,PM,PS,ZO,NS,NM,NM},
{PS,PS,ZO,NS,NS,NM,NM},
{PS,ZO,NS,NM,NM,NM,NB},
{ZO,ZO,NM,NM,NM,NB,NB}};
/****模糊推理规则的可信度*****/
float form[7][7];
int i,j;
for(i=0;i<7;i++)
{
float w,h,r;
for(j=0;j<7;j++)
{ h=es[i];
r=ecs[j];
w=fand(h,r);
form[i][j]=w;
}
}
/**求得的最大值赋给form[a][b]**/
int a=0,b=0;
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
if(form[a][b]