PLC编程大项目很难?掌握了这一点就很简单
PLC结构化编程 是对应于典型的控制要求,将过程要求中的类似或相关的任务归类,在功能或功能块中编写通用的程序块,这些程序块可以反复被调用,以控制不同的目标,形成通用的解决方案。这些的通用的程序块就称为结构,利用各种结构组成程序就称为结构化编程。可以通过不同的参数调用相同的功能或通过不同的背景数据块调用相同的功能块。结构化编程过程中通用的数据和代码可以共享,其特点是,编写通用程序块,对不同的控制任务代入不同的地址和数据,使更多的控制任务可以使用此通用程序块,因此具有很高的编程和编程调试效率,并且编程结构清晰,适合于复杂的控制任务。
在块调用时,调用者可以是各种逻辑块,包括用户编写的组织块(OB)、FB、FC和系统提供的SFB和SFC,被调用的块是除OB1外的所有逻辑块。调用功能块时需要为其指定一个背景数据块,背景数据块在功能块调用的同时被打开,在调用结束时被关闭。
在给功能块编程时使用的是形参,调用它时需要使用实参来为形参赋值。在一个项目中,可以多次调用同一个块,如在调用控制电动机的块时,将不同的实参赋值给形参,就可以实现对类似但不完全相同的被控对象(如直流电动机和交流电动机)的控制。
块及子程序的调用,可以嵌套调用,即被调用的块同时还可以调用其他的块。嵌套调用的嵌套深度与CPU的型号相关。
嵌套调用的深度同时还与局部数据堆栈(L堆栈)有关。每个OB需要至少20 B的L内存。当块A调用块B时,块A的临时变量将被压入L堆栈进行现场保护。
程序被分为不同的逻辑块,每个块包含了完成部分控制任务所需的逻辑指令。 组织块OB1(主程序)中的指令决定在什么情况下调用哪一个块,功能和功能块(子程序)用来完成不同的过程任务。被调用的块执行完后,返回到OB的调用点,继续执行OB1。模块化编程,将一个较大的程序分成若干块,易于实现多人同时对一个项目编程。由于只在需要时执行相关的指令,因此提高了CPU的执行效率。
线性化编程是将整个系统的控制程序放在主循环控制组织块OB1(主程序)中,每一次循环扫描都要不断地顺序执行OB1中的全部指令。 这种方法的程序结构简单,不涉及功能、功能块、数据块、局部变量和中断等比较复杂的概念。
由于所有的指令都集中在一个块中,即使程序中的某些部分在大多数时候都不需要执行,但每个扫描周期都需要执行所有指令,CPU的执行效率比较低。此外如果需要多次执行相同或相似的程序就需要重复编写程序。因此,这种编程方法,一般只在编写简单的控制系统程序时使用。
模块化程序的执行
模块化编程中OB1起着主程序的作用,FC或FB控制着不同的过程任务,相当于主循环程序的子程序。模块化编程中被调用块不向调用块返回数据。
模块化编程实例
1.模块化编程实例1 - 液位监视
• 监视一个慢变得过程不需要每次扫描都进行。如果过程每隔一定时间或根据需要进行处理,程序将更有效。• 在OB1循环扫描处理时,可以按照一定的周期对液位进行监视。
设计方法:
• 确定液位监视的组成部分和它们的关系;
• 设计完成所要求控制任务的功能;
• 规划从OB中调用块完成功能的程序执行
过程;
• 对程序块的每个段加上文字注释和标题。
解决方案:
• 建立一个功能FC,可以监视和控制任务;
• 建立一个OB,其中每隔一定时间调用块
(功能)。
2.模块化编程实例2
有两台电动机,控制模式是相同的,按下启动按钮(电动机1为I0.0,电动机2为I1.0),电动机起动运行(电动机1为Q4.0,电动机2为Q4.1);按下停止按钮(电动机1为I0.1,电动机2为I1.1),电动机停止运行。
分析:
这是典型的起保停电路,采用模块化编程的思想,分别在FC1和FC2中编写电机的控制程序,在主程序OB1中进行FC1和FC2的调用。
结构化编程
Ø 将复杂的任务分解成一些能够反映过程的工艺、功能或可以反复使用的单独解决的小任务,这些任务由相应的程序块来表示;
Ø 某些程序块可以用来实现相同或相似的功能;
Ø 调用者可以是各种逻辑块,包括用户编写的OB、FB、FC和系统提供的SFB与SFC;
Ø 被调用的块是OB之外的逻辑块;
Ø 通用的数据和代码可以共享。
结构化编程
结构化编程的优点:
1各单个任务块的创建和测试可以相互独立地进行;
2通过使用参数,可将块设计得十分灵活;
3块可以根据需要在不同的地方以不同的参数数据记录进行调用;
4在预先设计的库中,能够提供用于特殊任务的“可重用”块。
结构化编程实例-油漆调制
1选择产品添加剂,需要决定哪个罐的成分要加到混合罐内。
2在选择开关的选择基础上,组织块调用相应的程序块,分配当前的参数,控制混合罐的流入量。
设计方法:
1. 确定哪些部件和操作可以应用于所有的罐和相关的控制;
2. 建立功能或功能块,完成所要求的控制;
3. 建立块的变量定义表,以便于对要操作的罐和控制进行地址分配;
4. 设计一个程序来根据选择开关调用功能或功能块。
解决方案:
1. 建立一个功能块或功能控制罐的流出量;
2. 为相关的块建立变量定义表;
3. 建立一个OB块来根据选择开关调用功能或功能块。
你是学习plc无头苍蝇的一员吗,看完本文,还觉得plc难学吗?
#月薪万元—新作者扶植计划开启# PLC好学吗?有的人说好学,更多的人说难学。我的看法是入门易,学精弄懂难。初学容易,总有它易的方法。很多人都买了有关PLC的书,如果从头看起的话,我想八成是学不会的。因为抽象与空洞占据了整个脑子,一个字“晕”!
学这东东要有可编程控制器和简易编程器才好,若无,三个字,学不会。因为无法验证对与错。如何学,我的做法是直奔主题。
做法如下:
1、认识梯形图和继电器控制原理图符号的区别: 继电器控制原理图中的元件符号,有常开触点、常闭触点和线圈,为了区别它们,在有关符号边上标注如KM、KA、KT等以示不同的器件,但其触头的数量是受到限制。而PLC梯形图中,也有常开、常闭触点,在其边上同样可标注X、Y、M、S、T、C以示不同的软器件。它最大的优点是:同一标记的触点在不同的梯级中,可以反复的出现。而继电器则无法达到这一目的。而线圈的使用是相同的,即不同的线圈只能出现一次。
2、编程元件的分类:编程元件分为八大类,X为输入继电器、Y为输出继电器、M为辅助继电器、S为状态继电器、T为定时器、C为计数器、D为数据寄存器和指针(P、I、N)。关于各类元件的功用,各种版本的PLC书籍均有介绍,故在此不介绍,但一定要清楚各类元件的功能。
编程元件的指令由二部分组成:如 LD(功能含意)X000(元件地址),即 LD X000,LDI Y000......。
3、熟识PLC基本指令
(1)LD(取)、LDI取反)、OUT(输出)指令;
(2)触点的串联指令AND(与)ANI(与非);
(3)触点并联指令OR(或)、ORI(或反);
(4)串联电路块的并联指令ORB(或);
(5)并联电路块与块之间的串联指令ANB;
(6)进栈指令MPS、读栈指令MRD、出栈指令MPP和程序结束指令END;
只要熟识和应用以上的指令,我以为入个门应该没什么问题了,也够用了。入了门后再去研究其它的指令就不是很难了。
4、熟知简易编程器各键的功能
(1)液晶显示器;在编程时可显示指令(即指令、元件符号、数据)。在监控运行时,可显示元器件工作状态。
(2)键盘;由35个按键组成,有功能键、指令键、元件符号键和数据键,大多可切换。各键作用如下:
①功能键:RD/WR......读出/写入,若在左下角出现R为程序读出,若出现W则为写入,即程序输入时应出现W,否则无法输入程序。按第一下如为R,再按一下则为W。INS/DEL......插入/删除,若在程序输入过程中漏了一条程序,此时应按该键,显现I则可输入遗漏程序。若发现多输了一条程序,同样按该键,显现D则可删除多余或错误的程序。MNT/TEST......监视/测试,T为测试,M为监视,同样按该键,可相互切换。在初学时要学会使用监视键M, 以监视程序的运行情况,以利找出问题,解决问题。
② 菜单键:OTHER, 显示方式菜单。
③清除键:CLEAR,按此键,可清除当前输入的数据。
④帮助键:HELP,显示应用指令一览表,在监视方式时进行十进制数和十六进制数为转换。
⑤步序键:STEP,监视某步输入步序号。
⑥空格键:,/SP,输入指令时,用于指定元件号和常数。
⑦光标键:↑、↓,用这二键可移动液晶显示屏上光标,作行(上或下)滚动。
⑧执行键:GO,该键用于输入指令的确认、插入、删除的执行等。
⑨指令键/元件符号键/数字键(虚线框内):这些键均可自动切换,上部为指令键,下部为元件符号键或数字键。一旦按了指令键,其它键即切换成元件符号或数字,可以进行选择输入。其它Z/V、K/H、P/I均可同一键的情况下相互切换。
5、熟习编程器的操做
按规定联接好PLC与简易编程器。PLC通入电源,小型指示灯亮。将PLC上的扭子开关拨向STOP(停止)位置。
操作要点:
①清零:扭子开关拨向STOP(停止)位置,会出现英文,别管它。直接按RD/WD(使显示屏左侧出现W即写的状态),此时先按NOP,再按MC/A中的A,接着按二次GO予以确认即可(即:W→NOP→A→GO→GO)。
②输入指令:如指令 LD X000 , 按以下顺序输入 LD→X→0→GO 即可,屏上自动显现 LD X000。其它指令类推。对于ORB、ANB、MPS、MRD、MPP、END、NOP等指令,输入后只要按GO确认即可(ORB→GO)。
③定时器的输入:如指令 OUT T0 K 40 按如下顺序输入即可 OUT→T→0→,/SP→K→40→GO(T0为100ms为单位,其整定值为:100×40=4000ms=4S)。
④ 删除指令:移动光标对准欲删除的指令,将INS/DEL键置于D,再予以GO确认即可。即 :移动光标对准欲删除指令→D→GO。
⑤插入指令:若欲在步序4、5之间插入新的步序,移动光标对准5,将INS/DEL键置于I,予以确认,再输入新的程序再次确认即可。如欲插入AND Y001即:移动光标对准欲插入部位→I→GO→AND→Y→1→GO。
⑥GO键:每一步序输入完毕均应输入GO予以确认。
⑦结束指令:每一程序输入完毕在结束时应输入END指令,程序才可运行。
⑧输入指令完毕应将PLC上的扭子开关拨向RUN于运行状态。若有音响、灯亮则说明输入程序有问题。
6、输入简单的可运行程序在监控状态下运行:
初学时要学会使用监视键M,可以从液晶显示上监视程序的运行情况,加深对PLC各接点运行的认识。并利于找出问题,解决问题的最好办法。 具体操作如下:按MNT/TEST键置于M监视运行方式,移动光标即可观查整个程序的运行情况。若程序中出现■标记表示元件处于导通状态(ON),若无■标记则元件处于断开状态(OFF)。
7、试着编绘简易梯形图:
简易梯形图的编绘,一般以现有的电工原理图,根据其工作原理进行绘制,由浅入深,先求画出,再求简单明了,慢慢领会绘制梯形图心得。首先要理解电工原理图的工作原理,根据电工原理图的工作原理,再按PLC的要求进行绘制。应把握的是,不能简单地将PLC各接点与电工原理图上的各接点一一对应(这是初学者的通病),若是这样的话就有可能步入死胡同,绘制的梯形图只要能达到目的即可。
个人认为学东西是要开窍的,一开窍什么东西都会理解的很快,其实没什么东西真正难的,别人真的比你多聪明吗?理论知识很重要,但是过多的学习理论却不实践很容易走火入魔的。所以我说:“很多人都买了有关PLC的书,如果从头看起的话,我想八成学不成了。”个人很赞同。书呆子也就是那样形成的。#微头条名师团# #我要上头条# #月薪万元—新作者扶植计划开启#@头条热点 @微头条 @进击课堂 @头条公开课 @微头条小秘书
相关问答
PLC编程入门要多久?
PLC编程入门的时间因人而异,主要取决于个人的学习能力、经验和知识水平等。一般来说,初学者可能需要花费数月学习PLC的基础知识和编程技能。如果将更多的时间...
PLC编程怎么报价?
学习plc编程要花费2000-15000元。如果参加PLC线上培训,费用基本在2000元左右,主要是利用空闲时间参加学习,但是学习周期相对较长。而线下的培训基本在4000元至...
plc300的编程怎么能出神入化呢,求指教?
呵呵,我可以说是神人才能问出这种神问题么?有这种神idea,不过你这种想法我个人是赞同的!出神入化,每个人对这个词的理解不同,我就理解成特别厉害吧!我认...呵呵...
plc简答?
2、PLC为什么采取集中采样、集中输出的工作方式?这种工作方式对输入、输出的响应产生怎样的影响?答:采取集中采样、集中输出的工作方式可减少外界干扰的影响...
一般给别人编一套PLC程序是怎么收费?
仅写PLC程序,收费标准参照几点:1、本身难易程度(初级);2、要求程序稳定性程度(高级);3、是否涉及安全危险。如果只要求1安装分类设备、点位和集成设备...
PLC如何编写计算周长程序?
PLC的程序可以使用以下步骤实现计算周长:1.定义输入和输出:输入一个半径r,输出圆的周长C。2.将π的值保存在一个常量中,例如3.14。3.计算圆的周长C,...
PLC编程里的十进制什么意思?
在PLC编程中,十进制(Decimal)是一种数字表示方式,它使用10个基本数字(0-9)和位置权重(10的幂)来表示数值。与二进制、八进制和十六进制等其他数字系统相...在...
plc操作数超出范围?
SM1.0特定指令的操作结果=0时,置位为1SM1.1特定指令执行结果溢出或数值非法时,置位为1SM1.2当运算结果为负时,置位为1SM1.3当尝试用零除时,置位...
西门子PLC肿么编写脉冲程序-ZOL问答
一般直接加上或者减去一个数即可,如果是个常数,直接在plc里编程。如果是个变量或者可设置的数,一般需要配一个屏,然后可以在屏上设置。变量表里改啊程序问题...
plc编程怎样用数据传送指令算加减法?
在PLC编程中,可以使用数据传送指令来进行加减法运算。首先,将需要进行运算的数据存储在不同的寄存器中。然后,使用数据传送指令将其中一个寄存器的值传送到另...