Skip to main content

reComputer R1000 与 FIN 使用 modbus TCP/RTU

介绍

FIN Framework (FIN) 是一个软件框架,具有可以集成、控制、管理、分析、可视化和连接的应用程序套件。其功能可以被 OEM 厂商集成到各种产品和服务中。

本文介绍如何使用 FIN FrameworkModbus Connector,详细说明了 FIN Framework 中 Modbus TCP/RTU 的使用方法。主要包括三个方面:创建 FIN Framework 项目、配置 串口号、配置 Modbus Connector,以及向 Equip 添加数据点。

开始使用

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

硬件准备

reComputer R1000

软件准备

  • 关于如何安装 FIN Framework,您可以参考这个 wiki
  • 关于如何使用 reComputer R1000 的 modbus 功能,您可以参考这个 wiki
  • 在 W10 PC 上使用 modbusmechanic。您也可以使用其他 modbus 测试工具。

硬件配置

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

pir

对于 ModbusRTU,我们使用 rs485 转 USB 模块将 reComputer R1000 与 W10 PC 连接。

pir

创建新项目

步骤 1:点击主页左下角的 Create 按钮,将出现一个新的弹出窗口。弹出窗口主要有三个需要填写的属性:

  • NAME:新项目的名称
  • DISPLAY NAME:显示的项目名称
  • DESCRIPTION:项目描述

步骤 2:打开项目,进入 DB Builder,点击 Connectors,您可以看到此时没有 Modbus 选项,我们需要打开 FIN FrameworkModbus Connector,然后 Modbus 选项将出现在这里。

为 Modbus TCP 配置 Modbus Connector

步骤 1:打开 Modbus Connector。点击 Settings => Ext 并找到 Modbus。此时 Modbus 标记为红色。点击 Enable,您可以看到 Modbus 标记变为绿色,表示 Modbus Connector 已成功打开。再次进入 DB Builder,您可以看到已经有了 Modbus 选项。

步骤 2:添加新的 Modbus 连接。点击 Modbus => Add,新弹出窗口主要有以下参数需要填写:

  • Dis:连接器的名称

  • ModbusSlave:这将是被连接的 modbus 设备的从站(默认为 1)

  • Existing Register Map:如果用户已经配置了 Modbus 连接器,他们将在这里看到可用的寄存器可供选择,或者使用下一个属性 ModbusRegMapUri 创建新的寄存器映射。

  • ModbusRegMapUri:这是用户指定要与此连接器链接的寄存器映射名称的地方。将 "xxx" 替换为寄存器映射的名称。

  • Uri:这是指定 modbus 连接器 uri 的地方。URI 的格式如表所示:

    协议URI 设置示例注释
    TCP/IPmodbus-tcp://host:port/modbus-tcp://10.0.0.17/默认端口是 502,如果是标准端口可以省略
    RTU over TCP/IPmodbus-rtutcp://host:port/modbus-rtutcp://192.168.1.120:9001/默认端口是 502,如果是标准端口可以省略
    RTU over RS-485modbus-rtu://<port>-<baud>-<dataBits>-<parity>modbus-rtu://serial0-9600-8n1-none

在我们的示例中,我们指定 "r1000_demo" 作为我们的寄存器映射。然后在 Uri 中添加了我们设备的 IP。

步骤 3:添加新的 Register Maps。点击 Register Maps => Add,输入 Name,需要与第二步中 ModbusRegMapUri 的名称一致,最后点击 ADD

系统将在 opt/finFramework_5.1.6.55/var/proj/recomputer_R1000_demo/data/modbus/ 目录中创建一个新的 r1000_demo.csv 文件。此文件描述了我们需要读取的 Modbus 寄存器信息。

步骤 4:添加要读取的寄存器信息。Modbus Connector 作为 Modbus 主站存在。它将读取从站的寄存器。我们需要配置要读取的寄存器信息。点击 r1000_demo,您可以看到默认有一个 ping 的描述,这是必须的。我们继续添加新的寄存器信息,点击 Register Maps => r1000_demo => Add。新弹出窗口主要有以下参数需要填写:

  • name(必需):寄存器名称。

    • 必须是唯一的

    • 必须以小写字母 a-z 开头

    • 只允许 a-z、A-Z、0-9 和下划线。不允许空格或其他特殊字符。

  • addr(必需):这将是遵循 modbus 约定的寄存器地址。

    • 0xxxx - 线圈(00001-065536)
    • 1xxxx - 离散输入(10001-165536)
    • 3xxxx - 输入寄存器(30001-365536)
    • 4xxxx - 保持寄存器(40001-465536)
  • data(必需):这定义了寄存器的数据类型。

    • 类型:
      • bit - 布尔值
      • u1 - 无符号 8 位整数
      • u2 - 无符号 16 位整数
      • u4 - 无符号 32 位整数
      • s1 - 有符号 8 位整数
      • s2 - 有符号 16 位整数
      • s4 - 有符号 32 位整数
      • s8 - 有符号 64 位整数
      • f4 - 32 位浮点数
      • f8 - 64 位浮点数
  • rw(必需):这将确定读/写权限

    • rw - 寄存器可以读写
    • r - 寄存器只读
    • w - 寄存器只写
  • scale(可选): 这允许用户对寄存器应用比例因子。格式为 [操作符] [数字],其中因子是一个数值常量。

    • 示例:
      • 加法: +1.5
      • 减法: -0.25
      • 乘法: *10
      • 除法: /1000
  • dis(可选): 这是一个可选标签,用户可以为寄存器指定一个友好的显示名称。

  • unit(可选): 这将定义寄存器使用的单位。

  • tags(可选): 这将是学习到数据库中的点时应用的标签。

  • folderPath(可选): 如果用户想要组织这些点,他们可以通过应用 folderPath 来实现。

步骤 5: 通信测试。添加寄存器的描述信息后,可以进行通信。这里我们使用 ModbusMechanic 作为 Modbus 从设备。点击 Modbus => Ping,您可以看到 Status 变为 OK,表示通信正常。

为 Modbus RTU 配置 Modbus Connector

配置串口

需要执行的脚本如下:

## Turn off FIN service
sudo systemctl stop fin
## After downloading the config file, place it in /opt/finFramework_5.1.6.55/etc/finStackSerial/
sudo cp ~/config.props /opt/finFramework_5.1.6.55/etc/finStackSerial/
## Modify the config.props file to: serialPorts=/dev/ttyAMA30, /dev/ttyAMA31, /dev/ttyAMA32
sudo nano /opt/finFramework_5.1.6.55/etc/finStackSerial/config.props
## Restart the FIN service, wait for a while and then use a browser to open FIN
sudo systemctl restart fin

步骤 1:关闭 FIN 服务,然后下载配置文件并将其保存到 /opt/finFramework_5.1.6 .55/etc/finStackSerial/ 目录

步骤 2:将 config.props 修改为:

serialPorts=/dev/ttyAMA30, /dev/ttyAMA31, /dev/ttyAMA32

修改完成后,重启FIN服务

步骤3:点击Folio => launch,并插入以下查询:serialPorts(),结果将显示您的特定端口需要使用的名称。端口不是物理端口的名称,但设备的物理端口与要使用的端口名称之间存在匹配关系,如serial0serial1...

配置Modbus RTU

步骤1:打开Modbus Connector。点击Settrings => Ext并找到Modbus。此时,Modbus标记为红色。点击Enable,您可以看到Modbus标记变为绿色,表示Modbus Connector已成功打开。再次进入DB Builder,您可以看到已经有一个Modbus选项。

步骤2:添加新的Modbus连接。点击Modbus => Add。在我们的示例中,我们指定"r1000_demo_rtu"作为我们的寄存器映射。然后在Uri中将我们的串口添加到设备。

步骤3:添加新的Register Maps。点击Register Maps => Add,输入Name,需要与第二步中ModbusRegMapUri的名称一致,最后点击ADD

系统将在opt/finFramework_5.1.6.55/var/proj/recomputer_R1000_demo/data/modbus/目录中创建一个新的r1000_demo_rtu.csv文件。该文件描述了我们需要读取的Modbus寄存器信息。

步骤4:添加要读取的寄存器信息。Modbus Connector作为Modbus主站存在。它将读取从站的寄存器。我们需要配置要读取的寄存器信息。点击r1000_demo_rtu,您可以看到默认有一个ping的描述,这是必须的。我们继续添加新的寄存器信息,点击Register Maps => r1000_demo_rtu => Add

步骤5:通信测试。添加寄存器的描述信息后,可以进行通信。这里我们使用ModbusMechanic作为Modbus从站。点击Modbus => Ping,您可以看到Status变为OK,表示通信正常。

将数据点添加到Equip Tree

步骤1:添加Equip。点击Equip Tree => + => Add site,输入Name,这里我输入Tower,它可以添加一个名为Towersite;然后点击Equip Tree => Tower => + => Add Floor,输入Name,这里我输入Floor1,它可以添加一个名为Floor1Floor;再次点击Equip Tree => Tower => Floor1 => + => Add Equip,输入Name,这里我输入ModbusEquip来添加一个新的Equip

步骤2:点击ModbusEquip右侧的->,使系统路径位于Tower/Floor1/ModbusEquip下。

步骤3:添加数据点。点击Modbus => Modbus Conn,在新窗口中点击Discover Points,我们设置的寄存器信息点将出现,选择要读取的寄存器,然后点击Add

技术支持与产品讨论

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

Loading Comments...