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程序截图:

虚拟PLC说明
测试使用的虚拟PLC目标配置:
内容的提问来源于stack exchange,提问作者Jakub Szlaur
相关产品推荐
相关产品推荐

