探讨基于IEC61499 的分布式 ISA Batch 控制系统

ISA SP88 是批次过程控制的标准,对应的IEC标准是IEC 61512。该标准中一个重要的部分是配方管理(Recipe Management)。
所谓配方,是根据批量产品的要求,材料设定加工工艺,加工流程和参数。类似于传统制造业的工艺文件。在S88 中,模型是分层的。

同样的,配方是也是·分层的。

配方的分层架构
配方在化学工程师眼中是一些化学过程和术语,对于控制系统而言,控制工程师关心的可能是阀门,泵,加热器,液位计等传感器和执行部件。

从过程的观点看,过程模型包含了过程抽象的化学知识,从通用配方到控制配方,模型逐步地替换(适配到批次工厂的设备。最后产生控制配方(Control recipe)描述了达到过程目标的具体操作(action)。控制视野control view(或者设备视野equipment view)是以物理控制模型描述的。它涉及传感器,执行器以及它们的抽象模型-设备控制配方和控制配方。控制配方是过程观点和控制观点的交汇点。
S88中的所有模型都是分层的,phase(我不知道准确的翻译是什么,我翻译成阶段)是控制配方中最基本的元素。不能再分解。一个阶段描述了工厂的一个基本功能,比如dosing(加料),stirring(搅拌),heating(加热)。依次完成一组阶段,称为操作(Operation)。比如操作注入反应釜(filling of reactor) 是:
- 加料,混合A 阶段
- 第一步完成后加料,混合 B 阶段。
- 在第1,2 阶段的同时搅拌和冷却。
操作在单元(unit)过程中聚集在一起赋予工厂的unit。Unit 的过程有一组操作组成。它们构成了更加高级的功能,比如通过下列操作生产产品C:
- filling of reactor
- reaction
- emptying reactor.
在S88 中,配方使用一种过程功能块PFC 来描述。上面我们描述的配方,可以用下面的PFC描述:

PFC 转换称为控制系统程序
物理设备模型通常使用P&ID 图来描述:

从上图看,有许多的阀门,两个泵,三个tank和一个浸煮器。要将配方转换成控制配方:

在左边的控制配方中包含了下列Phase

也有人提出,将PFC 转换成Petri Net 表示法。Petri Net(PN) 是对离散并行系统的数学表示。Petri网是1962年由卡尔·A·佩特里发明的,适合于描述异步的、并发的计算机系统模型。

PFC 到SIPN 的映射:

上面所有的描述都只是理论上的,实际上要看配方的细分程度(我们可以称为配方的颗粒度),可以粗一点,将温度读取,阀门控制有现场PLC 完成,不能通过配方修改PLC执行流程。也可以细一点,可以通过控制配方来灵活修改。这儿需要Batch 系统与现场控制系统协商决定。
PFC 描述的过程需要转化为物理设备的控制程序和参数。 简单的方法是根据PFC编写相应的程序。如果要采用低代码方式自动生成代码,就需要将PFC 转化为控制系统模型。基本的思路是:
- 设立过程控制服务器(control server),其中的程序根据PFC 解释执行过程控制程序。现场传感器数据通过现场控制设备读取
- 直接将PFC 转换成为现场控制设备的控制逻辑
对于第一种方法而言,控制程序编写是比较复杂的,它们依然需要寻找一种通用的,低代码开发方式。
而第二种方式而言,现场设备的程序往往是控制工程师,甚至是第三方设备供应商,或者系统集成商预先做好的。Batch 系统不允许修改地层控制逻辑。于此同时,底层控制器可能使用的是不同的厂商的PLC 产品。或者使用了多台PLC 。控制逻辑是相当复杂的。Batch 软件难以做到兼容。
另一方面,物理设备的PLC 不是分布式系统,它们不提供制造单元之间的标准化通信方式。
IEC61499 作为中间层
一种解决方法是在batch系统和工业现场提供一个中间层,使用基于IEC61499 功能块技术是一种好的选择。系统架构如下图所示:

从上图可见,61499 控制器并非与现场PLC 一一对应,可能是一个生产模块设立一个61499 边缘控制器,内部运行IEC61499 运行时,Opcua server 以及配方管理所需要的信息。61499 边缘控制器通过modbus 或者其它现场协议与控制现场PLC 通信。配方转化为IEC 61499 功能块网络,它们可能是直接调用PLC 中的功能块执行,也可能只是改变PLC 程序中的参数,不影响工业控制现场操作。
IEC61499 是一种基于事件的功能块技术,而不是61131-3 基于执行周期的执行方式。IEC61499 的功能块网络与PFC 图更加接近。可以将Phase 开发成为IEC61499 的功能块(phaseFB)。

例如:下面是一个Open_T200_T300 的PhaseFB的定义。

IEC61499 功能块库中还包含一些SIFB 功能块,支持访问现场PLC ,传感器中的数据。网络上有一些文献描述如何将PFC 转换成IEC61499 功能块网络的方法,不外乎两种:
直接转换成为IEC61499 功能块。

(a) 是接口,(b)是功能块的内部。
使用一种调度,选择,同步的方式。

想必操作的过程是将PFC转换成Schedule图中的状态图,通过Select 产生事件调用功能块执行,功能,有功能块是顺序执行的,有的功能块是并行执行的。当功能块完成后通过Synchronizer功能块同步后,推进到下一步执行。 对应的IEC61499 功能块大致如此:

我没有没有完全搞清楚如何自动产生Schedule和Synchronization 功能块状态机。
采用IEC61499 中间层可以弥补现场PLC 的不足,在不增加PLC 开销的前提之下,开发更多IT 系统所需要的应用。在许多场合,低端PLC 不支持新的协议和功能,比如复杂的OPCUA 信息模型。PLC 工程师不熟悉IT所需要的功能编程(例如MQTT,数据库读写等等)。能够通过61499 控制器实现各种灵活应用。这将是IEC61499 重要的应用场合。
PFC 的文本描述
实现PFC 到IEC61499 功能块网络的转变,需要采纳文本描述的PFC 。标准化的文本描述是BatchML 标准。基于Batch,可以开发一个BatchML->IEC61499 FBNetwork XML的转换工具。
当然也有人提出其他一些文本格式,比如UML语言模型。
开发流程

Convert 是关键的程序之一。
未来
过程控制领域开放自动化有一种发展的趋势就是MTP(Module Type Package) 模块。将过程控制领域的生产单元模块化,并且使用MTP 构建通用的模型。现场设备直接支持MTP模型,流程配方能够直接将PFC 转化为MTP。在这种场合,仍然需要IEC61499 作为中间层,应为需要MTP 之间的标准化通信。

MTP将会构建一个生态,如下图所示:

设备供应商或者第三方编写MTP 模块。工厂工程师使用MTP。
结束语
在我的博文评论区中发现,关心IEC61499 技术的人大多数IT工程师,而不是OT工程师。想必是IT工程师渴望使用新技术更加迫切。 他们软件希望能够跨越IT/OT的鸿沟。IEC61499 是IT/OT的粘合剂。这也许是它当前最好的切入点。
本人对过程控制行业完全是门外汉,只是有读者对IEC61499 在Batch 系统配方编排领域的应用感兴趣,才写了本博文,参考了国外一些论文的内容。
希望得到读者的指正,共同深化IEC61499 边缘层应用这个有趣的话题。
相关文章:
探讨基于IEC61499 的分布式 ISA Batch 控制系统
ISA SP88 是批次过程控制的标准,对应的IEC标准是IEC 61512。该标准中一个重要的部分是配方管理(Recipe Management)。 所谓配方,是根据批量产品的要求,材料设定加工工艺,加工流程和参数。类似于传统制造业的…...
图论16(Leetcode863.二叉树中所有距离为K的结点)
答案: /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode(int x) { val x; }* }*/ class Solution {public List<Integer> distanceK(TreeNode root, TreeNode tar…...
【小沐学C++】C++ MFC中嵌入64位ActiveX控件(VS2017)
文章目录 1、简介1.1 MFC1.2 ActiveX 2、VS2017添加ActiveX控件结语 1、简介 1.1 MFC Microsoft 基础类 (MFC) 库针对大部分 Win32 和 COM API 提供面向对象的包装器。 虽然此包装器可用于创建极为简单的桌面应用程序,但当你需要开发具有多个控件的更复杂的用户界…...
Linux常用命令—find命令大全
文章目录 一、find命令常用功能1、find命令的基本信息如下。2、按照文件名搜索3、按照文件大小搜索4、按照修改时间搜索5、按照权限搜索举例:6、按照所有者和所属组搜索7、按照文件类型搜索8、逻辑运算符 一、find命令常用功能 1、find命令的基本信息如下。 命令名…...
form组件的封装(element ui ) 简单版本
当你使用Vue.js构建Web应用时,封装可复用组件是提高开发效率和代码可维护性的关键之一。在这篇文章中,我们将探讨如何使用Vue.js来创建一个通用的表单组件,以及如何将它封装成一个可配置的组件。 实现思路 拿下表单模板一个个的改造&#x…...
树形DP杂题
引 对老师布置的题目稍微记录一下吧 也算对树形 D P DP DP 的巩固 T1 Ostap and Tree 题目传送门 由于有 距离 k 距离k 距离k 的限制,设计二维 d p dp dp 设计状态: f i , j : i 的子树内,离 i 最近的染色点与 i 距离为 j 且若 j <…...
Webpack使用plugin插件自动在打包目录生成html文件
我们使用html-webpack-plugin插件可以自动在打包代码目录生成html文件 使用步骤: 一、安装依赖 在控制台中输入如下代码: npm i -D html-webpack-plugin 二、在webpack.config.js中配置插件 const HTMLPlugin require("html-webpack-plugin&q…...
图像处理与计算机视觉--第一章-计算机视觉简介-10问
第一章-计算机视觉简介-10问 1.CV与AI的关系是什么? CV(Computer Vision)是Al的子领域,它致力于使计算机能够理解和解释图像和数据,CV借助AI技术,比如深度学习/机器学习,实现目标识别,分析和处理任务。AI提供了CV所需要的算法…...
LeetCode 80. 删除有序数组中的重复项 II
文章目录 一、题目二、Java 题解 一、题目 给你一个有序数组 nums,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用…...
【前端面试题】浏览器面试题
文章目录 前言一、浏览器面试问题1.cookie sessionStorage localStorage 区别2.如何写一个会过期的localStorage,说说想法2.如何定时删除localstorage数据2.localStorage 能跨域吗2.memory cache 如何开启2.localstorage的限制2.浏览器输入URL发生了什么2.浏览器如何…...
PHP 生成 PDF文件
参考官网 Example 009 : Image() TCPDF laravel 可以使用 composer 安装 tecnickcom/tcpdf 进行使用 //require_once("../app/Extend/tcpdf/tcpdf.php"); $pdf new TCPDF();// 设置文档信息$pdf->SetCreator(懒人开发网);$pdf->SetAuthor(懒人开发网);$…...
讲讲项目里的仪表盘编辑器(一)
需求 要做一个仪表盘系统,要求有: ① 设计功能(包括布局、大小、排列) ② 预览功能 ③ 运行功能 布局选择 做编辑器,肯定要先选择布局。 前端有几种常用布局。 静态布局 也叫文档布局。默认的网页形式…...
解决方案 | 如何构建市政综合管廊安全运行监测系统?
如何构建市政综合管廊安全运行监测系统?WITBEE万宾城市生命线智能监测仪器,5年免维护设计,集成10多项结构与气体健康监测指标,毫秒级快速响应,时刻感知综合管廊运行态势...
JCEF中js与java交互、js与java相互调用
jcef中js与java相互调用,java与js相互调用,chrome与java相互调用,java与chrome相互调用、jcef与java相互调用 前提:https://blog.csdn.net/weixin_44480167/article/details/133170970(java内嵌浏览器CEF-JAVA、jcef、…...
9.20 校招 实习 内推 面经
绿泡*泡: neituijunsir 交流裙 ,内推/实习/校招汇总表格 1、校招丨智行者2024年校园招聘正式启动啦 校招丨智行者2024年校园招聘正式启动啦 2、校招 | 乐动机器人2024校园招聘 校招 | 乐动机器人2024校园招聘 3、校招丨小天才2024届秋季校园招聘 …...
基于JAVA+SpringBoot+Vue+协同过滤算法+爬虫的前后端分离的租房系统
✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着城市化进程的加快…...
【Android Framework系列】第16章 存储访问框架 (SAF)
1 概述 Android 4.4(API 级别 19)引入了存储访问框架 (Storage Access Framework)。SAF让用户能够在其所有首选文档存储提供程序中方便地浏览并打开文档、图像以及其他文件。 用户可以通过易用的标准 UI,以统一方式在所有应用和提供程序中浏…...
Antdesign 4中让分页组件居中显示的方法
在Ant Design 4中分页组件默认是最右边显示的,而这个没有设置位置的属性的 解决办法: 在pagination的属性中增加: style: {textAlign: "center"} 在Ant Design 5中可以让pagination使用align: center来实现分页组件居中...
【笔记】ubuntu 20.04 + mongodb 4.4.14定时增量备份脚本
环境 ubuntu 20.04mongodb 4.4.14还没实际使用(20230922)后续到10月底如果有问题会修改 原理 只会在有新增数据时生成新的备份日期目录备份恢复时,如果恢复的数据库未删除,则会覆盖数据 准备 准备一个文件夹,用于…...
c++实现的一个定时器实例
/* * author: hjjdebug * date : 2023年 09月 23日 星期六 11:52:29 CST * description: 用std::thread 实现了一个定时器,深刻理解一下定时器是怎样工作的. * 参考Timer.h, Timer.cpp */ $ cat main.cpp #include "Timer.h" #include <unis…...
安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
React---day11
14.4 react-redux第三方库 提供connect、thunk之类的函数 以获取一个banner数据为例子 store: 我们在使用异步的时候理应是要使用中间件的,但是configureStore 已经自动集成了 redux-thunk,注意action里面要返回函数 import { configureS…...
API网关Kong的鉴权与限流:高并发场景下的核心实践
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 引言 在微服务架构中,API网关承担着流量调度、安全防护和协议转换的核心职责。作为云原生时代的代表性网关,Kong凭借其插件化架构…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
ArcGIS Pro+ArcGIS给你的地图加上北回归线!
今天来看ArcGIS Pro和ArcGIS中如何给制作的中国地图或者其他大范围地图加上北回归线。 我们将在ArcGIS Pro和ArcGIS中一同介绍。 1 ArcGIS Pro中设置北回归线 1、在ArcGIS Pro中初步设置好经纬格网等,设置经线、纬线都以10间隔显示。 2、需要插入背会归线…...
PydanticAI快速入门示例
参考链接:https://ai.pydantic.dev/#why-use-pydanticai 示例代码 from pydantic_ai import Agent from pydantic_ai.models.openai import OpenAIModel from pydantic_ai.providers.openai import OpenAIProvider# 配置使用阿里云通义千问模型 model OpenAIMode…...
