reComputer R1000 使用 fuxa 实现 SCADA
本文档由 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-red
和 OPC UA Simulator
接收数据,并使用 chart
和 Circular 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 右下角的
+
按钮,输入Name
和Type
,选择Internal
,最后点击OK
以获得一个新模块。该模块没有与外部设备通信的功能,但它允许我们添加自定义标签。这些标签支持boolean
、number
和string
三种数据类型,可以方便我们后续的工作。
硬件配置
我们使用以太网线将 W10 PC 和 reComputer R1000 连接到交换机,以确保它们处于同一网络段。

可视化显示和主要控件介绍
图表
在 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
的颜色。通过绑定一个 Tag
,shape
会根据 Tag
值的变化显示不同的颜色。您可以点击右上角的 +
来设置不同的颜色。

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

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

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

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

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

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

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

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

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

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

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


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

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

SCADA 演示

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