【问题标题】:Is function block diagram functional programming?功能块图是函数式编程吗?
【发布时间】:2015-08-21 21:28:54
【问题描述】:

用于plc系统编程的功能块图是一种函数式编程吗?

【问题讨论】:

  • 获取一个带有低通滤波器的 PID 功能块。两个块都有状态。您不希望相同输入的过滤器输出相同;它需要基于过去的输入。如果您的 PID 的温度偏离了几度,您希望控制值改变以使其回到设定点。这意味着相同输入的输出不一致。

标签: functional-programming plc


【解决方案1】:

解决此问题的一种方法是查看 Wikipedia 页面以了解函数式编程。

2 个概念

2.1 First-class and higher-order functions
2.2 Pure functions
2.3 Recursion
2.4 Strict versus non-strict evaluation
2.5 Type systems

总结起来,对于 FBD 编程,我们有:

  • 2.1 - 不
  • 2.2 - 不可以(访问 DB、Q 和 M 区域中的全局内存)
  • 2.3 - 不允许
  • 2.4 - 有点不适用,但懒惰的评估是不可能的
  • 2.5 - 不。类型系统不是用户可定义的,至少不是 FP 意义上的

所以,恐怕这是一个很大的不

【讨论】:

    【解决方案2】:

    不,不是。函数式编程的不同之处在于它将计算视为对数学函数的评估(see Wikipedia)。 PLC 编程中的功能块只是一种方便的方式来分组和重用代码,即使“非程序员”也可以使用它。

    【讨论】: