资源描述:
2 0 1 4年 2月 第 4 2卷 第 4期 机床与液压 M A C H I N ET O O L&H Y D R A U L I C S F e b 2 0 1 4 V o l 4 2N o 4 D O I 1 0 . 3 9 6 9 / j i s s n 1 0 0 1- 3 8 8 1 2 0 1 4 0 4 0 2 0 收稿日期2 0 1 3- 0 1- 3 1 基金项目广东省教育部产学研结合项目 ( 2 0 1 1 A 0 9 0 2 0 0 0 2 1 ) 作者简介罗海据 ( 1 9 7 7 ) ,男,硕士,从事数控系统,嵌入式系统的研究。E- m a i l h i d g e l u o @y a h o o c o m c n 。 数控系统中 P L C梯形图与指令表的转换算法 罗海据1,吴永明2,梁娟3 ( 1 广州数控设备有限公司,广东广州 5 1 0 5 3 0 ; 2 广东工业大学机电工程学院,广东广州 5 1 0 0 0 6 ; 3 华南农业大学工程学院,广东广州 5 1 0 6 4 2 ) 摘要为了满足数控机床系统中 P L C梯形图向指令表转换的要求,将梯形图的构成形式分成母线、环、半环、环母线 等结构元素,利用这些结构元素检验梯形图的合法性,分析梯形图和指令表之间的关系,设计梯形图向指令表快速转换的 算法。应用实例表明该算法效率高,实时性好,能满足数控机床系统的要求。 关键词数控系统;P L C ;梯形图;指令表 中图分类号T P 3 1 6 2 文献标识码B 文章编号1 0 0 1- 3 8 8 1( 2 0 1 4 )4- 0 6 4- 5 A l g o r i t h mo nT r a n s f o r mi n gP L CL a d d e rD i a g r a mt oI n s t r u c t i o nT a b l ei nN CS y s t e m L U OH a i j u 1,WUY o n g m i n g2,L I A N GJ u a n3 ( 1 G S KC N CE q u i p m e n t C o . ,L t d . ,G u a n g z h o uG u a n g d o n g 5 1 0 5 3 0 ,C h i n a ; 2 F a c u l t yo f E l e c t r o m e c h a n i c a l E n g i n e e r i n g ,G u a n g d o n gU n i v e r s i t yo f T e c h n o l o g y , G u a n g z h o uG u a n g d o n g 5 1 0 0 0 6 ,C h i n a ; 3 C o l l e g eo f E n g i n e e r i n g ,S o u t hC h i n aA g r i c u l t u r eU n i v e r s i t y ,G u a n g z h o uG u a n g d o n g 5 1 0 6 4 2 ,C h i n a ) A b s t r a c t I no r d e r t o m e e t r e q u i r e m e n t s o f t r a n s f o r m i n g t h e l a d d e r d i a g r a mp r o g r a m m a b l e l o g i c c o n t r o l l e r ( P L C )i n t o a ni n s t r u c t i o nt a b l e f o r n u m e r i c a l c o n t r o l ( N C )s y s t e mi nm a c h i n e t o o l ,t h e P L Cl a d d e r d i a g r a mw a s d i v i d e di n t o s o m e s t r u c t u r a l c o m p o n e n t s i n c l u d i n gb a s e l i n e ,r i n g ,s e m i r i n ga n dr i n g b a s e l i n e ,a n de t c .B yu s i n gt h e s ec o m p o n e n t s ,t h ev a l i d i t yo f P L Cl a d d e r d i a g r a mw a s c h e c k e d ,t h e r e l a t i o n s h i pb e t w e e nP L Cl a d d e r d i a g r a ma n di n s t r u c t i o nt a b l e w a s a n a l y z e d ,a n dt h e a l g o r i t h ma b o u t t r a n s f o r m a t i o nf r o m P L Cl a d d e r d i a g r a mt o i n s t r u c t i o nt a b l e w a s d e s i g n e d .T h e a p p l i c a t i o ne x a m p l e s s h o wt h a t t h e a l g o r i t h mi s e f f i c i e n t a n dh a s g o o dr e a l t i m e ,w h i c hi s s u i t a b l ef o r t h eN Cs y s t e mo f m a c h i n et o o l . K e y w o r d s N CS y s t e m ;P L C ;L a d d e r d i a g r a m ;I n s t r u c t i o nt a b l e 在中高档的数控机床系统或者数控加工中心里, 可编程逻辑控制器 ( P L C )是一个不可缺少的配置。 梯形图和指令表是 P L C的常用编程语言。将控制系 统的开关量逻辑与状态表示成梯形图,采用梯形图语 言设计顺序控制逻辑,具有方便直观的优点,有利于 系统维护与故障快速诊断。 梯形图不能直接被计算机识别和执行,需要先将 它转换成指令表才能够执行。目前梯形图转换为指令 表的算法主要有两种其一是基于二叉树的 P L C梯 形图转化为指令表的算法[ 1 ],该方法借助二叉树进行 翻译,但存在编译效率不高的问题;其二是将梯形图 映射到 A O V图[ 2 , 3 ],该方法需要搜索链表,能够翻译 复杂的梯形图,需要经过多次的扫描,实现起来比较 复杂。 一些商用 P L C的梯形图结构比较复杂,如西门 子 S 7 2 0 0 、三菱等品牌的 P L C功能强大,一般在个 人计算机或专用的编程设备完成对梯形图的编辑和修 改等操作。但对于数控机床系统而言,梯形图的编辑 和修改一般在工厂车间的机床上完成,用户在现场直 接修改调试,而且梯形图运行环境和数控系统内部关 联比较大[ 4 ]。另外在零件加工时,修改和编辑梯形图 不能对数控系统其他模块造成影响,如译码、插补等 实时性要求很高的模块,对梯形图的合法性检测和将 梯形图转换成指令表的算法效率显得相当重要。因 此,数控机床系统的 P L C模块,要能够在屏幕上显 示和修改梯形图,对梯形图的互换算法要求比较快。 本文作者将梯形图的构成形式分成母线、环、半环、 环母线等结构元素,利用这些结构元素检验梯形图的 合法性,分析梯形图和指令之间的关系,并以此设计 梯形图向指令表转换的算法。 1 梯形图的构成分析 一个完整的数控系统的 P L C梯形图由若干个独 立功能的块组成,不仅包括了基本的输入触点和输出 线圈,还包括了针对数控应用的特殊功能指令[ 4 ]。 P L C的梯形图由触点、输出线圈、功能指令、横线、 竖线、点等基本元素构成。梯形图中触点之间的竖线 占一个显示位置,那么触点之间非竖线的显示用点连 接,这个点不影响梯形图的逻辑,但在用二维数组表 示的梯形图形式时,它确实存在并且占用一个数据内 存。因篇幅所限,文中只对不包含功能指令构成的梯 形图进行讨论,如图 1所示。 图 1 C N C用 P L C基本梯形图 梯形图元素的位置用梯形图的行列位置坐标来表 示,依次从左到右,从上到下遍历,并且认为竖线的 位置是从第二行起,第一行是点元素。令最左边的竖 线的列号是 0 ,最上一行的行号是 0 ,那么图 1中左 上角的触点 X 0 0 0 0 0的坐标就是 P( 0 ,1 ) 。因此, 有如下定义 定义 1 梯形图里由行的下标为 0的所有的元素 组成的集合称为梯形图母线,也就是梯形图的第 0 行。很明显,除第 0行之外的触点都要直接或间接通 过竖线连在母线上。 定义 2 从某一个触点起,按逆时针遍历梯形图 回到当前触点,其中遍历元素个数最小,遍历路径的 元素构成一个四边形,将所有这些遍历过的元素组成 的集 合 称 作 环。在 图 1里,集 合 { 竖 线 ( 1 , 2 ) , X 0 0 0 1 0 ( 1 , 3 ) ,点( 1 , 4 ) , X 0 0 0 1 1 ( 1 , 5 ) ,竖线( 1 , 6 ) ,点( 0 , 6 ) , X 0 0 0 0 2 ( 0 , 5 ) ,点 ( 0 ,4 ) ,X 0 0 0 0 1 ( 0 , 3 ) ,点 ( 0 , 2 ) }构 成 一 个 环,{ 竖 线 ( 2 , 4 ) , X 0 0 0 2 0 ( 2 , 5 ) ,竖线( 2 , 6 ) ,点( 1 , 6 ) ,X 0 0 0 1 1 ( 1 , 5 ) ,点( 1 , 4 ) } 组成一个环。 定义 3 在一个环里,行号最大、列号最小的触 点称为环的起始触点,如上面两个环中,X 0 0 0 1 0 、 X 0 0 0 0 2 0是起始触点。 定义 4 跟环的起始触点行号相同的所有元素组 成的集合称为半环。如集合{ 竖线( 1 , 2 ) ,X 0 0 0 1 0 ( 1 , 3 ) ,点( 1 , 4 ) ,X 0 0 0 1 1 ( 1 , 5 ) ,竖线( 1 , 6 ) } 构成 一个半环,{ 竖线( 2 , 4 ) ,X 0 0 0 2 0 ( 2 , 5 ) ,竖线( 2 , 6 ) } 组成一个半环。很明显,环的起始触点也是半环 的起始触点。 定义 5 在某一个环里,除去半环的元素剩下的 元素的集合称环母线。如{ 点( 0 , 6 ) ,X 0 0 0 0 2 ( 0 , 5 ) , 点( 0 , 4 ) ,X 0 0 0 0 1 ( 0 , 3 ) ,点( 0 , 2 )} ,{ 点( 1 , 6 ) , X 0 0 0 1 1 ( 1 , 5 ) ,点( 1 , 4 ) } 是环母线。很明显,一些 元素属于某一个环母线,也属于某一半环。 综上所述,梯形图块就是由母线和若干个半环构 成的简单图形。为了保证梯形图逻辑的准确性和方便 转换,作如下的约束 ( 1 )一个梯形图块只能有一条母线; ( 2 )一个半环内至少包含一个触点; ( 3 )一条环母线内至少包含一个触点; ( 4 )一个触点的左边不能是横线,实际上触点 是可以和它左右两边的横线互换位置而不影响其逻辑 的; ( 5 )一个梯形图块里只有一个输出线圈串联在 母线上,其他输出线圈只能并联到该线圈上; ( 6 )如果某环的半环属于另外某环,但环母线 不属于其他环,可以将环母线移动到半环下面,变成 标准型。如图2所示 可以将 X 0 0 0 1 0移动到 X 0 0 0 2 1 的下方,转化为图 3的形状而不影响梯形图的逻辑; 图 2 用户编辑的梯形图 图 3 标准的梯形图 ( 7 )如果环与环之间存在交集,那么交集元素 所属的半环或环母线的所有元素的行号只能是包含关 系。如图 4所示,起始元素是 X 0 0 0 2 0和起始元素是 X 0 0 0 1 1的环存在歧义的,可以在梯形图转换的时候 直接报错提示用户修改。 图 4 有歧义的梯形图 2 梯形图与指令表关系的分析 按照梯形图的逻辑运算过程,当遇到环时先将 之前的结果压栈,然后扫描环母线的触点。如果环 母线的结果需要压栈就将环母线的扫描结果压栈, 再扫描半环的结果,之后依次将之前的结果出栈, 进行相对应的 “ 与” 、“ 或”逻辑运算。这种执行方 式也就是先进后出 ( F I L O )的堆栈处理方式。按照 F I L O的堆栈处理方式,对应图 1的逻辑关系的指令 表如表 1所示。 56第 4期罗海据 等数控系统中 P L C梯形图与指令表的转换算法 表 1 与图 1对应的指令表 指令执行过程说明 R DX 0 0 0 0 . 0读入 X 0 0 0 0 . 0的状态 R D . S T KX 0 0 0 0 . 1将之前的状态压栈( 即将 X 0 0 0 0 . 0的状态压栈) , 读入 X 0 0 0 0 . 1的状态 A N DX 0 0 0 0 . 2将当前的状态和 X 0 0 0 . 2的状态进行“ 与” 操作 R D . N O T . S T KX 0 0 0 1 . 0将之前的状态压栈, 读入 X 0 0 0 1 . 0的状态并取反 R D . S T KX 0 0 0 1 . 1将之前的状态压栈, 读入 X 0 0 0 1 . 1的状态 O RX 0 0 0 2 . 0将当前的状态( X 0 0 0 1 . 1的状态) 和 X 0 0 0 2 . 0的状态进行“ 或” 操作 A N D . S T K弹出一个状态( X 0 0 0 1 . 0的状态) 将当前的状态进行“ 与” 操作 O R . S T K弹出一个状态, 和当前的状态进行“ 或” 操作 A N D . S T K弹出一个状态, 和当前的状态进行“ 与” 操作 WR TY 0 0 0 0 . 0如果当前状态为“ 1 ” , 将输出 Y 0 0 0 0 . 0写“ 1 ” WR TY 0 0 0 1 . 0如果当前状态为“ 1 ” , 将输出 Y 0 0 0 1 . 0写“ 1 ” 在表 1的指令里,R D S T K或 R D N O T S T K表示 将之 前 的 运 算 状 态 压 栈 并 读 入 一 个 触 点 状 态, A N D S T K或 O R S T K表示将上一个压栈弹出来,并 和当前的结果进行 “ 与”或 “ 或”操作。考察指令 表和梯形图的关系,用 x 表示行号,y 表示列号可以 得出下面的结论 ( 1 )左边靠最左竖线的触点并且在第一行的第 一个触点,即坐标为 ( 0 ,1 )的触点,是这个梯形 图的第一个指令,应先读入该触点,对应指令 R D , 如 R DX 0 0 0 0 0 。 ( 2 )对于某一触点 P( x ,y ) ,如果坐标 Q ( x + 1 ,y - 1 )和 Q ( x - 1 ,y - 1 )的元素不是竖线,表 明该触点与之前的运算结果是 “ 与”关系;对应的 指令为 A N D ,如 A N DX 0 0 0 0 2 。 ( 3 )对于某一触点 P( x ,y ) ,如果该触点所在 的半环只有该触点,那说明该触点并联在环母线上, 即 Q ( x ,y - 1 )是竖线,Q ( x ,y + 1 )是竖线但不 是最右边的竖线,或者 Q ( x ,y+1 )不是竖线而 Q( x ,y + 2 ) 是横线的图形。该触点与前面的运算结 果之间的逻辑运算是 “ 或”关系,用 O R表示,如 O RX 0 0 0 2 0 。 ( 4 )对于某一个触点 P( x ,y ) ,如果该触点是 所在半环的起始触点,并且该半环的触点个数大于 1 ,那么表示该半环并联在该环的环母线上,即 Q( x ,y - 1 ) 是竖线,Q ( x ,y+1 ) 不 是 竖线 且 Q( x ,y + 2 ) 是触点的图形。需要将前面的运算结果 压栈,然后读入该触点,再执行该半环的后续逻辑运 算,然后将前面的结果出栈,并进行 “ 或”运算。 分别用如 R D S T K和 O R S T K表示,如 R D N O T S T K X 0 0 0 1 0O R S T K ,这里 N O T表示取反。 ( 5 )对于某一个触点 P( x ,y ) ,只属于某一环 的环母线的元素,并且是该环的环母线的第一个元 素,坐标 y 大于 1 ,那么计算机在执行完之前的操作 后需要将结果压栈,然后读入该触点。在完成后续运 算后将之前的结果出栈,和当前结果进行 “ 与”运 算,分别用 R D S T K和 A N D S T K表示。如 R D S T K X 0 0 0 0 1 A N D S T K ;即 y > 1 ,且 Q ( x + 1 ,y - 1 ) 是竖线的情形。 ( 6 )对于某一个触点 P( x ,y ) ,Q ( x ,y + 1 ) 是最右的竖线,则是输出线圈,用 WR T表示,如 WR TY 0 0 0 0 0 。 当获得了触点的指令形式后,如何把这些指令正 确地进行排序呢将梯形图转换成指令表的过程中关 键的地方是 ( 1 )将半环的指令表插入到环母线指令后面, 最终将所有半环的指令插入到母线指令列表之间; ( 2 )将 O R S T K或 A N D S T K这两个出栈指令正 确地放在所在环的指令后面。 所以在转换过程中首先要找到起始触点行号最大 的半环。由于梯形图的半环是嵌套在另一个半环上, 如果从上往下遍历某一半环就要遍历所有嵌套该半环 的半环,但是从下往上扫描,就可以避免这个问题。 3 数据结构和转换算法 3 1 数据结构 对于梯形图的显示信息,设计了一种数据结构 A R R A Y C E L L 。A R R A Y C E L L的成员 i n t t y p e ,分别用 来标识当前元素的类型横线、竖线、常开、常闭、 输出、点,或表示当前位置没有元素。成员 i n t a d d r 表示梯形图的地址空间 ( X ,Y )等触点地址。 用 数 据 A R R A Y C E L La r r a y C e l l[ MA X_ R O W] [ M A X _ C O L ]表示梯形图数据,数组的行列下标刚 好用来表示梯形图元素的坐标,对梯形图某一个元素 ( x ,y )的编辑和修改就变成了对变量 a r r a y C e l l[ x ] [ y ]的 t y p e 和 a d d r 的修改。成员 p S t r 指向 P M C C M D S T R类型的数据,用 p S t r 在这里存放转换信息。 数据结构 P M C C M D S T R包括了成员 c m d[ ] ,该 成员 用 来 存 放 转 换 过 程 中 的 指 令,如 R D S T K X 0 0 0 0 1整个字符串。成员 s t a c k T y p e用来存放堆栈 66机床与液压第 4 2卷 信息,如果当前触点没有堆栈信息就为空。成员 p B e f o r e 和 p N e x t 用来保存链表的前趋和后继。 t y p e d e f s t r u c t P M C C M D S T R { c h a r c m d [ P M C _ C M D _ S T R _ L E N ] ; / / 存放 R D S T KX 0 0 0 1之类的指令 c h a r s t a c k T y p e [ P M C _ S T K _ S T R _ L E N ] ; / / O R S T K或 A N D S T K的压栈信息 s t r u c t P M C C M D S T Rp B e f o r e ; s t r u c t P M C C M D S T Rp N e x t ; } P M C C M D S T R ; t y p e d e f s t r u c t { i n t t y p e ;/ / 当前元素的类型 横线, 竖线, 常开, 常 闭, 输出, 点等 i n t a d d r ;/ / 地址空间 X , Y等触点地址 P M C C M D S T Rp S t r ; } A R R A Y C E L L ; 3 2 转换算法的实现 梯形图的转换过程分两步完成 第一步先从下往上,再从左到右遍历梯形图的 元素,按照上面的约束条件扫描梯形图的准确性。如 果遍历到竖线,接下来的触点便是起始触点,按照上 面提及 6种类型判断便可得到相应的指令和压栈关 系,申请 P M C C M D S T R变量 p S t r ,将对应指令写入指 向 p S t r 变量的成员 c m d 和 s t a c k T y p e 之中。 第二步采用同第一步的扫描方法,梯形图转换 的流程图如图 5所示。 图 5 转换流程图 76第 4期罗海据 等数控系统中 P L C梯形图与指令表的转换算法 3 3 转换算法的特点 与二叉树和 A O V图的转换算法相比,文中研究 的数据结构和算法具有如下特点 ( 1 )该算法自下至上扫描梯形图,将半环的指 令链接到环母线的指令后面,并利用数据结构中的 p S t r 成员保存,符合梯形图的执行顺序。与从上到下 的扫描方式相比,减少重复扫描梯形图的次数和指令 列表的频繁搜索、插入过程; ( 2 )该算法主动改变 x ,y 扫描某个触点的周围 连接情况,与二叉树相比更容易得到单个触点的指 令,算法实现过程简单; ( 3 )如果每个元素的 p S t r 不是 N U L L ,需要进行 MA X _ R O W M A X _ C O L的指针链表的添加操作,存 在浪费时间的缺点。但是在编辑梯形图时可以用变量 保存梯形图的最大行号和列号从而极大减少遍历时 间,在一定程度避免了这一个缺点。 ( 4 )用数组 a r r a y C e l l 储存梯形图的元素,如果 是空元素则存在浪费内存的情况,如果将 a r r a y C e l l [ M A X _ R O W] [ M A X _ C O L ] 改为存放指针a r r a y C e l l [ M A X _ R O W] [ M A X _ C O L ] 的变量则会改善内存浪费 的情况。 综合看来,该算法增加了系统的内存消耗,但避免了 A O V和二叉树算法复杂度高、转换时间长的缺点, 同时采用自下往上扫描梯形图的方法,算法实现简 单,适合用于机床或实时要求比较高的设备。 4 结束语 研究探讨了梯形图的结构,用环、半环、环母 线、母线等概念对梯形图进行析构,对梯形图的形状 作出了约束,分析梯形图和指令之间的关系,并设计 出转换算法。该算法已运用在中高档的数控系统上, 体现了该算法的方便快捷的特点,对于工作人员在现 场调试机床功能起了一定作用,受到用户的认可。 参考文献 【 1 】黄晶晶, 陈文芗, 叶军君, 等. 基于二叉树的 P L C梯形图 转化为指令表的算法[ J ] . 现代电子技术, 2 0 1 0 ( 4 ) 1 2 5 - 1 2 7 . 【 2 】傅亮, 胡飞虎, 刘乐, 等. 基于串并联归并的 P L C梯形图 向指令表转换算法[ J ] . 计算机工程与应用, 2 0 0 9 , 4 5 ( 2 7 ) 7 2- 7 4 . 【 3 】廖春蓝, 彭诗力. 基于串并联归并的 P L C梯形图向指令 表转换算法[ J ] . 微计算机应用, 2 0 1 1 , 3 2 ( 1 0 ) 5 8- 6 1 . 【 4 】B E I J I N G F A N U CP M CM O D E LP A 1 / S A 1 / S A 3梯形图语 言编程说明书, 手册型号 檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪 檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪 檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪 檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪檪 殏 殏 殏 殏 B 6 1 8 6 3 C / 0 1 . 银川市自主研发的 “ 数控智能系统” 打破了高档数控珩磨机床进口的垄断局面 宁夏银川大河数控机床有限公司联合广州数控设备有限公司共同开发了我国自主研发、独立创新的首款数控珩 磨机床智能化控制系统,完成了数控珩磨机床智能化控制系统中往复运动控制振荡环程序、多截面智能测量、自动 短行程修珩、多策略智能化复合进给控制、智能化人机交互界面、智能化珩磨工艺参数库、珩磨功能模块的状态显 示与故障诊断、数控珩磨机网络化控制等 8个模块的研制。 联合研发的专用智能化控制系统,其最小内部指令周期不大于 2m s ,珩磨往复换向加速度达到 2 5 g以上,该 系统在银川大河生产的 2 M K 2 2 1 8 Y S 数控珩磨机床上进行了实际应用。其中数控珩磨机床往复运动控制振荡环程序 和多策略智能化复合进给控制软件是国内数控珩磨机床首次应用,实现了无限次往复换向,即具有震荡环功能,满 足高档珩磨机床对换向性能的要求。 同时通过自主研发,获得 “ 珩磨主轴往复随动控制装置”和 “ 珩磨主轴往复随动控制齿形带驱动装置”2项发 明专利授权。以自主研发的控制系统及授权发明专利支撑的高档数控珩磨机床通过了国家机床质量监督检验中心的 检验。2 0 1 3年河南中原内配股份有限公司一次性向银川大河订购数控珩磨机床 6台,价值数百万元,打破了进口高 档数控珩磨机床的垄断局面,成果应用前景广阔。 ( 来源互联网) 86机床与液压第 4 2卷
展开阅读全文