3 I/O控制器的结构设计
I/O操作对实时性的要求比运动控制要求低,它与任务控制器之间的通信采用NML 机制。
3.1 I/O控制器与任务控制器的接口
通信接口在数控系统总体的层次化结构模型中,I/O控制器位于任务控制器的下层,它与任务控制器之间有三条用于通信的NML 通道,分别是命令通道、状态通道和错误信息通道。而在任务控制器中,有一个专门的接口模块taskintf ,它定义了所有发送到其下级运动控制器和I/O控制器的控制命令。I/O控制器与任务控制器的接口如图2 所示。
图2 I/O控制器与任务控制器
I/O控制器的任务主要有: I/O初始化、停止、关闭、急停开关、主轴正转、反转、停止、冷却液开关、润滑初始化与开关、刀具准备、上刀下刀和刀具表管理等等。下面是刀具部分的接口定义。
cncToolPrepare(int tool) ;
cncToolLoad() ;
cncToolUnload() ;
cncToolLoadToolTable(const char 3 file) ;
cncToolSetOffset (int tool , double length , double diameter) ;
3.2 I/O控制器的内部结构设计
基于RCS设计思想设计一个I/O控制器, 它可以对任务控制器发送给I/O控制器的命令进行分类整理, 即在I/O控制器内把任务划分为若干个模块,即为:与刀具相关、与主轴相关、与润滑相关、与冷却相关和其他与辅助操作相关的五个子任务模块。同时在I/O控制器顶层设定一个I/O接口模块,用于总体把握I/O控制器的状态和任务分发。模块之间的通信利用NML通信机制。具体的I/O控制器的内部结构如图3所示。
图3 I/O控制器结构示意图
如图所示,I/O接口、刀具控制、主轴控制、冷却处理、润滑处理和辅助加工分别作为一个独立的模块存在。I/O接口模块位于其他五个模块的上层,作为I/O控制器和任务控制器的接口,接收所有来自任务控制器送往I/O 部分的任务,它将接收的任务进一步划分,并按照任务的分类分别送往刀具、主轴、冷却,润滑和辅助几个模块进行执行。底层的五个模块作为执行任务的最终节点,具体执行细化任务,不再有子模块。
3.3 I/O控制器和任务控制器以及I/O控制器内部各模块之间的通信
I/O控制器和任务控制器之间,以及I/O控制器内部各模块之间的通信是通过NML通道来完成的。系统定义了两种类型的NML通道:一是命令通道,用于传递上层模块对下层模块的命令信息;二是状态通道,用于上级从下级读取状态信息;在这里,NML通道采用共享内存的方式实现,所有的数据要经过共享内存进行中转。I/O内部模块间也是按照共享内存的方式进行通信的,因此系统中设立了相应的共享内存缓冲区用于内部模块间通信。例如用于I/O接口与刀具间的缓冲区toolCmd和toolSts ; 用于I/O接口与主轴间的缓冲区spindleCmd 和spindleSts , 用于I/O接口与冷却间的缓冲区coolandCmd 和coolandSts ,用于I/O接口与辅助操作间的缓冲区auxCmd 和auxSts ,用于I/O接口与润滑间的缓冲区lubeCmd 和lubeSts。