PLCS,PACS

使用IEC 61131-3:7成功的步骤

IEC 61131-3标准包括强大的结构化工具,可以帮助用户提供一个优秀的方法来将控制系统分解为可管理的单位,以获得更大的整体效果。

由Eelco van der Wal 2021年7月6日
礼貌:PLCOPEN.

学习目标

  • IEC 61131-3编程标准为多级用户和使用提供了强大的工具
  • 顺序功能图(sfc)和用户派生的功能块是必不可少的部分。
  • 识别、定义和分析所有不同的层为流程提供了结构和清晰度。

根据现代软件开发环境,IEC 61131-3可编程控制器,第3部分编程语言标准的国际电工委员会(IEC)包括强大的结构工具。其基本部分是顺序功能图(sfc)和用户派生的功能块。两者都提供了将控制系统分解为可管理单元的极佳方法。

这些单元更易于不同背景的人使用和理解。它提供了系统工程师、软件开发人员以及安装和维护人员之间缺失的环节。此外,它还为这些不同的组提供了表示和通信工具。

通过这种方式,多学科团队可以在更大的应用程序中合作,生成更容易理解和重用的代码,并在不同级别的程序员、安装和维护人员以及用户之间提供分离。

此外,可以在软件开发的早期阶段处理错误检测和错误处理部分。替代方案,在安装期间创建这些部分 - 甚至在操作期间 - 对于供应商(支持)以及用户(在停机时间)来说太昂贵了。

图1:发酵过程的示例及其控制系统。礼貌:PLCOPEN.

图1:发酵过程的示例及其控制系统。礼貌:PLCOPEN.

为控制系统编程提供结构

结构控制系统代码的优点是广泛的,包括:

  • 更好的系统概述,对原始程序员来说不仅重要,还适用于安装和维护人员;
  • 多学科发展团队内部沟通的更好基础;
  • 明确区分不同的职责;
  • 更好地关注真正的问题和可能的解决方案;
  • 可重用软件的基础。

结构化是通过将问题分成更小的部分来完成的,这些部分可以再细分。这是有限制的:继续使用无穷无尽的细粒度是不现实的,因为集成这些部分的工作量会增加。

模块化块的使用与五个原则相关联:

  1. 编程语言应支持模块化单位。
  2. 该单位应以这种方式组成,并且在这些数字中它们具有很少的接口和少数相互作用。
  3. 接口应该很小,需要很少的数据交换。
  4. 模块交互需要显式定义,以提高重新使用。
  5. 模块应提供数据封装:将应用程序数据分区,每个分区应该只能通过一组正确的函数访问,该函数将其隐藏免于不期望的用途。
图2:从左到右读取。在左侧是输入,在右侧输出。礼貌:PLCOPEN.

图2:从左到右读取。在左侧是输入,在右侧输出。礼貌:PLCOPEN.

为结构化编程软件的成功七个步骤

以下7个步骤为控制系统编程软件的构建提供了一条成功之路:

  1. 识别控制系统的外部接口。
  2. 在控制系统和植物的其余部分之间交换的主信号的定义。
  3. 所有操作员交互,覆盖和监督数据的定义。
  4. 从顶级分解为逻辑分区的控制问题分析。
  5. 定义所需的功能块。
  6. 为应用程序的不同部分定义扫描周期时间要求。
  7. 通过定义资源来配置系统,将程序链接到物理输入和输出以及将程序和功能块分配给任务。

IEC 61131-3提供了正确的环境来支持这些步骤。考虑这个发酵过程及其控制系统的例子。下面显示的是整个系统的示意图(图1)。应该把它看作一个操作系统。

发酵过程由大容器组成,该大容器可以用液体填充(进给阀),可以用加热器带(冷却通过对流)加热,可以通过电动机搅拌,并且可以加入酸和碱性流体进入船只。在处理时间之后,我们使用收获阀来实现结果。

要为这个例子创建一个控制程序,请执行上面定义的所有七个步骤:

1.识别控制系统的外部接口

  • 温度传感器反馈
  • 来自pH传感器的反馈
  • 来自阀门位置的反馈
  • 来自电机的反馈(速度)
  • 阀门输出量
  • 输出到电机
  • 输出到加热带。

2.在控制系统和植物的其余部分之间交换的主信号的定义。

在这个例子中,没有耦合到植物的其余部分,这不是非常逼真的。例如,可以需要与液体读取的容器的链接,以及与用于收集的系统的链接,如容器或瓶子的运输系统。还可以有企业资源规划(ERP)系统的耦合。

3.所有操作员交互,覆盖和监督数据的定义。

对于操作符,我们定义了一个“开始”、“停止”和“持续时间”按钮作为系统的输入。

4.分析从顶级分解为逻辑分区的控制问题

此过程有五个主要功能:

  1. 主序列,例如,顶级工艺步骤 - 填充,加热,搅拌,发酵,收获,清洁;
  2. 阀门控制,如操作阀用于填充和清空血管;
  3. 监测容器温度的温度控制;调制加热器;
  4. 搅拌器控制是将搅拌器电机按要求按主工艺顺序激活;
  5. pH控制用于监测发酵含量的酸度,根据需要加入酸性或碱性试剂。

5.所需功能块的定义

使用上面的定义并向它添加(高级)函数块,我们可以在编程语言中表示这些功能框图。发酵控制程序的概述可以如此如此如此如此(图2)。

功能块主序列链接到操作员输入。它由其他块进行支持,用于控制,这些块与相关输入和输出相关联。这些附加块可能是由供应商提供的块,如使用PID控制环路,如温度控制块。或者,这些块可以由自己创建。例如,这是Bloc主序列的情况。仔细观察到此街区,我们可以使用SFC构建其序列,如下所示(图3):

SFC提供了一种用于将可编程控制器程序划分为一组步骤的手段,并且通过定向链路互连的转换。与每个步骤相关联的是一组动作,并且每个转换都与转换条件相关联。

我们从顶部开始初始化:因为我们不知道系统的状态,当我们第一次打开它,我们必须检查阀门的位置,等等。然后我们开始填充,直到达到正确的水平。下一个阶段是加热,直到发酵过程开始。当它完成时,我们进入下一个阶段:实际发酵过程控制部分。完成后,我们收获,然后清理,然后我们准备从头开始。

这种分解使每个参与者都能清楚地了解所涉及的序列,并进一步将其模块化为可以用四种语言中的任何一种编程的功能块。

现在要完成的编程工作是在动作块的级别。那些可以在不同的人之间分配,有不同的背景。为此,IEC定义了2个图形和2个文本编程语言,它是指令列表,结构化文本,梯形图和功能框图,以最适合手头的需求和问题。此外,如果需要,可以通过SFC进一步分解动作块。

图3:顺序功能图表(SFC)提供了一种用于将可编程控制器程序划分为一组步骤和通过定向链路互连的转换的装置。礼貌:PLCOPEN.

图3:顺序功能图表(SFC)提供了一种用于将可编程控制器程序划分为一组步骤和通过定向链路互连的转换的装置。礼貌:PLCOPEN.

6.扫描周期时间对应用程序不同部分的定义

在此示例中,我们原则上只有一个循环,我们可以以连续模式运行。或者,我们可以在一次性运行时,例如每20毫秒一次运行。剩余时间可用于附加序列,例如在收获或检查所有边界和/或错误条件期间检查或控制运输/装瓶系统。

7.通过定义资源来配置系统,将程序与物理输入和输出链接,以及将程序和功能块分配给任务

此阶段专用于所涉及的系统。它包括对I / O地址的符号的物理映射。通过使用符号表示,一个人创造了更好的硬件独立性。这对于创建功能块特别有效,这应该是独立的硬件。通过清楚地识别物理映射所完成的位置,提交中的重新加速是更容易实现的。例如,交换两个数字输入的布线意味着在物理映射内必须只能改变两行,程序的其余部分仍然有效并且不需要更改。

这里的资源是映射的,这意味着系统中的哪个部分在哪个处理器上运行。IEC 61131-3支持多处理环境,尽管大多数实际系统仍然为程序使用一个处理器。

用户还必须将任务映射到扫描周期和事件,如步骤6中定义的那样。通过这种方式,一个人可以在一个系统中有多个程序,例如这里描述的发酵过程,由支持环境的全面检查和控制来支持,如装瓶或供应链的前期水平。

IEC 61131-3编程标准为多个级别的用户和使用提供了强大的工具。在高级使用SFC在开发中提供了出色的概述,导致更高的可读性和透明度。它为手动控制问题的模块化提供了指导。此外,它还为分离不同的开发任务,并侧重于在实际编码级别创建可重新使用的软件代码的基础。

Eelco van der Wal, 常务董事,PLCopen,CFE媒体内容合作伙伴。Chris Vavra,Web Content Manager,CFE媒体和技术编辑编辑,cvavra@cfemedia.com.

更多答案

关键词:PLC编程,IEC 61131-3标准,顺序功能图表

考虑一下这一点

你得到了吗?最符合IEC 6113-1标准?如果不是,为什么?

在线额外

额外的信息

PLCOPEN发布了一份文件“用SFC构建:做和不做”为.pdf。本文档介绍了顺序功能图表,SFC的优势。每当应控制顺序过程时,SFC应被视为最适合构建POU的内部组织,包括计划,特别是在功能描述中。SFC是IEC 61131-3标准的一种非常表现力的图形形式主义。它不被视为一种编程语言,因为它需要其他语言来表达转换条件和动作。

参考

http://www.plcopen.org.- 独立的背景信息网站;PLCOPEN是一个独立的全球组织,根据用户的需求为工业自动化提供效率。它成立于1992年,并在荷兰的总部,在美国,日本,中国和韩国提供了支持办事处。


Eelco van der Wal
作者生物:PLCopen董事总经理Eelco van der Wal