塑料挤出机控制系统实现与运行.docx
塑料挤出机控制系统实现与运行本文对塑料挤出机专家控制系统的实现做详细地介绍,主要包括开发环境的搭建、系统开发、系统运行和系统测试与分析四个部分。1开发环境搭建开发环境的搭建是开发系统的首要条件,本文开发的系统是要运行在ARM嵌入式开发板中的,开发板中运行的是Linux系统,由此可知环境搭建的工作内容。1.1编程环境搭建 (1)PC虚拟机与嵌入式开发板的通信 本文系统软件开发过程中,将不断地对系统界面和功能进行测试与修改,从而完善功能,这些是需要在开发板的Linux系统中运行才能测试的,而每一次的修改都要修改开发板的文件系统和重新编译内核,这太繁琐,本文采用将虚拟机中的文件系统通过NFS服务器挂载到嵌入式内核中的方式,实现二者文件系统的共享。 (2)PC机与虚拟机文件共享在Linux系统中对文件进行编辑一般使用的是vim文本编辑器,它的使用操作很复杂,需要对应的执行命令来实现文本的修改,它是基于命令的文本编辑器,这很大的限制了开发效率。在PC端Windows操作系统有一些好用基于图形的本文编辑程序如U1traEdit,可是虚拟机中的Linux文件系统和PC机并不能直接访问,需要通过samba服务器来实现PC机与虚拟机文件系统的共享。如图1所示。 图1 PC与虚拟机Linux系统共享目录1.2相关程序移植 本文开发所需要用到的程序都是可以在Linux下运行的,但是ARM开发板中的Linux系统和PC中Linux系统的编译器是不同的,所以就需要将程序重新编译、移植到ARM开发板中去,包括Boa服务器、CGIC库和S QLite数据库的移植。 (1) Boa服务器移植 a)配置编译Boa:下载源码解压后,需要修改makefile文件中的编译工具链,把其中变量CC的值改成arm-linux-gcc, LD改成arm-linux-ld,然后make就可以生成Boa应用程序了。将Boa程序、生成的库文件和服务器的配置文件放入到开发板的文件系统中相应的文件目录中去。 b)修改boa.conf配置文件:其中,日志路径和错误日志路径分别存放的是服务器正常执行和出错信息的文件地址;web根目录路径和CGI脚本目录路径分别表示的是服务器执行中寻找web界面和CGI程序的路径;默认首页则是用户访问服务器出现的首页界面。 c)测试,为了确保Boa的正常运行,利用简单的测试程序测试Boa的运行情况.在web根目录下建立index.html文档(默认首页),其内容为: <HTML><BODY>This is boa</BODY></HTML> 在开发板中运行BOA服务器,通过IE浏览器输入开发板的IP地址连接到运行Boa的嵌入式系统,若页面显示This is boa,说明Boa移植成功。 (2)CGIC库移植 本文编写CGI程序使用的是C语言,因此将对 CGIC库进行移植,过程如下: a)从CGIC站点上下载cgic205.tar.gz软件包; b)在虚拟机中执行tar zxvf cgic205.tar.gz命令将软软件包解压到当前文件目录; c)执行cd cgic205命令进入解压后的文件目录中,修改M akefile文件,找到CC=gcc,将其改成CC=arm-linux-gcc,找到AR=arm,将其改成AR=arm-linux-ar,找到RANLIB=ranlib,将其改成RANLIB=arm-linux-ranlib,执行make命令进行编译,将得到的libcgic.a库文件拷贝到开发板的lib/(库文件目录)中。 d)测试,在虚拟机中写一个简单的C程序,主要是输出一个简单的HTML页面,在虚拟机中利用编译好的CGIC库和交叉工具链编译这个程序,命令行如下:arm-linux一gcc -L/cgic205/-lcgic -I ./cgic205/ test.c -o test.cgi将得到的test.cgi程序拷贝到开发板中文件系统中服务器设置好的CGI脚本目录C cgi-bin)中去,在IE浏览器中输入192.168.1.135/cgi-bin/test.cgi,若输出的界面正确,则移植成功。 (3) S qlite数据库移植 (a)在S QLite官网中下载sqlite-3.6.16.tar.gz软件包,在虚拟机Linux系统中进行解压;(b)进入解压后的文件目录中,修改编译配置文件中的交叉工具链(arm-linux)和编译后存放的目录(/usr/local/Sqlite )。(c)接着执行make和make install命令即可完成程序的重新编译。在/usr/local/Sqlite目录下生成bin,lib,include目录; (d)将编译好的程序和库文件拷贝到开发板中,具体为将bin目录下的sqlite3拷贝到开发板文件系统/bin目录下,将lib目录下所有文件拷贝到开发板文件系统/lib目录下;(e)测试:在开发板中执行命令行sqlite3 test.db,查看运行情况。如果出现如图2所示的结果,则说明移植成功。 图2 Sqlite3移植测试结果2系统开发本节将对系统各个部分的功能进行开发实现。2.1接口实现本文接口也就是网页界面设计开发,使用的是HTML, CSS和JavaScript语言,它们都可以使用普通的编辑器进行编写,只需要将文件的后缀名改为“.html”和.js”即可。实现了开发板文件系统与虚拟机中文件目录的共享、PC机与虚拟机Linux文件系统目录共享,即可以通过PC机直接进入嵌入式开发板的文件系统中去。因此我们可以在Boa服务器设置的根目录(/web/目录)下面新建一些.html和.js文件,如图3所示,通过进行网页编写和接口功能的实现,如图4所示。 图3 Boa服务器根目录 图4 ultraedit编辑器代码编写界面 (1)登录界面实现 在编写代码之前应该从实现界面基本功能和页面优化两方面对登录界面的布局进行整体设计。从功能考虑,需要设计的是一个登录界面,它要实现账号输入、密码输入、登录、注册账号的功能,同时,本页面也应该有本系统的标志,可以通过系统名文字显示来显式的表明,这些功能的实现分别对应着HTML中不同的标签。从页面优化考虑,系统名应该放在较突出的位置,比如说页面的首部,为了让页面看起来比较有整体感,可以同时设定一个页脚,将登录界面的各个功能标签放在页首和页脚之间,居中显示。用HTML编写出的标签实现了基本功能,可是对于每个标签的背景、字体格式、字体大小等都是通过CSS来标记的,可以将各个标签将要用到的格式(CSS样式表)放到HTML的<head>标签中,在具体页面编写时直接调用即可,这样有利于后期的维护升级。点击登录按钮时,会将我们的账号密码以表单的POST方式提交给Boa服务器中的CGI程序,程序会将提交的数据以标准输入的方式提取出来,再和数据库中普通用户数据表和工程师用户数据表中的的账号、密码对比,如果错误,则提示密码错误,请重新输入,并返回到初始登录界面;如果正确则进入相应的菜单页面(普通用户和工程师的页面是不同的)。当用户没有账号的时候,就需要点击“注册账号”超链接,可以进入到注册界面。 (2)注册界面实现 注册界面的实现基本和登录界面的相同,只是分为了两个部分,一个是普通用户的注册,直接输入用户名和密码;二是工程师注册,需要验证码,因为工程师用户的账号是直接对知识库进行修改的,必须谨慎。当点击登录按钮时,一样是以POST表单方式提交到CGI程序中,程序根据用户类型在数据库中建立普通用户和工程师用户的账号数据表。当注册密码和确认密码不匹配或者工程师注册验证码不对时会提示出错,并返回注册界面。最后完成注册后可以点击页脚的“返回登录界面”超链接进入登录界面。 (3)密码修改界面实现 密码修改界面的实现和注册、登录的界面是类似的,只有功能的不同。它的功能就是提供给用户一个修改账户密码的接口,首先要通过原始密码的验证,证明是本人操作,以防止别人通过其他方式进入此页面篡改密码,再输入新的密码,保存修改即可。点击“保存修改”按钮,就会将表单内的原始密码、新设密码以及确认密码的数据提交给数据库的CGI程序,程序提取出数据后先判断新设密码与确认密码是否匹配,如果不匹配就显示“新设密码和确认密码不匹配”的错误信息,并返回密码修改界面。再将原始密码与数据库中的密码比对,若找不到符合的数据项就显示“原始密码错误”并返回密码修改界面,如果找到符合的数据项则进行密码的修改操作,再跳转回到菜单界面,以待用户即进行其它的操作。 (4)菜单界面实现 如同登录界面的实现一样,也需要先布局,再编写实现。从功能上看,菜单的功能是进行系统的导航作用,是进入各个功能的接口。根据前面内容的设计可以知道对于普通用户来说包括五个功能模块:生产目标设定模块、工艺参数推理模块、参数推理解释模块、一键启动机组模块和密码修改模块;对于工程师来说包括两个模块:知识库更新和密码修改模块。而且这些功能模块的导航需要在每个模块的部分都有,以便在各个模块界面间灵活的跳转。再将登录界面的页头和页脚加入进来,可以在页脚中加入登录界面的超链接,以便让用户可以直接返回登录界面。当鼠标指向导航中各个模块界面的按钮时,会变色,点击后就会跳转到其它各个模块的界面了。 (5)生产目标设定界面的实现 生产目标设定界面的功能是为用户提供系统生产目标设定的接口,用户可以通过它来设置需要生产优化的塑料挤出机组的机型、物料、最大挤出量、片材厚度和片材宽度。整体的页面结构与前面的界面类似,只是功能标签的不同,这里不再赘述。由于每个机型适用的材料、最大挤出量、片材的宽度和厚度是有限制的,为了便于用户填写生产目标,专门设计了一个表单,用于用户查询机型的基本信息。第二个表单就是所设定的生产目标了,它还是包括那五项:机型、材料、片材的宽度和厚度。界面显示效果在后面系统运行小节中,如图10所示。首先,用户可以在第一个表单中选择机型,点击查询按钮后会将机型信息提交给服务器中相应的CGI程序,CGI程序访问数据库进行查询,将得到的机型信息输出到新的界面,返回到浏览器中。然后用户在第二个表单中根据不同机型的特点,选择机型、材料,填写最大挤出量和片材的厚度、宽度,最后点击保存设定按钮,就将这些信息提交到服务器中相应的CGI程序进行推理。CGI程序得到生产目标后就会进行推理操作,将推理结果和推理过程存储在各个缓存数据表中,以待后面用户咨询所用。 (6)工艺参数推理界面实现 工艺参数推理界面的功能是向用户显示推理得到30个工艺参数的具体数值,用户可以根据自己的需要对推理得到的参数值进行修改。用户可以先点击“参数推理”按钮,会将表单提交给服务器中相应的CGI程序,CGI检测到输入的表单为空,就会查询参数推理缓存数据表,将其中的参数一个一个的取出输出到工艺参数推理界面对应的位置上去。然后,用户可以根据自己的需求来自行修改各个参数值,修改完后确认无误的情况下可以点击“参数确定”按钮,就会将确定的生产工艺参数(修改后的)提交给服务器中相应的CGI程序中去。CGI检测到输入表单有数据,就先进行自动更新的操作,将修改的参数保存到参数修改数据表中,然后再将这30个工艺参数一个一个的通过RS232发送到塑料挤出机组的嵌入式触摸屏控制器中。 (7)参数推理解释界面实现 参数推理解释界面的功能是向用户解释各个参数的推理过程和推理由来,界面中将30个参数列成一个拖拉菜单,用户可以选择自己需要咨询的参数,界面显示效果在后面系统运行小节中,如图12所示。点击“保存设定”按钮后,会将咨询的参数以表单的形式提交给服务器中相应的CGI程序,CGI程序检索推理解释缓存数据表,将相应参数的推理值、推理过程和推理解释输出到参数解释界面的相应位置。 (8)启动流程推理界面实现 启动流程推理界面的功能主要是将推理得到的塑料挤出机组的启动流程展现给用户,界面显示效果在后面系统运行小节中,如图14所示。用户先点击“启动流程推理”按钮,之后浏览器会将表单传给服务器中相应的CGI程序,CGI程序检测到表单为空就会将启动流程从启动流程缓存数据表中取出并输入到启动流程推理界面相应的位置。用户可以观看、修改、检查无误后点击“启动流程确定”按钮,CGI程序检测到有数据传入后会将启动流程通过RS232发送到塑料挤出机组的嵌入式触摸屏控制器中。 (9)知识库更新界面实现 知识更新界面的功能是为工程师提供一个修改知识库中知识规则的接口,工程师可以通过它查询、修改和添加知识。界面显示效果在后面系统运行小节中,如图5-15所示。界面设计了3个表单,分别对应知识查询、修改和添加,每个表单中都有5个塑料挤出机固有参数和可调参数的数据表,工程师可以根据机型和每个数据表的行号进行查询、修改。当工程师点击“提交查询”按钮时,会将表单中相应的机型和数据表行号提交到服务器相应的CGI程序中,CGI会查询相应的数据表,将数据取出输出到知识更新界面相应的位置上。当工程师点击“保存修改”按钮时,会将表单中的机型、数据表行号和具体修改内容提交到服务器相应的CGI程序中,CGI会查询相应的数据表,更改相应的数据,如果输入修改的知识格式不对,就提示错误并返回知识更新界面。当工程师点击“保存添加”按钮时,会将表单中的机型和具体添加内容提交到服务器相应的CGI程序中,CGI会更新相应的数据表,将新的知识添加进去,如果输入添加的知识格式不对,就提示错误并返回知识更新界面。2.2知识库实现 知识库的实现就是数据库的实现,前面在搭建开发环境的时候己经将S QLite数据库移植到了开发板中了,S QLite数据库为C语言开法程序提供了接口,在编写CGI程序的时候只需要将S QLite数据库的接口加入到头文件中去,即可使用相关API对数据库中的数据表进行增删改查的操作,API接口函数如下:还有一些其它的操作都是类似的,为了便于数据表的操作,将各个机型名用相应的“标识”表示,如立式单层片材机组用“VS”表示,根据前文设计中的生产知识关系表,在CGI程序中可以依次创建出如下的数据表 图5 固有参数数据表 图6 启动流程数据表 图7 知识规划数据表 图 8 知识规则条件数据表 图9 知识规则结论数据表2.3推理机实现 推理机是本文实现的核心,它的实现包括两部分,分别是知识推理实现和知识解释实现。 (1)知识推理实现 推理的过程是在CGl程序中通过c语言编写实现的,CGl程序根据生产目标设定值进行推理,将推理结果存储在缓存数据表中,这其中包括参数推理缓存数据表和启动流程缓存数据表等,当用户需要查看推理后的工艺参数和启动流程时可以将数据从缓存数据表中取出显示在接口中,根据前文设计的流程图,可进行编程,部分代码如下。2.4知识更新实现 (1)专家修改实现 专家修改是为工程师等专业人员提供的用来对知识库中己有的规则进行更新的接口。工程师等专业人员可以通过知识库更新界面先对想要更新的知识库中的规则进行查询,再根据自己的需要对相应的规则进行更新,不过在修改的过程中不能破坏己有的知识结构,在添加的时候要在大类知识条目下结合相应的知识结构进行操作,不然无法在后台程序中实现数据库的更新操作,在专家提交修改结果后,系统自动更新己有目标设定数据表。 (2)自动更新实现自动更新机制是需要通过一定的算法来实现的,前面章节己经对它进行了详细地设计,本节将根据设计的流程图,用C语言来编写。在工艺参数推理界面中,当用户点击“参数设定”按钮时会将所有的工艺参数都传入到相应的CGI程序中,脚本程序会将传入的数据和缓存数据库中的数据作对比,把用户修改的数据存入一个修改更新的数据表中。部分代码如下。3系统运行3.1运行准备 在前面搭建开发环境的时候我们己经实现了Boa服务器、cGlc库、s QLite数据库的移植,为了开发的方便,把ARM嵌入式开发板的文件系统使用NFS从虚拟机的Linux系统挂载的方式,当所有的系统程序开发完后,就需要将文件系统挂载到嵌入式开发板中,让嵌入式开发板可以独立运行开发的系统程序。 (1)系统程序启动设置在实际运行的时候本系统程序是运行在开发板Linux系统后台中的,这就要求本文的系统程序(服务器)在嵌入式开发板启动的同时也自动的加载启动,是不需要控制台来控制的。Linux的启动流程可知,etc/inittab是系统在启动的时候需要加载的文件,将服务器的启动添加到这个文件中即可,添加后的etc/inittab代码如下: (2)文件系统制作 本文根据嵌入式开发板的特性,使用mkyaffs2image将前面配置好的挂在在虚拟机中的开发板文件系统目录rootfs制作成一个yaffs映像文件,和内核一起烧写到开发板中即可。3.2普通用户登录运行 将开发板连接到路由器中,让现场的嵌入式触摸屏控制器也连接到同一个路由中,启动开发板,通过控制器系统中的浏览器即可进入系统程序,进行各种操作了。 (1)登录注册:在浏览器中输入开发板的IP地址,即可进入登录界面,首先需要注册一普通用户的账号注册完后点击“返回登录界面”即可进行登录了。 (2)生产目标设定:如图10所示,先查询机型信息,再根据信息和自己的需要进行设定即可,最后保存。图10 生产目标设定界面(3)工艺参数推理:如图11所示,点击“参数推理”按钮会显示所有推理得到的参数信息,如需修改,直接修改相应参数即可数确定”按钮,就会将数据发送给嵌入式工业控制器。界面刷新后就最后点击“参数确定”按钮,就会将数据发送给嵌入式工业控制器。 图 11 工艺参数推理界面(4)参数推理解释:如图12和13所示,选择压辊转速和网后压力参数点击“保存设定”即可查询到这两个参数的推理路径和推理解释。 图 12 压辊转速参数解释界面 图13 网后压力参数解释界面(5)启动流程推理:如图14所示,进入启动流程界面理”按钮,页面刷新后就会显示根据开发目标生成的启动流程定”按钮,就会将数据发送给嵌入式工业控制器。 图14 启动流程推理界面(6)密码修改:输入旧密码和新密码即可完成。3.3工程师登录运行 工程师的登录操作和普通用户的一样,进入系统以后就可根据自己的需要对知识库中的固有参数数据表、启动流程数据表、规则数据表、条件数据表和结论数据表进行修改,如图15所示。密码修改和普通用户的类似。 图15 知识库更新界面4系统测试与分析 系统测试的目的是为了验证本文设计的专家系统能否达到企业的功能和性能要求,以便能够及时的发现系统设计中存在的问题,趁早解决并优化。本文对专家系统的测试在功能上测试其推理得到参数值和启动流程的正确率,性能上测试其推理过程所花费的时间。为了计算推理时间,需要在推理机的CGIC程序中加入时间计算函数,计算每次推理的时间并打印保存到文本文件中。对每次推理得到的参数值和启动流程进行处理,根据工程师、老工人的知识经验和产品的说明书来判定推理得到的数据是否正确,把推理正确的参数个数除以所有推理的参数个数,就得到了一次推理的正确率了。(1)相同生产目标推理测试相的生产目标推理测试就是对每次设定一样的生产目标(最大挤出量、物料、厚度、宽度)不变进行多次推理,在推理的过程中伴随着人工修改参数值的过程,推理次数有很多,本文只列举12次的数据,得到的数据如表1所示。将其处理后可得到如图16所示的统计图。表1 相同生产目标测试结果统计表图16 相同生产目标测试结果统计图 从统计图中可以看出,第一次测试所耗费的时间最长,正确率最低,之后随着测试次数的增多,正确率逐渐增加,耗费时间逐渐平稳。这是符合专家系统推理机制的,在第一次测试时,所输入的生产目标是新的,在己有生产目标设定数据表中时没有本次推理结果的,需要借助于推理机进行整个推理过程,再将得到的推理结果发送给用户,用户根据生产需要对相应的参数值进行修改,最后推理机将本次的推理结果和生产目标存入到己有生产目标设定数据表中,把修改过的参数存入参数修改数据库中,并将修改次数设为1,这时候所耗费的时间和正确率是最低的。在下一次输入相同的生产目标进行测试时,推理机会先查询己有生产目标设定数据表,发现有推理结果,就会将推理结果取出发送给用户,用户根据生产需要对相应参数值进行修改,最后将修改的参数存入参数修改数据库中,如果参数己经存在参数修改数据表中,就将修改次数加1;如果不存在就将修改的参数存入数据表,并将修改次数设为1。之后每一次相同生产目标测试都是如此过程,直到第10次,专家系统的自学习机制将所有修改的参数替换掉了结论数据表中相应的结论,因而从第11次测试开始,在用户不需要修改推理得到的参数值时,得到的正确率是100%。 (2)不同生产目标推理测试不同的生产目标推理测试是每次设定不同的生产目标(最大挤出量、物料、厚度、宽度)进行多次推理,在推理的过程中伴随着人工修改参数值的过程,推理次数有很多,本文只列举12次的数据,得到的数据如表2所示。将其处理后可得到如图17所示的统计图。表 2 不同生产目标测试结果统计表 图 17 不同生产目标测试结果统计图 从统计图中可以看出,每次测试所耗费的时间和是差不多的,而正确率却是不大相同的,这也是符合专家系统的推理机制的,对于不同的生产目标设定,专家系统的推理机在己有目标设定数据表中查询不到有关数据,就会每次都进行新的参数推理过程,所耗费时间是差不多的。而对于正确率来说,有波动是因为每次设定目标不同导致推理结果也不一样,知识库中的知识是有限的,每个设定目标对应的推理知识多少是不一样的,若知识库中的知识多,能推理正确的几率自然就高了。根据以上两组测试数据的分析,可以看出本文设计实现的基于专家系统的塑料挤出机组智能生产工艺参数优化系统软件实现了生产工艺参数和启动流程推理优化的功能,推理的次数越多,知识库就越完善,推理得到的生产工艺参数和启动流程就越正确,耗费的时间也越少。特别是当推理的次数足够多时,推理正确率可达到100%。