3 通信任务的协调
在一个数控网络中,网络数控服务系统起着控制和管理核心的作用,它是网络环境下多用户和多控制对象的桥梁,但同时,作为通信枢纽,它与网络中其他节点交互频繁,容易成为通信的瓶颈。因此,网络数控服务系统上通信任务的协调设计是十分重要的。
网络数控服务系统结构如图3所示,其中,软件部分主要包括嵌入式软件运行环境和NC操作与管理系统。系统采用μC/OS-II嵌入式操作系统,而μC/OS-II本身不提供文件系统、网络协议栈以及图形用户界面等,因此本文移植了lwIP协议栈,开发了简单的文件系统和图形用户界面以提供更好的服务。
NC操作与管理系统的主要工作原理如下:用户-NCSS通信模块用于实现所有与外部的、基于网络的交互,为了提供基于浏览器的数据交互,用户-NCSS通信任务内可添加EWS。用户-NCSS通信模块接收来自远程客户端的指令或数据信息,从接收到的信息中读取设备标识字段,根据该信息向相应设备的处理任务发送操作允许信号量,进而转入对相应数控设备的处理操作。用户-NCSS通信模块还负责对收到的数据进行区分,以区分是数据还是命令,并区分是哪种类型的命令,分别发送至不同的消息队列,并由这些消息队列传输到相应的任务或者中断进行后续处理。如果收到的是NC代码,则交由文件管理模块进行处理,它将NC代码以文本的形式保存到存储设备中以备调用。若从远程客户端上收到相应的文件处理命令,用户-NCSS通信任务把该命令发送至文件处理命令消息队列,相应的数据处理模块被唤醒,它读取命令并提取相应NC代码文件进行处理。数据处理模块主要实现了NC代码文件的管理,NC代码的编辑、编译,把NC代码的功能参数传送给运动控制单元,并实现现场人机交互。NC代码解释器已经作为一个单独的模块实现,在数据处理任务中,只需调用解释模块提供的相应功能函数(如格式检查函数、解释函数等)即可。对于刚刚从文件系统中提取出来的NC代码文本,需要调用解释模块提供的代码分割函数,将代码文本以程序段为单位分割成若干字符串,并将这些字符串存入预先定义好的字符串处理结构体中,再根据程序段号形成链表。而后,数据处理任务将查询数据处理消息队列,等待接下来的用户指令。控制指令处理模块主要是传达加工过程中用户介入的控制指令,比如紧停、暂停、继续、点动、回零、状态跟踪和监控等,相应的,该任务通过查询控制命令消息队列来执行对应的各种操作。消息队列可以接收来自多方的指令,既可以通过NCSS进行现场指令输入,也可以通过网络(浏览器、专用客户端)来发送指令。NCSS-MC监听模块用于接收来自运动控制单元的回馈信息。对于NC代码执行命令,相应的数据处理模块将配合NCSS-MC监听模块,采用应答式的传送方式,将NC代码以程序段为单位传送给相应的运动控制单元。设备动作期间,状态跟踪与反馈模块将数控设备的动作情况、状态信息实时反馈给远端用户。
展示了单个客户端——数控服务系统——单个基本数控单元之间业务流的基本情况,其中业务流1和2分别指用户在客户端或现场发出的数据和指令;业务流3和4分别为NCSS向基本数控单元转发的处理后的数据和指令;业务流5为NCSS在收到监控指令后,向基本数控单元发出的定时索要被控对象状态信息的指令;业务流6为基本数控单元向NCSS定时回馈的状态信息和请求信息;业务流7为NCSS向现场用户实时反馈的被控对象状态信息;业务流8为NCSS为现场用户提供的其他操作与管理信息;业务流9为NCSS向远程客户端用户实时反馈的被控对象状态信息;业务流10为NCSS向远程客户端用户提供的其他操作与管理信息。根据业务流的基本情况,下面将介绍(图2、3)中所示各通信任务的协调。
用户-NCSS通信任务主要是实现接收用户数据和指令并将其分类存储的网络服务器端程序。用户和NCSS的交互主要有三种类型的信息:NC代码,操作指令,以及向用户回显的机床状态信息。由于这三类信息结构比较类似,故采用同一消息结构体对其进行封装,并通过适当的位来加以区别。该任务在接收循环内的recv系统之前调用了select系统,此时任务阻塞在该系统上直到超时或者预设定的某个I/O条件(如套接口上有数据可读)得到满足,此时可以进行相应的I/O操作(如读数据)并能立即得到结果,select系统能同时判断多个套接口的多种状态,而recv系统也是基于阻塞模式工作的,所以两个系统之间就有机会设置全局标志位来协调各通信任务。