刘 斌 王梦龙 魏 宁 王逸清
(北京蓝拓机电设备有限公司,北京 100013)
随着两化深度融合水平的进一步提高,我国制造业信息 化迎 来 崭新的发 展阶段。ERP、MES、DNC、MDC等先进信息化管理系统的大量应用进一步加快了制造企业的转型升级。其中DNC系统具有简捷的程序数据管理功能、快速的NC数据传送功能及更高的数据传送安全性能等优点。MDC则能够通过多种方法获取生产现场实时数据并存储,通过专用计算、分析和统计方法,以报告和图表形式直观反映车间生产状况,帮助企业生产部门做出科学和有效的决策。为满足制造企业的信息化需求,公司使用C#语言开发出基于以太网的LTDNC机床联网软件,以实现DNC和MDC的功能。
作为一款DNC软件,所具备的主要功能如下。
(1)加工程序的编辑,安全保存。
(2)加工程序的传输、DNC在线加工。
(3)机床侧远程操作。
(4)通过宏输出功能采集机床状态。
(5)基于Moxa的IO采集卡采集机床开关机、加工、故障等状态
(6)基于OPC通信采集机床加工过程各种状态。
(7)实时监视机床的状态。
(8)分析机床的利用效率。
整个DNC机床联网系统分2个层级:工厂级为工艺员站、生产管理员站、现场服务器及加工程序服务器;现场级主要有现场服务器、串口服务器、MoxaIO采集卡以及数控机床(图1)。串口服务器实质上是一个以太网与RS232之间的转换器。
图1
此软件选用微软C#主流开发语言,开发环境VisualStudio2008,数据库是SQLServer2005。软件运行的服务器使用MSServer2000操作系统。软件由3个部分组成:机床通信软件、程序管理软件以及报表软件。
(1)机床通信软件。实现了程序传输、DNC在线加工、机床状态采集、机床运行信息获取等基本功能,机床操作人员可在机床侧直接发送指令进行传输控制。对于FANUC类的机床可通过宏输出获取机床运行信息,对于西门子的高级数控系统可通过OPC通信方式获取大量的运行信息。
(2)程序管理软件。实现工厂加工程序的统一存放、集中管理。通过流程化的程序管理,有效减少程序管理中的混乱。保证加工程序的安全保存、有效备份。
(3)报表软件。用于实时监视机床的状态。统计机床的利用率,记录工件的加工用时。
近年来,不少数控系统都配置了以太网口,但RS232串口通信以结构简单、传输可靠,仍然为主流的机床通信方式。本软件采用了串口服务器作为转换装置,在机床与串口服务器间采用RS232通信,再通过以太网连接至PC服务器。
不同的数控系统在接收加工程序时,会要求不同的程序头、程序尾。
(1)对于FANUC数控系统,传输时程序必须以”%”开始并结束,示例如下:
%(开始符)
O6323(程序号)
…… (内容)
M30(程序结束)
% (结束符)
(2)对于西门子数控系统,必须有程序头,示例:
%_N_BUCHANG_MPF;BUCHANG.MPF为 程序名;$PATH=/_N_MPF_DIR
不同的数控系统发送出来的加工程序,也会有不同的程序头和程序尾。服务器在接收时会先去掉数控系统生成的程序头和程序尾,然后加上发送时所需的程序头和程序尾。
在C#中串口通信是通过serialPort控件实现的。一般而言,RS232串行通信有两种流控制协议:XonXoff软握手协议和RTS/CTS硬握手协议。FANUC采用的是前者,而西门子则选择了后者。
为响应机床侧的远程操作,服务器侧的大致处理流程如图2所示。
数控系统相对来说是一个较封闭的系统,不同数控系统的开放程度、开放方式都不相同,由此对机床的状态采集采集存在着一定限制和困难。分析对比各采集方式,权衡可操作性、实时性等因素后,决定采用宏输出功能、IO采集卡及OPC通信技术3种方式。
图2
FANUC和HASS等数控系统提供了宏输出功能。在加工程序中嵌入宏指令,执行到宏指令时便向串口输出字符串。宏指令中可以包含系统变量,故可以输出系统状态。可采集的机床运行信息有当前加工程序号、当前主轴S代码值、轴位置……
(1)宏指令应按如下顺序编入加工程序。
打开指令:POPEN
在指定数据输出命令之前,指定该指令,以建立与外部输入/输入设备的链接。
数据输出指令:BPRNT或DPRNT
指定需要输出的数据,包括系统地址变量值、字符、其他任何数值。
关闭指令:PCLOS
当全部数据输出指令已经完成时,指定PCLOS以解除与外部输入/输出设备的链接。
这些宏指令将系统的地址变量的值从串口输出,而这些地址变量又对应数控机床的状态信息。因此得到地址变量的值就相当于采集到了数控机床的状态信息。
(2)DPRNT的格式如下:
DPRNT[a#b[cd]……]
a——标识字符;b——地址变量;c——整数位数;d——小数位数。
示例:
POPEN
DPRNT[VAR1#1000[32]VAR2#1001[30]]
PCLOS
则FANUC、HAAS系统把地址变量为1000和1001中的数据从串口输出,输出的数据格式如下:
VAR1:***.**
VAR2:***
其中,*表示任意数字。
常用的系统变量列举如表1所示。
表1
通过Moxa的IO采集卡,连接机床的数字输出信号,可获取机床的基本状态,如开关机、待机、故障等。
Moxa的IO采集卡支持两种通信方式Modbus协议和OPC协议,此项采用OPC协议。
(1)数据读取方式。OPC客户端读取数据有3种方式:同步、异步、订阅。
采用同步通信。OPC客户程序向OPC服务器进行请求时,客户程序必须等到服务器对应的响应全部完成以后才能返回,在此期间客户程序处于等待状态。同步通信适用于客户程序较少,数据量较小的场合。
采用异步通信。OPC客户程序对OPC服务器进行请求时,客户程序请求后立刻返回,不用等待服务器响应,可进行其他操作。服务器完成响应后再通知客户程序,因此相对于同步通信,异步通信的效率更高。
采用订阅方式。OPC客户程序对OPC服务器进行请求时,客户程序操作后立刻返回,不用等待服务器操作,可进行其它操作,服务器的Group组在组内有数据发生改变时,自动根据更新周期刷新相应客户端数据,客户端只发送一次请求后不再对服务器请求。
(2)编程接口。OPC主要包含两种接口:CUSTOM标准接口和OLE自动化标准接口,自定义接口是服务商必须提供的,而自动化接口则是可选的。
自定义接口是一组COM接口,用于C++语言应用程序的开发;自动化接口是一组OLE接口,用于VB、DELPHI、Excel等脚本编程语言应用程序的开发。
OPC.SINUMERIK.Machineswitch等OPC服务器是在COM平台开发的,因此对于.NET框架下的C#语言,作为客户端程序语言访问OPCServer,需解决两平台间无缝迁移的问题。OPC基金会对会员提供了OpcRcw动态链接库,OPCNETCOM包装器和OPCNETAPI,将OPC复杂的规范封状成简单易用的C#类,可以比较容易地实现数据访问。
编程步骤如下。
第一步:须添加对以下DLL文件的引用。
OpcRcw.Da.dll
OpcRcw.Comn.dll
第二步:创建OPC服务器对象,并连接至OPC服务器。
第三步:创建OPC组(Group),并为OPC组添加标签(Item)。
第四步:编写订阅方式读取数据。
第五步:编写订阅方式读回调函数。
第六步:注销实例。
西门子的840D数控系统若配上PCU50则可以通过OPCDA服务器采集机床的运行信息,如当前加程序、当前程序段、操作模式、主轴负荷、实际进给速度、当前刀具号、轴位置……。PCU50上的数据存取服务器名称为:OPC.SINUMERIK.Machineswitch。在进行OPC通信前需进行DCOM配置,服务器端和客户端都需配置。对PCU50上的OPCDA服务器的读取方式和编程方法可参考MoxaIO采集卡的相关内容。
可采集的常用机床信息如表2所示。
表2
软件已在联德机械(杭州)有限公司投入使用,现场使用反馈良好。
[1]李波.基于串口的DNC信息采集系统的研究[D].南京:南京航空航天大学,硕士论文,2007.
[2]储晓承.开放式CNC机床加工过程状态监测技术研究[D].南京航空航天大学硕士论文,2011.
[3]李江全,张荣华等.VisualStudio串口通信与测控应用编程实践[D].北京:电子工业出版社,2013.