Skip to main content

reComputer R1000 使用 fuxa 实现 SCADA

介绍

FUXA 是一个基于 Web 的过程可视化(SCADA/HMI/仪表板)软件。使用 FUXA,您可以为您的机器创建具有个性化设计的现代过程可视化界面和实时数据显示。它支持 Modbus RTU/TCP、西门子 S7 协议、OPC-UA、BACnet IP、MQTT 和其他协议。

本文主要介绍如何使用 fuxa 实现 SCADA。在本文中,fuxa 从 node-redOPC UA Simulator 接收数据,并使用 chartCircular Gauge 显示数据;同时,它绘制一系列图案来模拟工业过程。

开始使用

在开始这个项目之前,您可能需要按照此处描述的内容提前准备硬件和软件。

硬件准备

reComputer R1000

软件准备

  • Python 3.11 可能与 fuxa 不兼容。如果您的 Python 版本是 3.11,请考虑更换为不同的 Python 版本。

  • 在 reComputer R1000 上使用 fuxa。您可以参考以下步骤在 reComputer R1000 上安装 fuxa

      ## You need to have installed Node Version 14 || 16 || 18.
    wget https://nodejs.org/dist/v18.20.3/node-v18.20.3-linux-arm64.tar.xz
    tar -xf node-v18.20.3-linux-arm64.tar.xz
    cd node-v18.20.3-linux-arm64
    sudo cp -R * /usr/local/
    node -v
    npm -v
    ## Next install FUXA from npm
    sudo npm install -g --unsafe-perm @frangoteam/fuxa
    sudo fuxa
  • 关于如何使用 fuxa 实现 OPC-UA 数据交互,您可以参考这个 wiki

  • 关于如何使用 fuxa 实现与 mqtt 客户端的数据交互,您可以参考这个 wiki。与这个 wiki 不同的是,我们在 node-red 中发布的数据是通过 function 模块处理的,并且使用 loop 模块进行连续发布。function 模块的代码如下:

    ## On Start
    global.set('firstTank', '10000');
    global.set('secondTank', '0');
    global.set('thirdTank', '0');
    ## On Message
    var firstTank = global.get('firstTank');
    var secondTank = global.get('secondTank');
    var thirdTank = global.get('thirdTank');
    if (firstTank <= 0) {
    global.set('firstTank', 10000);
    global.set('secondTank', 0);
    global.set('thirdTank', 0);
    firstTank=10000;
    secondTank=0;
    thirdTank=0;
    }

    firstTank = firstTank - 3;
    secondTank++;
    thirdTank++;
    thirdTank++;
    global.set('firstTank',firstTank);
    global.set('secondTank',secondTank);
    global.set('thirdTank',thirdTank);
    var data = {
    "firstTank":firstTank,
    "scondTank":secondTank,
    "thirdTank":thirdTank,
    };
    msg.payload = data;
    return msg;

    主要是将 firstTank、secondTank 和 thirdTank 封装成 json 格式,然后让 mqtt-out 模块发布它。

  • 点击 fuxa 右下角的 + 按钮,输入 NameType,选择 Internal,最后点击 OK 获得一个新模块。该模块没有与外部设备通信的功能,但它允许我们添加自定义标签。这些标签支持 booleannumberstring 等三种数据类型,可以方便我们后续的工作。

硬件配置

我们使用以太网线将 W10 PC 和 reComputer R1000 连接到交换机,确保它们在同一网段内。

pir

可视化显示和主要控件介绍

图表

fuxa 中有曲线图和直方图可用。以曲线图为例。Chart 的属性如图所示。您可以设置 ChartNamefont sizedata formattime formatX axis and Y axis styles 等属性。最重要的是 Chart to show,它决定了我们要显示的数据源和线条格式。

我们点击 Chart to show,然后选择 New Chart,会出现一个新的弹出窗口,点击新弹出窗口右上角的 + 按钮,输入 Name,然后点击 OK,就可以成功创建一个新的线条配置。然后点击新创建的线条配置,再点击 Add Line,选择要显示的数据,最后点击 OK,就会出现一条新曲线。通过这个过程可以添加多条曲线。最后点击 OK 完成配置。

我们在这里使用 Chart 来显示来自 Prosys OPC UA Simulation Server 的数据。您可以看到数据成功以图形形式显示。

开关

开关的属性如图所示。我们选择一个名为 swich_1 的布尔数据作为开关状态。您可以配置 swich 在开启或关闭时的显示状态,包括颜色配置、文本显示等。

形状

Fuxa 为用户提供了多种 shape 来绘制工业可视化界面。每个 shape 都有三个属性,即 PropertyEventsActions。 其中,Property 主要用于配置 shape 的颜色。通过绑定一个 Tagshape 根据 Tag 值的变化显示不同的颜色。您可以点击右上角的 + 来设置不同的颜色。

这里我们以仓库图案为例,用 Property 填充其颜色。

Events 主要有两个内容,Type 表示事件类型,Action 表示事件触发后的动作。

Actions 需要绑定到一个 Tag,不同的 Tag 值可以触发不同的动作。设置 MinMax 的值,然后在 Type 选项中选择所需的动作。当 Tag 数据达到 Min 和 Max 之间的区间时,将触发相应的动作。

这里我们以仓库图案为例,通过 Actions 控制其旋转和停止。

管道

在显示工业流程时,您可以使用 pipe 来表示工业材料的流动方向。管道的属性如图所示。

Property 部分可以设置管道的宽度、颜色等属性。Actions 也需要绑定到一个 Tag。不同的标签值允许管道有不同的动作。主要有四种动作:StopTurn clockwiseTurn anticlockwiseHide conten。本文展示了两种动作:StopTurn clockwise

为了模拟工业流程,我们添加了两个储罐和一些管道等图案。

圆形仪表

除了 chartsCircular Gauge 也可以实时显示数据。有三种 Circular Gauge 可用。

使用时,您需要通过绑定一个 Tag 来指定要显示的数据。同时,您需要指定仪表能够显示的数据的最大范围。您还可以设置仪表面板上的线条等属性。这里我们选择 /dev/fromfuxa 主题中的 Tank1 数据进行显示。

之后,Tank2Tank3 的数据也通过 Circular Gauge 显示,以指示每个储罐的当前容量。

滑块

使用滑块来调整流量、压力等变量。其属性如图所示。您可以设置其颜色和格式。使用时,您需要绑定一个 Tag。然后滑块可以实时调整 Tag 的值。这里我们绑定一个自定义的 Flow control 1 标签

报警

在工业过程中,某些参数(如压力)过高可能会造成一些危险。此时需要报警来提醒工作人员这里可能存在一些问题。Fuxa 支持实时监控某个值,并在该值达到某个危险范围时触发报警。 默认情况下,fuxa 的界面不会打开报警栏。您需要设置才能打开报警栏。

打开报警栏后,您可以设置报警。点击左上角的设置按钮,然后点击 Alarms,然后在新窗口中点击 + 显示报警设置窗口。此时需要绑定一个 Tag,系统将监控该 Tag 的值。Alarms 有四个级别,分别是 High HighHighLowMessage。您可以为每个级别设置一个 Tag 值范围,当 Tag 值达到此范围时,将触发相应级别的警报。

SCADA 演示

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...