IEC 61499标准通常用于开发分布式控制系统。IEC 61499定义了功能模块(FB, function block)的模型。有三种FB,分别是Basic FB (BFB),Service Interface FB (SIFB) (有的文献也称作Service FB (SFB))和Composite FB (CFB)。其中,BFB和SIFB都是原子FB,不能拆分的。SIFB是用于与硬件连接,读取硬件信息和给硬件写入信息的FB。CFB由BFB和SIFB组成,但是从外观来看,CFB和其他FB是一样的。FB的模型如图1所示:

 图1 FB模型图

FB有两种类型的接口,分别是event和data。因此可以说FB是基于事件驱动的模块。FB的上半部分为ECC(execution control chart),下半部分为算法集合和内部数据(内部算法不限制实现语言,可以使用IEC61131-3编程语言,也可以使用Java, C++,C#等高级语言)。某个事件所需的数据已经在输入接口准备好且该事件接口被触发,则FB会根据其内部的ECC执行相关的算法。ECC其实就是一个状态机。举个例子,如图2所示的FB。

 图2 FB实例

四个输入事件,分别是INIT, RUN, STOP, UPDATE,两个输出事件分别是INITO, CNF。内部ECC如图3所示。

注:INITO表示FB已经完成初始化,CNF表示当FB完成向外部代理的请求传输时,输出“确认(confirmation)”事件。

 图3 ECC

其中,RUN, STOP, UPDATE共享一个输出事件CNF,这会更新输出的数据(MotorRun和ConveryorStatus)。

一个应用程序由多个FB组成,FB运行在资源上,资源属于设备(我感觉可以理解为计算机和进程的关系),一个系统包括多个设备,如图4所示。设备可以拥有多个资源,每个资源上可以运行多个FB,但是单个FB(包括CFB)只能运行在一个资源上。应用程序可以运行在单个资源上或者单个设备的多个资源上或者多个设备的多个资源上,如Application1。组成Application的subapplication可以运行在不同的资源上且可以重用。

 图4 IEC 61499系统

CFB和Subapplication的区别就在于,CFB不可以分布在多个资源上,而Subapplication可以分布在多个资源上。其次,CFB可以存储输入和输出变量而Subapplication并没有属于自己的内存,只有其内部的FB才有内存可以存储变量(所以就是可以把CFB理解为FB,只不过其内部算法是几个BFB连接而成的)。举个例子,现在有一个温度控制子应用,由三个FB组成,分别是Input, PID, Output。Input负责从传感器上读取当前的温度,PID负责与给定温度值比较并输出修正的温度,Output负责控制执行器修正温度。其子系统如图5所示。

 图5 温度控制子应用模型图

图5所示的子应用是分布在一个单独资源上的。子应用可以分布在不同的资源上,比如该温度控制子应用的每个FB都可以分布在单独的资源上,或者任意两个FB可以分布在同一个资源上,另外一个FB分布在另外一个独立的资源上。在这种分布式的情况下,分布在不同资源上的FB之间的通信可以使用publish和subscribe两个SIFB,如图6所示。

图6 分布式的子应用

除了PUB-SUB模式外,Client/Server模式也可以用于SIFB之间的通信。两者的区别在于PUB-SUB是单向的而Client/Server是双向的。

更新部分:IEC61499与MVC架构

MVC架构指的是由模型(Model)、视图(View)和控制器(Controller)组成的架构。MVC经常与IEC61499配合使用。其中模型就是某个实体资源的模型,比如机床的模型。视图就是机床的视图,而控制器就是指机床的控制器,即数控系统。

基于IEC61499标准的组件的更多相关文章

  1. WebApi系列~基于RESTful标准的Web Api

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码 ...

  2. 基于RESTful标准的Web Api

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码 ...

  3. 基于第三方vuejs库组件做适配性个性开发

    相信大家在使用vuejs时候会用到很多的第三方库,能够找到适合自己的库并且加以使用可以大大加快进度,减少bug.但是很多时候会出现这样一个尴尬的境地: 基线的第三方组件并不能很好地满足我们自己地需求, ...

  4. WebApi系列~基于RESTful标准的Web Api 转载 https://www.cnblogs.com/lori/p/3555737.html

    微软的web api是在vs2012上的mvc4项目绑定发行的,它提出的web api是完全基于RESTful标准的,完全不同于之前的(同是SOAP协议的)wcf和webService,它是简单,代码 ...

  5. SQL Standard Based Hive Authorization(基于SQL标准的Hive授权)

    说明:该文档翻译/整理于Hive官方文档https://cwiki.apache.org/confluence/display/Hive/SQL+Standard+Based+Hive+Authori ...

  6. ABP从入门到精通(5):使用基于JWT标准的Token访问WebApi

    项目:asp.net zero 4.2.0 .net core(1.1) 版本 我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成的WebApi提供了方便的基于JWT标准的Token ...

  7. 基于vue项目的组件中导入mui框架初始化滑动等效果时需移除严格模式的问题

    基于vue项目的组件中导入mui框架初始化滑动等效果时,控制台报错:Uncaught TypeError: 'caller', 'callee', and 'arguments' properties ...

  8. ABP从入门到精通(4):使用基于JWT标准的Token访问WebApi

    项目:asp.net zero 4.2.0 .net core(1.1) 版本 我们做项目的时候可能会遇到需要提供api给app调用,ABP动态生成的WebApi提供了方便的基于JWT标准的Token ...

  9. treeql 基于rest 标准的接口开发协议

    treeql 可以让我们按照数据库的关系模型,生成一个tree 模型的json 数据,基于rest 标准, 从设计上,来说还是很不错的,但是从长远发展来说graphql 应该会更好,也有相关的比较 参 ...

随机推荐

  1. Mysql 死锁分析

    1. 结论 死锁检查机制 当事务A需要获取一个行锁时(例如更新一行数据),假如需要获取行1的锁 检查其他事务有没有已获取了行1的锁. 如果有,例如事务B已获取了行1的锁. 继续检查事务B在等待的锁,如 ...

  2. 集合框架-TreeSet-Comparator比较器练习(字符串长度排序)

    1 package cn.itcast.p5.treeset.test; 2 3 import java.util.Iterator; 4 import java.util.TreeSet; 5 6 ...

  3. Python如何把八进制转换成ASCII码

    做题途中拿到一串八进制字符串 0126 062 0126 0163 0142 0103 0102 0153 0142 062 065 0154 0111 0121 0157 0113 0111 010 ...

  4. 「YNOI2016」自己的发明

    「YNOI2016」自己的发明 不换根 基本的莫队吧... 子树直接转到dfs序上. 其余部分可以见 「SNOI2017」一个简单的询问. 换根 根root,查询x,分3种: root不在x子树内,按 ...

  5. 【微服务】- SpringCloud中Config、Bus和Stream

    文章目录 SpringCloud中Config 1.Config的简介 官网 分布式系统面临的问题 config是什么 如何使用 能做什么 与git的配合使用 2.Config服务端的配置和测试 准备 ...

  6. bom案例3-放大镜

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  7. Java泛型T与?

    感谢大佬:http://m.mamicode.com/info-detail-2657551.html 一.区别 单独的T 代表一个类型 ,而 Class<T>代表这个类型所对应的类, C ...

  8. PHP页面编码问题

    页面编码统一MySQL数据库编码.html页面编码.PHP或html文件本身编码要全部一致.1.MySQL数据库编码:建立数据库时指定编码(如gbk_chinese_ci),建立数据表.建立字段.插入 ...

  9. 自定义UITableview自带侧滑删除按钮样式 by 徐

    效果如下: 实现原理: 1.打开tableview自带的侧滑删除功能 核心代码: 1 -(void)tableView:(UITableView *)tableView commitEditingSt ...

  10. IE,FF等浏览器兼容性问题

    _1:改变选中时候的背景色处理: ::selection { color:#fff; background-color: #5CB85C ;} ::-moz-selection { color:#ff ...