对于PLC编程,哪种IEC 61131-3编程语言最适合?
图片来源:ControlSphere Engineering
作者 | Gary L. Pratt
“
”
可编程逻辑控制器(PLC)有很多编程语言可供选择。有种说法,标准的伟大之处在于有很多选择!尽管这很讽刺,但在IEC 61131-3编程语言中,有多种语言标准可供选择确实是一个优势。
在参加我的培训班时,很多学生抱着这样一种心态:选择最适合自己的语言,然后专门学习该语言。上课伊始,他们经常会问我会推荐适用哪种语言。或者,“最好的语言是哪个?”
我没有回答,问他们一个问题:“在阿拉伯数字中,哪个数字最好?”或“英语中,哪个词最好?” 再比如:办公室软件中,哪个工具最好?是文档编辑器、演示文稿编辑器,还是电子表格编辑器?虽然可以使用文档编辑器创建演示文稿和电子表格,但这是正确的方法吗?
使用一种工具实现多种目的,需要学习各种技巧,这是否值得付出?仅学习该工具对工作有用的主要功能,是不是更有效?与办公软件一样,为应用选择最佳编程语言是最有效的,可以避免很多麻烦。当使用的IEC 61131-3编程语言能够充分发挥其语言的优势时,PLC的编程和维护功能就会得到加强。
▎ 图1:IEC 61131-3编程语言提供了适合特定需求的语言。图片来源:ControlSphere Engineering
梯形图编程
梯形图(LD)编程的历史,可以追溯到大约100年前的继电器梯形逻辑(RLL),它主要用于描述电气元件系统(如继电器、计时器和电动机)。在自动化时代初期PLC逐步替换继电器和计时器时,创建一种用户熟悉并与被替换的工具相似的编程语言非常重要。
不幸的是,控制器变得越来越强大,能够实现的功能也已经远远超过继电器和计时器,LD语言被用于各种新的场景,而这并不是LD所擅长的,因此效果也不是特别理想。
PLC供应商提供新的、更适合PLC和可编程自动化控制器(PAC)应用的语言的速度比较缓慢,使这种情况进一步恶化。对于源自北美的控制器而言尤其如此,这可以解释在全球范围内,LD持久受欢迎的程度为什么会有所差异。
LD编程的优势是什么?为什么它能持久受欢迎?关键就是图形化。而通常来说工程师是更倾向于图形化思维的。
起初,大多数LD编程的替代方法都是基于文本的语言,这些语言与工程师的图形化思维不会产生共鸣,其结果就是不愿从LD转向其它语言。幸运的是,这种情况正在发生变化。
LD仍然是一门伟大的语言,它的初衷是执行复杂的布尔逻辑。在这个领域内,LD逻辑易于设计且易于调试。要确定为什么结果与预期不符,有多容易?在LD语言中,只需要观察蓝色实心触点的路径在何处中断就可以快速获得答案。
▎ 图 2 :该图比较了在 Codesys 中实现复杂布 尔逻辑的不同语言
顺序功能图编程
顺序功能图(SFC)是一种图形语言,非常适合表示状态机(state machine),并且像LD语言一样,它吸引了工程师的图形化思维天性。
状态机的历史可以追溯到很多年前,但是直到最近才被用于工业编程。状态机是表示系统行为的一种非常强大的方法,可用于表达行为取决于过去历史记录的系统逻辑,例如:
1.设置线圈或复位线圈;
2.封装逻辑(布尔反馈);
3.由代码设置的内部标志,用于决定未来的行为。
实际上,即使是简单的TON On-Timer和R-Trig one-shot都是状态机。它们的下一个行为取决于先前的输入和行为。与其它编码技术相比,状态机具有许多优势:
1.它们易于设计,因为它清楚地描述了系统可能的状态,系统如何在这些状态之间转换,系统在这些状态下应采取的行动。
2.在运行时,可以很容易地确定系统处于什么状态,在该状态下正在做什么,以及在什么条件下系统会切换到下一个状态(或者过程中出了什么问题,导致无法切换到下一个状态)。
3.促进构思周密且组织良好的设计。这样可以确保所有可能的事件都已得到妥善处理(就不会有人半夜三更把你从床上叫起来,去修复无法正确处理异常工况的代码)。
4.易于确定是否已经测试了所有可能事件。只需打印出SFC,并在执检查时划掉每个状态和切换条件即可。完成所有工作后,测试就完成了(程序员的置信度为100%)。
▎ 图3:该图显示了顺序功能图的编程组件
如何实现状态机?
几乎任何语言都可以实现状态机,但它们都需要特定的编码技术,包括步(step)、转换(transition)、分支/跳转(branch/jump)和动作(action)。
步描述了系统可以驻留的状态;转换指示系统何时应从上一步转移至下一步;分支和跳转指示下一步应该是什么;动作指定在该步期间(进入或退出该步)应执行的操作。
由于其图形化属性和工作的专业性,SFC语言是状态机最自然的选择。对于那些需求异常复杂或要求特别灵活的系统,状态机也可以用基于文本的语言来实现。对于只能使用LD的企业,状态机甚至可以在LD中实现,方法是为每个状态使用一个线圈,转移逻辑为每个线圈通电/断电,将系统从一个状态转移到下一个状态,以及利用使用状态线圈的独立逻辑来执行动作。
一些供应商还可以用统一建模语言(UML)来实现状态图,作为SFC的更强大、更灵活的替代方法,但这需要更长的学习曲线,而且在工业控制领域中的接受度有限。
对于状态机,语言的选择是次要的,所用技术的选择更重要。在SFC中,该语言强制使用状态机技术。在其它语言中,使用的技术取决于工程师制定的规则。
▎ 图4:基于Codesys连续功能图语言,展示了一个基于块的编程设计 示例
功能块图编程
功能块图(FBD)是一种图形语言,符合工程师的图形化思维。来自Codesys(以前被称为3S-Smart Software Solutions)的集成开发环境提供了两种FBD,即传统的IEC 61131-3 FBD和类似但更灵活的连续功能块图(CFC),CFC还没有正式成为IEC 61131-3的一部分。CFC是FBD的超集,具有两大优势:
1.基于块的功能编程(执行布尔和数学运算);
2.分层设计(调用其它功能和功能块)。
1 基于块的编程
基于块的设计由预定义功能组件组成,这些组件连接在一起执行布尔逻辑、数学计算或二者兼而有之。当输出是输入的函数时(换句话说,当没有状态变量,例如布尔反馈、设置/复位线圈或标志时),CFC块编程非常出色。当同时使用无状态功能和基于状态的功能时,请结合使用CFC和SFC。
因为连接性是用功能块之间的线来表示的,所以很容易理解信息流以及信息是如何沿着其路径进行修改的。如果功能开始变得复杂,则应将其分为较小的、更易于管理的子块。如果块之间存在大量连接,则可以将这些线连接至数据结构类型的引脚。
结构引脚(structure pin)具有3个优点:
1.在层次化结构设计中,每个层次都消除了不必要的细节,更清晰易于理解;
2.保持较小的功能块,可以在一页上查看整个信息流;
3.允许信息流向上游和下游,以进一步减少不必要的细节。
对于以前采用LD实施基于块或分层功能的PLC程序员来讲,CFC提供了一种更为简洁和灵活的方法。CFC的开发速度更快,而且对于将来负责维护或改进代码的工程师来说,也更容易理解。
▎ 图5:结构引脚可以减少不必要的细节和混乱,从而增强了图表的可 读性。
2 分层设计
分层设计是一种从很多简单的构建块层层设计的实践。与传统的扁平化设计相比,分层设计具有许多优点:
1.定制;
2.创建;
3.测试与完善;
4.理解和维护;
5.易于复用。
构建块技术支持并鼓励在层次结构的每个级别上,展现同等程度的细节,这就使块技术更易于设计和理解。这样,在较高层次的设计中,不必因为展现细节而被弄得杂乱无章,这些细节只在较低层的设计中很重要。在层次结构的每个级别上,分层CFC设计应都具有统一的细节展示。
使用LD作为构建块语言的传统方法会存在2个弊端:
1.信息的低密度导致LD设计可能会分布到数10页上,很难或不可能看到和理解全局;
2.不同层次的细节混杂在同一层次上会十分混乱,这使设计难以理解和维护。
而使用结构化文本的CFC分层设计可以解决这两个问题,同时保持了LD的图形特性。这是个两全其美的解决方案。
分层设计是面向对象的工业编程(OOIP)的关键功能。在部署和配置用户自定义的功能块以后,CFC编程开始与分布式控制系统(DCS)的编程/组态有点类似,但使用IEC 61131-3程序员可以控制底层的块。如果某个块需要较小的改进,程序员就可以执行此操作,而无需费时费力的请DCS供应商介入。
完整的分层PLC设计,可以看作是一棵由分层CFC构成主干和分支的树。基于块的CFC、SFC、LD和ST填充树叶所处位置的详细功能设计。IEC 61131-3语言共同构成了一个团队,该团队比其各个部分的功能更强大。
▎ 图6:此处的分层设计是在连续功能图编程中实现的。
结构化文本编程
尽管LD、SFC和FBD/CFC语言可以出色的完成其任务,但有些运算并不适合使用图形化语言。
一些支持使用结构化文本(ST)语言编程的运算包括:
1.迭代运算,例如For、While和Repeat;
2.复杂条件和选择,例如IF-THEN和CASE;
3.位运算,例如按位与、移位、旋转;
4.文本字符串运算;
5.具有特殊要求或特别复杂的状态机;
6.纯粹的面向对象编程(调用方法,设置属性等)。
有许多很好的教程,可指导工程师从其它基于文本的语言过渡到ST。对于那些完全不熟悉基于文本的语言的人来说,Visual Basic教程是一个很好的起点。尽管结构化文本基于Pascal编程语言,但它与VB有非常相似,因此可以参考应用更广泛的VB教程。
使用最合适的语言编程
要创建有效的工业控制程序,掌握合适的编程语言并知道如何有效使用这些语言非常重要。有很多语言可供PLC选择,IEC 61131-3编程语言标准也提供了多种选择。充分利用每种语言的优势效率会更高,而不是学习一种语言的各种技巧和变通方法来使其适用于所有应用。程序员应为应用选择最佳语言。
您是否充分利用了PLC编程标准IEC 61131-3和PLCopen?
图片来源:Yaskawa
作者:Dulce Maria
IEC 61131-3为用户在自动化流程的各个阶段开发高效解决方案提供了可靠的框架,并可用于支持PLCopen功能库。
PLC编程语言标准IEC 61131-3为用户提供了一个可靠的框架,在自动化过程的各个阶段开发高效的解决方案。该标准包括三种图形和两种文本编程语言,用于支持为各种应用和通信设计的PLCopen功能库,并提供持续支持,创建可重复使用的代码以满足不同的构建需求。PLCopen为程序员带来了三个好处:支持多种编程语言、程序优化和故障排除支持。
01 支持多种编程语言
虽然无法保证PLC之间的代码可移植性或代码互操作性,但该标准支持常用的语言,包括三种图形编程语言:梯形图(LD)、功能块图(FBD)和顺序功能图(SFC),以及两种文本编程语言:结构化文本(ST)和指令列表(IL)。
在需要升级改造时,这种灵活性允许用户保持编码的一致性。如果正在启动一个新项目,他们可以选择自己喜欢的编程方法,这也会有所帮助。在某些示例中,用户可能会发现从结构化文本子程序中创建功能块,将 PLCopen 功能块集成到逻辑中以提高性能,或根据故障排除程序重组逻辑是非常有益的。
该标准支持多种语言,可以运行和实施各种应用的PLCopen功能库,同时用户可以选择他们喜欢的语言编程。
▲图1:在ST:FB中实例化的PLCopen FB Byte_To_Buf,用于处理Modbus通信传感器输出/输入命令的数据交换
02 程序优化:集成和复用
在符合IEC 61131-3标准的编程环境中集成的PLCopen库,为用户提供了指南和最佳实践,以帮助开发高效和可重复使用的PLC程序,同时还提供了其他工具供用户将PLCopen指南调整到代码中,以满足PLC程序所需的内存使用或性能等指标。
PLCopen功能库的设计和创建,是为了根据配置需求支持和监控项目的逻辑、运动控制、安全、OPC UA-HMI和XML(项目源代码导出),以及满足在归位、协调运动、扭矩控制、凸轮和传动等方面的应用需求。这些广泛的功能旨在支持用户过程的每一步,缩短编程时间。
PLC编程语言标准IEC 61131-3还允许用户创建可用于保留/恒定值的变量,同时将其分配为全局、本地、外部、临时或输入/输出(I/O)映射。该标准在创建变量方面的开放性使得使用标准功能块(计数器、定时器等)和函数(类型转换、位字符串、INTEGER、REAL 等)定制PLCopen库成为一项可行的任务。对函数/功能块的调整还能帮助项目更高效地运行,同时用户还可以在其他项目部分重复使用,从而减少代码量。
▲图2: PLCopen FB MC_ReadAxisError可用于确定运动控制轴的错误, ErrorID值可提供进一步的描述和分辨率
如果充分利用PLC编程标准,用户还可以分配基于CPU的配置资源,以根据默认、循环、事件或系统将程序分配给任务。用户可以为分配的程序分配任务间隔时间、优先级和看门狗计时。配置资源功能是确保应用程序满足所需时间和执行期望的有益工具。
PLCopen和PLC编程语言IEC 61131-3指南为用户优化项目提供了可能,同时为完成配置、定制和故障排除提供了额外的措施。
03 支持故障排除功能
作为其开发的一部分,在怨声载道的编程环境中运行PLCopen,可为用户提供解决许多PLCopen库应用程序问题的工具,包括发出错误警报的嵌入式逻辑、具有潜在解决方案的错误ID/代码。用户还可以使用该标准的工具,进一步排除PLCopen的语法错误、逻辑错误、参数设置错误等。
在充分利用PLCopen故障排除功能的过程中,用户可以实现他们自己的符合IEC 61131-3的响应,以根据他们的需求采取相应的行动,例如监控外部硬件问题(如果他们知道必要的参数)、数据类型和值。它们还可以为生产过程创建错误报警和警告。对于运动指令,PLCopen指定了一个状态图,可以为各种状态转换状态图,使用户可以据此确定轴/组处于什么状态。这允许持续的状态监测,以提供额外的预防措施。
▲图3: Plopen运动状态图:错误、归位、停止等的监控
在符合IEC 61131-3的编程环境中,用户可以使用各种工具来调试离线和在线格式。在线工具可以监控输入或输出值,同时检查来自设备或传感器的状态更新,或者用户程序中的执行流。如果用户需要进一步的诊断,使用兼容的图形工具也可以帮助解决意外行为。在离线设置中,用户可以比较项目,管理项目版本和跟踪修改,确保项目保持正确配置,变量具有合适的数据类型、范围、内存分配以及必要的初始化。
虽然在符合IEC 61131-3编程环境和PLCopen解决方案中有许多工具可用,但在下载到物理硬件之前,修改项目代码以找出潜在错误始终是最佳做法。
关键概念:
■ 了解PLCopen支持的编程语言类型。
■ 了解程序优化的好处以及用户如何集成和复用代码。
■ PLC编程需要能够帮助用户做出更好决策的框架和结构。
思考一下:
您如何在编程中使用PLCopen,它扮演什么角色?
相关问答
各位大神帮忙答一下iec检测报告多少钱哪里能做iec认证是什...
[回答]等同采用,没有区别。EN61646是直接采用IEC61646。实力加自信就是一把坚韧不摧的利剑,也是通往成功的船票实力决定成败,感谢华科检测家电的安全标...
iec检测报告多少钱哪里能做iec认证是什么意思?,IEC检测报告...
[回答]华科检测也算是行业内的数一数二吧,肯定差不了啊IEC60601-1-1是IEC60601-1的并列标准,也就是说在满足IEC60601-1后还要满足IEC60601-1-1。就像是IE...
老师,急需帮忙!iec检测报告多少钱哪里能做iec认证是什么意...
[回答]ISO(国际标准化组织)和IEC(国际电工委员会)是世界性的标准化专门机构。多年前(时间不详,至少30多年),ISO和IEC规定,技术委员会的主要任务是制定国际...
三防灯IEC报告与IP68防尘防水等级测试报告办理机构?
三防灯IEC报告怎么做IEC是国际电工委员会的简称,其制定的标准为世界大部分使用。所以IEC标准可以通行大部分清关。做IEC报告需要提供哪些资料:1、两套能够...
电子厂光源检测的标准是多少?
还有一些其他标准如EN55015和EN61547等也常用于光源的电磁兼容性和安全性测试。这些标准包括了光源电磁辐射限值、光谱分布、光通量、色温等参数的要求,...
什么是IEC认证,周期多久
[回答]安博检测机构2004年正式在落户深圳。是国内首批独立的、权威的、第三方检验、鉴定、测试及认证服务的CNAS授权实验室,致力为中国出口企业提供专业权...
EN和IEC是什么证书?
国际标准IEC(InternationalElectrotechnicalCommission)国际电工委员会IEC成立于1906年。在1948年将中央事务局从伦敦迁至瑞士日内瓦至...
锂电池IEC61730检测机构,锂电池CB认证,锂电池哪里可以做检测
[回答]IEC61730试验标准顺序说明:介绍IEC61730在每一个模块安全测试以及模块性能测试当中,不同试验的先后顺序以及试验流程。安博检测股份(Anbotek)共...
环境检测实验室信息化系统运行起来怎么样?
未来的实验室一定是智能化、数字化的实验室,所以LIMS实验室信息管理系统是检测行业以后的发展道路上必要的选择,LIMS系统的设计遵循实验室ISO/IEC17025:2017准...
锂电池IEC61730检测机构,锂电池CB认证,锂电池哪里可以做检测
[回答]IEC62133适用于了含碱性或非酸性电解液的便携式密封二次单体电池和电池组(非纽扣电池)其对应的国家标准为GB31241(非等效采用IEC62133)检测项目...
扫一扫微信交流