献给初学PLC的朋友们——咬咬牙,努努力,就会了!
今天结合自身学习PLC(三菱系列)的经验,给广大PLC初学者分享一下,希望对大家的学习入门能带来一定的帮助。
虽说如今国内使用的PLC品牌不下几十种,但不外乎欧系和日系两大类。欧系以西门子PLC等品牌为代表,其功能与质量一流,但是价格昂贵;而日系因为价格相对便宜在国内被广泛使用和仿制,其中三菱与欧姆龙等为第一梯队,国内的信捷、台达等为第二梯队。
由于工作和学习经费问题,本人以三菱FX2N为主攻方向。各位电工朋友可根据自己的条件选择适合自己的PLC品牌,由于PLC的基本框架大同小异,学会一种至于其它的学习起来也就简单了。
在此要指出的是,初学阶段大家不必急于投入太多的资金购买PLC实物 。
学习伊始理论知识积累是必不可少的。此时一本货真价实的工具书是你的不二之选。电子工业出版社由李金城老师编写的《三菱FX2n PLC功能指令应用详解》一书非常值得一看,此外人民邮电出版社《三菱系列PLC快速入门与实践》一书也是非常不错的资料。
(在犀灵公众号后台回复关键词【三菱】,即可获得这两本书的高清电子版。)
其次,在学习初始阶段首先要弄清PLC的内部结构与选型方法,并牢记PLC在实际使用当中的禁忌。随后用心学习理解吸收PLC的基本语句和梯形图的编程方法。无论三菱还是西门子亦或国内各品牌PLC其官网都提供免费的编程软件,好一些的还有在线仿真软件提供,便于没有PLC实物的学习者模拟学习。该阶段我们可以将一些常用的电气线路图如正反转、Y/△启动等线路用PLC梯形图的方式编写并加以仿真。
现如今的PLC在基础指令后又加入了大量功能指令,这些指令功能十分丰富。原本需要繁琐线路完成的功能,现在仅用一个功能指令即可搞定。例如用一只常开按钮轮流控制接触器吸合、释放,若用传统的触点联锁线路来搞则十分复杂,如今三菱PLC里面的ALT指令就能轻松搞定。当然这么多的功能指令(FX2N系列PLC有近300条功能指令)在学习当中也应区别对待,像HKY、SEGD、SEGL等已经过时较少使用的指令可省略不学或者略做了解即可。
在功能指令的学习中应特别关注一下PID、CJ、CALL等一些较难理解而又应用广泛指令的学习和掌握。针对这些指令在学习理论知识的同时,还要结合一些成熟的程序范例加以深度的理解和揣摩,在此基础上可以针对一些小型的生产任务加以编程练习,以练促学,边学边练。
如果你已将PLC的基础指令、功能指令还有编程方法熟练掌握并能灵活运用,那么恭喜你已经踏入PLC的大门,当然这只是一个起点,后面的通讯、PID控制等功能更为复杂的任务还等着你去继续学习那!如果你三心二意出现 X08 Y19 等贻笑大方的典故,恐怕你登堂入室的时间会遥遥无期的!
1、坚强的毅力和足够的耐心
人各有所长。有些人把编程看作一项冗长而枯燥的工作;有些人把编程看作一项趣味的智力游戏。如果你是前者,强烈建议你远离这份工作。毕竟编程工作是对人的毅力和耐心的挑战。我所在实验室中,很多学生看到我编程序就会惊讶于我面对这一堆堆符号所表现出的专注。
其实,这是兴趣使然。兴趣使我具备了足够的毅力和耐心。经过无数次失败后,当看到一个个符号按我的思路整齐的排列,PLC按我的要求有条不紊的运行时,兴趣得到了极大的满足,如同打通了一个游戏的关口。所以,我告诉这些学生:你们看到的是一堆枯燥怪异的符号,我看到的却是一群热情奔放的舞者,而我则是她们的导演。
2、敢于实践的信心
我曾经教过一个学生学AutoCAD,我对她的唯一要求就是实践。我告诉她:你随便怎么操作,大不了一张图重画;最坏的结果是系统崩溃,没关系,系统重做,再来;只要电脑没被砸了,怎么都行。两年后,我再看到她做的CAD图纸,也自叹不如。
同样道理,只有不断地在PLC上运行这些指令,观察运行的结果,才能弄清PLC指令的作用。很多初学者对PLC一脸的迷茫,往往是出于一种畏惧,担心损坏设备。而这些畏惧是没有任何道理的。仔细的阅读手册是非常重要的,但是仅靠读书是成不了一个工程师的。更何况手册上的内容并非面面俱到。我在接触到那些不熟悉的指令时,喜欢单独编一个小程序,让PLC运行。然后逐个修改条件,观察运行的结果(MicroWin为用户提供了非常好的监控手段),反过来再重新理解手册的描述,这样就可以非常直观的理解这些指令的作用和使用方法。
不必担心自己写的程序会有什么问题,会影响PLC的正常工作。程序有没有问题,只有让PLC运行了才能发现。而发现问题并解决问题就是对自己能力的提高。撇开硬件操作不谈,单就软件来说,我还真没有遇到过由于软件问题而损坏PLC的事。在这里不必担心继电器电路接错线可能造成的后果。所以,大胆的实践是PLC编程的必由之路。
当然,大胆实践并不是野蛮操作,而是必须遵循必要的规范。还有一个要注意的,在程序未经可靠性证实之前,千万不要挂接负载,以免造成不必要的损失。数字量的输出有LED显示;而模拟量处理可以采用一些硬件或软件模拟手段来解决。
3、缜密的逻辑思维
编程本身就是一种逻辑思维过程。在高级语言中,使用最多的是if then else、select这些条件判别语句,这就是逻辑中的因果关系。PLC程序就是由这些因果关系组成的:判别条件是否成立,进而决定执行相应的指令。最初的PLC是用来替代继电器逻辑电路的,所以继承了继电器电路以触点作为触发条件的描述方式。
在PLC中,以虚拟触点代替了继电器的金属触点,而继电器电路所表达的逻辑关系还是被完整的保留下来。即使引入了继电器电路难以胜任的数值处理过程,PLC从根本上还是在执行一个个因果关系。所以,理顺对象的各个事件之间的逻辑关系,是编程之前必须精心做好的准备工作。我在接到一项任务后,第一件事就是整理出一份逻辑关系图,与用户反复商讨,取得用户的认可,然后才真正进入程序的编写过程。
4、不可或缺的相关知识
PLC的程序是直接作用于对象的具体工艺过程,那么对对象具体工艺过程的理解是非常重要的的。我在与用户的交流过程中,会用我所掌握的Unit Operation的知识分析用户的工艺过程,协助用户整理过程控制中的各个逻辑关系,甚至包括各种仪表、硬件的配置。这得益于我原本所学的专业。
当然,不能要求所有搞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提供了丰富的指令、模块,比单片机方便了很多。但是初学者编程时应尽量先使用简单的指令达到目的。尽管看上去有点土,却不失为一个入门的好途径,且对你理解那些较为复杂的指令会有帮助。具备了一定经验后,应该考虑掌握复杂指令的应用,以及程序的优化。
最后,“曾经的新手”给正在准备入门的学弟们介绍几点经验 。
1、先通读一遍“系统手册”(不管能不能看懂,先了解个大概,以便学习编程时查找);
2、由位控逻辑入手,逐渐增加定时、计数等条件,把或、与、非关系理顺;
3、进而练习整数运算、实数运算、类型转换;
4、量程转换、PID调节回路的建立及P、I、D参数的理解(最好是有个物理回路验证,比如变频器+电机+测速传感器);
5、循环、顺序、跳转等程序控制(尽量避免跳转,非跳不可时也是跳的越近越好);
6、中断、通讯、位置控制....
特别提醒
① 如果发现PLC工作不正常,先清除,再下载。
② 有疑问第一个动作按“F1”,第二动作查“系统手册”,第三动作“论坛搜索”,第四动作“提问”。
③ 无论是编程还是实际接线验证,切忌急躁,如果脑子不清楚就先别干,防止发生安全事故或损坏设备。
④ 自己的验证过的程序注意收藏,程序文件命名要简明清晰,以备今后复习或直接应用到项目中。
结合实例讲解三菱PLC指令的应用之停车场控制程序
一、功能要求 :
某停车场最多可同时容纳车辆99个,用2位数码管显示空车位的数量。用出入传感器检测进出的车辆,进入1辆车,车位加1,出去一辆车,车位减1.
场内空车位的数量大于5时,入口处红灯亮,允许入场;等于和小于5时,绿灯闪烁,提醒车位车位即将满场;等于0时,红灯亮,禁止后续车辆入内。
二、接线图
三、程序讲解
3.1 程序总览
3.2 程序解读
第一段:这里用到特殊软元件M8002.MOV指令
a、什么特殊软元件:从PLC运行的角度,预先准备的内置功能动作的软元件。
这里用到的是初始脉冲(M8002,M8003):在PLC开始运行以后,仅瞬间(第一个扫描周期)为ON(M8002)或OFF(M8003),这个脉冲可以作为程序初始化或写入规定值等程序中的初始设定信号使用。
b、动作时序
c、MOV指令:将软元件的内容传动(复制)到其他软元件中的指令。
动作说明:MOV是16位运算,
当指令输入为ON,在传送源S.的内容传送给目标D.。最多传送16个(4的倍数)位软元件。简单举例如下:
结合本例:当PLC初次启动,将常数99送到D0中。
第二、三段程序解读:
X0为入口车辆检测,X1位出口车辆检测,当X0检测上升沿,则将D0中的数减1,X1检测上升沿则D0数加1.
指令讲解:
a、INC:指定软元件数据中加1指令。为16位运算。
b、DEC:指定软元件数据中减1指令。为16位运算。
第4段程序解读:
a、RUN监控(M8000,M8001):
动作时序:
b、BCD转换指令:将BIN(2进制)转换成BCD(10进制)后传送的指令。在PLC中的运算按照BIN数据进行处理,在带BCD译码的7段显示器中显示数制时可使用本指令。16位运算。
本例中时2位数,所以是BCD K2M0,就是M0~M7。
c、SEGD七段码译码:数据译码后,点亮7段数码管(1位数)指令。译码表如下图所示:
本例中,将M0~M4点亮数码管个位,M4~M7点亮数码管十位。
第五段解读:
比较指令:当D0中的数制大于5则Y20为1,
当D0中的数值小于等于5大于0,同时调用内部1s时钟8013,来实现Y20闪烁。
第六段解读:
比较当D0中数值小于等于0,则Y21为1.
相关问答
三菱plcSEGD指令详解?
您好,SEGD指令是三菱PLC中的一种指令,用于将数据从GR区域(通常是CPU内部的寄存器)传输到GD区域(通常是输入/输出设备)。具体来说,SEGD指令的作用是将GR区...
三菱PLC中SEGD指令怎么理解和应用,如下图所示?
SEGD是7段码显示指令|————||——————SEGDS.D.当驱动条件成立时,把S中所存放低4位十六进制数编译成相应的7段显示码保存在D中的低8位。...
三菱plc编程指令?
展开全部以下是三菱plc常用的指令,还有不懂的可以问我一程序流程控制指令—FNC00~0900CJ条件转移01CALL子程序调用02SRET子程序返回03IRET中断...
计数器怎么做啊?
首先,上电将D0赋值50,然后每出一瓶水传感器X0将D0自减一,将D0/10,取得商D1(也就是十位)和余数D2(也就是个位);然后,用SEGD指令分别将D1和D2译码输出...然后,...
那位有FANUC系统的说明书0系统0IO-M0IMATE系统报警参数说...
388/2RODRC绝对指令近距离回转O388/3ROCNT相对指令规算O788回转轴每转回转角度O11/2ADLN第4轴,回转轴/直线轴O398/1ROAX回转轴循...
扫一扫微信交流