模块化编程在机电一体化技能竞赛中的应用实践研究
2017-07-18单侠芹
单侠芹
摘要:编程能力作为机电一体化技能竞赛的核心能力,提高编程能力,对提高竞赛获胜率具有至关重要的作用。模块化程序设计思想可以使程序结构更加整洁清晰,利于系统的调试、维护和升级。在机电一体化技能竞赛中采用模块化编程,能够保障程序的稳定性,降低调试难度,提高竞争力。
关键词:模块化,编程方法,机电一体化,技能竞赛
中图分类号:G712 文献标志码:A 文章编号:1673-9094-(2017)06C-0017-04
一、模块化编程在机电一体化技能竞赛中的可行性分析
职业技能竞赛是职业教育的风向标,对职业教育具有引领和示范作用,机电一体化技能竞赛为自动化类专业人才培养指明了方向,为学校专业实践教学提供了宝贵的素材。机电一体化技能竞赛从2007年举办至今已有非常成熟的理论和实践基础,形成了完整的竞赛制度,也为职业教育积累了很多专业和经验知识,通过竞赛成果的转换,竞赛的资源能够有效运用到实际教学中,为提高职业教育教学质量添砖加瓦。同时,竞赛成绩也是职业学校教学水平的体现,那么如何在竞赛中获得理想成绩,是教练和选手们最为关注的问题,这取决于训练的方法和训练的内容是否与时俱进、是否足够扎实。在机电一体化技能竞赛中,PLC编程和临场解决问题的能力是制胜的关键,这将关系到选手们能否在规定时间顺利完成比赛。因此,探寻一个高效的编程方法成为师生共同的目标,能够大大缩减编程设计时间、保障程序设计的稳定性和可移植性,通过赛前的强化训练,熟练掌握各种技巧,在竞赛时能够大大提高选手竞赛信心。
PLC的编程方法有很多,常见的有面向数据结构方法和面向对象方法,二者各有优缺点,实际运用要根据设备情况和赛题要求,选择合适的编程方法。这里我们介绍一种子功能模块的编程方法,它能有效提高竞赛的水平。
(一)模块化程序设计思想
模块化程序设计,简单地说就是用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系,最终得到一系列以功能块为单位的程序。模块是提供特定功能的相对独立的单元,把这种以功能块为单位进行程序设计的方法称为模块化,它由小块的、分散的代码块组成,每一块都是独立的。模块化的目的是为了降低程序复杂度,使程序设计、调试和维护等操作简单化,在高级语言程序设计中有着广泛运用。
模块化编程操作简单、应用方便、相互独立、互不干涉,任何一个功能拿出来都能独立运行。因此,模块化编程具有以下特点:(1)标准化:标准尺寸和标准接口;(2)可组合:多个模块可以方便灵活地组合;(3)可替换:改变系统的局部功能;(4)可维护:对模块进行局部修改或设置。
(二)模块化编程思想在PLC程序设计中的运用特性分析
在PLC程序设计中,根据设备的功能特性考虑是否可以采用模块化编程方法,根据模块化编程特性,那么什么情况运行效果较为明显呢?
当一台需要程序设计的设备动作有明显分组,且需重复运行的情况下,我们可以将这些动作进行分组,每组动作看作一个小功能模块,这种情况下可以在PLC编程中引入模块化编程思想,通过对子模块的组合和调用,使程序结构清晰,增强易读性,便于修改,提高系统运行的可靠性。
模块不能随意划分,分解时应尽量保持模块之间的独立性,模块的独立性可以用两个定性标度衡量,即耦合和内聚,模块之间尽量小的耦合性,模块内部具有高度的内聚性,要保证模块充分的独立性,就需要低耦合和高内聚。
(三)机电一体化技能竞赛编程特性分析
技能竞赛反映了企业的新工艺、新知识和新方法,要求选手对已有知识具有熟练运用和一定创新能力,这就要求平时的训练认真分析竞赛特性,找出其共有特性,形成自己的编程策略,设计的程序便于添加和删减内容,才能在竞赛过程中以不变应万变。
机电一体化技能竞赛赛题特点:
(1)控制要求多、灵活多变;
(2)PLC程序量大、功能复杂;
(3)调试难度大、容易混乱;
(4)程序稳定性要高;
(5)编程调试时间紧张。
通过什么方法将复杂的机电一体化设备功能快速设计并调试成功呢?这就要求在训练过程中,优化编程思路,找到合适的编程和调试方法。鉴于模块化编程和竞赛赛题特点,我们可以在机电一体化竞赛中采用模块化编程来优化程序结构、节约编程调试时间,提高竞赛获胜几率。采用模块化编程后,程序思路如下图所示。
二、模块化编程在机电一体化技能竞赛中的运用
不是所有地方都需要使用模块化编程,在程序设计中对复杂工作单元可以采用模块化的编程思想,且能切实提高编程和调试效率。
(一)模块化设计思路
模块化编程,首先需要对将要设计的功能进行分析,如若可行,则进行模块化分解,每个子模块都有自己特定的功能,当需要此功能时,在所需要的位置进行调用。其次,为每个子模块分配一定数量的软元件,包括位软元件、数据寄存器、定时器和计数器等,软元件分配应遵循数量相同、互不冲突、使用策略相同的原则,数量分配以需求量最大的子模块為准,并留有一定余量。当然,模块之间以及辅助程序、主程序之间所用的软元件应相互独立,不混用,以防相互之间发生碰撞冲突,致使程序混乱,增加调试难度。
为使子模块更具可读性,我们将子模块的格式统一化,即将分配好的软元件进行细化,包括分配子模块的入口条件、过程标志、完成标志以及在子程序模块执行过程产生必要状态标志和过程信息等。子模块的格式设计好后,根据各个子模块的功能不同,编写各自的功能程序,并进行独立调试,最后将调试合格后的子模块进行封装。
(二)模块化编程在机电一体化竞赛设备中的实际应用
在竞赛过程中要想取得好成绩要以不变应万变,根据模块化编程思想,首先分解设备功能、固化功能模块;做好模块程序、优化程序框架;分模块调试、节省精力、主攻主程序,做到在重复中求稳定。
1.子功能模块设计与调试
模块化编程在PLC编程中实际使用时,首先根据功能是否复杂讨论是否运用模块化编程。这里笔者以竞赛设备的某个复杂单元为例,来分析子模块设计方法。首先进行模块化分解,根据功能分成一个个功能模块,即:子模块一、子模块二、子模块三等。做好各个独立模块程序,并进行模块调试,一次调试好的模块,后续可以一直使用,不需要再调试,这样在竞赛过程中可节省精力,把精力放在主程序的设计上,将赛题的变化变成顺序的调整。
下表为子模块分配方法,表中各软元件数量可以根据实际使用情况进行调整。
根据设计的子模块的格式及其所使用地址,编写子模块的功能程序。
其中入口条件为入口位软元件的常开软触点,同时传递过来的还有一些数据量,供子模块使用,当入口条件成立后,置过程标志和初始状态寄存器(采用步进顺控指令协助完成),即进入子模块程序执行阶段,过程标志有效,直到子模块程序执行完成为止。
结束后生成完成标志位,并输出相应的数据量,供程序其他部分使用。当主程序检测到完成子模块的完成标志位(M)的常开软触点接通,表示本次子模块功能执行完成,为使完成标志保持足够长的时间,这里采用定时器延时一定时间的方法,时间到,清楚所有标志位和最后一个状态寄存器(S)。
注意在采用步进顺控指令编程时,模块中最后清除操作全部完成后,必须有步进返回指令,这样一个完整的功能模块程序就设计完成了。
最后,将编写好的功能程序进行调试。所有模块可以独立调试,确保独立过程执行正确、稳定。调试完成后,保存并固化各功能模块的内容,在程序整体调试时,不改变子模块内容。
2.子功能模块的调用与总调试
在竞赛过程中,选手要根据任务书的要求,进行程序设计,由于设备整体没有大的改动,所有一些动作流程是固定不变的,在前期训练过程中,已经让选手们将这些固定动作流程设计成一些独立小模块,每个模块代表一个动作组合,比如抓取工件的动作子模块、输送工件的动作子模块。在竞赛过程中,这些固定的功能子模块选手可以很熟练的编写出来,甚至不需要调试,为选手节省足够的时间设计和调试任务书中的新内容,这些新内容往往才是体现选手实力的地方,也是变化多样的,有一定难度的。在调用、组合现有的子程序模块时,要遵循一定原则,使程序结构更加清晰,降低调试难度,便于添加新内容。
调用各功能模块时,需要给定对应模块的入口条件,条件满足则去执行子功能模块程序,主程序等待,待模块程序执行完毕,主程序接收到完成信号标志,则继续往下执行。
纯功能调用只需要位地址入口条件,当需要数据量传递时,在调用的同时还需要将一定的数据量传递给子模块的相应数据寄存器备用。例如定位时,调用移动功能子模块,就需要将目标位置值和所需要的速度等信息同时传递过去。
三、模块化编程对机电一体化技能竞赛的影响
在时间有限、氛围紧张的竞赛环境下,寻求在复杂的机电一体化技能竞赛中不同的编程的调试方法对竞赛结果影响巨大。采用模块化编程具有以下优点:(1)便于设计:复杂问题化成简单问题;(2)便于实现:可以团队开发,分析清晰;(3)便于测试:各模块可各自测试,整体调试时间大幅度减少;(4)便于维护:可以根据需要增加模块;(5)可重用:一个模块可参与组合不同程序。因此在机电一体化技能竞赛中使用模块化编程能够满足竞赛的需求,可以缩减时间、增強信心等。
(一)缩减编程和调试时间
使用传统的编程方法是按照要求按部就班地编写下去,将调试留到最后,程序结构混乱,没有层次感,调试时往往根据要求逐一对照,效率低下。另外,同一功能每次编写的程序往往也不同,每次都需要重新调试。使用模块化编程以后,经过一段时间练习,能够保证同一功能编写的程序也一样,这样经过调试的子模块就无需再调试,大大降低了调试时间。
(二)稳定情绪,增强信心
竞赛过程中,在竞赛氛围的影响下,选手内心往往较紧张,再加上接触新任务,不知从何下手。因此在训练过程中,采用模块化编程,让每次训练都是一次竞赛,在编程过程中可以从简单的固定功能模块开始设计起,这些部分由于已经非常成熟,选手可以边编写边思考其他内容,优化了选手编程思路,同时起到情绪缓冲作用,化解紧张情绪,待到难点、新内容时,可以充分发挥脑动力,增强选手获胜的信心。
(三)有利于编程技巧的养成
PLC编程能力是机电一体化技能竞赛的核心能力,编程的技巧和效率会直接影响比赛的成绩,采用模块化编程解放了大部分功能程序设计时间,给编程技巧的探索和养成提供了机会。在练习过程中,有倾向地更加注重技巧探索,注意怎么提高编程效率,如何用最稳定、最少的编程语言实现同一功能,这在附加功能的设计方面尤为突出。
四、总结
模块是提供特定功能的相对独立的单元,引入模块化编程思想之后,系统编程思路更加清晰,各功能模块的编程与调试更简单,把复杂的系统设计变成了对模块的组合和调用的过程,大大增强了程序的易读性和灵活性。在技能竞赛中,通常需要根据题目要求不断增加新的功能,采用模块化编程能够确保程序不会混乱,方便增加新东西,不会对已完成的功能产生破坏,另外,由于时间紧张,采用模块化编程,可以提前准备很多东西,缩短选手调试时间,通过采用模块化编程,选手在竞赛中的成绩也更加理想。
责任编辑:冯志军
Abstract: Programming ability is the core ability of Mechatronics skills competition. Improving the programming ability plays a vital role in improving the winning rate of the competition. The modular programming idea can make the program structure neater and clearer, which is beneficial to the debugging, maintenance and upgrading of the system. In the Mechatronics skills competition, modular programming can guarantee the stability of the program, reduce the difficulty of debugging and improve the competitiveness.
Key words: modularization; programming method; Mechatronics; skills competition