【发布时间】:2022-07-04 21:44:56
【问题描述】:
我想使用 Beckhoff Twin CAT 3 TCP Modbus 模块在 PC 中制作寄存器,该 PC 作为 PLC 运行,可通过 Modbus 读取。
我已经从 Backhoff 网站下载了 Modbus TCP 功能。我已按照第 55 页 Manual TF6250 TwinCAT 3 | Modbus TCP 中的示例进行操作。当我尝试使用 modbus 客户端读取地址为 0x3000 的寄存器时,出现地址无效错误。
代码如下:
PROGRAM MAIN
VAR
ipAddr : STRING(15) := '';
nValue AT%MB0 : ST_EM_Ausgangsdaten_Float;
fbWriteRegs : FB_MBWriteRegs;
bWriteRegs : BOOL;
END_VAR
IF NOT bWriteRegs THEN
nValue.BlindleistungL1 := nValue.BlindleistungL1+1;
nValue.BlindleistungL2 := nValue.BlindleistungL2+1;
nValue.BlindleistungL3 := nValue.BlindleistungL3+1;
bWriteRegs :=TRUE;
fbWriteRegs.sIPAddr :=ipAddr;
fbWriteRegs.nQuantity := 1;
fbWriteRegs.nMBAddr := 16#3000;
fbWriteRegs.cbLength := SIZEOF(nValue);
fbWriteRegs.pSrcAddr := ADR(nValue);
fbWriteRegs.tTimeout := T#5S;
fbWriteRegs(bExecute:=TRUE);
ELSE
IF NOT fbWriteRegs.bBUSY THEN
bWriteRegs :=FALSE;
END_IF
fbWriteRegs(bExecute:=FALSE);
END_IF
谁能告诉我如何通过 Modbus 读取 PLC 中的变量。
【问题讨论】:
-
愚蠢的问题:您确定您正在读取的地址存在于 PLC 的内存映射中吗?您是否尝试过阅读其他确实存在的地址?无效地址错误通常意味着,嗯……地址错误。
-
您的问题为我指明了正确的方向。我必须将我的变量映射为全局变量,这样它们就可以访问了。
-
太好了,我很高兴我的评论很有用。祝你的项目好运。
标签: plc twincat modbus-tcp structured-text