Skip to main content

reComputer R1000 使用 fuxa 实现 SCADA

note

本文档由 AI 翻译。如您发现内容有误或有改进建议,欢迎通过页面下方的评论区,或在以下 Issue 页面中告诉我们:https://github.com/Seeed-Studio/wiki-documents/issues

简介

FUXA 是一个基于 Web 的过程可视化 (SCADA/HMI/Dashboard) 软件。使用 FUXA,您可以为您的机器创建现代化的过程可视化界面,并实时显示数据。它支持 Modbus RTU/TCP、Siemens S7 Protocol、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:

      ## 您需要安装 Node 版本 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
    ## 接下来从 npm 安装 FUXA
    sudo npm install -g --unsafe-perm @frangoteam/fuxa
    sudo fuxa
  • 关于如何使用 fuxa 实现 OPC-UA 数据交互,您可以参考此 wiki

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

    ## 启动时
    global.set('firstTank', '10000');
    global.set('secondTank', '0');
    global.set('thirdTank', '0');
    ## 消息处理
    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 的属性如图所示。您可以设置 Chart名称字体大小数据格式时间格式X 轴和 Y 轴样式以及其他属性。最重要的是 Chart to show,它决定了我们想要显示的数据源以及线条的格式。

点击 Chart to show,然后选择 New Chart,会弹出一个新的窗口,点击新窗口右上角的 + 按钮,输入 名称,然后点击 OK,即可成功创建一个新的线条配置。接着点击新创建的线条配置,再点击 Add Line,选择您想要显示的数据,最后点击 OK,即可生成一条新的曲线。通过此过程可以添加多条曲线。最后点击 OK 完成配置。

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

开关

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

形状

Fuxa 提供了多种 shape(形状)供用户绘制工业可视化界面。每个 shape 都有三个属性,分别是 Property(属性)、Events(事件)和 Actions(动作)。 其中,Property 主要用于配置 shape 的颜色。通过绑定一个 Tagshape 会根据 Tag 值的变化显示不同的颜色。您可以点击右上角的 + 来设置不同的颜色。

这里我们以一个仓库图案为例,通过 Property 填充其颜色。

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

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

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

管道

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

Property 部分可以设置管道的宽度、颜色等属性。Actions 也需要绑定一个 Tag。不同的 Tag 值可以让管道执行不同的动作。主要有四种动作:Stop(停止)、Turn clockwise(顺时针旋转)、Turn anticlockwise(逆时针旋转)和 Hide content(隐藏内容)。本文展示了两种动作:StopTurn clockwise

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

圆形仪表

除了 charts(图表),Circular Gauge(圆形仪表)也可以实时显示数据。共有三种 Circular Gauge 可供选择。

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

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

滑块

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

报警

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

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

SCADA 演示

技术支持与产品讨论

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

Loading Comments...