网络数控服务系统结构如图
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 代码以程序段为单
位传送给相应的运动控制单元。设备动作期间
,状态跟踪与反馈模块将数控设备的动作情况、
状态信息实时反馈给远端用户。
(图
4)展示了单个客户端——数控服务系统——单个基本数控单元之间业务流的基
本情况
,其中业务流 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 系统也是基于阻塞模式工作的,所以两个系统之间就有机会设置全局标志位来
协调各通信任务。