资源描述:
电气与自动化 刘雄, 等 基于开放式数控 系统的数控机床 多线程数据实时采集研究 基于开放式数控 系统的数控机床 多线程数据实时采集研 究 刘雄 ,李蔚洋 ,刘杰 1 . 江钻股份有限公司, 湖北 潜江 4 3 3 1 2 4 ; 2 . 江汉油田勘探开发研究院, 湖北 武汉 4 3 0 2 2 3 摘要 在数控机床加工过 程 中, 实时采集加 工数据 对加 工过程进 行控 制与补 偿是 十分 必要 的。利用开放 式数 控 系统 的优 势 , 采 用开放式 运动控 制 系统 P MA C卡搭 建的一 台数控 机床 。 P MA C具有大量数据存储的双端口R A M区域, 并提供可专用开发函数。而 V i s u a l c 的多线 程技术是上位机大量数据读取的有效技术 , 将数控 系统 的双端 口技 术与上位机 的 多线程技 术 相结合 , 开发 了加 工数据 实时采 集 系统 。经过数据采集 实验 , 取得 了满意的效果 。 关键词 数控机床 ; 实时数据采集 ; P MA C; 双端 口 R AM; 多线程技术 中图分类号 T P 2 7 4 文献标志码 B 文章编号 1 6 7 1 - 5 2 7 6 2 0 1 3 0 5 0 1 7 6 - 0 3 R e a l T i l n e D a t a A c q u i s i t i o n a n d I s a y i n Mu l ti - t h r e a d T e c h n i q u e o n Op e n C N C Ma c h i n e T o o l s UU Xi o n g . L I We i y a n g . L I U J i e 1 . K i n g d r e a m P u b l ic L i mit e d C o mp a n y , Qi a n j i a n g 4 3 3 1 2 4 ,C h i n a; 2 . R e s e a r c h I n s t i t u t e o f E x p l o r a t io n a n d D e v e lo p me n t . J ia n g h a n Oi l f ie l d C o mp a n y , Wu h a n 4 3 0 2 2 3 , C h i n a Abs t r a c t Pr o ce s s ing d a t a r e a l t i me c o l le c t ion is v er y n e c e s s a ry t o t h e CNC mac h ining pr o c e s s c on t r o l a n d c o mp e n s a t ion . This p a ‘ pe r t ak es t he a d v an t a g e s o f t h e o p en n u mer i c a l c on t r ol s y s t e m an d u s e s t h e op e n mo t ion c on t r o I s y s t e m P MAC c ar d t o b u i lt d CNC ma c h i n e t o ols.PMAC h as t h e d u al- p or t RAM a r e a o f t h e lar ge d a t a s t or a g e c a p a cr ,an d p r o v i d e s s pe c ial de v e l o pme n t f u n c t io n s. Th e Vis u a l C mu lt i- t h r e a d in g t e c h n o lo g y i s a n e ff e iv e t e c h n o l o g y t o t h e h o s t c o mp u t e r r e a d a n d wr it e o f t h e la r g e d a t a c a p a c i. D a t a ac q u i s it io n an d dis p l a y wi t h Mult i - t h r e a d b as e d o n Dua l Po e d RAM t e c h no log y ar e d e s c r ibe d in t h i s p a p er . Th e e x p er i me n t a t i o n r e。 su it s h ows t h a t it i s e ffe c t ive o n c a ms h a ff g n n ding . Ke y wor dsCNC t oo ls;r e a l t ime d a t a ac q u i s it io n; PMAC;du a l p o e d RAM;mult i t h r e a d t e ch n iqu e 在数控机床加工过程中, 实时采集加工数据对加工过 程进行控制与补偿是十分必要的。但对成熟的数控系统 如西门子、 F U N U C等而言, 加工数据采集是十分困难的, 用户无法进行进 一步 的监测 与控制 。基 于 P C 的开放 式 数控系统, 是对传统封闭式数控系统的根本突破 , 是当今 数控技术的发展主流和研究热点 J 。因此 , 采用 N C嵌入 P C型结构对开放式数控系统进行了开发研究。 在数控机床系统的应用过程中, 为了了解机床性能或 进行一步控制, 有许多数据参数需要采集, 如机床各轴的 运动参数、 机床正在执行的命令、 在线测量尺寸等 J 。在 基于P M A C卡数控机床的数据实时采集过程中, 采取了 多线程技术与 P M A C o p t i o n 2提供双端口技术相结合的采 集方式 , 取 得了满意的效 果。 1 基 于 P MAC 系统 M o t o r o l a 公司的 D S P 5 6系列高性能数字信号处理器作为 C P U, 是 目前世界上功能最强大的运动控制器之一, 一个 P MA C可 以同时控制 1 8根轴 , 多个 P MA C级联 最多 可 以控制 1 2 8 根轴, 能够精确定位 , 在包装、 装配、 医药工业 、 机床等行业应用广泛。 1 - 2 基 于开放式数控 系统数控机床 该数控机床为非圆磨床, 运动方式为 轴砂轮架水 平往复移动和 c 轴工件主轴转动两轴联动, 其主要硬件设 备有工控机、 P MA C卡、 松下伺 服电动机、 雷尼绍光栅、 C B N砂轮、 电主轴等。安装在 轴上的直线光栅分辨率为 1 m, 安装在 c 轴上的圆光栅分辨率为 2 0 I x m。数控系统 采用直线光栅采集 轴位移作为反馈, 圆光栅采集 c轴转 角作为反馈, 形成全闭环控制 图 1 。 卡数控机床 软硬 件 1 .3 软件系统 1 . 1 P MAC开放式运动系统 ] 可 编 程 多 轴 控 制 器 p r o g r a m m a b l e m u l t i - a x i s c o n t r o l l e r , P MA C 是美国D e h a T a u公司 2 0世纪 9 0年代推 出的基于 P c平台的开放式多轴运动控制器。它采用了 作者简介 刘雄 1 9 8 5 - , 男 , 湖北天 门人 , 本科 , 主要从事机械设计 。 1 7 6 P M A C支持 C , V B , V C, D e l p h i 等多种高级语 , 并提 供了可共二次开发的的动态链接库函数。该实验装置以 V i s u a l c 6 . 0为工具, 开发了软件控制系统, 并开发了用 于数据采集与显示的 C S t S h o w类, 用于数据采集和显示及 绘图。 h t t p ffZ Z H D . c h i n a j o u r n a 1 . n e t . c a E - m a i l Z Z H D e h a i n a j o u r n a 1 . n e t . c a 机械制造与自动化 电气与自动化 刘雄 , 等 基于开放式数控 系统的数控机床多线程数据实时采集研究 图 1 数控 系统的控制原理 图 2 开放式数控系统加工数据采集关 键技术 2 . 1 P MA C数据读取 的方式 文献[ 4 ] 介绍了两种 P MA C数据读取的方式 1 从缓冲区中获得采集数据 在这种采集方式中, 需 要设定采集周期 变量 n9 来决定在每个伺服中断周期 内执行多少个数据采集周期, 设定采集源选择标志 变量 I 2 0 来决定采集哪一个或多个数据源, 以及设定采集源地 址 变量 I 2 0 一I 4 4 。这种数据采集方式 比较复杂, 但应用 灵活, 用户可以通过设定采集源 , 采集任何 P MA C有效地 址中的数据。 2 从 I / O及运动寄存器中直接采集数据 在这种采 集方式中, 用户只需要读取各个 I / O及运动寄存器中的值 就能得到需要的数据。由于 P MA C将运行过程中各个 电 动机、 编码器的各种数据自动的存放在相应的 I / O及运动 寄存器中, 用户不需额外指定采集源, 不必关心数据是如 何存人、 如何译码的, 大大简化了数据采集的难度。 本文采取了另外一种 P MA C数据读取方式 启动双 端口 R A M, 利用双端 口 R AM所带的函数进行数据采集。 这种方法更加方便 , 双端 口R A M的函数封装了 P MA C数 据读取数据的过程 , 用户采集运动参数, 只须调用相关 的 函数即可。例如 D o u b l e P ma c D P R P o s i t i o n D WO R D d w D e v i e e ,i n t m o t o r , d o u b l e u n i t s 该函数返回指定电动机的实际位置。参数 d w D e v i c e为 P M A C卡的卡号, m o t o r 指电动机号减 1 , u n i t s 表示单位。 2 . 2 双端 口 R AM 技术 P MA C的 O p t i o n 2提供了一个 8 Kx 1 6位的 R A M, 允许 P MA C和 P C机之间共享一块快速内存, 实现数据的快速 传递。在凸轮轴的加工过程中需要在实时状态下快速 的 大量的位置数据信息的下载, 同时又需要重复的快速的从 P MA C中读取各电动机的状态信息。电动机的状态信息 数据可以不停的更新并被 P L C程序或 自动的写入双端 口 R A M中, 如果不使用 双端 口 RA M, 这些数据 必须使用 P A MC的在线命令通过 P C总线来存取, 由于使用双端 口 R A M存取不需要经过通讯 口发送命令和等待响应时间。 下面介绍几个主要的双端 口 RA M后台定点数据报告功 Ma c h i n e B u i ld i n g 8 A u t o m a t i o n , J u n 2 0 1 3, 4 2 J 7 6 ~ 1 7 8 能函数 J 。 1 B O O L P m a c D P R R e a l T i me D WO R D d w D e v i c e , UI NT p e r i o d,i n t o n _o ff 该函数开启或关闭 P MA C卡自动将定点数据写入双 端 口 R A M功能 ; 2 v o i d P m a c D P R S e t M o t o r s D WO B D d w D e v i c e , U I N T n 该函数设置 P MA C卡向双端 口RA M中写入几个电 动机的相关数据, 参数 r /, 表示将 1 一 n 个电动机的相关数据 写入双端 口 RA M 中; 3 v o i d P m a c D P R S e t H o s t B u s y B i t D WO R D d w D e v i c e , i n t o n _o f f 该函数通知 P MA C卡, 客护端将 要进行读 双端 口 R A M中的数据; 4 i n t P m a c D P R G e t H o s t B u s y B i t D WO R D d w D e v i c e 检查该函数是否正在进行双端口R A M的写操作。 参数说明 参数中 p e r i o d参数设置双端口R A M中数据 的刷新周期, 开启或关闭P MA C卡, 将 o n _ o ff设置为 1 或0 。 2 . 3 多线程技术 J Wi n d o w s 操作系统之多任务调度与处理, 每一个进程可 以同时执行多个线程, 这意味着一个程序可以同时完成多个 任务。在 V C 6 . 0中, MF C类库提供了对多线程编程的支 持, 它把线程区分为两类 工作者线程和用户界面线程 工作 者线程主要用来执行费时的后台计算任务, 用户界面线程则 一 般用来处理用户的输入, 响应用户产生的事件和消息。在 M F C类库中, 类 C Wi n T h r e a d是用户界面线程的基本类。用 M F C创建线程, 只需编写一个与应用程序中的其余部分并行 运行的函数, 然后调用全局函数 Mx B e g i n T h r e a d 启动线程, 线程启动后调用辅助线程的回调函数, 可以在回调函数中编 写想要实现功能的程序代码。当然也可以设定线程之间的 优先级 , 也可以保持线程间的同步。这对应用多线程进行数 据采集来说, 是很有用的。 要终止线程, 可以在线程内部调用 M F C的A f x E n d T h r e a d 函数或 E x i t P r o c e s s 或 S e t E v e n t 进行有条件地结束线 程, 如果想从该线程外部结束该线程, 可以使用 Wi n 3 2 A P I 函 数 T e r m i n a t e T h r e a d 。等, 但使用时一定要释放该进程所占 的系统资源, 否则这样会引起系统的不稳定。 3 加工数据采集实验 3 . 1 加工数据采集程序编 写 在编写程序时为了避免显示过快而无法观察 , 在数据 采集后立刻写入文件保存 , 而采用了间隔时间为 5 5 m s的 定时器, 用于慢速显示。用一个线程采集一个变量, 以增 加采集速度, 并防止由于线程的相可以通过修改 S l e e p 函数中的参数, 改变采集时间间隔。本文给出了采集 C 轴速度的代码, 如果要采集更多的数据, 再增加线程即可。 主要程序代码如下 i n c l u d e s t a t i c C E v e n t G a t h e r E v e n t [ 3 ] ; s t a t i c U I NT T h r e a d P r o c 3 L P V O I D p B a r ; F I L E }f CAS p e e d; 1 77 电气与自动化 刘雄, 等 基于开放式数控系统的数控机床多线程数据实时采集研究 B O OL C S t S h o w O n I n i t D i a l o g { P ma c D P R R e a lT i m e 0 , 2 , 1 ; R A M, 伺服更新周期定为 2 m s P ma c D P R S e t Mo t o r s 0 , 2 ; 将 电机数据复制到双端 口 R A M / / 开启 双端 口 , , 1 2号 . G a t h e r E v e n t [ 0 ] . R e s e t E v e n t ; / / 使事件对对象处于无信号状态 } u I N T T h r e a d P r o c 3 L P V O I D p B a r 程的 回凋函数 { w h i l e t r u e / / 辅 助线 { C A S p e e d P ma c D P R G e t V e l 0, 1 , 1 0 0 1 0 5 . 2 7 7 8 1 ; / / 采集 c 轴 的实际位置 s p r i n ff b u f 3 , ” %1 0 . 3 1 f ” , C A S p e e d ; / / 将采 集结果 由 d o u b l e型转换成字符型 f p r i n ff f C A S p e e d , ” %s \ n ”, b u f 3 ; / / 将采 集结果写入文件保存 S l e e p 5 ; / / 延时 5 ms , 以避免采集过多重复数据 / / 一旦事件对象处于有信号状态 点击“ 停止” 按钮, 立即终 止线程 i f W a i t F o r s i n g l e O b j e c t G a t h e r E v e n t [ 2 ] , 0 W A I T O B - J E C T _ _ 0 b r e a k; } r e t u m 0; } v o i d C S t S h o w O n S t a r t { f C A S p e e d f o p e ns t r Wo r k P a t h”\\ ””C AS p e e d . t x t ”, ” W” ; / / 打开文件 , 准备写入采集数据 A f x B e g i n T h r e a d T h rea d P r o c 3, G e t S a f e H w n d ; / / 创 建线程并调用线程 函数 P m a c D P R S e t H o s t B u s y B i t 0 , 1 ; 卡 , 将要读双端 口 R A M 中的数据 。 if P m a c D P R G e t P ma e B u s y B i t 0 “ 写” 双端 口 R A M, 返 回 t h i s 一 S e t T i m e r 1 , 5 5 , N U L L ; 器用 于“ 慢速显示” , , 通 P M AC ret u rn; / / i n 果发现正在 图 2 数据采集界面 的独立性而导致乱码。因此编程中将每个变量分别写入 单独的文件。下面是采集到的部分数据 轴位置 轴速度 c 轴位置 e 轴速度 1 3 8 . 8 o o 4 . 2 3 5 1 5 . 9 8 8 0 . 6 3 1 1 3 8 . 8 0 7 4 . 1 6 5 一l 5 . 9 9 2 - 0 . 6 3 2 l 3 8 . 8 1 5 4 . 5 8 8 1 5 . 9 9 6 - 0 . 6 2 3 1 3 8 . 8 2 6 4 . 3 0 6 1 5 . 9 9 9 0 . 6 3 4 1 3 8 . 8 2 0 4 . 5 8 8 1 6 . o o 3 0 . 6 2 8 1 3 8 . 8 3 3 4 . 3 0 6 1 6 . 0 0 7 0 . 6 2 3 1 3 8 . 8 3 8 4 . 4 4 7 1 6 . Ol 1 0 . 6 2 2 1 3 8 . 8 4 4 5 . 0 8 2 1 6 . 01 5 0 . 6 3 1 1 3 8 . 8 5 0 4 . 3 0 6 一l 6 . O1 8 0 . 6 3 5 1 3 8 . 8 5 5 4 . 6 5 9 1 6 . 0 2 2 0 . 6 2 5 4 结果分析 由采集结果可知, 多线程采集具有很高的采样频率, 而且与 P M A C的双端口技术相结合, 也简化了程序, 加快 了采集速度, 这是一种很好的采集方法。 应该指出的是 , 多线程技术是一种 比较难的技术, 多 线程应用程序的编写和调试比较困难, 因为并发运行线程 的并行性增加了代码的额外复杂度, 在实验过程中就发生 过多次调试问题。但是如果使用得当, 多线程可以极大地 改善一个应用程序的响应性能。 / / 设置定时 参考文献 } v o i d C S t S h o w O n S t o p { G a t h e r E v e n t [ 2 ] . S e t E v e n t ; / / 结束辅助线程 P ma c D P R Re a l T i m e O, 2 , 0 ; / / 关 闭双端 口 R A M } v o i d C S t S h o w O n T i me r U I N T n I D E v e n t { m C A S . S e t Wi n d o w T e x t b u f 3 ; / / 显示采集数据 } 3 . 2 Jj - r 数 据采集结果 利用 V i s u a l c , 编写采集程序 , 采集加工过程 中 轴实际位置、 轴实际速度、 C 轴实际位置、 c 轴实际速度。 采集界面如图 2 所示 。 如果将采集的变量写入到同一个文件, 将会由于线程 1 78 [ 1 ]韩军 , 史文浩. 卧式车铣复合机床 开放式数控系统的研究 [ J ] . 装备制造技术 , 2 0 0 9 5 2 6 2 7 . [ 2 ]彭宝营,韩秋实 , 孙 志永. 基于 P MA C的数控机 床数据 实时 采集 的研究 [ J ] . 微计算机信息 , 2 0 0 7 7 2 3 7 2 3 9 . [ 3 ]申宇, 马伯渊 , 张金楼. 基于 P MA C卡 的高速数据采集[ J ] . 机 电工程技术 , 2 0 0 6 4 9 6 - 9 7 . [ 4 ]兰光明. VC环境 下的 P MA C数据实 时采集与显 示[ J ] . 北京 机 械工业学 院学报 2 0 o 4 3 4 5 4 7 . [ 5 ]D E L T A T A U D a t a S y s t e m I n c . P MA C U S E R’ S MA N UA L [ S] . US A DEL T A T AU Da t a S y s t e m I n c, 1 99 9. [ 6 ]李秀敏 凌宇欣. V i s u a l c 6 .0机范例入 门与提高 [ M] . 北京 清华大学 出版社. 收稿 日期 2 0 1 2 0 90 5 h t t p ∥Z Z H D . c h i n a j o u rna 1 . n e t . c n E - m a i l Z Z H D e h a i n a j o u m a 1 . n e t . c n 机械制造与 自 动化
展开阅读全文