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控制程序的军规(9):关于程序测试
很多用户知道PLC编程和调试,但是不知道还有测试这个阶段,下面大段文字引自于我自己的一篇论文:
1 简述
软件测试是为了发现错误而执行程序的过程,是在软件投入生产性运行之前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。多数计算机软件开发机构将研制力量的40%以上投入到软件测试,对于特殊情况,测试占的比例更高。但是在PLC项目开发中,人们的测试意识非常淡漠,很少配置专门的软件测试人员。
软件测试在软件生存期中横跨两个阶段:在编写出每个模块后就对它进行单元测试。在每个模块都完成单元测试后,对软件系统还要进行各种综合测试。
2 软件测试的对象
据统计,在软件错误中,属于需求分析和软件设计的错误约占64%,属于程序编写的错误仅占36%。因此,软件测试不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。
3 软件测试的原则
软件测试可以参考以下原则:
1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。
2)测试用例应由测试输入数据和对应的预期输出结果这两部分组成。
3)程序员应避免检查自己的程序。
4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。
5)充分注意测试中的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。
6)严格执行测试计划,排除测试的随意性。
7)应当对每一个测试结果做全面检查。
8)妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
4 软件测试的策略
测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。
开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
系统测试主要有以下几个类别:
1)功能测试:在规定的一段时间内运行软件系统的所有功能,以验证这个软件系统有无严重错误。
2)可靠性测试:如果系统需求说明书中有对可靠性的要求,则需进行可靠性测试。
3)强度测试:要检查在系统运行环境不正常乃至发生故障的情况下,系统可以运行到何种程度的测试。
4)性能测试:要检查系统是否满足在需求说明书中规定的性能。特别是对于实时系统或嵌入式系统。通常,对软件性能的检测表现在以下几个方面:响应时间、吞吐量、辅助存储区,例如缓冲区,工作区的大小等、处理精度,等等。
5)恢复测试:要证实在克服硬件故障(包括掉电、硬件或网络出错等)后,系统能否正常地继续进行工作,并不对系统造成任何损害。
6)安全性测试:要检验在系统中已经存在的系统安全性、保密性措施是否发挥作用,有无漏洞。
7)文档测试:检查用户文档(如用户手册)的清晰性和精确性。用户文档中所使用的例子必须在测试中一一试过,确保叙述正确无误。
补充一些信息:
离线测试:通过仿真软件或者PLC实物,在不驱动任何外部设备的情况下,进行的逻辑测试。
功能测试、异常情况测试。由于离线测试不会带来危险,因此,要充分进行。
在线测试(一般称作调试):有些设备的控制、连续过程控制(比如温度控制、速度控制等)都基本无法离线仿真,往往需要进行在线测试
测试结果的观测工具:
1)PLC厂家提供的编程工具都能进行当前状态的查看、数据强制等,新的还能提供有限的曲线录波功能。
2)第三方工具,比如PLC-ANALYZER软件等,这些收费高昂。等待低价的国内软件出来吧。
2019年4月16日
说明:
1、本文是实践经验,非严格论文,与相关产品和理论可能不完全相符。
2、如需控制、三电相关帮助,交流,请关注本人,并加入技术讨论QQ群:877456127,那里有很多热心同行。
3、原创不易,欢迎转发,让更多朋友看到。转载请注明出处,谢谢!
相关问答
plc电气工程师项目..._电气工程师_帮考网
PLC电气工程师项目通常涉及以下内容:1.PLC程序设计:PLC程序设计是PLC电气工程师的主要任务之一。根据客户的需求,PLC电气工程师需要编写PLC程序,确...
plc职业技能?
1,前期项目谈好后,确定控制点数,确定详细的控制要求,这个你要参与。2,点数和控制要求确定后,就要做出I/O表,并标明每个点的信号类型。比如温度信号是4-20...
plc编程高级思路?
再开始编程会简单点。...4、合理分配主程序、子程序和定时中断程序等;5、合理分配数据块,定时器,计数器,存储器变量等,注意变量位置不能重叠。七、软件内部...
急求学长学姐告知PLC程序的调试方法及步骤?申请方
那就是查线,较麻烦。也可带电查,加上信号后,看电控系统的动作情况是否符合设计的目的。2、检查模拟量输入输出。看输入输出模块是否正确,...也可带...
PLC开发流程?
4.I/O配置:将PLC的输入和输出连接到相应的传感器和执行器。这可能涉及布线、连接到输入和输出模块,并确保正确配置。5.调试和测试:完成PLC程序之后,进行...
怎样使用PLC编程器读取PLC程序?
使用上载功能即可上载(又称上传)是将CPU装载存储器中的程序复制到编程器或PC的硬盘中。下面几种方法可以实现程序的上载:在SIMATIC管理器中,执行菜单plc/Uplo...
PLC工程项目如何收费(包括硬件的装配,现场调试。需要有组态软件进行上位的监控)?
装配、现场调试、组态、软件收费:通常收取与硬件费用一样的软件费,例如硬件1W,则软件也收1W。有的时候按点数收,每个PLC点数收取100-400元的费用。视情况定...
1200plc不同项目如何通讯?
要实现1200PLC之间的通信,可以使用不同的通信协议和方法。一种常见的方法是使用以太网通信,通过以太网模块连接PLC,并使用TCP/IP协议进行数据传输。另一种方...
零基础怎么学PLC编程?
如果您零基础想要学习PLC编程,可以参照以下步骤:1.先了解基础概念:学习PLC编程需要先掌握电气、电子和自动化等领域的相关基础知识。了解数字电路、传感...
东莞PLC培训公司学习项目有哪些?
[回答]在东莞汇缘教育PLC培训学校,每名教师能够依据学生们学习培训的进展开展一对一的指导。东莞市汇缘教育PLC培训学校的三菱PLC培训课程服务项目有三菱5...