一种用于总线式数控系统的数据互操作方法

阅读: 评论:0

著录项
  • CN201010581257.2
  • 20101209
  • CN102566515A
  • 20120711
  • 沈阳高精数控技术有限公司;中国科学院沈阳计算技术研究所有限公司
  • 田野;盖荣丽;黄艳;杨欢;韩文业;王品
  • G05B19/418
  • G05B19/418

  • 辽宁省沈阳市浑南新区南屏东路16号
  • 辽宁(21)
  • 沈阳科苑专利商标代理有限公司
  • 李晓光
摘要
本发明涉及一种用于总线式数控系统的数据互操作方法,包括以下步骤:现场总线驱动程序申请共享缓冲区,并进行初始化;数控系统运动控制器线程进行加载操作;数控系统运动控制器线程共享现场总线驱动程序所申请的共享缓冲区;在上述申请的共享缓冲区,通过和现场总线驱动程序的读写操作实现数控系统的数据互操作。本发明方法占用空间小的数据互操作方法,满足总线式数控系统插补数据和现场总线驱动反馈数据交互的实时性、同步性、可靠性和安全性。
权利要求

1.一种用于总线式数控系统的数据互操作方法,其特征在于包 括以下步骤:

现场总线驱动程序申请共享缓冲区,并进行初始化;

数控系统运动控制器线程进行加载操作;

数控系统运动控制器线程共享现场总线驱动程序所申请的共享 缓冲区;

在上述申请的共享缓冲区,通过和现场总线驱动程序的读写操作 实现数控系统的数据互操作。

2.按权利要求1所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:现场总线驱动程序申请的共享缓冲区分为发送缓 冲区和接收缓冲区,每个缓冲区设有两个数据区;

发送缓冲区的每个数据区大小为运动控制器每周期发送插补数 据的大小,接收缓冲区的每个数据区大小为现场总线驱动程序每周期 反馈数据的大小;

发送缓冲区和接收缓冲区设有头尾指针各一个,发送缓冲区和接 收缓冲区设有队空队满标志各一个。

3.按权利要求1所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

运动控制器读操作是指运动控制器从接收缓冲区头指针所指向 的数据区中读取数控机床伺服系统反馈信息,执行步骤如下:

判断接收缓冲区是否为空;

如果接收缓冲区不为空,则运动控制器从接收缓冲区头指针所指 向的数据区取出反馈数据;

将接收缓冲区满标识置为FALSE;

接收缓冲区头指针执行加1操作;

将接收缓冲区头指针加1操作的结果对2取模;

判断接收缓冲区的尾指针与取模后的头指针是否相等;

如果接收缓冲区的尾指针与取模后的头指针相等,则将接收缓冲 区空标识置为TRUE;

本次读操作结束。

4.按权利要求3所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

如果接收缓冲区的尾指针与取模后的头指针不相等,则本次读操 作结束。

5.按权利要求3所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

如果接收缓冲区为空,则本次读操作结束。

6.按权利要求1所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

运动控制器写操作是指运动控制器向发送缓冲区尾指针所指向 的数据区写入插补命令,执行步骤如下:

判断发送缓冲区队列满标识是否为TRUE;

如果队列满标识为TRUE,则发送缓冲区尾指针执行减1操作;

将发送缓冲区尾指针减1操作的结果对2取模;

将插补命令写入发送缓冲区尾指针所指向的数据区;

发送缓冲区尾指针执行加1操作;

将发送缓冲区尾指针加1操作的结果对2取模;

置发送缓冲区队列空标识为FALSE;

判断发送缓冲区头指针与取模后的尾指针是否相等;

如果发送缓冲区头指针与取模后的尾指针相等,则将发送缓冲区 满标识置为TRUE;

本次写操作结束。

7.按权利要求6所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

如果发送缓冲区头指针与取模后的尾指针不相等,则本次写操作 结束。

8.按权利要求6所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

如果队列满标识不为TRUE,则将插补命令写入发送缓冲区尾指 针所指向的数据区;接续发送缓冲区尾指针执行加1操作步骤。

9.按权利要求1所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

现场总线驱动读操作是指现场总线驱动从发送缓冲区头指针所 指向的数据区读取插补命令,执行步骤如下:

判断发送缓冲区是否为空;

如果发送缓冲区不为空,则从发送缓冲区头指针所指向的数据区 中读取插补命令;

置发送缓冲区满标识为FALSE;

发送缓冲区头指针执行加1操作;

将发送缓冲区头指针加1操作的结果对2取模;

判断发送缓冲区的尾指针与取模后的头指针是否相等;

如果发送缓冲区的尾指针与取模后的头指针相等,则将发送缓冲 区空标识置为TRUE;

本次读操作结束。

10.按权利要求9所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

如果发送缓冲区的尾指针与取模后的头指针不相等,则本次读操 作结束。

11.按权利要求9所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

如果发送缓冲区为空,则结束此次读操作。

12.按权利要求1所述的一种用于总线式数控系统的数据互操作 方法,其特征在于:

现场总线驱动写操作是指现场总线驱动向接收缓冲区尾指针所 指向的数据区内写入数控机床伺服状态反馈信息,其步骤如下:

判断接收缓冲区队列满标识是否为TRUE;

如果接收缓冲区队列满标识为TRUE,则接收缓冲区尾指针执行 减1操作;

将接收缓冲区尾指针执行减1操作的结果对2取模;

将数控机床伺服运行状态反馈信息写入接收缓冲区尾指针所指 向的数据区;

接收缓冲区尾指针执行加1操作;

将接收缓冲区尾指针执行加1操作的结果对2取模;

置接收缓冲区队列空标识置为FALSE;

判断接收缓冲区头指针与取模后的尾指针是否相等;

如果接收缓冲区头指针与取模后的尾指针相等,则置接收缓冲区 队列满标识为TRUE;

本次写操作结束。

13.按权利要求12所述的一种用于总线式数控系统的数据互操 作方法,其特征在于:如果接收缓冲区头指针与取模后的尾指针不相 等,则本次写操作结束。

14.按权利要求12所述的一种用于总线式数控系统的数据互操 作方法,其特征在于:如果接收缓冲区队列满标识不为TRUE,则将 数控机床伺服运行状态反馈信息写入接收缓冲区尾指针所指向的数 据区;接续接收缓冲区尾指针执行加1操作步骤。

说明书
技术领域

本发明涉及数控系统领域,具体地说是一种用于总线式数控系统 的数据互操作方法。

总线式数控系统对实时性、同步性、可靠性和安全性的要求较高, 其运动控制器与现场总线驱动之间数据交互的主要问题在于如何处 理周期不匹配的两个功能部件之间数据互操作问题。运动控制器如何 及怎样处理现场总线驱动的反馈数据以及现场总线驱动如何使用运 动控制器发送来的插补数据成为影响其性能优劣的关键。

目前运动控制器和现场总线驱动之间数据互操作的方法主要有 以下几种:

1.不改变运动控制器结构,现场总线驱动只负责运动控制器与通 讯卡之间的数据交换,插补计算全部在运动控制器中实现;

2.更改运动控制器结构,将插补功能移到现场总线驱动中实现;

3.不改变运动控制器和现场总线驱动的结构,采用长队列或者环 形数据缓冲区等对数据进行缓存。

前两种方法要求运动控制器和现场总线驱动的周期严格匹配。然 而一方面由于受到硬件条件限制,运动控制器的周期通常在毫秒级, 而由于数控系统加工精度的要求,现场总线驱动的周期通常为微秒 级;另一方面,即使将运动控制器的周期和现场总线驱动的周期设置 为同一个数值,由于系统时钟计时存在着误差,二者依然难以完全匹 配。采用长队列或者环形数据缓冲区等对数据进行缓存的方法虽然能 够解决周期不匹配问题,但需要占用很大的内存空间,影响数控系统 的性能。

针对现有技术中存在的上述不足之处,本发明要解决的技术问题 是提供一种能够满足运动控制器和现场总线驱动之间周期不匹配问 题,且占用空间小的用于总线式数控系统的数据互操作方法。

为实现上述目的,本发明采用以下技术方案:

本发明用于总线式数控系统的数据互操作方法包括以下步骤:

现场总线驱动程序申请共享缓冲区,并进行初始化;

数控系统运动控制器线程进行加载操作;

数控系统运动控制器线程共享现场总线驱动程序所申请的共享 缓冲区;

在上述申请的共享缓冲区,通过和现场总线驱动程序的读写操作 实现数控系统的数据互操作。

现场总线驱动程序申请的共享缓冲区分为发送缓冲区和接收缓 冲区,每个缓冲区设有两个数据区;

发送缓冲区的每个数据区大小为运动控制器每周期发送插补数 据的大小,接收缓冲区的每个数据区大小为现场总线驱动程序每周期 反馈数据的大小;

发送缓冲区和接收缓冲区设有头尾指针各一个,发送缓冲区和接 收缓冲区设有队空队满标志各一个。

运动控制器读操作是指运动控制器从接收缓冲区头指针所指向 的数据区中读取数控机床伺服系统反馈信息,执行步骤如下:

判断接收缓冲区是否为空;

如果接收缓冲区不为空,则运动控制器从接收缓冲区头指针所指 向的数据区取出反馈数据;

将接收缓冲区满标识置为FALSE;

接收缓冲区头指针执行加1操作;

将接收缓冲区头指针加1操作的结果对2取模;

判断接收缓冲区的尾指针与取模后的头指针是否相等;

如果接收缓冲区的尾指针与取模后的头指针相等,则将接收缓冲 区空标识置为TRUE;

本次读操作结束。

如果接收缓冲区的尾指针与取模后的头指针不相等,则本次读操 作结束。

如果接收缓冲区为空,则本次读操作结束。

运动控制器写操作是指运动控制器向发送缓冲区尾指针所指向 的数据区写入插补命令,执行步骤如下:

判断发送缓冲区队列满标识是否为TRUE;

如果队列满标识为TRUE,则发送缓冲区尾指针执行减1操作;

将发送缓冲区尾指针减1操作的结果对2取模;

将插补命令写入发送缓冲区尾指针所指向的数据区;

发送缓冲区尾指针执行加1操作;

将发送缓冲区尾指针加1操作的结果对2取模;

置发送缓冲区队列空标识为FALSE;

判断发送缓冲区头指针与取模后的尾指针是否相等;

如果发送缓冲区头指针与取模后的尾指针相等,则将发送缓冲区 满标识置为TRUE;

本次写操作结束。

如果发送缓冲区头指针与取模后的尾指针不相等,则本次写操作 结束。

如果队列满标识不为TRUE,则将插补命令写入发送缓冲区尾指 针所指向的数据区;接续发送缓冲区尾指针执行加1操作步骤。

现场总线驱动读操作是指现场总线驱动从发送缓冲区头指针所 指向的数据区读取插补命令,执行步骤如下:

判断发送缓冲区是否为空;

如果发送缓冲区不为空,则从发送缓冲区头指针所指向的数据区 中读取插补命令;

置发送缓冲区满标识为FALSE;

发送缓冲区头指针执行加1操作;

将发送缓冲区头指针加1操作的结果对2取模;

判断发送缓冲区的尾指针与取模后的头指针是否相等;

如果发送缓冲区的尾指针与取模后的头指针相等,则将发送缓冲 区空标识置为TRUE;

本次读操作结束。

如果发送缓冲区的尾指针与取模后的头指针不相等,则本次读操 作结束。

如果发送缓冲区为空,则结束此次读操作。

现场总线驱动写操作是指现场总线驱动向接收缓冲区尾指针所 指向的数据区内写入数控机床伺服状态反馈信息,其步骤如下:

判断接收缓冲区队列满标识是否为TRUE;

如果接收缓冲区队列满标识为TRUE,则接收缓冲区尾指针执行 减1操作;

将接收缓冲区尾指针执行减1操作的结果对2取模;

将数控机床伺服运行状态反馈信息写入接收缓冲区尾指针所指 向的数据区;

接收缓冲区尾指针执行加1操作;

将接收缓冲区尾指针执行加1操作的结果对2取模;

置接收缓冲区队列空标识置为FALSE;

判断接收缓冲区头指针与取模后的尾指针是否相等;

如果接收缓冲区头指针与取模后的尾指针相等,则置接收缓冲区 队列满标识为TRUE;

本次写操作结束。

如果接收缓冲区头指针与取模后的尾指针不相等,则本次写操作 结束。

如果接收缓冲区队列满标识不为TRUE,则将数控机床伺服运行 状态反馈信息写入接收缓冲区尾指针所指向的数据区;接续接收缓冲 区尾指针执行加1操作步骤。

本发明具有以下优点:

1.能够解决运动控制器和现场总线驱动之间周期不匹配问题。本 发明方法将运动控制器与现场总线驱动之间的接口缓冲区设计为传 输数据大小的两倍,在同一时间内运动控制器和现场总线驱动只能访 问传输数据大小的缓冲区空间,且对自己访问的缓冲区加锁。这部分 缓冲区暂时不对对方开放,所以不需要考虑对方执行周期,是否读写 完毕等问题。

2.占用空间小。本发明方法占用的空间为传输数据大小的两倍, 与环形缓冲区等通过扩展缓冲区大小来解决周期不匹配问题的方案 相比占用的空间要小得多。

3.有效避免读写脏数据。本发明方法将数据缓冲区设计为发送缓 冲区和接收缓冲区,并在发送缓冲区和接收缓冲区内分别设有两个数 据区。运动控制器每次将发送缓冲区的一个数据区更新完毕后,才允 许总线驱动来访问该数据区。总线驱动将接收缓冲区的一个数据区更 新完毕后,运动控制器才会读取该数据区内的数据。所以,不存在上 下两层程序同时读写发送缓冲区或接收缓冲区中同一个数据区的情 况,可以有效地避免读写脏数据的问题。

4.通用性好。本发明方法不依赖于所传输的数据类型和数据内 容,能够应用于多种类型的总线式数控系统中。

图1为本发明方法的总体结构图;

图2为本发明方法运动控制器读操作流程图;

图3为本发明方法运控控制器写操作流程图;

图4为本发明方法现场总线驱动读操作流程图;

图5为本发明方法现场总线驱动写操作流程图。

下面结合附图对本方明方法作详细说明。

实现本发明方法的总体结构图如图1所示。运动控制器为数控系 统插补命令发送端,向现场总线驱动发送插补数据;现场总线驱动是 数控系统运动控制器和数控机床伺服系统之间的命令传输通道,负责 将运动控制器的命令发送给数控机床伺服系统,并将数控机床伺服系 统运行状态反馈给运动控制器;数控机床伺服系统执行插补命令带动 伺服轴运动,向现场总线驱动发送当前运行状态反馈信息。

本发明用于总线式数控系统的数据互操作方法包括以下步骤:

现场总线驱动程序申请共享缓冲区,并进行初始化,该共享缓冲 区分为发送缓冲区和接收缓冲区,发送缓冲区和接收缓冲区中各有两 个数据区;数控系统运动控制器线程进行加载操作;数控系统运动控 制器线程共享现场总线驱动程序所申请的共享缓冲区;在上述申请的 缓冲区空间内,通过和现场总线驱动程序的读写操作实现数控系统的 数据互操作。

运动控制器将插补命令写入共享数据缓冲区,现场总线驱动从共 享数据缓冲区中读取插补命令,该共享数据缓冲区称为发送缓冲区; 现场总线驱动将数控机床伺服系统运行状态反馈信息写入共享数据 缓冲区,运动控制器从共享数据缓冲区中读取数控机床伺服系统运行 状态反馈信息,该共享数据缓冲区称为接收缓冲区。

在数据传输过程中,运动控制器按照自己的控制周期将插补命令 写入发送缓冲区尾指针所指向的数据区中,并从接收缓冲区头指针所 指向的数据区中读取数控机床运行状态反馈信息。同样地,现场总线 驱动程序从发送缓冲区头指针所指向的数据区中读取插补命令发送 给数控机床伺服系统,并将数控机床伺服系统的运行状态反馈信息写 入接收缓冲区尾指针所指向的数据区中。

所述运动控制器读操作是指运动控制器从接收缓冲区头指针所 指向的数据区中读取数控机床伺服系统反馈信息。其具体执行步骤如 图2所示:

运动控制器读操作是指运动控制器从接收缓冲区头指针所指向 的数据区中读取数控机床伺服系统反馈信息,执行步骤如下:

判断接收缓冲区是否为空;

如果接收缓冲区不为空,则运动控制器从接收缓冲区头指针所指 向的数据区取出反馈数据;

将接收缓冲区满标识置为FALSE;

接收缓冲区头指针执行加1操作;

将接收缓冲区头指针加1操作的结果对2取模;

判断接收缓冲区的尾指针与取模后的头指针是否相等;

如果接收缓冲区的头尾指针相等,则将接收缓冲区空标识置为 TRUE;

本次读操作结束;

如果接收缓冲区的头尾指针不相等,则本次读操作结束;

如果接收缓冲区为空,则本次读操作结束。

所述运动控制器写操作是指运动控制器向发送缓冲区尾指针所 指向的数据区写入插补命令。其具体执行步骤如图3所示:

运动控制器写操作是指运动控制器向发送缓冲区尾指针所指向 的数据区写入插补命令,执行步骤如下:

判断发送缓冲区队列满标识是否为TRUE;

如果队列满标识为TRUE,则发送缓冲区尾指针执行减1操作;

将发送缓冲区尾指针减1操作的结果对2取模;

将插补命令写入发送缓冲区尾指针所指向的数据区;

发送缓冲区尾指针执行加1操作;

将发送缓冲区尾指针加1操作的结果对2取模;

置发送缓冲区队列空标识为FALSE;

判断发送缓冲区头指针与取模后尾指针是否相等;

如果发送缓冲区头尾指针相等,则将发送缓冲区满标识置为 TRUE;

本次写操作结束;

如果发送缓冲区头尾指针不相等,则本次写操作结束;

如果队列满标识不为TRUE,则将插补命令写入发送缓冲区尾指 针所指向的数据区;接续发送缓冲区尾指针执行加1操作步骤。

当前运动控制周期内发送缓冲区队列为满时,现场总线驱动为其 正在读的发送缓冲区数据区加锁。此时运动控制器只能操作发送缓冲 区队列中未加锁的数据区,因此写操作覆盖上一个运动控制周期所存 入插补命令。当现场总线驱动读操作执行完成后,为当前读操作所涉 及的发送缓冲区数据区解锁。上述动作称为现场总线驱动的读操作锁 机制,该机制保证了现场总线驱动读到正确的插补命令,避免读到脏 数据。

所述现场总线驱动读操作是指现场总线驱动从发送缓冲区头指 针所指向的数据区读取插补命令,其具体执行步骤如图4所示:

判断发送缓冲区是否为空;

如果发送缓冲区不为空,则从发送缓冲区头指针所指向的数据区 中读取插补命令;

置发送缓冲区满标识为FALSE;

发送缓冲区头指针执行加1操作;

将发送缓冲区头指针加1操作的结果对2取模;

判断发送缓冲区的尾指针与取模后的头指针是否相等;

如果发送缓冲区的头尾指针相等,则将发送缓冲区空标识置为 TRUE;

本次读操作结束;

如果发送缓冲区的尾指针与取模后的头指针不相等,则本次读操 作结束;

如果发送缓冲区为空,则本次读操作结束。

所述现场总线驱动写操作是指现场总线驱动向接收缓冲区尾指 针所指向的数据区内写入数控机床伺服状态反馈信息。

当前现场总线驱动控制周期内接收缓冲区队列为满时,运动控制 器为其正在读的接收缓冲区数据区加锁。此时现场总线驱动只能操作 接收缓冲区队列中未加锁的数据区,因此写操作覆盖上一个现场总线 驱动控制周期所存入的数控机床伺服运行状态反馈信息。当运动控制 器读操作执行完成后,为当前读操作所涉及的接收缓冲区数据区解 锁。上述动作称为运动控制器的读操作锁机制,该机制保证了运动控 制器读到正确的数控机床伺服运行状态反馈信息,避免读到脏数据。 其具体执行步骤如图5所示:

判断接收缓冲区队列满标识是否为TRUE;

如果接收缓冲区队列满标识为TRUE,则接收缓冲区尾指针执行 减1操作;

将接收缓冲区尾指针执行减1操作的结果对2取模;

将数控机床伺服运行状态反馈信息写入接收缓冲区尾指针所指 向的数据区;

接收缓冲区尾指针执行加1操作;

将接收缓冲区尾指针执行加1操作的结果对2取模;

置接收缓冲区队列空标识置为FALSE;

判断接收缓冲区头指针与取模后的尾指针是否相等;

如果接收缓冲区头尾指针相等,则置接收缓冲区队列满标识为 TRUE;

本次写操作结束;

如果接收缓冲区头指针与取模后的尾指针不相等,则本次写操作 结束;

如果接收缓冲区队列满标识不为TRUE,则将数控机床伺服运行 状态反馈信息写入接收缓冲区尾指针所指向的数据区;接续接收缓冲 区尾指针执行加1操作步骤。

为了测试本发明的实际运行效果及性能,在SSB‑III总线数控系 统上应用本发明并实际带动伺服电机运行。伺服电机的实际运行情况 平稳,不存在震动情况,实时数据观测未存在数据丢失和数据读写错 误情况。

本发明的测试环境:SSB‑III(Synchronous‑Serial‑Bus,同步 串行总线)数控总线;数控系统硬件平台为CPU 5X86‑133MHz、 RAM‑32M、FLASH‑32M;操作系统为linux‑2.4.22(RTAI);执行结果 测试方式:电机实际转动情况,运动插补数据和伺服反馈数据的实时 打印观测。

本文发布于:2023-04-14 15:57:14,感谢您对本站的认可!

本文链接:https://patent.en369.cn/patent/3/86701.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图