这是个胡思乱想,但是萦绕不去,索性写下来。文中逻辑混乱之处表示思想不深入。
首先,本文中的软PLC指IEC-61131-3的编辑器和运行态,典型代表是德国CodeSys开发平台。
Node-red与软PLC相似之处
Node-red和软PLC其实很像的:
1)都是流式数据,数据流动方向在各自的编辑器里甚至都是从左到右
2)输入、输出节点都可以是硬件驱动
3)数据处理节点大都是简单的算术处理
4)Node-red有injector节点作为定时器,而IEC-61131-3中的程序有固定的运行周期
区别之处
二者的区别在于:
1)定时周期差了2个数量级,Node-red是秒级(虽然设成0.2秒好像也可以?),而软PLC程序一般是1-100毫秒级;
Node-red对硬件不挑,对操作系统更不挑;IEC-61131-3的程序在实时环境下才能发挥最大威力
2)Node-red的硬件驱动弱而通用,基本上只有串口和网口,且串口节点相当糟糕,连包头包尾都没法定义;IEC-61131-3就不用说了,硬件驱动强悍而专用
3)数据处理节点方面,Node-red连全局变量和静态变量都没有,想在不同的控制/通信周期里存点全局数据,必须借助几个context api(心好累);而IEC-61131-3的寄存器天然就是静态变量,基于差值做控制很方便,比如PID里的D