[西门子] 什么是IEC 61131-3标准的5种编程语言?

[复制链接]
查看91308 | 回复0 | 2024-2-16 09:19:08 | 显示全部楼层 |阅读模式
1993年国际电工委员会(IEC)正式颁布了可编程控制器的国际标准IEC 1131(以后改称IEC 61131),其中的第三部分关于编程语言的标准,规范了可编程控制器的编程语言及其基本元素。这一标准为可编程控制器软件技术的发展,乃至整个工业控制软件技术的发展,起了举足轻重的推动作用。它是全世界控制工业第一次制定的有关数字控制软件技术的编程语言标准。‍

IEC61131-3定义的软件模型:



从图片中可以看出,该软件模型定义了配置、资源、任务、程序组织单元(功能、功能块、程序)、全局变量、访问路径等等。

IEC61131-3定义的五种编程语言:

    如结构化文本(ST)

    顺序功能图(SFC)

    功能块图(FBD)

    梯形图(LD)

    指令表(IL)


1.梯形图编程

    梯形图(LD)编程的历史,可以追溯到大约100年前的继电器梯形逻辑(RLL),它主要用于描述电气元件系统(如继电器、计时器和电动机)。在自动化时代初期PLC逐步替换继电器和计时器时,创建一种用户熟悉并与被替换的工具相似的编程语言非常重要。

  不幸的是,控制器变得越来越强大,能够实现的功能也已经远远超过继电器和计时器,LD语言被用于各种新的场景,而这并不是LD所擅长的,因此效果也不是特别理想。


该图显示了顺序功能图的编程组件

2.顺序功能图编程

  顺序功能图(SFC)是一种图形语言,非常适合表示状态机(state machine),并且像LD语言一样,它吸引了工程师的图形化思维天性。


基于Codesys连续功能图语言,展示了一个基于块的编程设计示例
  状态机的历史可以追溯到很多年前,但是直到最近才被用于工业编程。状态机是表示系统行为的一种非常强大的方法,可用于表达行为取决于过去历史记录的系统逻辑,例如:

    设置线圈或复位线圈;

    封装逻辑(布尔反馈);

    由代码设置的内部标志,用于决定未来的行为。



  实际上,即使是简单的TON On-Timer和R-Trig one-shot都是状态机。它们的下一个行为取决于先前的输入和行为。与其它编码技术相比,状态机具有许多优势:

    它们易于设计,因为它清楚地描述了系统可能的状态,系统如何在这些状态之间转换,系统在这些状态下应采取的行动。

    在运行时,可以很容易地确定系统处于什么状态,在该状态下正在做什么,以及在什么条件下系统会切换到下一个状态(或者过程中出了什么问题,导致无法切换到下一个状态)。

    促进构思周密且组织良好的设计。这样可以确保所有可能的事件都已得到妥善处理(就不会有人半夜三更把你从床上叫起来,去修复无法正确处理异常工况的代码)。

    易于确定是否已经测试了所有可能事件。只需打印出SFC,并在执检查时划掉每个状态和切换条件即可。完成所有工作后,测试就完成了(程序员的置信度为100%)。


3.功能块图编程

    功能块图(FBD)是一种图形语言,符合工程师的图形化思维。来自Codesys(以前被称为3S-Smart Software Solutions)的集成开发环境提供了两种FBD,即传统的IEC 61131-3 FBD和类似但更灵活的连续功能块图(CFC),CFC还没有正式成为IEC 61131-3的一部分。CFC是FBD的超集,具有两大优势:


    基于块的功能编程(执行布尔和数学运算);

    分层设计(调用其它功能和功能块)。


    使用LD作为构建块语言的传统方法会存在2个弊端:

    信息的低密度导致LD设计可能会分布到数10页上,很难或不可能看到和理解全局;

    不同层次的细节混杂在同一层次上会十分混乱,这使设计难以理解和维护。


  而使用结构化文本的CFC分层设计可以解决这两个问题,同时保持了LD的图形特性。这是个两全其美的解决方案。

  分层设计是面向对象的工业编程(OOIP)的关键功能。在部署和配置用户自定义的功能块以后,CFC编程开始与分布式控制系统(DCS)的编程/组态有点类似,但使用IEC 61131-3程序员可以控制底层的块。如果某个块需要较小的改进,程序员就可以执行此操作,而无需费时费力的请DCS供应商介入。

  完整的分层PLC设计,可以看作是一棵由分层CFC构成主干和分支的树。基于块的CFC、SFC、LD和ST填充树叶所处位置的详细功能设计。IEC 61131-3语言共同构成了一个团队,该团队比其各个部分的功能更强大。

4.结构化文本编程

  尽管LD、SFC和FBD/CFC语言可以出色的完成其任务,但有些运算并不适合使用图形化语言。

  一些支持使用结构化文本(ST)语言编程的运算包括:

    迭代运算,例如For、While和Repeat;

    复杂条件和选择,例如IF-THEN和CASE;

    位运算,例如按位与、移位、旋转;

    文本字符串运算;

    具有特殊要求或特别复杂的状态机;

    纯粹的面向对象编程(调用方法,设置属性等)。

  有许多很好的教程,可指导工程师从其它基于文本的语言过渡到ST。对于那些完全不熟悉基于文本的语言的人来说,Visual Basic教程是一个很好的起点。尽管结构化文本基于Pascal编程语言,但它与VB有非常相似,因此可以参考应用更广泛的VB教程。


此处的分层设计是在连续功能图编程中实现的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则