From 12a1a0e7381650722e707481f4790bfce04a0512 Mon Sep 17 00:00:00 2001 From: yiyi Date: Tue, 30 Dec 2025 00:05:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9ModbusTCP=20=E7=AB=AF?= =?UTF-8?q?=E5=8F=A3=E6=98=A0=E5=B0=84=E5=8A=9F=E8=83=BD=20&=20=E6=9B=B4?= =?UTF-8?q?=E6=96=B0README=E7=AB=AF=E5=8F=A3=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- GrabBagPrj/pkg_grabbagapp.sh | 10 +++++----- GrabBagPrj/pkg_lapweld.sh | 16 ++++++++-------- GrabBagPrj/pkg_particlesize.sh | 16 ++++++++-------- GrabBagPrj/pkg_tunnelchannel.sh | 16 ++++++++-------- GrabBagPrj/pkg_wheelmeasure.sh | 10 +++++----- GrabBagPrj/pkg_workpiece.sh | 16 ++++++++-------- GrabBagPrj/pkg_workpieceposition.sh | 16 ++++++++-------- GrabBagPrj/pkg_workpiecesplice.sh | 16 ++++++++-------- README.md | 29 +++++++++++++++++------------ 9 files changed, 75 insertions(+), 70 deletions(-) diff --git a/GrabBagPrj/pkg_grabbagapp.sh b/GrabBagPrj/pkg_grabbagapp.sh index 35d8451..9158f2f 100644 --- a/GrabBagPrj/pkg_grabbagapp.sh +++ b/GrabBagPrj/pkg_grabbagapp.sh @@ -176,26 +176,26 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] WantedBy=multi-user.target PORTEOF + systemctl daemon-reload systemctl enable vr-port-mapping.service systemctl start vr-port-mapping.service else echo "端口映射服务已存在,跳过创建..." - # 确保服务处于启用状态 systemctl enable vr-port-mapping.service 2>/dev/null || true systemctl start vr-port-mapping.service 2>/dev/null || true fi # 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then +if ! iptables-legacy -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 + iptables-legacy -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 else echo "iptables规则已存在,跳过添加..." fi @@ -310,7 +310,7 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then rm -f /etc/systemd/system/vr-port-mapping.service # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + iptables-legacy -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/GrabBagPrj/pkg_lapweld.sh b/GrabBagPrj/pkg_lapweld.sh index d64b290..89995f3 100644 --- a/GrabBagPrj/pkg_lapweld.sh +++ b/GrabBagPrj/pkg_lapweld.sh @@ -177,7 +177,7 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] @@ -193,12 +193,12 @@ else systemctl start vr-port-mapping.service 2>/dev/null || true fi -# 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then - echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 +# 检查iptables-legacy规则是否已存在 +if ! iptables-legacy -t nat -C PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then + echo "添加iptables-legacy端口映射规则..." + iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 else - echo "iptables规则已存在,跳过添加..." + echo "iptables-legacy规则已存在,跳过添加..." fi # 检查并创建当前用户的桌面快捷方式 @@ -310,8 +310,8 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then systemctl disable vr-port-mapping.service 2>/dev/null || true rm -f /etc/systemd/system/vr-port-mapping.service - # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + # 清理iptables-legacy规则 + iptables-legacy -t nat -D PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/GrabBagPrj/pkg_particlesize.sh b/GrabBagPrj/pkg_particlesize.sh index af1b272..9ec9c4a 100644 --- a/GrabBagPrj/pkg_particlesize.sh +++ b/GrabBagPrj/pkg_particlesize.sh @@ -176,7 +176,7 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] @@ -192,12 +192,12 @@ else systemctl start vr-port-mapping.service 2>/dev/null || true fi -# 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then - echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 +# 检查iptables-legacy规则是否已存在 +if ! iptables-legacy -t nat -C PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then + echo "添加iptables-legacy端口映射规则..." + iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 else - echo "iptables规则已存在,跳过添加..." + echo "iptables-legacy规则已存在,跳过添加..." fi # 检查并创建当前用户的桌面快捷方式 @@ -309,8 +309,8 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then systemctl disable vr-port-mapping.service 2>/dev/null || true rm -f /etc/systemd/system/vr-port-mapping.service - # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + # 清理iptables-legacy规则 + iptables-legacy -t nat -D PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/GrabBagPrj/pkg_tunnelchannel.sh b/GrabBagPrj/pkg_tunnelchannel.sh index 8615f8c..458d514 100644 --- a/GrabBagPrj/pkg_tunnelchannel.sh +++ b/GrabBagPrj/pkg_tunnelchannel.sh @@ -187,7 +187,7 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] @@ -203,12 +203,12 @@ else systemctl start vr-port-mapping.service 2>/dev/null || true fi -# 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then - echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 +# 检查iptables-legacy规则是否已存在 +if ! iptables-legacy -t nat -C PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then + echo "添加iptables-legacy端口映射规则..." + iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 else - echo "iptables规则已存在,跳过添加..." + echo "iptables-legacy规则已存在,跳过添加..." fi # 检查并创建当前用户的桌面快捷方式 @@ -320,8 +320,8 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then systemctl disable vr-port-mapping.service 2>/dev/null || true rm -f /etc/systemd/system/vr-port-mapping.service - # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + # 清理iptables-legacy规则 + iptables-legacy -t nat -D PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/GrabBagPrj/pkg_wheelmeasure.sh b/GrabBagPrj/pkg_wheelmeasure.sh index 48f091a..1cea49e 100644 --- a/GrabBagPrj/pkg_wheelmeasure.sh +++ b/GrabBagPrj/pkg_wheelmeasure.sh @@ -180,26 +180,26 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] WantedBy=multi-user.target PORTEOF + systemctl daemon-reload systemctl enable vr-port-mapping.service systemctl start vr-port-mapping.service else echo "端口映射服务已存在,跳过创建..." - # 确保服务处于启用状态 systemctl enable vr-port-mapping.service 2>/dev/null || true systemctl start vr-port-mapping.service 2>/dev/null || true fi # 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then +if ! iptables-legacy -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 + iptables-legacy -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 else echo "iptables规则已存在,跳过添加..." fi @@ -314,7 +314,7 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then rm -f /etc/systemd/system/vr-port-mapping.service # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + iptables-legacy -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/GrabBagPrj/pkg_workpiece.sh b/GrabBagPrj/pkg_workpiece.sh index c29258d..ba7fd49 100644 --- a/GrabBagPrj/pkg_workpiece.sh +++ b/GrabBagPrj/pkg_workpiece.sh @@ -176,7 +176,7 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] @@ -192,12 +192,12 @@ else systemctl start vr-port-mapping.service 2>/dev/null || true fi -# 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then - echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 +# 检查iptables-legacy规则是否已存在 +if ! iptables-legacy -t nat -C PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then + echo "添加iptables-legacy端口映射规则..." + iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 else - echo "iptables规则已存在,跳过添加..." + echo "iptables-legacy规则已存在,跳过添加..." fi # 检查并创建当前用户的桌面快捷方式 @@ -309,8 +309,8 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then systemctl disable vr-port-mapping.service 2>/dev/null || true rm -f /etc/systemd/system/vr-port-mapping.service - # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + # 清理iptables-legacy规则 + iptables-legacy -t nat -D PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/GrabBagPrj/pkg_workpieceposition.sh b/GrabBagPrj/pkg_workpieceposition.sh index 51b3e0d..ce9b3f2 100644 --- a/GrabBagPrj/pkg_workpieceposition.sh +++ b/GrabBagPrj/pkg_workpieceposition.sh @@ -181,7 +181,7 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] @@ -197,12 +197,12 @@ else systemctl start vr-port-mapping.service 2>/dev/null || true fi -# 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then - echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 +# 检查iptables-legacy规则是否已存在 +if ! iptables-legacy -t nat -C PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then + echo "添加iptables-legacy端口映射规则..." + iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 else - echo "iptables规则已存在,跳过添加..." + echo "iptables-legacy规则已存在,跳过添加..." fi # 检查并创建当前用户的桌面快捷方式 @@ -314,8 +314,8 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then systemctl disable vr-port-mapping.service 2>/dev/null || true rm -f /etc/systemd/system/vr-port-mapping.service - # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + # 清理iptables-legacy规则 + iptables-legacy -t nat -D PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/GrabBagPrj/pkg_workpiecesplice.sh b/GrabBagPrj/pkg_workpiecesplice.sh index a401fc5..0c28f7b 100644 --- a/GrabBagPrj/pkg_workpiecesplice.sh +++ b/GrabBagPrj/pkg_workpiecesplice.sh @@ -178,7 +178,7 @@ After=network.target [Service] Type=oneshot -ExecStart=/bin/bash -c 'iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020' +ExecStart=/bin/bash -c 'iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020' RemainAfterExit=yes [Install] @@ -194,12 +194,12 @@ else systemctl start vr-port-mapping.service 2>/dev/null || true fi -# 检查iptables规则是否已存在 -if ! iptables -t nat -C PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then - echo "添加iptables端口映射规则..." - iptables -t nat -A PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 +# 检查iptables-legacy规则是否已存在 +if ! iptables-legacy -t nat -C PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null; then + echo "添加iptables-legacy端口映射规则..." + iptables-legacy -t nat -A PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 else - echo "iptables规则已存在,跳过添加..." + echo "iptables-legacy规则已存在,跳过添加..." fi # 检查并创建当前用户的桌面快捷方式 @@ -311,8 +311,8 @@ if [ "${REMAINING_APPS}" -eq 0 ]; then systemctl disable vr-port-mapping.service 2>/dev/null || true rm -f /etc/systemd/system/vr-port-mapping.service - # 清理iptables规则 - iptables -t nat -D PREROUTING -p tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true + # 清理iptables-legacy规则 + iptables-legacy -t nat -D PREROUTING -p tcp -m tcp --dport 502 -j REDIRECT --to-port 5020 2>/dev/null || true # 清理注册目录 rm -rf "${REGISTRY_DIR}" diff --git a/README.md b/README.md index 01ab9ee..a3ba116 100644 --- a/README.md +++ b/README.md @@ -73,18 +73,23 @@ GrabBag/ ## 应用程序说明 -| 应用名称 | 功能描述 | 位置 | 备注 | -|---------|---------|------|------| -| GrabBagApp | 编织袋视觉定位与拆垛 | `App/GrabBag/` | 支持 1-2 个相机,TCP 服务端与机器人通信 | -| BeltTearingApp | 实时检测传送带撕裂情况 | `App/BeltTearing/` | 客户端-服务端分离(App + Server) | -| LapWeldApp | 焊缝质量检测 | `App/LapWeld/` | - | -| WorkpieceApp | 工件角点检测与定位 | `App/Workpiece/` | - | -| WorkpiecePositionApp | 双传感器工件抓取定位 | `App/WorkpieceProject/` | WorkpieceProject 子应用 | -| WorkpieceSpliceApp | 闭环控制工件拼接组装 | `App/WorkpieceProject/` | WorkpieceProject 子应用 | -| BinocularMarkApp | 3D Mark 点检测服务 | `App/BinocularMark/` | - | -| ParticleSizeApp | 颗粒粒度分析 | `App/ParticleSize/` | - | -| TunnelChannelApp | 隧道通道检测 | `App/TunnelChannel/` | - | -| WheelMeasureApp | 轮毂尺寸测量 | `App/WheelMeasure/` | - | +| 应用名称 | 功能描述 | 使用设备 | TCP | Modbus TCP | Modbus RTU | 备注 | +|---------|---------|---------|-----|------------|------------|------| +| GrabBagApp | 编织袋视觉定位与拆垛 | VzNL 3D相机 | 6800 | 502→5020 | - | 支持 1-2 个相机 | +| BeltTearingApp | 实时检测传送带撕裂情况 | VzNL 3D相机 | 5800(客户协议)
5900(上下位机) | 502→5020 | 温度读取 | 客户端-服务端分离 | +| LapWeldApp | 焊缝质量检测 | VzNL 3D相机 | 5020 | - | - | - | +| WorkpieceApp | 工件角点检测与定位 | VzNL 3D相机 | 7800 | 502→5020 | - | - | +| WorkpiecePositionApp | 双传感器工件抓取定位 | EpicEye + VzNL 3D相机 | 客户端连接5901 | 502→5020 | - | 连接 BinocularMarkApp | +| WorkpieceSpliceApp | 闭环控制工件拼接组装 | VzNL 3D相机 | 客户端连接5901 | 502→5020 | - | 连接 BinocularMarkApp | +| BinocularMarkApp | 3D Mark 点检测服务 | 大恒相机(双目) | 5901 | - | - | 无 Modbus | +| ParticleSizeApp | 颗粒粒度分析 | VzNL 3D相机 | 7900 | 502→5020 | - | - | +| TunnelChannelApp | 隧道通道检测 | 海康相机 + VzNL 3D相机 | - | 502→5020 | - | 2D+3D 融合 | +| WheelMeasureApp | 轮毂尺寸测量 | VzNL 3D相机 | - | 502→5020 | - | - | + +> **协议说明:** +> - **TCP**:用于与机器人/上位机通信的自定义协议 +> - **Modbus TCP**:502 为标准端口,由于系统默认不允许非 root 用户监听 502 端口,通过 iptables 映射到 5020 +> - **Modbus RTU**:仅 BeltTearingApp 支持,通过串口读取温度传感器数据 ## 构建说明