这是个胡思乱想,但是萦绕不去,索性写下来。文中逻辑混乱之处表示思想不深入。

首先,本文中的软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

合理性

现阶段让我纠结的其实是这两个问题:将Node-red与软PLC编程融合的话,是否合理/有何好处;可以用何种技术路线

首先考虑合理性问题,就是是否值得做。

有一个眼前的好处是方便“MES工单-PLC命令”转换。

简单来说,生产执行过程本来是要完成如下工作:
1)将L3级的工单指令分解成PLC命令序列
2)依序将PLC命令下发给各PLC,并更新工单的完成进度(也许还有工单内部物料的实时跟踪信息)
3)当PLC命令序列全部正常完成时,将工单设为完成
4)当PLC命令执行出错时,走异常分支,并将L3工单设为异常

以上工作(让我们简称它为PPC,Programmable PLC Control)显然是个服务。

如果Node-red与软PLC融合的话,大概就可以在Node-red里编辑PPC、实时查看状态;每个PLC程序是PPC里的一个节点,双击后可以编辑、实时查看状态。

用Node-red编辑PPC的话,可以有效地利用Node-red的各类消息驱动节点,方便与L3各应用打交道。(局限则是Node-red相对比较傻,类似AGV动态寻径这种高随机、高交互性的工单分解还是不方便。)

技术路线

技术路线有很多条:
1)彻底改造Node-red
将Node-red直接改造为软PLC编辑器和实时引擎,这需要剪裁个实时Linux、将流激发周期缩短到几十毫秒级、新开发一批符合规范的节点(主要可能是寄存器相关的)。
2)共享编辑器
将Node-red改造为软PLC编辑器,但是单独开发软PLC引擎,这需要剪裁个实时Linux、开发软PLC引擎、开发几个封装软PLC TASK的Node-red节点并在节点属性页里实现TASK编辑器。
3)完全分开
二者的编辑器和运行引擎彻底分开。只开发几个封装了软PLC TASK的NR节点,在NR节点属性页里直接链接到软PLC编辑器。软PLC TASK的实时数据由其自行负责。但其输入参数、启停控制、状态输出、参数输出要在NR中实现。

第三个路线看起来挺靠谱。。。走这条路线的话,Node-red与软PLC既可以合并部署,也可以分CPU部署。而且可以完全借鉴开源的OpenPLC项目,软PLC的编辑器和引擎有现成的。

几个想到相关的技术难点(也许对其他人不难)先记在这里:
1)实时Linux
2)OpenPLC
3)在Node-red做节点的深度封装,例如节点的“状态输出”怎么实现。
4)软PLC的硬件平台选型,特别是高速IO接口选型(PCIE总线不好走,也许要用USB接口板)

结语

不写出来不知道。看起来这是个相当麻烦的工程,几个人月内没法完成。可能要长期摸索了。

Node-red开发软PLC程序?相关推荐

  1. datagrip调试存储过程_PLC控制柜是什么?当PLC程序设置完后,如何调试能不烧毁PLC?...

    PLC控制柜是指成套的控制,可实现电机,开关的控制的电气柜. PLC控制柜有过载.短路.缺相保护等功能.其结构紧凑.工作稳定.功能齐全,可以根据实际控制规摸大小进行组合,既可以实现单柜自动控制,也可以 ...

  2. 工控前辈经验之谈 | 编写PLC程序我从做Excel表开始

    作为在工控自动化行业侵淫已久的工程技术人员,无论在程序编写,抑或现场处理都会总结出自己的一套,本文作者周舟,2001年开始接触PC控制和运动控制,先后就职于海天集团.施耐德电气.倍福自动化,宁波致迪自 ...

  3. 米家扩展程序初始化超时_28条规范和建议,教你如何设计出一套完美的PLC程序...

    一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释.精良的架构.良好的可扩展性.完备的报警保护系统.运行前的模拟系统. 1. 简单性 使PLC程序尽可能简单.简单的含义就是 ...

  4. smart700iev3 程序下载设置_西门子PLC基础:S7-200 SMART PLC程序下载

    今天主要给大伙讲解西门子S7-200 SMART PLC程序下载方法,从如何打开项目程序.下载项目程序IP地址.下载项目程序这几个方面来入手. 步骤一:打开项目程序 1.找到项目文件,打开项目程序,如 ...

  5. 【职场】遇到了个失业开滴滴的程序员

    去年差不多这个时候,有天晚上下班打车回家,结交了一位失业开滴滴的程序员,后来聊的比较多,慢慢成为了朋友. 一年后的现在,他的生活逐渐恢复了正常,重新找到了工作,房贷慢慢也不那么紧张了,一切都在变好起来 ...

  6. 三菱四节传送带控制梯形图_一文讲透FX5U PLC程序控制指令及步进梯形图编程

    三菱PLC在80年代进入中国市场,已有30多年历史.由于三菱PLC编程易学,功能强大,深受中国用户喜爱.随着时间推移,市场上已经淘汰掉二代产品,关系图如下: 说明 90年代老型号 2000年代老型号 ...

  7. codesys 串口通讯实例_常见的PLC程序实例,车库自动门的PLC控制!

    点击箭头处"工业之家",选择"关注公众号"! PLC控制车库自动门实例 车库自动门控制 (1)明确系统控制要求 系统要求车库门在车辆进出时能自动打开关闭,车库门 ...

  8. 三菱plcfx5u指令手册_从西门子200的PLC程序来看三菱FX5U的PLC程序

    小型PLC系统中西门子200系列和三菱的FX系列是应用的比较多的,作为工控行业的工程师是很有必要明白他们之间的一些不同点的,特别是从程序上来说,因此来写一篇文章,简单的聊聊他们在编程上的一下不同! 西 ...

  9. 为什么c语言运行了是cmd,为什么C语言的程式码执行都在命令提示符进行?而且学习的基本都是数学问题,跟开发软体有什么关系?...

    为什么C语言的程式码执行都在命令提示符进行?而且学习的基本都是数学问题,跟开发软体有什么关系?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们 ...

最新文章

  1. 【青春须早为,岂能长少年】一个初入职场程序员的阶段总结
  2. 如何通过svg代码还原图片_【UWA学堂】如何通过技术美术师来弥合代码与艺术之间的鸿沟?...
  3. Android开发之自定义dialog的实现(源代码分享)
  4. mysql死锁场景汇总整理
  5. 2020年苹果App Store销售额达6430亿美元 同比增长24%
  6. linux rz上传文件及出错解决方案
  7. 3. Ubuntu LAMP 环境搭建
  8. DELMIA软件物流仿真:带曲线转角输送带输送物料的仿真操作方法
  9. 学习plc编程需要什么基础
  10. 水晶报表基本使用方法
  11. 人脸测温门禁 传感器_测温人脸门禁什么牌子好
  12. 使用谷歌浏览器模拟发送http请求
  13. 去除重复字母Python解法
  14. algorithm——并查集
  15. 数据可视化Matplotlib-中
  16. Moleskine笔记本使用之感受【个人管理篇】
  17. linux 起网口up_linux 网口设置
  18. Hello Lyq And Xj
  19. 华硕笔记本更换操作系统的一波三折的遭遇
  20. 网易云易盾验证码海外版发布,支持12种主流语言

热门文章

  1. 基于LabVIEW的示波器程序
  2. python——爬虫之使用cookie签到
  3. JS 判断日期是不是今天、昨天、明天
  4. 围观阿里ChatGTP---通义千问大模型测试
  5. 中文巨量模型“源1.0”的模型结构与生成效果解析
  6. html 自动更新报告,自动更新的数据报表,让你告别重复的日报、周报、月报
  7. Spring MVC框架概述
  8. 空白支票V.S. 空头支票
  9. 如何同时使用阿里云代金券和优惠券
  10. Python快速获取桌面路径