哪种 PLC 语言最适合数据处理?

摘要

  • IEC 61131-3 语言(如梯形图(LD)、结构化文本(ST)和功能块图(FBD))可用于 PLC 中的数据处理。

  • 数组索引是数据处理的关键支撑。

  • 对于一家工厂的 PLC 而言,编程风格和一致性与编程语言的选择同样重要。

PLC 中使用的数据类型有哪些?

数据分为几个不同的类别:

  • 用于驱动 PLC 程序的本地(功能级)和全局(程序级)存储位置。这包括与人机界面(HMI)的接口,以及远程控制的输入 / 输出、电机驱动器,甚至机器人接口。
  • 错误处理以及为技术人员诊断存储事件的能力。
  • 存储在本地闪存卡上的数据点。
  • 外部 PLC 接口,包括接收和传输远程数据的能力。这可以采取多种不同形式,包括 SCADA、历史数据库、边缘设备或数据库级别的接口。

一个用儿童游戏举例的 PLC 数据处理案例

一个用儿童游戏来探讨这个话题。儿童游戏,大概是这样的:

假设有个叫小明的角色,他会发出一连串随机的指令,比如 “拍手”“跳一下”“摸耳朵”,还可能搭配灯光或声音(比如红灯亮 +“嘀” 一声代表 “拍手”)。玩游戏的人要记住这些指令的顺序,然后一步步跟着做 —— 比如小明先让 “拍手”,再让 “跳一下”,玩家就得先拍手、再跳一下,错了就出局。

任何能够玩这个游戏的 PLC 都具备数据处理能力。

关键区别在于 PLC 是否具有间接(索引)内存访问功能。我们知道 “小明” 会生成随机数,而一个能玩 这个游戏的 PLC 必须能够将随机序列存储在存储位置中。然后,它必须遍历内存数组来进行游戏:首先是一步,然后是两步,依此类推,直到完成经典的 32 步游戏。如果 PLC 能做到这一点,那么实现更大的数组(包括字符串)和其他用于在 HMI 上显示的错误处理结构就只是一小步了。最后,在必要时,借助一些有用的硬件,通过以太网或 RS232 发送 SQL 命令也没有任何障碍:

INSERT INTO widgets (widget_name, quantity)
VALUES ('Gadget', 42);

课堂上的 游戏 PLC 程序

PLC 并非为了玩游戏而设计的!

然而,我发现游戏 程序是 PLC 编程的一个很好的学术练习。它迫使我们使用数组来存储游戏模式。它还迫使我们使用基本的程序模块化,例如使用用户定义功能块(UDFB):一个 UDFB 用于生成新的步骤,另一个用于执行步骤(声音和灯光),还有一个用于监控人类玩家的按钮按下情况。

这个游戏能让程序员为更传统的任务做好准备,例如基于条形码阅读器的物料处理。

梯形图(LD)、结构化文本(ST)和功能块图(FBD)都可以用于处理数据

所有的过程性语言都可以使用,包括梯形图(LD)、结构化文本(ST)和功能块图(FBD),因为它们都能拼接这些 SQL 命令。不过,我猜想对于受过正规训练的高级程序员来说,结构化文本(ST)可能是最容易且最熟悉的。同时,使用其他语言可能也有充分的理由。

编程风格和一致性与语言本身同样重要

PLC 编程既有工厂内部默认的惯例,也有官方(有文档记录的)风格指南。就像工厂会尝试在所有产品线中使用相同的 PLC 一样,他们也会尝试在所有机器中保持相同的编程风格和语言。在我看来,这对于提高 PLC 相关工作人员(无论是程序员、安装人员还是技术人员)的工作效率至关重要。

更多相关内容:

1 个赞

-那必须选C++:PCL亲儿子
毕竟PCL源码就是C++写的,各种核心算法(滤波、配准、分割)直接调接口,速度快到飞起,适合实时处理(比如机器人导航的点云避障)。缺点是写起来稍啰嗦,得自己管理内存,但性能党必选。