基于国产操作系统的EtherCAT 总线数控系统的设计
2022-01-04苏军
苏 军
(广州数控信息科技有限公司, 广东广州 510535)
0 引言
数控系统是机床母机的“大脑”,是现代装备制造业的核心, 目前行业内数控系统的基础软硬件对外依赖程度太高,存在断供,“卡脖子”的风险。另外,随着国民经济的发展和制造技术的迅猛发展,各行业对高性能,柔性加工的需求不断提高,对数控行业的信息化、数字化、智能化要求也日益增加, 因此面向国产基础软硬件的数控系统的研究开发是具有十分重要意义[1]。
1 数控系统总体设计方案
以全国产化的器件搭建数控系统硬件平台, 基于国产实时操作系统SylixOS 搭建数控系统软件架构, 使用开源的IgH EtherCAT 主站协议栈连接伺服从站和IO 单元从站。 系统总体方案框图,见图1。
图1 系统总体方案框图
2 数控系统硬件平台
数控系统硬件平台完全由全国产化器件搭建,采用国产高性能CPU 处理器, 核心元器件包括FPGA、 驱动光耦、 总线PHY 芯片等均采用国产品牌产品, 具体产品型号此处不详细列举, 硬件框图见图2。
图2 数控系统硬件框图
3 数控系统软件架构
数控系统软件基于SylixOS 实时操作系统进行部署,系统软件根据应用功能进行划分,根据实时性要求确定不同的优先级,然后由操作系统进行统一调度。
整体软件架构如图3 所示。由SylixOS 实时操作系统实现对硬件接口及外设的驱动, 并移植IgH EtherCAT Master 协议栈,支持TCP/IP 等网络协议,提供文件系统、图形系统等接口; 各数控系统应用软件模块根据实时性要求放入不同的进程,由操作系统统一调度,不同实时性的进程间,通过共享内存进行数据交互。
图3 软件架构框图
4 实时操作系统SylixOS
SylixOS 是大型抢占式多任务硬实时操作系统,依据工信部评估报告,SylixOS 操作系统内核自主化率达100%, 是完全自主的国产操作系统, 支持ARM、MIPS、PowerPC、x86 等多种架构处理器,支持主流国产通用处理器[3]。兼容IEEE 1003(ISO/IEC 9945)操作系统接口规范,兼容POSIX 1003.1b(ISO/IEC 9945-1)实时编程标准[6];支持国军标GJB7714-2012 操作系统接口规范, 因此数控系统应用软件可以很方便的基于SylixOS 进行搭建和开发[4]。
SylixOS 提供不同实时性要求的进程,满足应用软件各模块的需要,一方面在SMP 的用户态下可以达到足够的实时性, 支持EtherCAT 主站协议栈和实时网卡驱动,也可以提供实时进程支持数控应用软件强实时性功能模块的部署;另一方面提供丰富的接口驱动,如USB 驱动、串口驱动、GPIO 驱动、SPI、普通网口驱动等,同时也支持完善的文件系统、图形系统和TCP/IP 网络协议栈、信号量等进程间通信接口, 来满足数控应用软件弱实时进程和非实时进程的部署。
5 数控系统应用软件
数控系统应用软件是数控系统的核心, 是实现数控机床零件加工的关键。 基于国产硬件平台和国产操作系统的数控应用软件设计更是重中之重。 根据数控应用功能将应用软件划分为运控模块、 预处理模块、PLC 模块、界面模块以及总线模块。根据实时性要求不同,将上述模块件归纳为弱实时模块和强实时模块, 分别进行不同进程的部署供操作系统调度, 不同进程之间通过共享内存进行数据交互。 弱实时进程包含预处理模块、 界面模块等;强实时进程包含PLC 模块、运控模块和总线模块。
5.1 弱实时模块
(1)预处理模块。 预处理模块包含译码模块、刀补模块及轨迹优化模块。 译码模块把用户编写的标准G 代码程序解释成数控系统可以识别的数控指令信息。 刀补模块功能包括刀具偏置补偿和刀具半径补偿。 通常零件程序是以零件轮廓轨迹来编程, 刀具补偿的作用是把零件轮廓轨迹转换成刀具中心轨迹。轨迹优化模块对译码输出的走刀轨迹进行预处理, 优化因CAM 软件生成的奇异点或不合理的轨迹点,给后续加减速控制和插补计算提供更合理的运动路径。
(2)界面模块。 界面模块是数控系统的外在呈现,是用户操作数控系统的入口, 其主要的功能包括系统参数管理、刀具管理、文件管理、程序输入、加工仿真以及诊断信息监视等。方便、合理的界面模块设计能提高用户的使用体验。
5.2 强实时模块
(1)运控模块。 运控模块是数控装置控制核心,包含速度处理、加减速控制和插补计算。速度处理是对轨迹优化后的刀位点进行前瞻速度规划, 避免机床频繁启停的冲击;加减速控制是对加工轨迹,进行基于数学公式算法的约束计算,使机床控制柔和、平顺;插补模块对上述规划后的指令进行细分和离散化, 而后周期性输出给伺服驱动单元。
(2)PLC 模块。 PLC 模块是数控系统的可编程逻辑控制模块,接管外部输出/输出信号,比如:机床周边继电器开关,传感器信号,以及操作面板按键信号、信号灯等,经过可编程逻辑判断和运算,转换为G/F 信号与CNC 数控系统内部交互,实现数控装置的逻辑控制。
(3)总线模块。 总线模块采用IgH 的EtherCAT 主站协议栈, 通过将数控装置控制数据通过总线发给各从站设备。 从而实现伺服驱动单元、IO 单元等设备的控制。 主站总线模块实现在本文第6 节中详述。
5.3 进程间数据交互
通过共享内存对两进程间交互的数据进行交互。根据交互数据的数据量大小和交互频率的要求,基于共享内存设计两种数据交互机制,对于数据量大小固定,交互频率实时性要求较高的数据,通过共享内存固定地址映射进行交互;对数据量较大,或交互实时性要求不高的数据,通过设计阻塞型交互通信帧的方式,一收一发的进行交互。
6 数控系统EtherCAT 总线主站实现
本数控系统是使用基于SylixOS 平台深度优化、修改的IgHEtherCAT 主站协议栈来实现总线连接。IgH 主站协议栈本身是完全开源免费的, 在开发成本和开发效率方面极具优势。 IgH 具有良好的可移植性,本身被设计成一个支持Linux2.6/3.x 的内核模块,一般只要带有网口的硬件的平台(符合以太网物理层标准802.3u)都可以实现[2]。IgH 运行在内核态下,有较强的实时性,在实时稳定性和同步精度方面都有非常好的表现, 实时抖动可控制在us级别,同步精度达到ns 级别。 本系统的EtherCAT 总线主站实现主要包括IgH 主站协议栈、 网络设备驱动、IgH 用户层接口层和数控系统总线应用层[5]。
6.1 IgH 主站协议栈
SylixOS 下IgHEtherCAT 主站协议栈源代码编译成内核模块ec_master.ko, 总线协议功能由此模块实现,主站与从站的周期数据交互原理是,主站发出周期数据帧,从站依次从中提取各自的数据, 同时把各自需要反馈的数据填回,当周期数据帧到达最后一个从站后,数据帧返回主站。 主从站之间发送的以太网数据帧被称作过程数据对象。 另外,安装在SylixOS 实时操作系统内核中的通用实时以太网驱动,是可以直接驱动以太网网卡的,能将标准以太网网口直接转换成EtherCAT 总线以太网网口,从而获得满足要求的实时性。
6.2 网络设备驱动
SylixOS-IgH 提供实时网卡驱动rt_netcard.ko。 网络设备驱动模块应该在主站模块注册之后再进行注册,因为主站模块注册后为孤立状态,会等待网路设备连入,网络设备驱动模块注册后, 就有一个真正的物理网络接口负责收发EtherCAT 数据包。 在数控应用中的实时性要求至关重要,主要影响因素是操作系统和网卡驱动。 因此,SylixOS 实时操作系统需要周期性、准时的调用EtherCAT主站协议栈的发送函数,将过程数据准时送出,而实时网卡驱动需绕过LwIP 协议栈中安全性检查、路由、出入队列、分片和重组等相对非必要的网络传输功能,充分保证EtherCAT 数据包的实时性。 其流程如图4 所示。
图4 网络设备驱动流程
6.3 IgH 用户层接口层
IgH 用户层接口源代码编译后是一具体的动态库,IgH 源代码把对EtherCAT 主站字符设备的“ioctl”操作全部封装成用户层接口函数,这样用户不需要面对IgH 协议栈底层实现,只需要了解IgH 用户层接口函数的意义和使用方式即可。
6.4 数控系统总线应用层
数控系统总线应用层是数控系统应用软件和IgH 总线接口层之间的中间层,一侧对数控系统应用软件提供统一的接口函数进行总线数据的交互,使总线主站协议栈对应用模块透明,另一侧对IgH 用户接口层函数进行调度和状态转化,IgHEtherCAT 主站有三种状态, 分别是孤立状态、空闲状态和运行状态。 孤立状态是主机在等待其以太网设备连接时的状态;空闲状态是当主机已接受所有必需的从站设备但尚未被任何应用程序请求时的状态;运行状态即周期通讯阶段, 可以通过提供总线配置并交换过程数据的应用程序请求主机。 三种状态的转化见图5。
图5 主站状态和转化
主站模块注册之后,主站处于孤立状态;网络设备驱动模块注册之后,主站处于空闲状态;数控应用软件执行时,先进行主站请求操作,接着配置从站并建立数控控制数据和协议栈数据缓冲区的映射关系, 最后激活主站进入运行状态, 然后数控系统应用软件周期性的调用接口函数,进行控制数据的收发。 通过总线应用层的设计,可使数据流程更清晰,方便以后实现多总线的支持。
7 结束语
整套设计方案已在广州数控设备有限公司研发的国产车削中心数控系统GSK988TD 上完成设计和验证。 该数控系统配套EtherCAT 总线连接伺服驱动器和IO 单元在机床上进行加工试验,无论精度、表面粗糙度、工件加工一致性都能满足设计要求, 与原有非国产软硬件平台数控系统性能相当。 下一步研发的重点放在软件可靠性和稳定性上。