Node-red开发软PLC程序?
这是个胡思乱想,但是萦绕不去,索性写下来。文中逻辑混乱之处表示思想不深入。
首先,本文中的软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程序?相关推荐
- datagrip调试存储过程_PLC控制柜是什么?当PLC程序设置完后,如何调试能不烧毁PLC?...
PLC控制柜是指成套的控制,可实现电机,开关的控制的电气柜. PLC控制柜有过载.短路.缺相保护等功能.其结构紧凑.工作稳定.功能齐全,可以根据实际控制规摸大小进行组合,既可以实现单柜自动控制,也可以 ...
- 工控前辈经验之谈 | 编写PLC程序我从做Excel表开始
作为在工控自动化行业侵淫已久的工程技术人员,无论在程序编写,抑或现场处理都会总结出自己的一套,本文作者周舟,2001年开始接触PC控制和运动控制,先后就职于海天集团.施耐德电气.倍福自动化,宁波致迪自 ...
- 米家扩展程序初始化超时_28条规范和建议,教你如何设计出一套完美的PLC程序...
一套完整的PLC程序,并不仅仅是使系统能够运行起来这么简单,它也需要完整的注释.精良的架构.良好的可扩展性.完备的报警保护系统.运行前的模拟系统. 1. 简单性 使PLC程序尽可能简单.简单的含义就是 ...
- smart700iev3 程序下载设置_西门子PLC基础:S7-200 SMART PLC程序下载
今天主要给大伙讲解西门子S7-200 SMART PLC程序下载方法,从如何打开项目程序.下载项目程序IP地址.下载项目程序这几个方面来入手. 步骤一:打开项目程序 1.找到项目文件,打开项目程序,如 ...
- 【职场】遇到了个失业开滴滴的程序员
去年差不多这个时候,有天晚上下班打车回家,结交了一位失业开滴滴的程序员,后来聊的比较多,慢慢成为了朋友. 一年后的现在,他的生活逐渐恢复了正常,重新找到了工作,房贷慢慢也不那么紧张了,一切都在变好起来 ...
- 三菱四节传送带控制梯形图_一文讲透FX5U PLC程序控制指令及步进梯形图编程
三菱PLC在80年代进入中国市场,已有30多年历史.由于三菱PLC编程易学,功能强大,深受中国用户喜爱.随着时间推移,市场上已经淘汰掉二代产品,关系图如下: 说明 90年代老型号 2000年代老型号 ...
- codesys 串口通讯实例_常见的PLC程序实例,车库自动门的PLC控制!
点击箭头处"工业之家",选择"关注公众号"! PLC控制车库自动门实例 车库自动门控制 (1)明确系统控制要求 系统要求车库门在车辆进出时能自动打开关闭,车库门 ...
- 三菱plcfx5u指令手册_从西门子200的PLC程序来看三菱FX5U的PLC程序
小型PLC系统中西门子200系列和三菱的FX系列是应用的比较多的,作为工控行业的工程师是很有必要明白他们之间的一些不同点的,特别是从程序上来说,因此来写一篇文章,简单的聊聊他们在编程上的一下不同! 西 ...
- 为什么c语言运行了是cmd,为什么C语言的程式码执行都在命令提示符进行?而且学习的基本都是数学问题,跟开发软体有什么关系?...
为什么C语言的程式码执行都在命令提示符进行?而且学习的基本都是数学问题,跟开发软体有什么关系?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们 ...
最新文章
- 【青春须早为,岂能长少年】一个初入职场程序员的阶段总结
- 如何通过svg代码还原图片_【UWA学堂】如何通过技术美术师来弥合代码与艺术之间的鸿沟?...
- Android开发之自定义dialog的实现(源代码分享)
- mysql死锁场景汇总整理
- 2020年苹果App Store销售额达6430亿美元 同比增长24%
- linux rz上传文件及出错解决方案
- 3. Ubuntu LAMP 环境搭建
- DELMIA软件物流仿真:带曲线转角输送带输送物料的仿真操作方法
- 学习plc编程需要什么基础
- 水晶报表基本使用方法
- 人脸测温门禁 传感器_测温人脸门禁什么牌子好
- 使用谷歌浏览器模拟发送http请求
- 去除重复字母Python解法
- algorithm——并查集
- 数据可视化Matplotlib-中
- Moleskine笔记本使用之感受【个人管理篇】
- linux 起网口up_linux 网口设置
- Hello Lyq And Xj
- 华硕笔记本更换操作系统的一波三折的遭遇
- 网易云易盾验证码海外版发布,支持12种主流语言