You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Twincat3虚拟PLC通过Tc2_ModbusSrv库无法连接LabVIEW的Modbus TCP/IP服务器

TwinCAT3 Modbus TCP连接LabVIEW从站故障排查

我尝试使用Twincat3和本地运行的虚拟PLC开发简单的Modbus TCP/IP入门测试程序,目前已完成如下准备:

  • 已搭建LabVIEW Modbus TCP/IP主、从站程序,二者可正常传输数据,同时可通过Python脚本读取该服务的数据,确认服务运行无异常。
  • 参照倍福官方示例编写Twincat3程序实现寄存器写入功能,但始终无法正常连接。

已尝试的排查操作

  • 尝试更换ipAddr参数为:'localhost'、'192.168.88.1'、'192.168.88.126'
  • 尝试将nUnitID参数设置为:0、1、16#FF(其中16#FF为倍福文档指定值)

测试用倍福代码

PROGRAM MAIN
VAR
    ipAddr      : STRING(15) := '192.168.88.1'; //也测试过192.168.88.126、192.168.88.1、'localhost'
    M0 AT %MB0  : ARRAY [0..3] OF WORD;
    nValue      : ARRAY [0..3] OF WORD;
    fbWriteRegs : FB_MBWriteRegs;
    bWriteRegs  : BOOL;
END_VAR 

IF NOT bWriteRegs THEN
    nValue[0]               := nValue[0]+1;
    nValue[1]               := nValue[1]+1;
    nValue[2]               := nValue[2]+1;
    nValue[3]               := nValue[3]+1;
    
    bWriteRegs              := TRUE;
    
    fbWriteRegs.sIPAddr     := ipAddr;
    fbWriteRegs.nTCPPort    := 502;
    fbWriteRegs.nUnitID     := 16#FF;           //也测试过设为0、1,均不生效
    fbWriteRegs.nQuantity   := 4;
    fbWriteRegs.nMBAddr     := 16#3000;         //测试过16#3000、0、1
    fbWriteRegs.cbLength    := SIZEOF(nValue);
    fbWriteRegs.pSrcAddr    := ADR(nValue);
    fbWriteRegs.tTimeout    := T#5S;
    fbWriteRegs             (bExecute:=TRUE);
ELSE
    
    IF NOT fbWriteRegs.bBUSY THEN
        bWriteRegs          :=FALSE;
        fbWriteRegs         (bExecute:=FALSE);
    END_IF
    
    fbWriteRegs             (bExecute:=FALSE);
END_IF 

问题描述

需要修改代码中的哪些配置才能使该示例正常运行?

补充信息

LabVIEW程序说明

  • 使用LabVIEW自带的Modbus TCP主/从站示例程序
  • IP地址设置为'localhost',端口为502,与Twincat3代码中的配置匹配
  • 确认服务运行正常,可通过Python脚本正常连接访问
  • LabVIEW程序截图:LabVIEW程序截图

虚拟PLC说明

测试使用的虚拟PLC目标配置:虚拟PLC目标截图

内容的提问来源于stack exchange,提问作者Jakub Szlaur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:09:03