TwinCAT 3 Ads 函数 InvokeRpcMethod() 不起作用,并给出符号 "Value is null" 的错误

TwinCAT 3 Ads function InvokeRpcMethod() doesn't work and give an error of "Value is null" for symbol

我想 call/invoke 来自 ADS 的 PLC 方法。

基于此处函数定义 (TcAdsClient.InvokeRpcMethod) 中描述的示例 [https://infosys.beckhoff.com/index.php?content=../content/1031/tcadsnetref/6358337803.html&id=]

我尝试在 PLC 端实现类似的功能,并尝试在 ADS 端调用无效,并给我一个符号错误 "Value cannot be null"。

调用方法如下

short result = (short)client.InvokeRpcMethod("MAIN", "M_Add", new object[] {(short)1, (short)4});

是 PLC 是 运行 并且客户端已连接 我能够访问其他 PLC 变量。我所尝试的只是遵循上面 link 中提供的示例代码。以下是我在 "InvokeRpcMethod()"

的电话中遇到的异常

如果要执行 ADS 远程过程调用,则需要调用功能块方法而不是程序方法。

所以只需创建一个功能块,比方说 FB_AdsManager 并像这样在 MAIN 中声明它:

fbAdsManager    : FB_AdsManager;

FB_AdsManager 有一个方法 adsRemoteCall(不要忘记 {attribute 'TcRpcEnable'} 属性)

现在您可以从您的程序中调用该方法:

client.InvokeRpcMethod("MAIN.fbAdsManager", "adsRemoteCall", new object[] {});