概述

任何一个广受欢迎工具软件都具有丰富的功能。IEC61499 分布式控制系统的理念,架构都预示着它将成为下一代开放性系统的主流技术。但是在基于该标准的功能块库没有及其丰富之前,也只可能停留在学术研究的阶段。无法得到工业界广泛地采纳。

纵观控制与测量领域流行的软件工具,比如NI 的Labview,MathWorks 的mat lab,以及BECKHOFF的模块化电脑。它们都面向诸多应用领域开发了大量的功能块库。

  到目前为止,大多数IEC61499 的研究都停留在研究阶段,而没有进入入工程设计阶段,也就是说,对已经确定的东西深度开发,使其足够的丰富,达到工程应用的阶段。我们看到,无论是一个开源软件还是一个商业软件。如果要达到客户欢迎的“爆款”,其功能是及其丰富的。其中大量的功能并不困难,技术上的难度也并不太大。不过工作量却是巨大的。选择一个同行们还不看好的课题,投入更大的热情去深化开发。同样会形成核心竞争能力。有时候,创新就是博傻的过程。

要使IEC61499 流行的重要的一环就是功能块库的开发。开发一个丰富的IEC61499 功能块库,对IEC61499 标准的实用,推广至关重要。本文讨论开放型IEC 61499功能块库(IEC 61499 Open Library)开发的话题。

开放型IEC 61499功能块库

  我们的研究方法是将已有的类似功能块库作为参考,结合自我们开发嵌入式软件的经验基础上,设计IEC 61499 开放型功能块库:

  1. 基于图形化控制自动化系统中功能块库,比如NI 的lab views MathWorks 的 Simulink 功能块,自动控制系统国际大厂的软件系统中的功能库。
  2. 各大PLC 厂商产品中的功能块库
  3. FPGA 设计软件的功能块
  4. 嵌入式控制,物联网软件中使用的常见程序库

一些问题的思考

在设计IEC 61499 Open Library过程中,有一些问题需要很好地权衡

  1. 是否要包含顺序程序设计的功能块。比如LOOP,IF-THEN-ELSE,WHILE控制块?Lab view 中是有类似的图形块的。
  2. 对于IO模块而言,是对每个端子对应一个功能块,还是将一个完整的板卡对应一个功能块。
  3. 对于软硬件接口类的功能块,是以硬件IO类型来定义功能块,还是以硬件功能来定义功能块?

对于大多数小型执行部件和传感器而言,可以直接封装成一个61499 功能块。被功能块应用调用。并且完成底层的数据处理。这样可以避免底层功能块的使用。

  针对行业的开发型功能块库

IEC61499 标准成为一个流行的技术标准之前,首先应该是在某些特定领域领先先应用。开放型IEC 61499功能块库不针对具体的应用领域和行业。如果进一步深化下去,有必要针对具体的行业应用开发面向特定行业的功能块库。比如:

  • 建筑自动化
  • 灯光控制
  • 包装行业
  • 设备健康检测
  • 气动自动化设备

IEC 61499 设备的运行平台

   IEC61499 标准维分布式控制系统提供了基于事件功能块的基本模型。其中设备,资源都是模型的一部分。在具体实现中,基本的功能块适合所有的设备,而某些功能块是依赖于具体的设备。

为了描述的方便,我们将符合IEC61499 标准,能够运行功能块应用的设备称为IEC61499 类型的PAC(Programmable Automation Controller)。并且将它们 分为两个大类:

  •   IEC61499 Type PAC

     它们是嵌入式PAC 。尽管IEC61499 将设备分为3类,而我们在具体实现中将PAC分为两类:

class1  预先定义的功能块,用户可编程。

class 2 用户可编程,并且可以更改,添加新的功能块类型。

从硬件结构上,嵌入式PAC 有可以分为 独立式(Standalone)和多模块式(multimodules)两种。

  •   IEC61499 Type SoftPAC

它是在通用 Linux OS和Windows 下运行的软件 可编程自动化控制器。可以在docker 中运行。可以在独立的PC和服务器上运行,也可以在部署在云端,边缘路由器等设备上运行。

  功能块分类

 61499 Open Library 1.0版本分为下面几类 :

  • 基础功能块
  • 数值计算功能块
  • 数据处理功能块
  • 信息系统功能块
  • IO 功能块库
  • 信号处理功能块
  • 控制算法功能块
  • 执行机构/传感器功能块

基础功能块

实现IEC61499 标准中提及的功能块,它们包括:

  -数据类型转换(converter)

  -事件(events)

   -IEC61131-3

  -输入输出IO

-网络

这些功能块相对比较“低级”,通过这些基础功能块能够使用复合功能块类型来构建更加“高级”的功能块。不过,就像低级程序设计语言一样,使用基础功能块来构建应用程序时需要更多的工作量了经验。IEC 61499 Open Library 的目的就是扩展基础功能块库,实现嵌入式系统,IOT和工业控制领域中常用的功能块。是IEC61499 应用开发更加高效。和便于学习。

逻辑操作

逻辑操作功能块实现基本的数字逻辑操作,它们与硬件电路中的74系列数字逻辑电路类似。数字逻辑电路可以组合逻辑和时序逻辑。

组合逻辑

  逻辑操作 (AND,OR,XOR,INV)

译码器/编码器(DECODE/ENCODE)

 

  事件多路器(E_SWITCH)

2路事件多路器(E_SWTICH_2)

2路事件多路器(E_SWTICH_4)

8 路事件多路器(E_SWITCH_8)

  事件选择器(E_SELECT)

  • 2 路事件选择器(E_SELECT_2)
  • 4 路事件选择器(E_SELECT_4)
  •   8 路事件选择器(E_SELECT_8)

时序逻辑

触发器

  • D 触发器
  • T 触发器
  • E_RS
  • E_SR       
  • FF 触发器

     边缘检测(edge detect)

          -上升沿 FB_R_TRIG

          -下降沿 FB_F_TRIG

     时钟

  • E_CYCLE  
  • DELAY

     寄存器

  •       8位寄存器(REGISTER_D)
  •      移位寄存器
  •       8 位寄存器(SHIFT_8)
  •      串并转换器
  •     并串转换器

     计数器

  • 脉冲计数器(PULSE COUNTER)
  • 增减计数器CTUD
  • 递增计数器CTU
  • 递减计数器CTD

 单稳态(MONOSTABLE)

PWM 发生器

连续产生一定占空比和频率的脉冲

脉冲发生器

  产生N 个脉冲。

波形发生器

  • 锯齿波
  • 正弦波
  • 脉冲波

数值运算

数值运算功能块完成各种数值运算,并且包含数学函数(math)。它们处理的变量是INT,REAL,LREAL。

       基本运算(加,减,乘,除)

       绝对值(ABS)

       输出输入信号的绝对值.

       比较运算

       三角函数(SIN,COS,ASIN,ACOS)

       平方根(SQRT)

数组运算

  • 求和(ARRAY_SUM)
  • 平均值
  • 最大/最小值(Min/Max)
  • 多项式计算Polynomial
  • LIMIT 限制
  • Saturation 
  • 均方根     

数据处理

  • 缓冲区(BUF FER)
  • 队列(QUEUE)
  • 查表Lookup Tables

字符串

  • 字符串合并(F_CONCAT)
  • 字符串分离(F_SPLIT)

时间功能块

NOW 当前时间功能块

TIMESTAMP 时间标签功能块

访问外部程序库功能块

这一类功能块可以调用C++ 外部程序库的函数。根据参数数量的不同,可以开发:

   CALL_1 一个参数的功能块

   CALL_2 两个参数的功能块

   CALL_3 三个参数的功能块

 

通信功能块

基本通信功能块

PUBLISH

SUBSCRIBE

CLIENT

SERVER

  UDP

  TCP

  HTTP

webSocket

  MQTT

工业现场网络通信功能块

  MODBUS

  CANBUS

Fieldbus

  OPC UA 功能块

  DALI功能块

Zigbee 功能块

BNiot 功能块

 

运维功能块

       告警功能块

日志功能块·(LOG FB)

控制台信息输出(console.log)

信号处理功能块(DSP function block)

快速傅里叶变换FFT

  数字滤波

  • 高通滤波器
  • 低通滤波器
  • 带通滤波器
  • 卡尔曼滤波

 

控制算法

  • INTEGRATOR积分
  • Derivative 导数

输出是输入信号的时间导数。

  • PI  控制器
  • PID控制器

信息系统功能块

和信息系统连接的功能块,它们包括 文件系统访问,数据库访问

文件读写(File)

CSV 文件

   写CSV 文件

   读 CSV文件

json 文件

  写json 文件

  读json 文件

XML 文件

读XML 文件

写XMK文件

数据库访问DATABASE ACCESS

访问数据库功能块,数据库又分为:

本地数据库(Local DB)

   SQLite 数据库

SQLite是一种C语言库,实现了一个 小型, 快速, 自包含, 高可靠性, 功能齐全的SQL数据库引擎。SQLite是世界上最常用的数据库引擎。SQLite内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。在小型PAC 控制器中,使用SQLite 是非常合适的。

远程数据库(Remote DB)

现代数据库普遍以服务的方式独立运行,通过TCP/IP或者HTTP 访问。即便是在本机运行也采取sock 方式访问,我们可以认为它们是一个远程数据库。

常用的数据库包括:

  -MySQL

-mongoDB

  -influxDB

数据库基本操作:

  建立数据库(DB_CREATE)

  写数据库(DB_WRITE)

  读数据库(DB_READ)

HMI 功能块

嵌入式系统具有两种HMI 方式,一种是基于Web,另一种基于本地图形界面,比如QT UI。本地图形界面依赖硬件和OS ,我们这里讨论基于Web的HMI。

基于Web 的HMI

  • 滑杆面板(Slider)
  • Check Box
  • 文字显示 (Text)
  • 对话框  Modal
  • 图形面板
  • 仪表盘面板(GAUGE)
  • 圆形 Circular Gauge
  • 线性Linear gauge
  • Combo Box
  • 指示灯(LED)
  • 按键开关Push Button
  • 输入面板
  • 键盘面板

IO功能块

IO功能块实现IEC控制器通过内部的IO外围电路实现与外部数据交换。常用的IO接口包括数字输入/输出,模拟量输入输出。IO 功能块是和PAC控制器的硬件相关。所以,这部分功能块是与设备有关的。 下面的内容不完全是IEC61499 标准规定的术语和内容。

数字输入功能块

数字输入(IX)

边沿检测(EdgeDetection)

脉冲计数

简单数字输出

数字输出(QX)

IO PWM 输出

高速脉冲输出

模拟量输入/输出

    单值输入

在指定的ADC端口输入一个模拟量

    多值输入

    周期输入

      单值输入

      多值输入

    扫描输入

            波形输入

        触发输入

  模拟量输出

        单值输出

        波形输出

      锯齿波

      Sine wave

执行步加和传感器功能块

执行部件功能块

电机功能块

单速电机

变速电机

步进电机

阀门功能块  

灯光控制功能块

RFID 读入器

传感器功能块

  温度传感器

 称重传感器

接近开关传感器

Mass flow流量 (Mass flow)

 电表 电流,电压

 单相电表

  三相电表

位置传感器

角度传感器

压力传感器

扭矩传感器

设备功能块

机械臂功能块

传输送带

显示屏

结束语

本方案目前还只是一个初稿,还需要进一步地取舍。希望业内有经验的人士提供意见。下一步我们将讨论开放型功能块库的实现方法。