GrafcetMaker
打开编辑器

什么是 GRAFCET?IEC 60848 顺序功能图完整教程

更新于

GRAFCET 是一种图形化语言,用于描述顺序控制系统的行为,例如一台机器、一条生产线或一组交通信号灯。GRAFCET 图由一系列步(系统正在做什么)组成,步与步之间由转换(进入下一步的条件)连接。它的国际标准是 IEC 60848(中国国家标准 GB/T 21654),也是 PLC 顺序功能图(SFC)语言的起源。

本教程通过图示和示例讲解该标准的每个元素和每条规则。所有图示均使用 GrafcetMaker 绘制,这是一款在浏览器中运行的免费 GRAFCET 编辑器和仿真器:打开示例,即可逐步观察它们的演变。

GRAFCET 是什么意思

GRAFCET 是法语 GRAphe Fonctionnel de Commande Étape-Transition 的缩写,意为“步-转换功能控制图”。它由法国控制论协会 AFCET 的一个工作组与法国自动化生产发展署 ADEPA 于 1977 年共同提出。GRAFCET 源自 Petri 网,旨在以清晰且与技术无关的方式写下控制系统必须完成的工作,而且是在编写任何一行 PLC 代码之前。

  • 1982 年:法国标准 NF C03-190。
  • 1988 年:国际标准 IEC 848,控制系统功能图的编制。
  • 2002 年:IEC 60848 第 2 版,GRAFCET 顺序功能图规范语言。
  • 2013 年:IEC 60848 第 3 版,即现行版本,在欧洲也以 EN 60848 发布(德国为 DIN EN 60848)。

GRAFCET 广泛用于技术学校、职业培训和工程专业的教学,在法语、德语、西班牙语和葡萄牙语国家尤为普及。按照惯例,GRAFCET 指这种语言,而 grafcet 指用它绘制的一张图。

grafcet 的组成元素

grafcet 的各个组成部分 初始步 转换 + 转换条件 带动作的步 返回(向上箭头) start stop 0 1 Motor
grafcet 的各个组成部分
  • 步是一个带编号的方框,代表系统的一种稳定状况:等待、灌装、钻孔。任何时刻每个步要么激活,要么非激活,所有激活步的集合就是 grafcet 的情况。步 1 激活期间,步变量 X1 为真。
  • 初始步画成双线方框,在系统启动时处于激活状态。每个 grafcet 至少需要一个初始步。
  • 转换是横穿连线的一条短横杠。它总是位于步与步之间:两个步之间从不直接相连,两个转换之间也一样。
  • 转换条件是写在转换旁边的条件,例如 start 或 pressure > 6。转换条件 1 恒为真。
  • 有向连线连接步和转换。连线按从上到下的方向阅读;向上走的连线要画箭头。
  • 动作是画在步右侧的矩形框:表示步激活期间系统所做的事,例如 运行电机。

五条演变规则

IEC 60848 用五条规则精确定义了 grafcet 的演变方式。

  1. 初始情况:启动时,初始步激活,其他所有步均不激活。
  2. 转换的实现:当转换正上方的所有步都激活时,该转换被使能。当转换被使能且其转换条件为真时,转换实现(越过)。
  3. 激活步的演变:实现一个转换,会激活其正下方的所有步,并停用其正上方的所有步。
  4. 同时实现:所有可在同一时刻实现的转换同时实现。
  5. 同时激活与停用:在同一时刻既被激活又被停用的步保持激活。

当某个输入发生变化时,在输入不变的情况下反复应用这些规则,直到再也没有可实现的转换为止。这就是寻求稳定。在此过程中被激活后又立即离开的步称为不稳定步(或瞬态步):它的连续动作永远不会执行,但它的存储型动作会执行。例如,如果步 1 变为激活时,步 1 和步 2 下方的转换条件都已为真,grafcet 会直接经过步 2 到达步 3,而步 2 的输出永远不会接通。

转换条件:逻辑条件、边沿和定时器

转换条件是由输入、内部变量、步变量和时间组成的逻辑表达式。下表列出教科书记法以及在 GrafcetMaker 中的输入方式:

记法含义在 GrafcetMaker 中输入
a · ba 与(AND)ba * b
a + ba 或(OR)ba + b
带上划线的 a非(NOT)a/a
↑a上升沿:a 变为真的瞬间为真↑a 或 RE a
↓a下降沿:a 变为假的瞬间为真↓a 或 FE a
X3步 3 激活X3
5 s/X2步 2 激活 5 s 后为真5s/X2
t1/a/t2a 变为真 t1 后为真,a 变为假 t2 后恢复为假2s/a/1s
[level > 80]数值比较level > 80
= 1恒为真1
定时器转换条件:加热器运行 5 秒 ↑start 5s/X1 0 1 Heater
定时器转换条件:加热器运行 5 秒

当信号持续为真时,边沿就很重要:使用 ↑start 时,每按一次按钮循环只启动一次,按住按钮期间不会再次启动。编辑器的完整语法请参阅编写转换条件。

动作

步 4 上的连续动作、条件动作和存储型动作 4 Lamp Horn alarm C := C + 1 C := 0 ↑reset
步 4 上的连续动作、条件动作和存储型动作
  • 连续动作在其步激活期间一直为真:步 4 激活期间 Lamp 点亮。
  • 条件动作是带有赋值条件的连续动作,条件写在动作框上方:只有在步 4 激活且 alarm 为真时,Horn 才鸣响。
  • 延时动作和限时动作是条件中使用定时器的条件动作:使用 3s/X4 时,输出在步 4 激活 3 s 后接通;使用 /(3s/X4) 时,输出只在最初 3 s 内接通。
  • 存储型动作只赋值一次,该值一直保持,直到另一个动作改变它。它在步激活时(向上箭头)、停用时(向下箭头)或步激活期间事件发生时(带事件的旗标,此处为 ↑reset)执行。C := C + 1 这样的计数器就是典型的存储型动作。

由连续动作驱动的输出会自动跟随步变化。由存储型动作置位的输出会一直保持,直到另一个存储型动作将其复位,因此要事先规划好在哪里复位。

顺序、选择分支和并行分支

在路径之间选择:选择分支

当一个步后面跟有多个转换时,grafcet 会沿转换条件为真的那条路径前进:这就是选择分支(OR 分支),用一条单横线表示,在 SFC 中称为 选择序列。各条路径最后在一条单横线上重新汇合(选择汇合)。

选择分支与选择汇合:执行其中一个分支 a a·b c d 0 1 Left 2 Right 3
选择分支与选择汇合:执行其中一个分支

应使各转换条件互斥,即它们永远不会同时为真,例如此处的 a 和 /a * b。否则两个转换会同时实现(规则 4),两个分支都会被激活。当 GrafcetMaker 无法证明选择分支的转换条件互斥时,会发出警告。

同时做几件事:并行分支

当一个转换后面跟有多个步时,这些步会同时被激活:这就是并行分支(AND 分支),用双横线表示,在 SFC 中称为 并行序列。各分支最后也在一条双横线上结束(并行汇合):只有当每个分支的最后一步都激活时,双横线下方的转换才被使能,因此它会等待所有分支完成。grafcet 正是以这种方式同步各项任务的。

并行分支与并行汇合:钻孔和夹紧同时进行 start done1·done2 0 1 Drill 2 Clamp 3
并行分支与并行汇合:钻孔和夹紧同时进行

循环、跳转、源转换和阱转换

  • 循环通过一条带箭头的向上连线返回到前面的步:这是重复一个周期的常用方法。
  • 跳转(跳步)是一种选择分支,其中一个分支直接通向后面的步,例如用于跳过某个可选工序。
  • 源转换上方没有步。它始终被使能,因此只要其转换条件为真就会实现;请使用 ↑a 这样的边沿。
  • 阱转换下方没有步:实现它只会停用其上方的步。

大型应用的结构化

真实的机器通常由多个协同工作的 grafcet 来描述。

  • 每个局部 grafcet 描述系统的一个部分,例如生产循环、运行模式和安全。它们同时运行,并通过步变量 Xn 读取彼此的步。所有局部 grafcet 共同构成全局 grafcet。
  • 宏步代表一个绘制在单独图页上的详细序列,即它的展开。展开有一个入口步 E 和一个出口步 S。实现宏步上方的转换会激活步 E;当步 S 激活时,宏步下方的转换被使能。
  • 封装步包含一个或多个完整的 grafcet,这些 grafcet 只在封装步激活时存在。封装步被激活时,标有星号的被封装步变为激活;封装步被停用时,所有被封装的步都被停用。
  • 强制命令画在双框动作框中,用于将某个情况强加给另一个 grafcet:G2{8} 强制 G2 只有步 8 激活,G2{*} 将 G2 冻结在当前情况,G2{} 停用 G2 的所有步。被强制的 grafcet 不能自行演变。强制是描述急停和初始化的标准方法。
宏步:方框内有两条横线 宏步:其展开图 画在单独的图纸上 start end 0 10
宏步:方框内有两条横线

GRAFCET 与 SFC

IEC 61131-3 中的顺序功能图(SFC)语言源自 GRAFCET,两者看起来几乎一样,但用途不同。

GRAFCET(IEC 60848)SFC(IEC 61131-3)
用途规范:描述所需的行为,与实现技术无关由 PLC 执行的编程语言
演变所有可实现的转换同时实现,然后寻求稳定通常每个 PLC 周期演变一次,取决于 PLC
动作连续、条件、延时、限时和存储型动作动作限定符 N、S、R、P、P0、P1、L、D、SD、DS 和 SL
层次局部 grafcet、宏步、封装步和强制命令通过程序结构实现

常见的工作流程是先编写并检查 GRAFCET,然后用 SFC、梯形图或结构化文本实现它。GrafcetMaker 可以从图表生成结构化文本和 PLCopen TC6 XML,作为实现的起点;使用前务必检查生成的代码。

示例

带行人按钮的交通信号灯

交通信号灯:定时器和存储的请求 10s/X0 30s/X1 + Req·10s/X1 3s/X2 0 Pedestrians cross Red Walk Req := 0 1 Cars drive Green Req := 1 ↑request 2 Cars slow down Yellow
交通信号灯:定时器和存储的请求 在编辑器中打开此示例

步 0 为行人亮绿灯 10 s(10s/X0),然后步 1 让车辆通行。车辆的绿灯持续 30 s,但按下行人按钮会将其缩短为 10 s:按钮请求由事件 ↑request 上的存储型动作记住,并在步 0 再次激活时清除。步 2 亮黄灯 3 s。

带工件计数器的钻孔工位

钻孔工位:每加工 100 个工件进行一次维护的加工循环 ↑start·part clamped low high released·(Count < 100) released·(Count ≥ 100) ↑ack 0 Waiting 1 Clamping Clamp := 1 2 Drilling Spin Down 3 Retracting Spin Up 4 Unclamping Clamp := 0 Count := Count + 1 5 Maintenance Service Count := 0
钻孔工位:每加工 100 个工件进行一次维护的加工循环 在编辑器中打开此示例

一个加工循环:夹紧工件、向下钻孔、退回、松开。夹具由存储型动作置位和复位,步 4 对工件计数。步 4 之后,一个转换条件互斥的选择分支返回起点,或每加工 100 个工件转入维护。

编辑器中还有更多示例:带数值输入的储罐灌装、带有强制生产线的安全 grafcet 的并行输送机、灌装生产线(宏步、三个并行工位、检测和计数器)以及运行模式(封装步、冻结循环的暂停、急停)。可在 GrafcetMaker 的开始屏幕中打开它们。

在线绘制和仿真 GRAFCET

GrafcetMaker 是一款免费、开源的 GRAFCET 编辑器,专为自动化工程师、教师和学生打造。它完全在浏览器中运行,可离线使用,无需注册账户;您的图表保留在您的计算机上。

  • 用鼠标或键盘绘制步、转换、动作和分支,并通过自动布局保持图面整洁。
  • 借助自动补全和变量表编写转换条件,并获得清晰的错误提示和快速修复。
  • 按照 IEC 60848 规则进行仿真:激活步、定时器、边沿、不稳定步、强制,以及所有变量的时序图。
  • 用局部 grafcet、宏步、封装步和强制命令组织项目。
  • 导出为带标题栏的 PDF、SVG 和 PNG,或导出为结构化文本和 PLCopen TC6 XML,还可以将整个项目作为链接分享。

打开免费的 GRAFCET 编辑器

常见问题

GRAFCET 有什么用途?

用于规定具有顺序过程的自动化系统的行为:机器、装配线、包装设备、批处理过程、电梯、交通信号灯。这张图是设计机器、编写 PLC 程序和测试机器的人员共同使用的参考。

GRAFCET 和 SFC 是一回事吗?

不是。SFC(IEC 61131-3)源自 GRAFCET,使用相同的符号,但 GRAFCET 是一种具有精确演变规则的规范语言,而 SFC 是一种 PLC 编程语言,其执行方式取决于控制器。请参阅 GRAFCET 与 SFC。

步和转换有什么区别?

步是一种持续存在的情况(系统正在给储罐灌装);转换是系统从一种情况进入下一种情况的瞬间,即其转换条件变为真的时刻(储罐已满)。

X1 是什么意思?

X1 是步 1 的步变量:步 1 激活期间它为真。它用于转换条件、动作条件以及其他 grafcet 中,例如 5s/X1 或 X1 * /X5。

什么是不稳定步?

在一次寻求稳定的过程中被激活后又被停用的步,因为它下方的转换条件已经为真。它的连续动作不会执行;它的存储型动作会执行。

如何将 GRAFCET 转换为 PLC 程序?

每个步对应一个存储位,每个转换对应一个条件,该条件置位其下方的步并复位其上方的步,输出则根据步的存储位写出。您可以用梯形图或结构化文本手工实现,也可以使用 PLC 自带的 SFC 语言,或者让 GrafcetMaker 生成结构化文本或 PLCopen XML 作为起点。

有免费的 GRAFCET 软件吗?

有:GrafcetMaker 是免费开源软件(MIT 许可证)。它可以在 Windows、macOS、Linux、平板电脑和手机上的任何现代浏览器中运行,企业也可以将其部署在自己的网络中。