什么是 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 的情况。步 1 激活期间,步变量
X1为真。 - 初始步画成双线方框,在系统启动时处于激活状态。每个 grafcet 至少需要一个初始步。
- 转换是横穿连线的一条短横杠。它总是位于步与步之间:两个步之间从不直接相连,两个转换之间也一样。
- 转换条件是写在转换旁边的条件,例如
start或pressure > 6。转换条件1恒为真。 - 有向连线连接步和转换。连线按从上到下的方向阅读;向上走的连线要画箭头。
- 动作是画在步右侧的矩形框:表示步激活期间系统所做的事,例如 运行电机。
五条演变规则
IEC 60848 用五条规则精确定义了 grafcet 的演变方式。
- 初始情况:启动时,初始步激活,其他所有步均不激活。
- 转换的实现:当转换正上方的所有步都激活时,该转换被使能。当转换被使能且其转换条件为真时,转换实现(越过)。
- 激活步的演变:实现一个转换,会激活其正下方的所有步,并停用其正上方的所有步。
- 同时实现:所有可在同一时刻实现的转换同时实现。
- 同时激活与停用:在同一时刻既被激活又被停用的步保持激活。
当某个输入发生变化时,在输入不变的情况下反复应用这些规则,直到再也没有可实现的转换为止。这就是寻求稳定。在此过程中被激活后又立即离开的步称为不稳定步(或瞬态步):它的连续动作永远不会执行,但它的存储型动作会执行。例如,如果步 1 变为激活时,步 1 和步 2 下方的转换条件都已为真,grafcet 会直接经过步 2 到达步 3,而步 2 的输出永远不会接通。
转换条件:逻辑条件、边沿和定时器
转换条件是由输入、内部变量、步变量和时间组成的逻辑表达式。下表列出教科书记法以及在 GrafcetMaker 中的输入方式:
| 记法 | 含义 | 在 GrafcetMaker 中输入 |
|---|---|---|
| a · b | a 与(AND)b | a * b |
| a + b | a 或(OR)b | a + 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/t2 | a 变为真 t1 后为真,a 变为假 t2 后恢复为假 | 2s/a/1s |
| [level > 80] | 数值比较 | level > 80 |
| = 1 | 恒为真 | 1 |
当信号持续为真时,边沿就很重要:使用 ↑start 时,每按一次按钮循环只启动一次,按住按钮期间不会再次启动。编辑器的完整语法请参阅编写转换条件。
动作
- 连续动作在其步激活期间一直为真:步 4 激活期间 Lamp 点亮。
- 条件动作是带有赋值条件的连续动作,条件写在动作框上方:只有在步 4 激活且
alarm为真时,Horn 才鸣响。 - 延时动作和限时动作是条件中使用定时器的条件动作:使用
3s/X4时,输出在步 4 激活 3 s 后接通;使用/(3s/X4)时,输出只在最初 3 s 内接通。 - 存储型动作只赋值一次,该值一直保持,直到另一个动作改变它。它在步激活时(向上箭头)、停用时(向下箭头)或步激活期间事件发生时(带事件的旗标,此处为
↑reset)执行。C := C + 1这样的计数器就是典型的存储型动作。
由连续动作驱动的输出会自动跟随步变化。由存储型动作置位的输出会一直保持,直到另一个存储型动作将其复位,因此要事先规划好在哪里复位。
顺序、选择分支和并行分支
在路径之间选择:选择分支
当一个步后面跟有多个转换时,grafcet 会沿转换条件为真的那条路径前进:这就是选择分支(OR 分支),用一条单横线表示,在 SFC 中称为 选择序列。各条路径最后在一条单横线上重新汇合(选择汇合)。
应使各转换条件互斥,即它们永远不会同时为真,例如此处的 a 和 /a * b。否则两个转换会同时实现(规则 4),两个分支都会被激活。当 GrafcetMaker 无法证明选择分支的转换条件互斥时,会发出警告。
同时做几件事:并行分支
当一个转换后面跟有多个步时,这些步会同时被激活:这就是并行分支(AND 分支),用双横线表示,在 SFC 中称为 并行序列。各分支最后也在一条双横线上结束(并行汇合):只有当每个分支的最后一步都激活时,双横线下方的转换才被使能,因此它会等待所有分支完成。grafcet 正是以这种方式同步各项任务的。
循环、跳转、源转换和阱转换
- 循环通过一条带箭头的向上连线返回到前面的步:这是重复一个周期的常用方法。
- 跳转(跳步)是一种选择分支,其中一个分支直接通向后面的步,例如用于跳过某个可选工序。
- 源转换上方没有步。它始终被使能,因此只要其转换条件为真就会实现;请使用
↑a这样的边沿。 - 阱转换下方没有步:实现它只会停用其上方的步。
大型应用的结构化
真实的机器通常由多个协同工作的 grafcet 来描述。
- 每个局部 grafcet 描述系统的一个部分,例如生产循环、运行模式和安全。它们同时运行,并通过步变量
Xn读取彼此的步。所有局部 grafcet 共同构成全局 grafcet。 - 宏步代表一个绘制在单独图页上的详细序列,即它的展开。展开有一个入口步 E 和一个出口步 S。实现宏步上方的转换会激活步 E;当步 S 激活时,宏步下方的转换被使能。
- 封装步包含一个或多个完整的 grafcet,这些 grafcet 只在封装步激活时存在。封装步被激活时,标有星号的被封装步变为激活;封装步被停用时,所有被封装的步都被停用。
- 强制命令画在双框动作框中,用于将某个情况强加给另一个 grafcet:
G2{8}强制 G2 只有步 8 激活,G2{*}将 G2 冻结在当前情况,G2{}停用 G2 的所有步。被强制的 grafcet 不能自行演变。强制是描述急停和初始化的标准方法。
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,作为实现的起点;使用前务必检查生成的代码。
示例
带行人按钮的交通信号灯
步 0 为行人亮绿灯 10 s(10s/X0),然后步 1 让车辆通行。车辆的绿灯持续 30 s,但按下行人按钮会将其缩短为 10 s:按钮请求由事件 ↑request 上的存储型动作记住,并在步 0 再次激活时清除。步 2 亮黄灯 3 s。
带工件计数器的钻孔工位
一个加工循环:夹紧工件、向下钻孔、退回、松开。夹具由存储型动作置位和复位,步 4 对工件计数。步 4 之后,一个转换条件互斥的选择分支返回起点,或每加工 100 个工件转入维护。
编辑器中还有更多示例:带数值输入的储罐灌装、带有强制生产线的安全 grafcet 的并行输送机、灌装生产线(宏步、三个并行工位、检测和计数器)以及运行模式(封装步、冻结循环的暂停、急停)。可在 GrafcetMaker 的开始屏幕中打开它们。
在线绘制和仿真 GRAFCET
GrafcetMaker 是一款免费、开源的 GRAFCET 编辑器,专为自动化工程师、教师和学生打造。它完全在浏览器中运行,可离线使用,无需注册账户;您的图表保留在您的计算机上。
- 用鼠标或键盘绘制步、转换、动作和分支,并通过自动布局保持图面整洁。
- 借助自动补全和变量表编写转换条件,并获得清晰的错误提示和快速修复。
- 按照 IEC 60848 规则进行仿真:激活步、定时器、边沿、不稳定步、强制,以及所有变量的时序图。
- 用局部 grafcet、宏步、封装步和强制命令组织项目。
- 导出为带标题栏的 PDF、SVG 和 PNG,或导出为结构化文本和 PLCopen TC6 XML,还可以将整个项目作为链接分享。
常见问题
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、平板电脑和手机上的任何现代浏览器中运行,企业也可以将其部署在自己的网络中。