4DIAC
文章平均质量分 86
姚家湾
做研究和帮助他人是我的热情所在
展开
-
·使用Xtext/Xtend 实现域专用语言DSL(1)
本博文通过一个简单的例子介绍如何使用Xtext 编写一个简单DSL 的语法。建立一个DSL语言假设我们要建立一个DSL 语言来描述一个会议的信息:最终的描述文本是这样的:datatype Stringdatatype Boolentity Session {title: StringisTutorial : Bool}entity Conference {name : Stringattendees : Person*speakers : Speaker*}entity.原创 2021-04-25 20:50:06 · 1109 阅读 · 0 评论 -
Eclipse 模型设计工具链
本文从程序员和计算机科学的角度来简单讨论模型,基于模型的设计。并且介绍了Eclipse Modeling Framework 模型设计工具。 ...原创 2021-04-18 06:53:21 · 1251 阅读 · 6 评论 -
4diacIDE IEC61499 开发环境编译
4diac是IEC61499 分布式控制系统的开源项目,主要分为开发环境IDE和运行时Forte两部分组成。IDE 是基于Eclipse IDE ,使用java 开发的程序,而Forte是使用C++ 开发的程序。 本文介绍如何编译4diac IDE原创 2021-04-15 15:20:11 · 4199 阅读 · 17 评论 -
初探PLC 的ST 语言转换成C++ 的方法
工业控制软件绕不开ST (StructureText ) 语言,它是IEC61131-3 标准中唯一的一个高级语言。根据IEC61499的定义,功能块的内部算法可以使用若干语言来描述,虽然可以是C,或者java 这样的通用高级语言,但是为了符合OT 工程的使用习惯,几个主要的IEC61499 开发工具也都以STL语言作为功能块内部算法的语言 。 本文讨论如何将类似PASCAL 的ST如何转换成为C++ 代码,并且介绍了Xtext和DSL的技术。原创 2021-04-10 16:05:55 · 5845 阅读 · 8 评论 -
IEC61131与IEC61499 的集成与融合
IEC61131-3 PLC 编程方式已经获得了广泛的应用,特别是梯形图更是深入到了OT 工程师的骨子里。哪怕是再复杂的控制逻辑,OT 工程师都能够编写出复杂的梯形图来。如果与他们讨论IEC611499 基于事件功能块编程时,他们仍然觉得与他们过往的经验和思维方式存在很大的差别。能否使用PLC 的设计方式来实现IEC61499 功能块应用呢?本文讨论IEC61131-3 与IEC61499 相互融合的问题。博文标题没敢写“关于..”,而采用”漫谈”。因为只是自己的一些思考,不一定完整和成熟。...原创 2021-04-04 07:03:31 · 4538 阅读 · 12 评论 -
IEC61499 与OPC UA
OPC UA 用于不同设备和软件组件之间的信息交互,而IEC61499 用于建立分布式控制系统的应用。前者更适合通信,而后者更适合建立应用,它们的关注点有所不同。如果将OPC UA 和IEC61499 两大标准的技术相结合,可以构建成为工业4.0 中的所谓信息物理生产系统(Cyber-Physical Production System)的模型。 本文结合工业4.0 中的I40 组件模型和CPPS 架构,讨论了IEC61499 PAC 中结合OPC UA 的 方式。原创 2021-03-13 07:20:05 · 3032 阅读 · 3 评论 -
施耐德开放自动化平台初体验(1)
最近,施耐德电气公布了开放自动化愿景,并推出引领行业发展的以软件为中心的全新工业自动化系统EcoStruxure开放自动化平台(EcoStruxure Automation Expert)。该平台最大的特点是结合了IEC61499 功能块应用。IEC61499是分布式工业控制的国际标准,使用该标准能够像PLC 类似的方式,快速,高效地构建分布式控制系统。因为施耐德是开放自动化的领先企业,大家都十分期待。感谢施耐德公司最近给了我一份EAE V20 的开发版软件。本文将初步的使用体验分享给大家:EAEV20原创 2020-12-10 19:15:44 · 6809 阅读 · 9 评论 -
IEC61499 开放型功能块库的开发
概述任何一个广受欢迎工具软件都具有丰富的功能。IEC61499 分布式控制系统的理念,架构都预示着它将成为下一代开放性系统的主流技术。但是在基于该标准的功能块库没有及其丰富之前,也只可能停留在学术研究的阶段。无法得到工业界广泛地采纳。纵观控制与测量领域流行的软件工具,比如NI 的Lab view,MathWorks 的mat lab,以及BECKHOFF的模块化电脑。它们都面向诸多应用领域开发了大量的功能块库。 到目前为止,大多数IEC61499 的研究都停留在研究阶段,而没有加入工程阶段,也.原创 2020-12-05 21:47:27 · 1233 阅读 · 2 评论 -
从PLC ,PAC ,到施耐德的自动化开放系统
PLC 已经有40多年的发展历史了,以取代基于继电器的系统。从概念上讲,它们是相似的,并使用了梯形逻辑,该逻辑模仿了工程师用来表示物理继电器和计时器以及它们之间的连接的接线图的外观。早期的PLC需要专用的专用终端进行编程,内存非常有限,并且缺少远程I / O。 到了1980年代,基于PC的软件被引入到PLC的编程中,随着时间的流逝,它变得越来越快,并且增加了更多的功能。从那时起,许多新技术已应用于PLC,几乎在连续的基础上大大扩展了它们的功能。PAC在自动化市场上相对较新,使用的...原创 2020-11-11 14:27:53 · 5087 阅读 · 8 评论 -
IEC61499编程实战(2)- SWITCH控制
熟悉C/C++ 编程的人都知道SWITCH 语句,该语句根据SWITCH 语句中的变量,选择不同的程序段执行,因此,又称为情况语句。这个语句在程序控制中是非常有用的。比如: switch TASK_NUM {case 1:{ //TASK1 break; }case 2:{ //TASK2 break; }case 3:{ //TASK3 break; }case4:{ ...原创 2020-11-09 12:18:02 · 754 阅读 · 0 评论 -
谈谈IEC61499功能块的执行性能
几乎没有人讨论IEC61499 功能块的执行性能,它的执行时间是多少?外部事件的响应时间是多少?E_CYCLE的最小周期设置为多少比较合适?的确,一个与设备无关的标准不可能讨论执行的性能,但是,作为一台控制设备,我们就需要关心一些功能块的执行效率了。到目前为止,功能块都是由软件来实现的,采用JAVA 或者C/C++ 实现。功能块本质上是一个软件组件。既然是软件,执行的效率就依赖于处理器,和外围电路性能。我们知道,IEC61499 功能块是基于事件执行的。事件就像硬件电路中的脉冲。事件由下面几种形式.原创 2020-11-08 21:34:00 · 1893 阅读 · 13 评论 -
IEC61499 编程实战(1)-按键控制LED 闪烁
按键开关LED 灯前几天有网友做了一个LED 的实验,按下按键,LED 闪烁,再按一次 LED 停止闪烁。他的程序是这样的。结果发现,长按,LED 会闪烁,而松开LED 就停止闪烁了。主要的问题出在 IX 只是读取PIN2 的状态,他连接的是普通按键,不带锁存功能。如果要实现按键功能,需要内部加锁存器。后来他改成了这样。E_D_FF 是一个D触发器,只能暂存数据,没有翻转的功能。所以这个D 触发器只是将按键的值延时了一个周期,没有锁存,下一次读到0的时候又将0锁存了。正确的方法应...原创 2020-11-06 18:28:26 · 2520 阅读 · 4 评论 -
IEC61499 -从技术到产品
IEC61499 分布式工业控制标准已经颁布了十几年了。但是它还只是一项具有学术研究意义技术标准,始终没有大规模地在工业界推广应用,市面上也鲜有产品出现。这是十分令人遗憾的,从技术到产品的道路过于漫长了。 本文探讨如何将IEC61499 标准从技术到产品化的方法,快速推进IEC61499 产品化。推动IEC61499 标准在特定领域的早期应用。有助于这个标准健康,可持续发展。构建最小化生态系统工业控制系统比较复杂,涉及传感器,PLC,SCADA,MES,HMI等诸...原创 2020-10-26 08:43:42 · 6019 阅读 · 8 评论 -
STM32MP157C -编译应用程序(IEC61499运行时)
今天完成了将我的应用程序编译到米尔开发板上运行遇到的问题1 原来应用程序是采用G++在Windows 的wsl 上编译的,而STM32MP157 的编译工具是GCC。其中有一些差别注意 #include 中的h文件名大小写问题 编译命令 添加 -lstdc++ 和-lm $CC -I./fblib -I./core -I./tinyxml2 forteV0.cpp ./fblib/*.cpp ./core/*.cpp ./tinyxml2/*.cpp -pthread -原创 2020-10-23 14:27:19 · 697 阅读 · 0 评论 -
IEC61499 功能块调用C++ 动态程序库的实现(3)
前面几篇博文已经大致描述了IEC61499 功能块调用动态程序库的好处。本篇博文介绍我的实现方法以及遇到的问题。实现的结果为了验证我的想法,实现了一个简单的功能块,称为FB_CALL_X2 .这个功能块有一个函数名称,两个参数,一个结果构成。name是被调用函数的名称,由两部分组成。格式为:程序库名称.函数名称,例如在本例子中为OpenLibaray .add和OpenLibaray.sub两个函数。在实验项目中,我编写了一个简单的动态程序库OpenLibaray.它内部有三个函数,分.原创 2020-10-01 22:24:58 · 722 阅读 · 0 评论 -
IEC61499 功能块调用C++ 动态程序库的实现(2)
使用IEC61499 开发应用的人都会有一个感触-“功能块到用时方显少”。所以用户开发功能块的必需的。理论上,IEC61499 标准提供了定义功能块类型的方式。比如在4DIAC 中,可以定义功能块类型。它包括可以定义基本功能块,服务接口功能块和复合功能块。而功能块内部算法可以使用ST 语言来编写,或者Lua 语言来。实际上,设计完成了功能块类型后,要将该功能块Export 成为运行时的C++ 代码,和运行时一起从新编译之后,运行时才真正支持定义的功能块(在4DIAC Forte 中称为外部模块(extern原创 2020-09-29 20:15:20 · 672 阅读 · 3 评论 -
漫谈工业App(2)
先前写了一篇漫谈工业App(1)的博文,阅读量相对比较大,看来关注工业App的人很多,也有读者希望本人多写一点这方面的文章。不过自己觉得惭愧。没有到可以系统地描述工业App的水平,事实上,我的许多博文都是基于自己研究的基础上的结果。自然不会写的那么快了。实践中的困惑 漫谈工业App(1)是我们2019年全年研究开发的报告。在2019年,我们从IT技术的方向,探索了基于容器(docker)的工业App以及工业边缘设备的开发。由于docker 的可快速部署,更新和多语言,多环境开发的诸多优点...原创 2020-08-27 20:01:20 · 1944 阅读 · 5 评论 -
IEC61499标准背后的逻辑
功能块IEC61499 标准中最重要的概念是功能块(function block)。从使用者的角度看,功能块是一个类似硬件原理图中集成电路的图形符号。通过连线,可以构建一个功能块网络。这就是基于IEC61499 功能块的控制系统应用软件。那么从开发者的角度看,功能块到底是什么呢?为什么要采用这样的方式来编写工业控制的应用软件呢? 采用一句话来透彻地描述功能块-“功能块是软件组件的图形化表示”。每一个功能块图形的背后是控制设备中的软件组件。软件组件和响应的物理部件一起完成相关的控制功能。软件组件(原创 2020-08-19 07:23:16 · 6540 阅读 · 6 评论 -
扩展IEC61499 的人机交互功能
扩展IEC61499 的人机交互功能IEC61499 是分布式工业测量和控制系统的功能块标准,它可以使用功能图来实现分布式控制应用程序,实现了软件的模块化,图形化编程。功能块编程提高了分布式系统设计,部署和监控的效率。不过令人遗憾的是IEC61499 标准并没有支持人机交互(webHMI)的功能块。工业控制系统的人机交互接口软件大致分为四种:-基于Windows 桌面系统。这是过去工业自动化SCADA系统中 常用的方式,例如过程控制和CNC 控制器,都是采用基于Windows 桌面系统。采用原创 2020-07-29 15:34:30 · 984 阅读 · 1 评论 -
关于IEC61499 标准中的适配器
学习IEC61499 标准时,对于适配器(adapter)的概念难以理解。这篇博文希望帮助你理解IEC61499 的adapter。Adapter 就好比一个功能块之间连接的“电缆”“(图-1)。我们知道,一根通信电缆中可能包含多个信号线。并且由两个接头,一个接头称为插头(plug),另一个接头称为插座(socket)。同时对与每个插头而言,某些信号是输出插针,某些信号是输入插针。如果在插头上某个信号是输出的话,到了插座端便为输入。他们是对称的。记住了关于电缆的概念,有助于你理解IEC61499 的ad原创 2020-07-24 15:15:06 · 957 阅读 · 0 评论 -
IEC61499功能块与Docker容器化相融合
现代信息技术与传统控制系统的相互融合云计算技术飞速的发展,容器,微服务,消息系统,边缘计算,物联网,各项技术层出不穷,热闹非凡。不过工业控制领域似乎依然停留在旧时代不可自拔。它们依然以PLC 为中心。对其它新技术视而不见。水火泼不进。就像人们所说,会议室里大老板不说话,小人物没法干。大型控制设备厂商看起来不紧不慢。它们绝不会让门外的野蛮人闯入它们的领地。创新者不能按照大佬的逻辑行事。只有走的更块,才有机会。作为小人物,我们一直在研究大问题-现代信息技术融入传统控制领域。进入2020年,我们开始借原创 2020-07-19 21:57:31 · 1655 阅读 · 1 评论 -
关于IEC61499 的数据交换信息抽象语法ASN.1
前言IEC61499 是一个分布式控制系统功能块标准。多个设备之间,和其它外部设备之间都有信息交换。这种信息交换通过通信功能块来实现。通信功能块包括: 单向通信功能块:Publish/Subscribe 双向通信功能块:Client/Server设备之间的消息是功能块的数据(IEC61499-FBDATA),它们由类型和值构成。通信功能块可能涉及多个数据的输入输出。所以它们要交换多个数据。多个数据的信息抽象标识采用了ASN.1 的编解码方式。ASN.1ASN.1抽象语法标记(...原创 2020-07-16 14:32:34 · 658 阅读 · 1 评论 -
4diac 分布式应用-部署到不同的设备中运行
IEC61499 是分布式工业测量控制系统 功能块标准。 4diac-IDE 开发环境和运行时支持 IEC61499 应用的开发。本文介绍他们是如何实现多设备分布式控制系统。实验系统 在ubuntu OS 上实现,同时运行4DIAC-IDE和两个Forte 运行时。Forte缺省的IP 端口是61499 ,不过在允许Forte 时可以带参数,选择不同的IP地址和端口。具体的方法是forte -c IP:Portforte -c localhost:61500应用程序下面编.原创 2020-07-15 20:31:42 · 1502 阅读 · 0 评论 -
IEC61499 应用程序-MQTT publish/subscribe
4diac-IDE 和forte 运行时支持MQTT .IEC61499 应用程序subscribe 功能块的ID为 fbdk[].mqtt[tcp://localhost:1883, forte,input]publish 功能块的ID为fbdk[].mqtt[tcp://localhost:1883, forte,output]值得注意的是这里使用了fbdk[] ,他在MQTT message.payload 中采用的是ASN.1 编码方式。这里 4个整形数。pay.原创 2020-07-15 15:20:41 · 907 阅读 · 0 评论 -
4diac运行时Fort源码分析(1)-功能块应用的执行环境
4diac 是IEC61499 的开源项目,它由开发环境4diac-ide,运行时forte ,功能块库(LIB) 和系统实例构成。这个项目已经持续开发了十几年,不过依然只是用于学术研究,如果要应用工业领域,需要进一步扩展和完善。而且主要是4diac 的运行时Forte的扩展和完善工作尤为重要。如果打算做完善和扩展等二次开发工作的话。阅读,分析Forte 的源代码是必不可少的艰巨任务。网络上对forte 软件架构的介绍性文章非常的少。我们打算开始来尝试分析和阅读forte 源代码,并陆陆续续地向读者介绍。原创 2020-07-08 21:43:50 · 3627 阅读 · 1 评论 -
谈谈IEC61499 的运行环境-系统,设备和资源
IEC61499 标准规范了基于功能块网络的图形化程序设计方法,刚开始接触这个标准的时候,搞不清这样的图形网络是如何运行的。另外,IEC61499中系统,设备,资源,应用,子应用等概念也搞得似懂非懂,稀里糊涂。在这里我们来谈谈功能块网络是如何在一个分布式控制系统中运行的。随便将IEC61499标准中的模型,概念解释的清楚一点。系统模型我们首先从IEC61499 定义的系统模型开始观察,一个IEC61499 分布式控制系统是由多个物理设备以及连接它们的网络构成的。形成一个设备的通信网络。通信链路可以是原创 2020-07-07 09:34:15 · 1433 阅读 · 0 评论 -
4diac forte 1.12.0 版本modbus 的修改
问题4diac 项目的更新真的是个问题。没有对所有的模块完成测试。在forte 1.12.0 版本上编译就出现了问题。1.modbustimedevent.cpp 的36 行m_oStartTime = CTimerHandler::sm_poFORTETimer->getForteTime();2 modbustimedevent 45 行SForteTime currentTime = CTimerHandler::sm_poFORTETimer->getForteTim原创 2020-07-01 08:10:31 · 1800 阅读 · 7 评论 -
IEC61499 编程(3)-4DIAC 控制台输出
使用OUT_ANY_CONSOLE 功能块,可以在运行forte 的TTY 控制台上输出消息。程序如下:在TTY 上可以看见:原创 2020-06-14 15:46:40 · 778 阅读 · 2 评论