柯若维,赵伟杰
(杭州电子科技大学生命信息与仪器工程学院,浙江杭州310018)
随着客户对不锈钢表面色彩需求的不断提高,真空镀钛技术也在不断地改进。但是在目前的真空镀钛控制系统中,还不能有效地提高不锈钢表面色彩的准确目标值。要得到预期的不锈钢板表面色彩值还没有最佳的控制方法,主要基于操作工人的经验,因此,由于工人经验值的不同而导致在调不锈钢板表面色彩时需要很长的时间。也许镀一次就能够得到需要的色彩值,也许要经过数次甚至数日的不断调试才能镀出所需的色彩,这中间存在着极大的能源及其他各种资源的浪费。为提高镀钛目标准确率,设计一个数据库系统,可以记录每次镀钛成功的参数值,从而为下一次镀同样色彩做参数记录。镀钛成功的标准是每款经过镀钛的不锈钢板,只要色彩均匀,板的上下、左右色差值小于2即为合格。也许本次镀钛结果和目标色彩绝对值差距很大,但是在未来的镀钛当中也许用到此颜色,故可以将本次镀钛过程的参数及镀钛结果记录备用。影响真空离子镀技术的因素有很多,主要有真空炉中的炉温、炉数、乙炔和氮气的流量、真空度等。设计了基于迪文触摸屏的操作界面,数据库的存储及查询方法。
系统采用TX-2440开发板作为系统设计的硬件平台[2]。主控模块采用嵌入式微处理器 S3C2440,主频400 MHz,最高可达533 MHz,片内外资源丰富,具有强大的处理能力,从硬件上保证系统得到快速响应。系统存储扩展了256MB的NANDFLASH,64MB的SDRAM。扩展模块包括100M DM9000网卡、4个USB接口、两个串口。系统硬件结构如图1所示。
图1 系统硬件框图
系统软件平台Linux 2.6.31内核和YAFFS2文件系统。数据库中记录的存储方法直接关系到记录搜索的速度,因此,数据存储的方法极为重要。存储数据记录的方法有很多,第一种方法是采用顺序存储的方法,每个记录按照输入顺序依次存储,此方法的优点是占用空间小,但是搜索记录的时间就会比较长。需要逐次比较每个参数值,直到出现相近记录为止,还有可能搜不到相关记录。还有一种方法是将记录信息直接变为数据存储的地址,举例说明如下:本设计红色的参数值范围是-2~15,占用空间值是18;黄色范围是-2~37,占用空间值是40;炉温范围是60℃ ~220℃,根据经验,温度每差10℃,对色彩的影响也可以忽略,故只需占用空间值是16,炉数范围是1~400,根据实际经验,每10炉之间的色差可以忽略,因此占用空间可以减少10倍,值是40;真空度范围是1~15,占用空间值是15。为计算方便,把负的参数值全部调整为非负数,及红色参数范围调整为0~17,黄色参数范围调整为0~39,假设某次镀钛结果成功,其参数值如下:红色14,黄色25,炉温150℃,炉数是200,真空度是10,每个记录由3部分组成,分别是乙炔流量、氮气流量、记录存在标志,占用6个字节,那么其数据存储的地址为((14+2)×40×16×40×15+(25+2)×16×40×15+((150-60)/10)×40×15+(200/10)×15+10)×6=38453460,这种方式的特点是查询速度快,但是需要存储空间大。在本系统中,按此方法,所需空间最大值是41472000B,LINUX系统采用fat格式,支持U盘或者SD卡的空间是4 GB,因此,存储空间是足够的。本设计采用第二种存储方法。
3.1.1触摸屏界面设计
触摸屏是控制整个仪器工作的重要人机交互接口。本设计采用迪文DMT80480T070_02W触摸屏,根据真空镀钛的技术要求,将界面设计为如图2所示。
图2 界面设计图
选择对应的参数即可输入相应参数数值,如点击“红色”,在红色后面文本框即可输入红色的参数值。“红色”和“黄色”的数值可根据客户提供的样板用色差机测量得出。真空度是可以控制的数值,也可以输入。炉数的含义是当前真空炉在镀钛过程中,经清洗后镀到第几炉,是不可改的,炉温是可控的,各参数的范围如表1所示:
表1 各参数的范围
3.1.2触摸屏程序接口
打开与触摸屏相连串口,用 open_port(fd,1)[3]函数打开,其中fd为文件类型指针,1为串口端口号;用函数set_opts()[3]设置通讯方式,其中波特率为115 200,数据位8位,无奇偶校验,1位结束位。具体如下:
if((fd=open_port(fd,1))<0){perror("open_port error");return;}
if((i=set_opt(fd,115200,8,'N',1))< 0){perror("set_opt error");return;}
3.1.3触摸屏的通信协议
触摸屏以帧的方式传送数据,触摸屏返回到上位机每帧8个字节,其中第4个字节为返回的键值。
上位机发送到触摸屏帧的长度可以任意定,其中第一个字节为帧头,值为0xAA,第二个字节为触摸屏显示方式设置,第三、四字节是显示内容的坐标,第五个字节开始为要传送的内容 ,其中汉字要先转换为对应的16进制代码,最后以 4 个字节为帧结束命令,分别是 0xcc、0x33、0xc3、0x3c[4]。
先对程序中所需的参数进行定义:
#define COLOURBM 40//黄色范围
#define VM 15//真空度的范围
#define NM 40//炉数的范围
#define TEM 16//炉温的范围
#define CABASE(COLOURBM*VM*NM*TM)
#define CBBASE(VM*TM*NM)
#define VMBASE(TM*NM)
#define TMBASE(NM)
利用加权定义文件存储的位置,即
position=(V_colA*CABASE+V_colB*CBBASE+(V_vm)*VMBASE+V_tem*TMBASE+V_num)*sizeof(item),其中,V_colA、V_colB、V_vm、V_tem、V_num 分别代表红色、黄色、真空度、炉数和炉温的值。查找时只要输入红色、黄色、真空度、炉数、炉温值,就可以通过这个位置计算公式找到所需参数的位置。节省了很多查找时间。
(1)利用fseek()函数[3]来移动文件的读写位置,fseek()函数的用法是 fseek(fp,position,SEEK_SET),其中 fp为已打开的文件指针,即data.txt文件;position为根据SEEK_SET来移动读写位置的位移数;
(2)当查找成功时,输出乙炔和氮气的值,用fseek()函数找到所需参数位置,读是否有记录标志,如果有,则读乙炔和氮气的值显示到触摸屏,提示查找成功。如果没有记录标志,则提示查找失败。流程图如图3所示。
图3 软件操作流程
数据库系统已成功应用于某金属制品有限公司(实物图见图4),目前的主要工作是对每次镀钛数据进行记录,经过一段时间的数据积累,可以作为后续镀钛参数使用。需要进一步研究的是将数据库系统与控制系统相结合,实现整个系统的查询、自动控制、自动存储等功能,从而提高不锈钢表面色彩精确度。
图4 镀钛数据库系统实物图
[1]张钧,赵彦辉.多弧离子镀技术与应用[M].北京:冶金工业出版社,2007.12.
[2]天祥电子.TX-2440A arm9开发板学习资料[EB/CD].http://www.txmcu.com/show.asp?id=7.2012.5.
[3]W.Richard Stevens,Stephen A.Rago.UNIX 环境高级编程[M].第2版.尤晋元,张亚英,戚正伟,译.北京:人民邮电出版社,2006.6.
[4]北京迪文科技有限公司.迪文DMT80480T070_02W触摸屏的学习资料[EB/OL].http://www.dwin.com.cn/download.aspx?id=11.2012.5.
[5]贾明,严世贤.Linux下的C编程[M].北京:人民邮电出版社,2001.1.