基于Windows系统的数控机床网络监控系统研发
2020-08-12花维维倪俊芳李国防周东风杨波
花维维,倪俊芳,李国防,周东风,杨波
(1. 苏州大学 机电工程学院,江苏 苏州 215021;2. 苏州优备精密智能装备股份有限公司,江苏 苏州 215021)
0 引言
数控机床网络监控是可以通过无线或有线网络进行传输的一种数据流,可跨地域实现远程监控,解决了数控机床人工监控费时费力的问题[1]。国外数控机床一般都配备一套高级远程的故障诊断和支持系统,如西门子、AB等公司都为各自机床提供了远程支持服务,该服务以B/S模式为主流,能在线反馈信息,实现对数控机床实时工作状况监测和程序运转情况的检测,其应用系统能客观地通过Internet达到实时监控数控机床、对数控机床发生的故障进行分析并采取相应的应急措施[2]。国内对数控机床监控技术进行研究的高校主要有南京航空航天大学、重庆大学、大连理工大学、华中科技大学等[3],主要都基于C/S模式,存在布线冗长繁琐,响应速度慢的缺点。本文基于Windows系统进行开发,对Windows PC端与数控端的无线数据传输进行研究,采用无线通信技术、多线程处理以及Socket编程的方法,以期达到能实时反馈数控机床的运行状态。
1 总体方案设计
1.1 采用无线通信技术进行网络监控
在C/S的模式下,数控机床端只需对数据管理并对数据加密,所负责的功能较少,而PC端则不然。首先用户在使用PC端时,PC端需要有和用户实现人机交互的界面,通过网络发送请求造成服务器资源不对等,很明显在这样的工作模式下,客户端工作任务明显要高于服务器,造成了客户端的任务较重和服务器任务较轻的问题[4]。
在局域网的环境之下,通过输入数控端控制器的IP地址与PC相连,实现实时的数据传输以及通过在PC端实现对数控机床的程序管理及数据报警。
1.2 数控端和Windows PC端的TCP/IP协议
TCP 3次建立连接,4次断开连接的原理图,如图1所示。TCP在工作时PC端和数控机床端之间进行数据传输[5];数控端发送数据,客户端就会回应,并询问发送时间;最后数控机床端就会回应发送数据的时间。
图1 基于TCP/IP协议的通信流程
1.3 多线程编程
多线程编程主线程有且只有一个,但是可以有多个工作分线程。对于传输数控机床的运行状态、数据文件,这些工作非常耗时。针对该逻辑并发性的问题,要实现多任务同时进行,采用C#编程时,需将这种功能加载进去。在Windows操作系统下能够容易地并发任务。
PC端首先会发出和数控机床端请求连接的信号要求;数控机床端收到请求后,这时另一个工作线程就会被新建,用于储存PC端的数据[6]。为了数据传输得稳定,需要创建新的进程来保证服务器对客户端的连接实现工作间不存在干涉。
线程的创建、挂起、恢复以及终止等是通过函数调用[7]的。创建线程经由函数方法Thread()来实现,服务器监听路径的代码如下:
Try
{tcp = new server3.AsyncTCPServer(6000); //开辟6000通道
tcp.ClientConnected += Tcp_ClientConnected; //建立客户端连接协议
tcp.ClientDisconnected += Tcp_ClientDisconnected; //断开客户端链接协议
tcp.DataReceived += Tcp_DataReceived; //数据接收连接协议
tcp.Start(); } //连接开始
2 编程与调试
2.1 数控端和客户端数据传输
数控端数据在传输时被TCP协议进行封装,在端口6000接收到请求后,传输过程如下:
1) 数控机床端实时发送数据,TCP协议将要发送的数据流进行分割。
2) TCP将数据进行序号的编辑,数控端数据以数组的形式进行传输。以数组形式传输时可方便随机访问,并且数据传输是连续的,且客户端接收时按照确认序号进行文件接收。
3) 在数据传输到达目的地时,数据杂乱无章,通过TCP协议收到确认序号的信号,再将数据进行整合,让数据传输避免错乱。
在上述数据传输过程中,须保证数据传输稳定性和抗干扰能力,如果弄丢一个数据块,TCP将不会接收数据或者直接丢掉这一段的内容。程序在数据传输时,将接收到的字节数据转化为字符串,本系统所使用的是json格式的数据传输方法。
2.2 数控端数据发送与Windows PC端数据接收
由于采取了多线程编程,每当一个客户端接入数控机床时,数控机床端就建立了一个新的线程来接收PC端发送的请求[8]。该线程通过 While 循环不断接收来自客户端的信息,若无数据传输时线程中的recv()函数阻塞。一个判断语句用来判断接收数据是否为消息数据。当条件满足时,系统会进行判断“是文件数据”,因此客户端需要做好接收数据的准备,数据发送/接收机制如图2所示,具体步骤如下:
1) 文件夹arrMsgRec会在程序启动后创建,会保存所有的数控程序。当满足(arrMsgRec[0] == 48 && js)这个判断条件时,判断接收到的数据为消息数据。
2)接收数据的那一端先创建套接字。
3) 接收发送端连接,将接收的数据存入变量byte[]arrMsgRec,由插入的while函数进行无限循环接收数据的操作,实现实时监控功能。
4)执行后续操作。将接收到的字节数据转化成字符串,关闭文件,关闭传输套接字。
数据传输时采用try{}和catch{}语句[9]来进行数据传输的对错评判。如果数据传输发生错误,程序会立即报错,将程序进行终止,以免程序跑乱。数据报错程序如下:
void RecMsg()
{while (true)
{ byte[] arrMsgRec = new byte[1024 * 1024 * 2]; //定义一个2M的缓存区;
int length =-1; //将接收到的数据存入到输入 arrMsgRec中;
try {length = sockClient.Receive(arrMsgRec); //接收数据,并返回数据的长度;
}
catch (SocketException se)//出错
{Console.WriteLine("异常;" + se.Message);
return; }
catch (Exception e)
{ Console.WriteLine("异常:" + e.Message);
return; }
if (arrMsgRec[0] == 48 && js) //表示接收到的是消息数据;
{string strMsg = System.Text.Encoding.UTF8.GetString(arrMsgRec, 1, length - 1).Replace("+"," ");//将接收到的字节数据转化成字符串;
set(strMsg);}} }
图2 数据发送/接收机制流程图
2.3 系统调试
系统实验平台如图3所示。Windows与数控机床在局域网的环境下应用无线通信技术,通过IP地址来匹配数控机床,还可以1台PC机同时监控多台数控机床运转状况。本文只匹配1台数控机床进行试验,测试结果如下:
图3 实验平台
1) 实现Windows PC端和数控端的连接进行数据传输:绝对定位X12.375,Y20.370,主轴转速750r/min,刀具刀号0400,实际速度746r/min,冷却状态打开,主轴状态正转,卡盘状态无效,润滑状态关闭,加工件数10,加工时间为20.5min,G代码显示G00 G98 G97 G40,自动方式连续。如图4和图5所示。
2) 使用“上传按钮”进行数控端数据进行上传,在远程客户端使用“接收按钮”后,数据便能够实现传输功能实时反馈信息,数据传输速度很快,如图6所示。
3) 现在改变数控端的数据状态,绝对定位X30.395、Y10.290。刀具刀号0500,实际速度498r/min,冷却状态关闭,主轴状态停止,卡盘状态有效,润滑状态打开,加工件数50,加工时间为2.25min,G代码显示G00 G98 G97 G40,自动方式连续。由图7和图8可见,远程Windows PC端能够实时监控与更新。
4) Windows查看程序系统,使用“程序按钮”,对数控设备中CNC程序进行监控以及对程序进行管理。在程序界面可以通过使用“返回按键”进行切换。
图4 数控端
图5 Windows PC端
图6 PC端程序目录功能界面
图7 数控机床工作实时状态
图8 PC端的反馈状态
3 结语
本数控机床网络监控系统是基于Windows系统下进行开发的,采用客户端/服务器模式,服务器在每500ms的状态下进行更新数据状态,能实时更新数据状态,易于更新升级数控系统,数控机床的反应速度加快,程序存储空间大。运用C#语言编写了数控机床端和远程客户端软件与界面,实现了远程端与数控机床端在无线局域网下的数据通信、数据文件传输、客户端界面可以和程序界面相互切换等实时监控功能。本网络监控系统成本低、传输数据文件的速度快,能实时反映信息,便于管理,很大程度满足现阶段的功能要求。