PLC编程的五大必修课
随着PLC的应用越来越广,能够写一手流利的PLC程序是每个工控人的梦想,但很多人走着走着就放弃了,感觉太难了,其实学习PLC不仅需要勤奋和努力,正确的方法和经验也很重要。
1、编程需要坚强的毅力和足够的耐心
人各有所长。有些人把编程看作一项冗长而枯燥的工作;有些人把编程看作一项趣味的智力游戏。如果你是前者,强烈建议你远离这份工作。毕竟编程工作是对人的毅力和耐心的挑战。我所在实验室中,很多学生看到我编程序就会惊讶于我面对这一堆堆符号所表现出的专注。其实,这是兴趣使然。兴趣使我具备了足够的毅力和耐心。
经过无数次失败后,当看到一个个符号按我的思路整齐的排列,PLC按我的要求有条不紊的运行时,兴趣得到了极大的满足,如同打通了一个游戏的关口。所以,我告诉这些学生:你们看到的是一堆枯燥怪异的符号,我看到的却是一群热情奔放的舞者,而我则是她们的导演。
2、编程需要敢于实践的信心
我曾经教过一个学生学AutoCAD,我对她的唯一要求就是实践。我告诉她:你随便怎么操作,大不了一张图重画;最坏的结果是系统崩溃,没关系,系统重做,再来;只要电脑没被砸了,怎么都行。两年后,我再看到她做的CAD图纸,也自叹不如。
同样道理,只有不断地在PLC上运行这些指令,观察运行的结果,才能弄清PLC指令的作用。很多初学者对PLC一脸的迷茫,往往是出于一种畏惧,担心损坏设备。而这些畏惧是没有任何道理的。仔细的阅读手册是非常重要的,但是仅靠读书是成不了一个工程师的。
更何况手册上的内容并非面面俱到。我在接触到那些不熟悉的指令时,喜欢单独编一个小程序,让PLC运行。然后逐个修改条件,观察运行的结果(MicroWin为用户提供了非常好的监控手段),反过来再重新理解手册的描述,这样就可以非常直观的理解这些指令的作用和使用方法。不必担心自己写的程序会有什么问题,会影响PLC的正常工作。
程序有没有问题,只有让PLC运行了才能发现。而发现问题并解决问题就是对自己能力的提高。撇开硬件操作不谈,单就软件来说,我还真没有遇到过由于软件问题而损坏PLC的事。在这里不必担心继电器电路接错线可能造成的后果。所以,大胆的实践是PLC编程的必由之路。
当然,大胆实践并不是野蛮操作,而是必须遵循必要的规范。还有一个要注意的,在程序未经可靠性证实之前,千万不要挂接负载,以免造成不必要的损失。数字量的输出有LED显示;而模拟量处理可以采用一些硬件或软件模拟手段来解决。
3、编程需要有缜密的逻辑思维
编程本身就是一种逻辑思维过程。在高级语言中,使用最多的是ifthenelse、select这些条件判别语句,这就是逻辑中的因果关系。PLC程序就是由这些因果关系组成的:判别条件是否成立,进而决定执行相应的指令。最初的PLC是用来替代继电器逻辑电路的,所以继承了继电器电路以触点作为触发条件的描述方式。
在PLC中,以虚拟触点代替了继电器的金属触点,而继电器电路所表达的逻辑关系还是被完整的保留下来。即使引入了继电器电路难以胜任的数值处理过程,PLC从根本上还是在执行一个个因果关系。所以,理顺对象的各个事件之间的逻辑关系,是编程之前必须精心做好的准备工作。我在接到一项任务后,第一件事就是整理出一份逻辑关系图,与用户反复商讨,取得用户的认可,然后才真正进入程序的编写过程。
4、不可或缺的相关知识
PLC的程序是直接作用于对象的具体工艺过程,那么对对象具体工艺过程的理解是非常重要的的。我在与用户的交流过程中,会用我所掌握的UnitOperation的知识分析用户的工艺过程,协助用户整理过程控制中的各个逻辑关系,甚至包括各种仪表、硬件的配置。这得益于我原本所学的专业。
当然,不能要求所有搞PLC程序的工程师都有我这样的经历。但是有两门知识却是不可或缺的:一是过程仪表的硬件知识,包括传感器、变送器(二次仪表)和PLC本身,这是构建控制系统的基础;二是过程控制理论,包括各种控制模型的原理和应用,其中最重要的是二位调节和PID调节模型。PID调节是目前用得最广泛的过程控制手段,且变化多端。
学习PID最好的方法就是读书。几乎所有讲解过程控制的书籍都有关于PID的内容,多读基本相关的书籍对理解PID是很有益处的。我发现不少网友在进入PLC领域时,缺乏这些相关知识。这并不可怕;可怕的是当事者不能静下心来弥补知识的缺陷。
我们不要怪罪学校没有教授这些内容,而是要注重自己如何去学习这些知识。工作中遇到的许多问题是学校里没讲过的,这不能成为我们拒绝工作的理由,而应该以积极的态度去应对这些问题。我的体会是,为了解决工作中的问题而学习的知识,比课堂上学的东西更容易记住。
5、养成良好的编程习惯
每个人编程都会有不同的习惯和特点,不能强求一致。但是一些好的习惯还是应该为大多数人所遵循。一是理顺逻辑关系、时序关系,编制程序框图;二是合理分配主程序、子程序和中断程序;三是合理分配寄存器,编制寄存器符号表。
PLC编程更接近于单片机,或者说PLC就是模块化的单片机。因此PLC的很多操作都是直接针对寄存器的,如果在程序中出现不合理的寄存器地址重叠,一定会出现不可预想的后果。编制寄存器符号表不仅可以避免上述问题(MicroWin会有问题提示),而且可以使程序具备更好的可读性。这和VB中定义变量有异曲同工之处。
VB编程中关注的是事件,不强调主程序和子程序的观念,因为VB主程序的工作是由PC的操作系统完成的。PLC则不然。PLC程序是以主程序为主干的,CPU不断的循环执行主程序,只有触发条件成立时才会调用子程序或中断程序。即子程序和中断程序所执行的任务不是全时需要的。
如果把这些任务都放在主程序中会无端增加主程序的工作量,降低程序的效率。这点和单片机的编程思路是一致的。子程序的使用可以使整个程序的逻辑更清晰。而且子程序可以分开编写、调试,最后“安装”到主程序上。这样你可以一个一个解决问题。
PLC编程,无论是LAD,抑或STL,都不如VB那么直观、有趣,更不如CAD那么形象。但比单片机的汇编语言的可视性强多了。对于初学者,LAD(梯形图)的编程相对直观,更容易上手。
其实PLC编程和PLC维修是一个道理,只要大家加强信心学习,相信一定会事半功倍的。最后,PLC提供了丰富的指令、模块,比单片机方便了很多。但是初学者编程时应尽量先使用简单的指令达到目的。尽管看上去有点土,却不失为一个入门的好途径,且对你理解那些较为复杂的指令会有帮助。具备了一定经验后,应该考虑掌握复杂指令的应用,以及程序的优化。
PLC编程学习的三个阶段
弄通有关PLC程序设计理论是重要的。没有这方面的理论准备或指导,仅靠在实践中摸索,简单的问题还好办,复杂的就不好办了,不仅无从下手,而且花了很多时间与精力,也难编出效率较高、质量也较高的程序,常常是事倍功半。
但是,编程的具体实践,以及在这个实践中得来的知识或技能,即经验,也是重要的。没有经验,仅有理论,既无法深刻理解理论,又无法灵活应用理论。这正如学数学,如仅了解一些定理或记住一些公式,没有作相应的练习,肯定是学不好的。更不用说,任何理论也都只是经验的总结,归根到底也都有是来自实践。
1、经验积累
经验有别人的,也有自己的,都很重要。前者要靠细心学习,后者要靠用心积累,都要在一定的时间与必要的精力。
别人的经验有上了书的或登载在杂志上的。有的是细心学习别人的,但多数是我自己的经验。所有的例子都经我测试过,都经实践证明是可行的。我想,别的书本或杂志上介绍的也会是这样的。所以学习这样杨功的经验是必要的。
还有就是你同事的经验,也是值得学习。这种经验离你很“近”,很易借鉴。
自己的经验则是最重要的。要在自己的实践中,积累自己的经验。同时,最好在学别人的经验时,也能亲自作些测试,能使自己也有类似的经历,进而把这些经验变成自己的。这也是自己经验的重要积累。
还有一些失败的经验,这往往是不会公开的,但这些经验也要学习,也要积累。
经验的积累要用自己的脑记,更要用电脑记。最好作些分类,建立一个自用的程序库,以便于随时引用。
2、经验升华
经验还有待升华。升华有三个层次:
最低的层次就是建立一个典型的程序库,供今后再用。若程序复杂,还可建一些功能块,或子程序,以便以后引用。
其次,要总结出有效算法。如单按钮起停程序库等。
最高层次的升华是把经验上升到理论的高度,为丰富PLC程序设计理论作贡献。我想,随着PLC使用的普及与提高,是会有越来越多从经验中升华出来的,而又能用以指导实践的PLC编程理论的。
3、经验应用
经验积累、经验升华都是为了应用。经验应用有三方面:
1)用作工程设计模板。设计新系统时,选用一个或几个与现设计工程类似的,已取得成功的工程,作样板进行设计。这既可减轻设计的工作量,又增加设计的成功率。这也是信息可重用的一大好处。
2)用作程序设计参考。在无成功的工程可作样板时,在新设计的逻辑中,仍有相当一部分控制逻辑,可采用或借用已有典型逻辑,这也可减少设计的工作量,增加设计的成功率。
3)用作算法设计参考。在既无样板可参照,又无典型可采用时,还可运用过去的一些成功的算法。
经验是宝贵的,但是经验特别是个人经验,总是有限的。所以,经验的应用也还要与编程理论相结合
PLC编程学习的诸多好处
PLC也称为可编程序控制器,是隶属于自动化控制中电气控制中最重要的一部分,现在广泛应用于纺织、冶金、汽车生产、食品饮料、电子制造、化工、电厂、造纸、石油开采及机械设计、国防等领域,本人自2002年接触和初学PLC以来,一直应用PLC进行开发设计和技术革新各种自动化设备,2008下半年后,致力于把自己的学习经验、实践经验与PLC教学相结合,希望培养出更多的PLC编程的高技能人才。有些人想学习PLC,但是不知道学完后对自己有什么好处,我以为,学好PLC对生活和你的知识架构有以下帮助。
一、可以提高电脑水平。
学习PLC编程,首先要学会各种PLC、触摸屏软件安装和卸载,打字当然也是必不可少的要求,软件中的菜单的应用相当于把电脑的基础知识好好的学习了一番,一些人用电脑只会用鼠标点击,久而久之,这其实还是电脑盲,而学好PLC编程,键盘鼠标都要配合使用。在电脑硬件方面,电脑配置要求,串口以及外置接口在学习中自然而然学好了。
二、自然而然也学好了英语。
PLC软件里面的指令LD(load),OR,ANB(andblock)、SET、DMOV(doublemove)以及英文帮助文件和英文手册让你不得不把这些单词和专业英语记住记牢。
三、等于使你的计算机语言和单片机编程语言知识入了门。
PLC的助记符(指令表).ST高级编程语言和触摸屏的宏指令、D脚本其实就是计算机C语言、单片机汇编语言的雏形,很多指令代码的作用和效果都是一样的,PLC编程里面用到的二进制、八进制、十进制、十六进制和位元件、字元件,数组、字节,16位二进制有符号整数,16位二进制无符号整数,32位浮点数等等这是计算机语言国际标准完全一样。
四、学会电工知识、电子技术。
初学PLC编程的人员很大一部分都没有电工基础,不懂电子技术,但慢慢学习和应用之后,也学会了电路中的自锁、互锁,自保持,电子技术的与门,或门非门和PWM电路以及PLC输入电路中的源型漏型等等。
五、提高逻辑思维能力。
编写一个完成、系统机械设备工程的电气程序,必须要做到对设备动作和工艺心中有数,为完成设备功能,先选择相关的电气材料及相关的元器件型号,画出电路图,接线安装,进行初步调试,程序编写、完善,设备的性能目的达到之后,要进行操作说明书编写,资料整理归档等等,同时在程序编写中应用到的各个变量之间的逻辑关系是否合理,有无矛盾,这都能提供编程学习者的逻辑思维能力。
六、触类旁通。
机械、气动、液压、各种产品的生产工艺久而久之也会由陌生变熟悉,甚至精通。在和设备打交道中,少不了和这些接触,什么分割器,机械手,电缸,电磁阀、比例阀,变送器,液压传动等等以及设备的工艺流程、所保证的技术参数这些都必须要弄以明白,做到心中有数。
七、锻炼了自学能力。
经常遇到学员或者想学习PLC编程的人员说,“我要学习欧姆龙PLC编程”,“我要学习台达PLC编程”,“我要学校松下PLC编程”、“我要学习伺服"等等,我一听就知道他们对编程还不明白或者是还没有深入到课程内容中去,以大多数成功学好编程人士为例,他们大多都是初学以三菱或者西门子、欧姆龙系列的一种plc开始,然后把一种类型的PLC原理弄明白了之后,其他类型的PLC也是基本上大同小异而异,这完全就等于学开车一样的,学会了一种汽车,其他汽车琢磨琢磨也会开。
对于伺服,很多人把它理解为最有技术含量的新型工控设备,其实伺服只是比变频器稍微复杂一点,功能基本一样,就是控制精度比步进电机和变频器更高的一种执行机构。我们学习它,无非就是和变频器一样调整伺服的参数和接接线路而已,比学好PLC编程简单多了。
真正要学好编程,除了要有好的有经验的老师把相关知识怎样通俗易懂,深入浅出把学生教明白,更需要学生多动手,多操练巩固学习内容,同时还需要学员加强自学能力。如何把学习的内容灵活应用到实践和工作中,这就需要自己慢慢领悟。