跳到主要内容

拖拽式编程 (CFC)

CFC (Continuous Function Chart,连续功能图) 是 Darra PLC 的拖拽式数据流编程语言,是三种 PLC 逻辑编辑器之一(SCL、LAD、CFC)。它采用数据流范式:在画布上拖入功能块(box),用接线(wire)把一个块的输出针脚(pin)连到下一个块的输入针脚,数据沿连线流动。无需写文本代码,适合搭建信号处理链、过程控制回路、模拟量运算等以"数据流向"为主线的逻辑。

截图: CFC 编辑器全景

基本概念

CFC 程序由三类元素构成:

元素说明
功能块 (Box)画布上的矩形框,封装一个运算(逻辑门、定时器、PID、数学运算、自定义 FB 等)
针脚 (Pin)块左侧为输入针脚、右侧为输出针脚,每个针脚有名称和数据类型
接线 (Wire)从某块的输出针脚拉到另一块的输入针脚,表示数据从前者流向后者
  bSensor1 ──●                                  
├──►┤ AND ├──►●──►┤ TON ├──► bOutput
bSensor2 ──● └─────┘ │ PT := T#2s │
└────────────┘
  • 块的输入针脚可连接:变量、常量,或上一个块的输出针脚。
  • 块的输出针脚可连到:变量,或下一个块的输入针脚(可一对多分叉)。
  • 接线两端数据类型必须匹配,类型不符时 IDE 在连线时报错。
与 LabVIEW 的相似之处

CFC 的"框 + 针脚 + 接线"数据流范式与 LabVIEW 的图形化数据流编程理念相同:数据顺着连线在框之间流动,框的输入针脚到齐后才计算并向下游输出。

执行顺序

CFC 是数据流编程,块的执行顺序由数据依赖决定,而不是从上到下的书写顺序:

  1. 拓扑排序 — 编译器根据接线构成的有向图做拓扑排序,确保每个块在其所有输入就绪后才执行。
  2. 顺序号显示 — 每个块的左上角显示执行序号(1、2、3…),方便核对运行先后。
  3. 手动调整 — 当多个块之间没有数据依赖(彼此独立)时,可手动指定执行序号,控制谁先谁后。
执行序: 1 → 2 → 3 → 4
[读输入块] → [AND] → [TON] → [写输出块]

反馈回路

CFC 允许把后级输出接回前级输入构成反馈回路(如积分、状态保持)。遇到回路时编译器会插入一个周期延迟:本周期写入的值在下一个扫描周期被读取,避免循环求值死锁。带反馈的针脚在画布上以特殊标记显示。

典型用途

CFC 最适合以下场景:

场景说明
模拟量信号链采集 → 标定 → 滤波 → 限幅 → 报警判断,一条连线串起来一目了然
过程控制回路PID、前馈、串级控制等,把测量、设定、控制器、执行器块连成回路
混合逻辑运算逻辑门、比较、选择、数学块混合编排,比纯文本更直观
复用功能块编排把自定义 FB 当作黑盒块拖入,专注于"块之间怎么连"而非块内部实现

工具箱

CFC 编辑器的工具箱按西门子风格分组(基础 → 显示 → 输入 → 容器 → 图表 → 工艺对象),以网格图标排布,鼠标悬浮显示中文名与一句话提示。常用块包括:

  • 逻辑:AND、OR、NOT、XOR、RS / SR 触发器
  • 定时器:TON、TOF、TP
  • 计数器:CTU、CTD、CTUD
  • 数学:ADD、SUB、MUL、DIV、MOD、ABS、SQRT
  • 比较 / 选择:GT、LT、EQ、MUX、SEL、LIMIT
  • 工艺对象:PID、斜坡、滤波器
  • 自定义 FB:项目中定义或库导入的功能块

编辑操作

操作方法
添加块从工具箱拖到画布,或双击画布搜索块名
连线鼠标按住输出针脚拖到目标输入针脚
删除连线选中接线后 Delete
设置常量双击输入针脚直接输入常量值
关联变量把变量从项目树拖到针脚上
调整执行序选中块后在属性面板修改序号

在线监视

下装运行后,CFC 画布支持在线监视:每条接线上实时显示流过的当前值,布尔量用颜色区分(绿=TRUE / 灰=FALSE),模拟量直接显示数值。这样可以一眼看出数据流到哪一步出了问题。在线强制写入与监视的通用说明见 在线监视强制写入

相关文档