1. 为什么选择 RK3568 + Qt 自研 HMI?

相比购买成品的威纶通或西门子触摸屏,基于 RK3568 自研 HMI 具有极高的灵活性和性价比:

  • 性能碾压:RK3568 搭载 四核 Cortex-A55 @ 2.0GHz 处理器 。相比传统 HMI 的低频单核 MCU,它能轻松处理毫秒级的 PLC 轮询和复杂的逻辑运算。
  • 图形加速:内置 Mali-G52 GPU 。在 Qt Quick (QML) 中开启硬件加速后,仪表盘指针的旋转、实时波形图的绘制可以保持 60FPS 满帧运行。
  • 网络隔离:板载 2 路 1000Mbps 以太网口 。可以实现物理隔离:网口 1 连接 PLC 内网,网口 2 连接工厂 MES 外网,保障 OT 网络安全。

2. 硬件拓扑:双网口架构设计

在工业现场,推荐采用如下连接方式:

  • LAN 1 (eth0):配置静态 IP (如 192.168.0.100),通过网线直连或经过交换机连接 PLC (如西门子 S7-200 SMART、施耐德 M241)。
  • LAN 2 (eth1):配置 DHCP,连接车间路由器,用于远程维护或数据上云。
  • 显示输出:通过 HDMI 2.0LVDS/MIPI 接口连接高清工业触摸屏 。

3. 软件实战:Qt Modbus TCP 开发流程

3.1 环境准备

电鱼 eFish-SBC-RK3568 支持 Linux (Buildroot/Ubuntu) 和 Qt 5.14/5.15 。

在 .pro 文件中添加 Modbus 模块支持:

代码段

QT += serialbus widgets

3.2 核心代码:建立连接

使用 QModbusTcpClient 类实现主站功能。

C++

// 初始化 Modbus TCP 客户端

QModbusTcpClient *modbusDevice = new QModbusTcpClient(this);

// 设置 PLC 的 IP 和端口 (默认 502)

modbusDevice->setConnectionParameter(QModbusDevice::NetworkPortParameter, 502);

modbusDevice->setConnectionParameter(QModbusDevice::NetworkAddressParameter, "192.168.0.1");

// 设置超时和重试次数

modbusDevice->setTimeout(1000);

modbusDevice->setNumberOfRetries(3);

// 连接

if (!modbusDevice->connectDevice()) {

    qDebug() << "连接 PLC 失败: " << modbusDevice->errorString();

}

3.3 数据采集:周期性轮询

为了实时刷新 UI,通常使用 QTimer 定时读取 PLC 的保持寄存器 (Holding Registers)。

C++

// 定时读取:每 100ms 读取一次,从地址 0 开始读取 10 个寄存器

QModbusDataUnit readUnit(QModbusDataUnit::HoldingRegisters, 0, 10);



if (auto *reply = modbusDevice->sendReadRequest(readUnit, 1)) { // Server ID = 1

    if (!reply->isFinished())

        connect(reply, &QModbusReply::finished, this, &MyClass::onReadReady);

    else

        delete reply; // 广播消息

}

3.4 UI 渲染:GPU 加速

在 onReadReady 回调中解析数据并更新 UI。利用 RK3568 的 GPU,推荐使用 Qt Charts 绘制实时曲线:

  • 转速/温度:解析 int16 或 float 数据,绑定到仪表盘控件。
  • IO 状态:解析位数据,切换指示灯颜色。

4. 性能优化:如何做到“实时”?

工业控制对延迟敏感。电鱼宣称其方案具备 “工业级实时解决方案,20微秒以下中断抖动延迟” 。配合 RK3568 的性能,我们可以进一步优化:

  1. 多线程设计:将 Modbus 通讯逻辑放入独立的 QThread,避免网络阻塞导致 UI 卡顿。
  2. 批量读取:尽量将分散的寄存器地址通过 PLC 程序映射到连续区域,使用一条 Modbus 指令一次性读取,减少 TCP 握手开销。
  3. 优先级绑定:在 Linux 系统中,提高 Qt 进程的优先级,确保数据处理的实时性。

5. 总结

基于 电鱼 eFish-SBC-RK3568 的 Qt HMI 方案,不仅实现了与 PLC 的稳定 Modbus TCP 通讯,更利用其 四核算力双网口 优势,解决了传统触摸屏“反应慢、甚至卡死”的痛点。对于追求高性能交互和数据安全的高端装备(如锂电设备、数控机床),这是一种极具竞争力的国产化替代方案。


技术规格参考

  • 处理器:Rockchip RK3568 (4x Cortex-A55)
  • 网络接口:2x Gigabit Ethernet
  • 操作系统:Linux, Ubuntu, Android
  • 开发框架:Qt 5.14 / 5.15
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐