关键词:金刚石合成机;控制系统;IPC与PLC结合;串口通信
1 引言
传统的金刚石合成机控制系统是由一个PLC和一个可显示终端构成。其缺点如下:(1)系统所有的工作(如信息检测、处理和系统控制)都是由PLC完成,其控制精度较差,致使合成的金刚石质量较差;(2)显示终端的平面尺寸过小,一方面操作人员观察系统的状态很不方便,另一方面常常会引起误操作;(3)金刚石合成工艺复杂,需控制的参数很多,但原控制系统不能对参数进行保存,而根据不同产品和工艺的要求对部分参数进行调整时,每次都必须重新设置所有的参数,操作非常麻烦;(4)界面不友好;(5)不能由系统自动考核操作人员的工作质量。因此,为了提高控制精度、方便操作,开发新的控制系统迫在眉睫。笔者针对以上问题,将IPC与PLC有机结合,开发了一套控制系统。
2 控制系统的开发
2.1 系统结构及配置
由于单纯采用PLC控制有上述的那些缺点,但是PLC又具有很高的稳定性与可靠性且抗干扰能力较强,很适合现场控制;而采用微机控制具有很高的灵活性和方便性,但是抗干扰能力较差。这里结合PLC控制和微机控制的优点,提出了IPC+PLC的新型控制方法,将IPC和PLC控制有机的结合在一起,而且还可以利用现有的PLC系统。
这里采用当前最先进且比较成熟的DCS方式[1][2],控制站采用西门子公司的S7-200系统,操作站为采用人机界面非常友好的Windows98系统的工控机。操作站与控制站之间通过RS-232串口通信协议进行数据传输;此外操作站通过RS-485串口对变频器进行控制以实现金刚石合成中的微调控制功能。由于在该项目中软件所占的比重较大,并且为了更好地满足系统功能需求,所以就自行开发控制软件和操作软件,不仅满足了系统要求、提高了系统性能、方便了维护和升级工作,而且降低了成本。
2.1.1 系统结构
新设计的控制系统采用先进的IPC+ PLC模式,操作站由一台工控机构成,控制站由一套西门子公司的S7-200构成。上位机系统主要功能:参数设置、实时监控、调整操作和信息查询等。下位机系统主要功能:实时控制、数据采集等。
2.1.2 硬件配置
本系统中共有20路开关量输入,19路开关量输出,1路模拟量输入和2路模拟量输出。硬件配置如表1所示。
表1 主要硬件配置表
2.1.3 系统软件配置
整个系统软件的开发是运行于Windows98平台的,因为Windows98具有良好的操作界面,功能强大,比较普及,大家都能熟练操作。
下位机PLC程序开发采用SIMEMENS公司的STEP7,它具有以下功能:(1)良好的操作界面;(2)硬件的组态和参数设置;(3)通信的定义,主要有通过MPI的时间驱动循环数据传送和事件驱动数据传输;(4)编程,提供的语言有梯形图、功能模块图和语句表;(5)程序下载、测试、启动和维护。
上位机监控软件开发采用VC++6.0,它具有以下优点:(1)VC++和Windows98之间的兼容性好且可靠性高;(2)采用面向对象技术,软件的维护和升级代价小;(3)MFC封装了很多组件,软件开发周期短、成本低;(4)功能强大,能开发出高质量的软件,满足不同需求;(5)方便地通过串口与PLC进行通信;(6)操作界面友好。
2.2 应用软件的编制
2.2.1 下位机PLC程序
下位机程序采用STEP7中的梯形图方法进行编制[3],其功能结构图如图1所示。
图1 PLC程序功能结构图
其中:下位机程序编制的难点在于通信程序、PID控制程序子模块的编制。
对于通信程序模块来说,由于PLC程序需要从上位机获得设定参数和一些控制指令,并且把现场状态反馈给操作人员。这里,需要定义通信协议以及通信指令的格式。微机通过COM口发送指令到PLC的PORT0(或PORT1)口,PLC通过RCV接收指令,然后对指令进行译码,译码后调用相应的读/写子程序实现指令要求的操作,并返回指令执行的状态信息。
对于PID控制程序模块来说,由于典型PID控制算法有微分突变现象与启动回绕现象两个弊端,根据特定的现场环境和用户需求,对标准的PID算法进行了改进。本文采用了参数自整定PID控制算法,达到了很好的控制效果。并且PID控制模块具有良好的扩展性,以便于软件的维护和升级。
2.2.2 上位机监控系统程序
监控系统程序采用VC++6.0开发了一个对话框类型的应用程序[4][5],其功能结构图如图2所示。
图2 监控系统功能结构图
其中:监控系统中的一些功能模块所完成的具体工作如下所示。
(1)通信模块 该模块实现与下位机PLC之间的数据传输问题,在上、下位机之间起到桥梁作用。
(2)参数设置 控制系统所需要的参数都是通过该模块完成的,并且可以保存和读取参数设置。
(3)故障报警 当现场产生故障时候,该模块会给出报警信息提示并且及时反映出来,以供操作人员处理参考。
(4)实时信息显示 把当前系统中的实际值显示出来,并与预先设定的值进行比较,以此来判断控制算法的好坏和系统是否正常工作。
(5)调整操作 给用户提供一些手动操作的面板,这样可以使工作人员很方便地进行调整和控制操作。
(6)报表 记录历史数据,供以后分析使用,并且可以随时打印数据,供工作人员观察系统的运行状态。
(7)变频器控制 该模块用来控制变频器,以维持金刚石合成过程中的压强基本不变,生产出高质量金刚石。
(8)信息管理系统 信息管理系统是采用数据库开发技术开发,用来登记操作人员工作、出勤、工作量等情况,提供查询、汇总等管理功能。
由于通信模块与变频器控制模块都要进行串口通信,所以在软件编制过程中设计了串口通信通用类CSerialPort,该类封装了串口通信的基本数据和方法,以解决RS-232和RS-485等不同类型串口的通信问题。CSerialPort类头文件中的主要成员变量和成员函数如下:
Class CSerialPort
{
Private:
HANDEL m_hPort;
DCB m_Dcb;
COMMTIMEOUTS m_TimeOuts;
DWORD m_Error;
Public:
CSerialPort( ); //构造函数
virtual ~ CSerialPort( ); //析构函数
//InitPort( )函数实现初始化串口
BOOL InitPort( );
DCB GetDCB( ); //获得DCB参数
//SetDCB( )函数实现设置DCB参数
BOOL SetDCB ();
// GetTimeOuts( )函数获得超时参数
COMMTIMEOUTS GetTimeOuts ();
// SetTimeOuts( )函数设置超时参数
BOOL SetTimeOuts ();
// WritePort( )函数实现写串口操作
Void WritePort (CString port, CString);
CString ReadPort(CString port ); //读串口操作
BOOL ClosePort(CString port ); //关闭串口
};
对该类的重要函数说明如下:
InitPort( )函数完成串口的初始化工作,包括打开串口、设置DCB参数、设置通信的超时时间等。打开串口使用CreateFile( )函数。
SetDCB( )函数用于设置DCB参数,包括传输的波特率、是否进行奇偶校验、每字节长度以及停止位等。
WritePort( )函数用来完成向串口写数据,由于该系统中需要对多个串口进行通信,所以把串口号作为参数传递给该函数;该函数把要发送的数据先进行编码(加入校验,以减少误码率),然后再调用Windows API函数WriteFile( )把数据发送到串口中。
ReadPort( )函数用来完成从串口读数据,它先调用API函数ReadFile( )把下位机发送的数据读出来放到缓存里面,然后对数据进行处理并变换成字符串(CString)类型返回。
2.3 控制系统软件设计中几个关键技术性问题的解决
2.3.1 上位机VC++程序设计中技术问题
(1)由于上位机和下位机需要进行实时通信并且上位机还要对系统进行实时监控显示,所以上位机程序设计中采用了多线程技术。当监控系统开始工作时,用AfxBeginThread()函数[4]创建辅助线程来管理串口通信。这样设计后,当进行串口通信时候,主线程能够继续完成监控功能和处理其它事务。辅助线程函数的主要代码如下:
UINT SerialPro(void* param)
{
Ccrystal* mdlg=( Ccrystal*)param;
CString str;
int flag=1;
… … //如果初始化串口失败返回
//循环读写串口,直到结束
while(flag)
{
… … //这里把要发送的数据赋给变量str
//向串口写数据
mdlg->serial.WritePort(hport,str );
_sleep(100); //让辅助线程休眠100毫秒
//从串口读数据并赋给变量str
str=mdlg->serial.ReadPort( );
… … //这里把从串口得到的数据进行处理
}
}
(2)由于在系统开发中加入了数据库开发,因此数据库规划也是一个工作重点。数据库的开发采用SQL Server,上位机通过在Visual C++中用ADO进行数据库编程。
2.3.2下位机PLC程序设计中技术问题
下位机PLC主要是进行实时控制,所以PLC程序运行的好坏直接影响着整个系统工作的好坏,其中控制算法是需要认真进行设计的。本文将PID控制算法独立出来成为一个子模块,这样做的好处是以后维护和升级比较方便,如果有更好的控制方法,只需要更改该PID控制模块即可,这样系统的维护代价比较低。
2.3.3IPC与PLC之间通信程序的设计
IPC与PLC之间采用主从应答方式,IPC具有传送优先权,根据需要向PLC发出读写命令;下位机处于被动状态响应上位机的命令。上位机读数据时向PLC发出读数据命令,PLC响应命令并将数据传回上位机;写数据时,上位机向PLC发出写命令及数据,PLC即可接收。当PLC没能正确响应时,PLC返回没能正确响应标志。
为了使IPC和PLC建立起正确的通信,必须进行如下工作:首先,要定义好通信协议如指令格式等,且在PLC的特殊寄存器作相应的设置;其次,要确定微机串行口且对进行传输数据的端口参数进行设置,如波特率、数据长度、校验方式等;最后,由于数据传输过程中有误码率,所以需要进行数据校验,这里采用自己设计的数据校验算法。
3 应用
本控制系统应用于山东某金刚石加工厂,经过半年多的运行,本文所述的控制系统运行情况良好,与原来的单纯PLC控制系统相比,大大提高了控制精度和金刚石产品的质量,大大减轻了操作人员的劳动强度,基本上杜绝了误操作。现在,本控制系统能自动记录操作人员的工作情况及其所生产的产品质量,还能考察职工的出勤情况,这样使公司的管理上了一个新台阶。在取得良好的经济效益的同时,也取得了良好的社会效益。
4 结论与建议
1、将IPC与PLC有机结合,发挥各自的优势,并利用现有的设备,有效地解决了目前金刚石合成机控制系统不能适应生产需要的问题,提高了金刚石产品的控制精度和质量,取得了良好的社会和经济效益,这无疑为传统设备、传统控制系统的改造走出了一条既经济又有效的方法。
2、计算机监控操作人员的工作情况和产品质量,提高了企业管理的科学化水平。
3、该控制系统软件设计中应用了面向对象技术,使得软件以后的维护和升级成本降低,很适合进一步的推广使用。
4、下位机PLC控制系统中采用的是参数自整定PID控制算法,可以根据实际情况采取其它的控制算法,比如模糊控制、自适应控制和神经网络控制等。
5、根据需要,只需要将控制系统稍微改动,就可以由IPC控制多个PLC操作站。
参考文献:
[1] 何衍庆.集散控制系统原理及应用[M]. 北京:化学工业出版社, 1999.
[2] 赖寿宏.微型计算机控制技术[M]. 北京:机械工业出版社,1998.
[3] 尹宏业.PLC可编程控制器教程[M]. 北京:航空工业出版社, 1997.
[4] David J. Kruglinshi. Visual C++技术内幕[M].潘爱民等译. 北京:清华大学出版社,1999.
[5] 林俊杰. Visual C++6程序设计经典[M]. 北京:科学出版社,1999.